Merge pull request #9 from TheBlueMatt/2021-03-missing-docs
[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     * Used to indicate that the client may now broadcast the funding transaction it created for a
3206     * channel. Broadcasting such a transaction prior to this event may lead to our counterparty
3207     * trivially stealing all funds in the funding transaction!
3208     */
3209    LDKEvent_FundingBroadcastSafe,
3210    /**
3211     * Indicates we've received money! Just gotta dig out that payment preimage and feed it to
3212     * ChannelManager::claim_funds to get it....
3213     * Note that if the preimage is not known or the amount paid is incorrect, you should call
3214     * ChannelManager::fail_htlc_backwards to free up resources for this HTLC and avoid
3215     * network congestion.
3216     * The amount paid should be considered 'incorrect' when it is less than or more than twice
3217     * the amount expected.
3218     * If you fail to call either ChannelManager::claim_funds or
3219     * ChannelManager::fail_htlc_backwards within the HTLC's timeout, the HTLC will be
3220     * automatically failed.
3221     */
3222    LDKEvent_PaymentReceived,
3223    /**
3224     * Indicates an outbound payment we made succeeded (ie it made it all the way to its target
3225     * and we got back the payment preimage for it).
3226     * Note that duplicative PaymentSent Events may be generated - it is your responsibility to
3227     * deduplicate them by payment_preimage (which MUST be unique)!
3228     */
3229    LDKEvent_PaymentSent,
3230    /**
3231     * Indicates an outbound payment we made failed. Probably some intermediary node dropped
3232     * something. You may wish to retry with a different route.
3233     * Note that duplicative PaymentFailed Events may be generated - it is your responsibility to
3234     * deduplicate them by payment_hash (which MUST be unique)!
3235     */
3236    LDKEvent_PaymentFailed,
3237    /**
3238     * Used to indicate that ChannelManager::process_pending_htlc_forwards should be called at a
3239     * time in the future.
3240     */
3241    LDKEvent_PendingHTLCsForwardable,
3242    /**
3243     * Used to indicate that an output was generated on-chain which you should know how to spend.
3244     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
3245     * counterparty spending them due to some kind of timeout. Thus, you need to store them
3246     * somewhere and spend them when you create on-chain transactions.
3247     */
3248    LDKEvent_SpendableOutputs,
3249    /**
3250     * Must be last for serialization purposes
3251     */
3252    LDKEvent_Sentinel,
3253 } LDKEvent_Tag;
3254
3255 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
3256    /**
3257     * The random channel_id we picked which you'll need to pass into
3258     * ChannelManager::funding_transaction_generated.
3259     */
3260    struct LDKThirtyTwoBytes temporary_channel_id;
3261    /**
3262     * The value, in satoshis, that the output should have.
3263     */
3264    uint64_t channel_value_satoshis;
3265    /**
3266     * The script which should be used in the transaction output.
3267     */
3268    struct LDKCVec_u8Z output_script;
3269    /**
3270     * The value passed in to ChannelManager::create_channel
3271     */
3272    uint64_t user_channel_id;
3273 } LDKEvent_LDKFundingGenerationReady_Body;
3274
3275 typedef struct LDKEvent_LDKFundingBroadcastSafe_Body {
3276    /**
3277     * The output, which was passed to ChannelManager::funding_transaction_generated, which is
3278     * now safe to broadcast.
3279     */
3280    struct LDKOutPoint funding_txo;
3281    /**
3282     * The value passed in to ChannelManager::create_channel
3283     */
3284    uint64_t user_channel_id;
3285 } LDKEvent_LDKFundingBroadcastSafe_Body;
3286
3287 typedef struct LDKEvent_LDKPaymentReceived_Body {
3288    /**
3289     * The hash for which the preimage should be handed to the ChannelManager.
3290     */
3291    struct LDKThirtyTwoBytes payment_hash;
3292    /**
3293     * The \"payment secret\". This authenticates the sender to the recipient, preventing a
3294     * number of deanonymization attacks during the routing process.
3295     * As nodes upgrade, the invoices you provide should likely migrate to setting the
3296     * payment_secret feature to required, at which point you should fail_backwards any HTLCs
3297     * which have a None here.
3298     * Until then, however, values of None should be ignored, and only incorrect Some values
3299     * should result in an HTLC fail_backwards.
3300     * Note that, in any case, this value must be passed as-is to any fail or claim calls as
3301     * the HTLC index includes this value.
3302     */
3303    struct LDKThirtyTwoBytes payment_secret;
3304    /**
3305     * The value, in thousandths of a satoshi, that this payment is for. Note that you must
3306     * compare this to the expected value before accepting the payment (as otherwise you are
3307     * providing proof-of-payment for less than the value you expected!).
3308     */
3309    uint64_t amt;
3310 } LDKEvent_LDKPaymentReceived_Body;
3311
3312 typedef struct LDKEvent_LDKPaymentSent_Body {
3313    /**
3314     * The preimage to the hash given to ChannelManager::send_payment.
3315     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
3316     * store it somehow!
3317     */
3318    struct LDKThirtyTwoBytes payment_preimage;
3319 } LDKEvent_LDKPaymentSent_Body;
3320
3321 typedef struct LDKEvent_LDKPaymentFailed_Body {
3322    /**
3323     * The hash which was given to ChannelManager::send_payment.
3324     */
3325    struct LDKThirtyTwoBytes payment_hash;
3326    /**
3327     * Indicates the payment was rejected for some reason by the recipient. This implies that
3328     * the payment has failed, not just the route in question. If this is not set, you may
3329     * retry the payment via a different route.
3330     */
3331    bool rejected_by_dest;
3332 } LDKEvent_LDKPaymentFailed_Body;
3333
3334 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
3335    /**
3336     * The minimum amount of time that should be waited prior to calling
3337     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
3338     * you should wait a random amount of time in roughly the range (now + time_forwardable,
3339     * now + 5*time_forwardable).
3340     */
3341    uint64_t time_forwardable;
3342 } LDKEvent_LDKPendingHTLCsForwardable_Body;
3343
3344 typedef struct LDKEvent_LDKSpendableOutputs_Body {
3345    /**
3346     * The outputs which you should store as spendable by you.
3347     */
3348    struct LDKCVec_SpendableOutputDescriptorZ outputs;
3349 } LDKEvent_LDKSpendableOutputs_Body;
3350
3351 typedef struct MUST_USE_STRUCT LDKEvent {
3352    LDKEvent_Tag tag;
3353    union {
3354       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
3355       LDKEvent_LDKFundingBroadcastSafe_Body funding_broadcast_safe;
3356       LDKEvent_LDKPaymentReceived_Body payment_received;
3357       LDKEvent_LDKPaymentSent_Body payment_sent;
3358       LDKEvent_LDKPaymentFailed_Body payment_failed;
3359       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
3360       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
3361    };
3362 } LDKEvent;
3363
3364 /**
3365  * A dynamically-allocated array of crate::util::events::Events of arbitrary size.
3366  * This corresponds to std::vector in C++
3367  */
3368 typedef struct LDKCVec_EventZ {
3369    /**
3370     * The elements in the array.
3371     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3372     */
3373    struct LDKEvent *data;
3374    /**
3375     * The number of elements pointed to by `data`.
3376     */
3377    uintptr_t datalen;
3378 } LDKCVec_EventZ;
3379
3380 /**
3381  * The contents of CResult_OutPointDecodeErrorZ
3382  */
3383 typedef union LDKCResult_OutPointDecodeErrorZPtr {
3384    /**
3385     * A pointer to the contents in the success state.
3386     * Reading from this pointer when `result_ok` is not set is undefined.
3387     */
3388    struct LDKOutPoint *result;
3389    /**
3390     * A pointer to the contents in the error state.
3391     * Reading from this pointer when `result_ok` is set is undefined.
3392     */
3393    struct LDKDecodeError *err;
3394 } LDKCResult_OutPointDecodeErrorZPtr;
3395
3396 /**
3397  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
3398  * containing a crate::chain::transaction::OutPoint on success and a crate::ln::msgs::DecodeError on failure.
3399  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3400  */
3401 typedef struct LDKCResult_OutPointDecodeErrorZ {
3402    /**
3403     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
3404     * `err` or `result` depending on the state of `result_ok`.
3405     */
3406    union LDKCResult_OutPointDecodeErrorZPtr contents;
3407    /**
3408     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
3409     */
3410    bool result_ok;
3411 } LDKCResult_OutPointDecodeErrorZ;
3412
3413
3414
3415 /**
3416  * An update generated by the underlying Channel itself which contains some new information the
3417  * ChannelMonitor should be made aware of.
3418  */
3419 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
3420    /**
3421     * A pointer to the opaque Rust object.
3422     * Nearly everywhere, inner must be non-null, however in places where
3423     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3424     */
3425    LDKnativeChannelMonitorUpdate *inner;
3426    /**
3427     * Indicates that this is the only struct which contains the same pointer.
3428     * Rust functions which take ownership of an object provided via an argument require
3429     * this to be true and invalidate the object pointed to by inner.
3430     */
3431    bool is_owned;
3432 } LDKChannelMonitorUpdate;
3433
3434 /**
3435  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
3436  */
3437 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
3438    /**
3439     * A pointer to the contents in the success state.
3440     * Reading from this pointer when `result_ok` is not set is undefined.
3441     */
3442    struct LDKChannelMonitorUpdate *result;
3443    /**
3444     * A pointer to the contents in the error state.
3445     * Reading from this pointer when `result_ok` is set is undefined.
3446     */
3447    struct LDKDecodeError *err;
3448 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
3449
3450 /**
3451  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
3452  * containing a crate::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::ln::msgs::DecodeError on failure.
3453  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3454  */
3455 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
3456    /**
3457     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
3458     * `err` or `result` depending on the state of `result_ok`.
3459     */
3460    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
3461    /**
3462     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
3463     */
3464    bool result_ok;
3465 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
3466
3467 /**
3468  * The contents of CResult_HTLCUpdateDecodeErrorZ
3469  */
3470 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
3471    /**
3472     * A pointer to the contents in the success state.
3473     * Reading from this pointer when `result_ok` is not set is undefined.
3474     */
3475    struct LDKHTLCUpdate *result;
3476    /**
3477     * A pointer to the contents in the error state.
3478     * Reading from this pointer when `result_ok` is set is undefined.
3479     */
3480    struct LDKDecodeError *err;
3481 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
3482
3483 /**
3484  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
3485  * containing a crate::chain::channelmonitor::HTLCUpdate on success and a crate::ln::msgs::DecodeError on failure.
3486  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3487  */
3488 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
3489    /**
3490     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
3491     * `err` or `result` depending on the state of `result_ok`.
3492     */
3493    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
3494    /**
3495     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
3496     */
3497    bool result_ok;
3498 } LDKCResult_HTLCUpdateDecodeErrorZ;
3499
3500
3501
3502 /**
3503  * General Err type for ChannelMonitor actions. Generally, this implies that the data provided is
3504  * inconsistent with the ChannelMonitor being called. eg for ChannelMonitor::update_monitor this
3505  * means you tried to update a monitor for a different channel or the ChannelMonitorUpdate was
3506  * corrupted.
3507  * Contains a developer-readable error message.
3508  */
3509 typedef struct MUST_USE_STRUCT LDKMonitorUpdateError {
3510    /**
3511     * A pointer to the opaque Rust object.
3512     * Nearly everywhere, inner must be non-null, however in places where
3513     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3514     */
3515    LDKnativeMonitorUpdateError *inner;
3516    /**
3517     * Indicates that this is the only struct which contains the same pointer.
3518     * Rust functions which take ownership of an object provided via an argument require
3519     * this to be true and invalidate the object pointed to by inner.
3520     */
3521    bool is_owned;
3522 } LDKMonitorUpdateError;
3523
3524 /**
3525  * The contents of CResult_NoneMonitorUpdateErrorZ
3526  */
3527 typedef union LDKCResult_NoneMonitorUpdateErrorZPtr {
3528    /**
3529     * Note that this value is always NULL, as there are no contents in the OK variant
3530     */
3531    void *result;
3532    /**
3533     * A pointer to the contents in the error state.
3534     * Reading from this pointer when `result_ok` is set is undefined.
3535     */
3536    struct LDKMonitorUpdateError *err;
3537 } LDKCResult_NoneMonitorUpdateErrorZPtr;
3538
3539 /**
3540  * A CResult_NoneMonitorUpdateErrorZ represents the result of a fallible operation,
3541  * containing a () on success and a crate::chain::channelmonitor::MonitorUpdateError on failure.
3542  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3543  */
3544 typedef struct LDKCResult_NoneMonitorUpdateErrorZ {
3545    /**
3546     * The contents of this CResult_NoneMonitorUpdateErrorZ, accessible via either
3547     * `err` or `result` depending on the state of `result_ok`.
3548     */
3549    union LDKCResult_NoneMonitorUpdateErrorZPtr contents;
3550    /**
3551     * Whether this CResult_NoneMonitorUpdateErrorZ represents a success state.
3552     */
3553    bool result_ok;
3554 } LDKCResult_NoneMonitorUpdateErrorZ;
3555
3556 /**
3557  * A tuple of 2 elements. See the individual fields for the types contained.
3558  */
3559 typedef struct LDKC2Tuple_OutPointScriptZ {
3560    /**
3561     * The element at position 0
3562     */
3563    struct LDKOutPoint a;
3564    /**
3565     * The element at position 1
3566     */
3567    struct LDKCVec_u8Z b;
3568 } LDKC2Tuple_OutPointScriptZ;
3569
3570 /**
3571  * A tuple of 2 elements. See the individual fields for the types contained.
3572  */
3573 typedef struct LDKC2Tuple_u32ScriptZ {
3574    /**
3575     * The element at position 0
3576     */
3577    uint32_t a;
3578    /**
3579     * The element at position 1
3580     */
3581    struct LDKCVec_u8Z b;
3582 } LDKC2Tuple_u32ScriptZ;
3583
3584 /**
3585  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
3586  * This corresponds to std::vector in C++
3587  */
3588 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
3589    /**
3590     * The elements in the array.
3591     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3592     */
3593    struct LDKC2Tuple_u32ScriptZ *data;
3594    /**
3595     * The number of elements pointed to by `data`.
3596     */
3597    uintptr_t datalen;
3598 } LDKCVec_C2Tuple_u32ScriptZZ;
3599
3600 /**
3601  * A tuple of 2 elements. See the individual fields for the types contained.
3602  */
3603 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
3604    /**
3605     * The element at position 0
3606     */
3607    struct LDKThirtyTwoBytes a;
3608    /**
3609     * The element at position 1
3610     */
3611    struct LDKCVec_C2Tuple_u32ScriptZZ b;
3612 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
3613
3614 /**
3615  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
3616  * This corresponds to std::vector in C++
3617  */
3618 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3619    /**
3620     * The elements in the array.
3621     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3622     */
3623    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
3624    /**
3625     * The number of elements pointed to by `data`.
3626     */
3627    uintptr_t datalen;
3628 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
3629
3630 /**
3631  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
3632  * This corresponds to std::vector in C++
3633  */
3634 typedef struct LDKCVec_TransactionZ {
3635    /**
3636     * The elements in the array.
3637     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3638     */
3639    struct LDKTransaction *data;
3640    /**
3641     * The number of elements pointed to by `data`.
3642     */
3643    uintptr_t datalen;
3644 } LDKCVec_TransactionZ;
3645
3646 /**
3647  * A tuple of 2 elements. See the individual fields for the types contained.
3648  */
3649 typedef struct LDKC2Tuple_u32TxOutZ {
3650    /**
3651     * The element at position 0
3652     */
3653    uint32_t a;
3654    /**
3655     * The element at position 1
3656     */
3657    struct LDKTxOut b;
3658 } LDKC2Tuple_u32TxOutZ;
3659
3660 /**
3661  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
3662  * This corresponds to std::vector in C++
3663  */
3664 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
3665    /**
3666     * The elements in the array.
3667     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3668     */
3669    struct LDKC2Tuple_u32TxOutZ *data;
3670    /**
3671     * The number of elements pointed to by `data`.
3672     */
3673    uintptr_t datalen;
3674 } LDKCVec_C2Tuple_u32TxOutZZ;
3675
3676 /**
3677  * A tuple of 2 elements. See the individual fields for the types contained.
3678  */
3679 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
3680    /**
3681     * The element at position 0
3682     */
3683    struct LDKThirtyTwoBytes a;
3684    /**
3685     * The element at position 1
3686     */
3687    struct LDKCVec_C2Tuple_u32TxOutZZ b;
3688 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
3689
3690 /**
3691  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
3692  * This corresponds to std::vector in C++
3693  */
3694 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ {
3695    /**
3696     * The elements in the array.
3697     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3698     */
3699    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
3700    /**
3701     * The number of elements pointed to by `data`.
3702     */
3703    uintptr_t datalen;
3704 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ;
3705
3706 /**
3707  * A tuple of 2 elements. See the individual fields for the types contained.
3708  */
3709 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
3710    /**
3711     * The element at position 0
3712     */
3713    struct LDKSignature a;
3714    /**
3715     * The element at position 1
3716     */
3717    struct LDKCVec_SignatureZ b;
3718 } LDKC2Tuple_SignatureCVec_SignatureZZ;
3719
3720 /**
3721  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
3722  */
3723 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
3724    /**
3725     * A pointer to the contents in the success state.
3726     * Reading from this pointer when `result_ok` is not set is undefined.
3727     */
3728    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
3729    /**
3730     * Note that this value is always NULL, as there are no contents in the Err variant
3731     */
3732    void *err;
3733 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
3734
3735 /**
3736  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
3737  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
3738  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3739  */
3740 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
3741    /**
3742     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
3743     * `err` or `result` depending on the state of `result_ok`.
3744     */
3745    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
3746    /**
3747     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
3748     */
3749    bool result_ok;
3750 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
3751
3752 /**
3753  * The contents of CResult_SignatureNoneZ
3754  */
3755 typedef union LDKCResult_SignatureNoneZPtr {
3756    /**
3757     * A pointer to the contents in the success state.
3758     * Reading from this pointer when `result_ok` is not set is undefined.
3759     */
3760    struct LDKSignature *result;
3761    /**
3762     * Note that this value is always NULL, as there are no contents in the Err variant
3763     */
3764    void *err;
3765 } LDKCResult_SignatureNoneZPtr;
3766
3767 /**
3768  * A CResult_SignatureNoneZ represents the result of a fallible operation,
3769  * containing a crate::c_types::Signature on success and a () on failure.
3770  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3771  */
3772 typedef struct LDKCResult_SignatureNoneZ {
3773    /**
3774     * The contents of this CResult_SignatureNoneZ, accessible via either
3775     * `err` or `result` depending on the state of `result_ok`.
3776     */
3777    union LDKCResult_SignatureNoneZPtr contents;
3778    /**
3779     * Whether this CResult_SignatureNoneZ represents a success state.
3780     */
3781    bool result_ok;
3782 } LDKCResult_SignatureNoneZ;
3783
3784
3785
3786 /**
3787  * The unsigned part of a channel_announcement
3788  */
3789 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
3790    /**
3791     * A pointer to the opaque Rust object.
3792     * Nearly everywhere, inner must be non-null, however in places where
3793     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3794     */
3795    LDKnativeUnsignedChannelAnnouncement *inner;
3796    /**
3797     * Indicates that this is the only struct which contains the same pointer.
3798     * Rust functions which take ownership of an object provided via an argument require
3799     * this to be true and invalidate the object pointed to by inner.
3800     */
3801    bool is_owned;
3802 } LDKUnsignedChannelAnnouncement;
3803
3804 /**
3805  * A trait to sign lightning channel transactions as described in BOLT 3.
3806  *
3807  * Signing services could be implemented on a hardware wallet. In this case,
3808  * the current Sign would be a front-end on top of a communication
3809  * channel connected to your secure device and lightning key material wouldn't
3810  * reside on a hot server. Nevertheless, a this deployment would still need
3811  * to trust the ChannelManager to avoid loss of funds as this latest component
3812  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
3813  *
3814  * A more secure iteration would be to use hashlock (or payment points) to pair
3815  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
3816  * at the price of more state and computation on the hardware wallet side. In the future,
3817  * we are looking forward to design such interface.
3818  *
3819  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
3820  * to act, as liveness and breach reply correctness are always going to be hard requirements
3821  * of LN security model, orthogonal of key management issues.
3822  */
3823 typedef struct LDKSign {
3824    /**
3825     * An opaque pointer which is passed to your function implementations as an argument.
3826     * This has no meaning in the LDK, and can be NULL or any other value.
3827     */
3828    void *this_arg;
3829    /**
3830     * Gets the per-commitment point for a specific commitment number
3831     *
3832     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3833     */
3834    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
3835    /**
3836     * Gets the commitment secret for a specific commitment number as part of the revocation process
3837     *
3838     * An external signer implementation should error here if the commitment was already signed
3839     * and should refuse to sign it in the future.
3840     *
3841     * May be called more than once for the same index.
3842     *
3843     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3844     */
3845    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
3846    /**
3847     * Gets the holder's channel public keys and basepoints
3848     */
3849    struct LDKChannelPublicKeys pubkeys;
3850    /**
3851     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
3852     * Note that this takes a pointer to this object, not the this_ptr like other methods do
3853     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
3854     */
3855    void (*set_pubkeys)(const struct LDKSign*NONNULL_PTR );
3856    /**
3857     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
3858     * some SpendableOutputDescriptor types. This should be sufficient to identify this
3859     * Sign object uniquely and lookup or re-derive its keys.
3860     */
3861    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
3862    /**
3863     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
3864     *
3865     * Note that if signing fails or is rejected, the channel will be force-closed.
3866     */
3867    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx);
3868    /**
3869     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
3870     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
3871     * latest commitment_tx when we initiate a force-close.
3872     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
3873     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
3874     * the latest.
3875     * This may be called multiple times for the same transaction.
3876     *
3877     * An external signer implementation should check that the commitment has not been revoked.
3878     *
3879     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
3880     */
3881    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
3882    /**
3883     * Create a signature for the given input in a transaction spending an HTLC or commitment
3884     * transaction output when our counterparty broadcasts an old state.
3885     *
3886     * A justice transaction may claim multiples outputs at the same time if timelocks are
3887     * similar, but only a signature for the input at index `input` should be signed for here.
3888     * It may be called multiples time for same output(s) if a fee-bump is needed with regards
3889     * to an upcoming timelock expiration.
3890     *
3891     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3892     *
3893     * per_commitment_key is revocation secret which was provided by our counterparty when they
3894     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3895     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
3896     * so).
3897     *
3898     * htlc holds HTLC elements (hash, timelock) if the output being spent is a HTLC output, thus
3899     * changing the format of the witness script (which is committed to in the BIP 143
3900     * signatures).
3901     */
3902    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);
3903    /**
3904     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
3905     * transaction, either offered or received.
3906     *
3907     * Such a transaction may claim multiples offered outputs at same time if we know the
3908     * preimage for each when we create it, but only the input at index `input` should be
3909     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
3910     * needed with regards to an upcoming timelock expiration.
3911     *
3912     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
3913     * outputs.
3914     *
3915     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3916     *
3917     * Per_commitment_point is the dynamic point corresponding to the channel state
3918     * detected onchain. It has been generated by our counterparty and is used to derive
3919     * channel state keys, which are then included in the witness script and committed to in the
3920     * BIP 143 signature.
3921     */
3922    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);
3923    /**
3924     * Create a signature for a (proposed) closing transaction.
3925     *
3926     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
3927     * chosen to forgo their output as dust.
3928     */
3929    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, struct LDKTransaction closing_tx);
3930    /**
3931     * Signs a channel announcement message with our funding key, proving it comes from one
3932     * of the channel participants.
3933     *
3934     * Note that if this fails or is rejected, the channel will not be publicly announced and
3935     * our counterparty may (though likely will not) close the channel on us for violating the
3936     * protocol.
3937     */
3938    struct LDKCResult_SignatureNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
3939    /**
3940     * Set the counterparty static channel data, including basepoints,
3941     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
3942     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
3943     * they MUST NOT be allowed to change to different values once set.
3944     *
3945     * channel_parameters.is_populated() MUST be true.
3946     *
3947     * We bind holder_selected_contest_delay late here for API convenience.
3948     *
3949     * Will be called before any signatures are applied.
3950     */
3951    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
3952    /**
3953     * Creates a copy of the object pointed to by this_arg, for a copy of this Sign.
3954     * Note that the ultimate copy of the Sign will have all function pointers the same as the original.
3955     * May be NULL if no action needs to be taken, the this_arg pointer will be copied into the new Sign.
3956     */
3957    void *(*clone)(const void *this_arg);
3958    /**
3959     * Serialize the object into a byte array
3960     */
3961    struct LDKCVec_u8Z (*write)(const void *this_arg);
3962    /**
3963     * Frees any resources associated with this object given its this_arg pointer.
3964     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
3965     */
3966    void (*free)(void *this_arg);
3967 } LDKSign;
3968
3969
3970
3971 /**
3972  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
3973  * on-chain transactions to ensure no loss of funds occurs.
3974  *
3975  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
3976  * information and are actively monitoring the chain.
3977  *
3978  * Pending Events or updated HTLCs which have not yet been read out by
3979  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
3980  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
3981  * gotten are fully handled before re-serializing the new state.
3982  *
3983  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
3984  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
3985  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
3986  * returned block hash and the the current chain and then reconnecting blocks to get to the
3987  * best chain) upon deserializing the object!
3988  */
3989 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
3990    /**
3991     * A pointer to the opaque Rust object.
3992     * Nearly everywhere, inner must be non-null, however in places where
3993     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3994     */
3995    LDKnativeChannelMonitor *inner;
3996    /**
3997     * Indicates that this is the only struct which contains the same pointer.
3998     * Rust functions which take ownership of an object provided via an argument require
3999     * this to be true and invalidate the object pointed to by inner.
4000     */
4001    bool is_owned;
4002 } LDKChannelMonitor;
4003
4004 /**
4005  * A tuple of 2 elements. See the individual fields for the types contained.
4006  */
4007 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
4008    /**
4009     * The element at position 0
4010     */
4011    struct LDKThirtyTwoBytes a;
4012    /**
4013     * The element at position 1
4014     */
4015    struct LDKChannelMonitor b;
4016 } LDKC2Tuple_BlockHashChannelMonitorZ;
4017
4018 /**
4019  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
4020  */
4021 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
4022    /**
4023     * A pointer to the contents in the success state.
4024     * Reading from this pointer when `result_ok` is not set is undefined.
4025     */
4026    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
4027    /**
4028     * A pointer to the contents in the error state.
4029     * Reading from this pointer when `result_ok` is set is undefined.
4030     */
4031    struct LDKDecodeError *err;
4032 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
4033
4034 /**
4035  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
4036  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::ln::msgs::DecodeError on failure.
4037  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4038  */
4039 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
4040    /**
4041     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
4042     * `err` or `result` depending on the state of `result_ok`.
4043     */
4044    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
4045    /**
4046     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
4047     */
4048    bool result_ok;
4049 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
4050
4051 /**
4052  * The contents of CResult_TxOutAccessErrorZ
4053  */
4054 typedef union LDKCResult_TxOutAccessErrorZPtr {
4055    /**
4056     * A pointer to the contents in the success state.
4057     * Reading from this pointer when `result_ok` is not set is undefined.
4058     */
4059    struct LDKTxOut *result;
4060    /**
4061     * A pointer to the contents in the error state.
4062     * Reading from this pointer when `result_ok` is set is undefined.
4063     */
4064    enum LDKAccessError *err;
4065 } LDKCResult_TxOutAccessErrorZPtr;
4066
4067 /**
4068  * A CResult_TxOutAccessErrorZ represents the result of a fallible operation,
4069  * containing a crate::c_types::TxOut on success and a crate::chain::AccessError on failure.
4070  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4071  */
4072 typedef struct LDKCResult_TxOutAccessErrorZ {
4073    /**
4074     * The contents of this CResult_TxOutAccessErrorZ, accessible via either
4075     * `err` or `result` depending on the state of `result_ok`.
4076     */
4077    union LDKCResult_TxOutAccessErrorZPtr contents;
4078    /**
4079     * Whether this CResult_TxOutAccessErrorZ represents a success state.
4080     */
4081    bool result_ok;
4082 } LDKCResult_TxOutAccessErrorZ;
4083
4084 /**
4085  * An enum which can either contain a crate::c_types::derived::C2Tuple_usizeTransactionZ or not
4086  */
4087 typedef enum LDKCOption_C2Tuple_usizeTransactionZZ_Tag {
4088    /**
4089     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains a crate::c_types::derived::C2Tuple_usizeTransactionZ
4090     */
4091    LDKCOption_C2Tuple_usizeTransactionZZ_Some,
4092    /**
4093     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains nothing
4094     */
4095    LDKCOption_C2Tuple_usizeTransactionZZ_None,
4096    /**
4097     * Must be last for serialization purposes
4098     */
4099    LDKCOption_C2Tuple_usizeTransactionZZ_Sentinel,
4100 } LDKCOption_C2Tuple_usizeTransactionZZ_Tag;
4101
4102 typedef struct LDKCOption_C2Tuple_usizeTransactionZZ {
4103    LDKCOption_C2Tuple_usizeTransactionZZ_Tag tag;
4104    union {
4105       struct {
4106          struct LDKC2Tuple_usizeTransactionZ some;
4107       };
4108    };
4109 } LDKCOption_C2Tuple_usizeTransactionZZ;
4110
4111 /**
4112  * A Rust str object, ie a reference to a UTF8-valid string.
4113  * This is *not* null-terminated so cannot be used directly as a C string!
4114  */
4115 typedef struct LDKStr {
4116    /**
4117     * A pointer to the string's bytes, in UTF8 encoding
4118     */
4119    const uint8_t *chars;
4120    /**
4121     * The number of bytes (not characters!) pointed to by `chars`
4122     */
4123    uintptr_t len;
4124 } LDKStr;
4125
4126 /**
4127  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
4128  * too-high values)
4129  */
4130 typedef enum LDKAPIError_Tag {
4131    /**
4132     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
4133     * are documented, but generally indicates some precondition of a function was violated.
4134     */
4135    LDKAPIError_APIMisuseError,
4136    /**
4137     * Due to a high feerate, we were unable to complete the request.
4138     * For example, this may be returned if the feerate implies we cannot open a channel at the
4139     * requested value, but opening a larger channel would succeed.
4140     */
4141    LDKAPIError_FeeRateTooHigh,
4142    /**
4143     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
4144     * too-many-hops, etc).
4145     */
4146    LDKAPIError_RouteError,
4147    /**
4148     * We were unable to complete the request as the Channel required to do so is unable to
4149     * complete the request (or was not found). This can take many forms, including disconnected
4150     * peer, channel at capacity, channel shutting down, etc.
4151     */
4152    LDKAPIError_ChannelUnavailable,
4153    /**
4154     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
4155     * attempted action to fail.
4156     */
4157    LDKAPIError_MonitorUpdateFailed,
4158    /**
4159     * Must be last for serialization purposes
4160     */
4161    LDKAPIError_Sentinel,
4162 } LDKAPIError_Tag;
4163
4164 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
4165    /**
4166     * A human-readable error message
4167     */
4168    struct LDKCVec_u8Z err;
4169 } LDKAPIError_LDKAPIMisuseError_Body;
4170
4171 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
4172    /**
4173     * A human-readable error message
4174     */
4175    struct LDKCVec_u8Z err;
4176    /**
4177     * The feerate which was too high.
4178     */
4179    uint32_t feerate;
4180 } LDKAPIError_LDKFeeRateTooHigh_Body;
4181
4182 typedef struct LDKAPIError_LDKRouteError_Body {
4183    /**
4184     * A human-readable error message
4185     */
4186    struct LDKStr err;
4187 } LDKAPIError_LDKRouteError_Body;
4188
4189 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
4190    /**
4191     * A human-readable error message
4192     */
4193    struct LDKCVec_u8Z err;
4194 } LDKAPIError_LDKChannelUnavailable_Body;
4195
4196 typedef struct MUST_USE_STRUCT LDKAPIError {
4197    LDKAPIError_Tag tag;
4198    union {
4199       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
4200       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
4201       LDKAPIError_LDKRouteError_Body route_error;
4202       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
4203    };
4204 } LDKAPIError;
4205
4206 /**
4207  * The contents of CResult_NoneAPIErrorZ
4208  */
4209 typedef union LDKCResult_NoneAPIErrorZPtr {
4210    /**
4211     * Note that this value is always NULL, as there are no contents in the OK variant
4212     */
4213    void *result;
4214    /**
4215     * A pointer to the contents in the error state.
4216     * Reading from this pointer when `result_ok` is set is undefined.
4217     */
4218    struct LDKAPIError *err;
4219 } LDKCResult_NoneAPIErrorZPtr;
4220
4221 /**
4222  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
4223  * containing a () on success and a crate::util::errors::APIError on failure.
4224  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4225  */
4226 typedef struct LDKCResult_NoneAPIErrorZ {
4227    /**
4228     * The contents of this CResult_NoneAPIErrorZ, accessible via either
4229     * `err` or `result` depending on the state of `result_ok`.
4230     */
4231    union LDKCResult_NoneAPIErrorZPtr contents;
4232    /**
4233     * Whether this CResult_NoneAPIErrorZ represents a success state.
4234     */
4235    bool result_ok;
4236 } LDKCResult_NoneAPIErrorZ;
4237
4238 /**
4239  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
4240  * This corresponds to std::vector in C++
4241  */
4242 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
4243    /**
4244     * The elements in the array.
4245     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4246     */
4247    struct LDKCResult_NoneAPIErrorZ *data;
4248    /**
4249     * The number of elements pointed to by `data`.
4250     */
4251    uintptr_t datalen;
4252 } LDKCVec_CResult_NoneAPIErrorZZ;
4253
4254 /**
4255  * A dynamically-allocated array of crate::util::errors::APIErrors of arbitrary size.
4256  * This corresponds to std::vector in C++
4257  */
4258 typedef struct LDKCVec_APIErrorZ {
4259    /**
4260     * The elements in the array.
4261     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4262     */
4263    struct LDKAPIError *data;
4264    /**
4265     * The number of elements pointed to by `data`.
4266     */
4267    uintptr_t datalen;
4268 } LDKCVec_APIErrorZ;
4269
4270
4271
4272 /**
4273  * Details of a channel, as returned by ChannelManager::list_channels and ChannelManager::list_usable_channels
4274  */
4275 typedef struct MUST_USE_STRUCT LDKChannelDetails {
4276    /**
4277     * A pointer to the opaque Rust object.
4278     * Nearly everywhere, inner must be non-null, however in places where
4279     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4280     */
4281    LDKnativeChannelDetails *inner;
4282    /**
4283     * Indicates that this is the only struct which contains the same pointer.
4284     * Rust functions which take ownership of an object provided via an argument require
4285     * this to be true and invalidate the object pointed to by inner.
4286     */
4287    bool is_owned;
4288 } LDKChannelDetails;
4289
4290 /**
4291  * A dynamically-allocated array of crate::ln::channelmanager::ChannelDetailss of arbitrary size.
4292  * This corresponds to std::vector in C++
4293  */
4294 typedef struct LDKCVec_ChannelDetailsZ {
4295    /**
4296     * The elements in the array.
4297     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4298     */
4299    struct LDKChannelDetails *data;
4300    /**
4301     * The number of elements pointed to by `data`.
4302     */
4303    uintptr_t datalen;
4304 } LDKCVec_ChannelDetailsZ;
4305
4306 /**
4307  * If a payment fails to send, it can be in one of several states. This enum is returned as the
4308  * Err() type describing which state the payment is in, see the description of individual enum
4309  * states for more.
4310  */
4311 typedef enum LDKPaymentSendFailure_Tag {
4312    /**
4313     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
4314     * send the payment at all. No channel state has been changed or messages sent to peers, and
4315     * once you've changed the parameter at error, you can freely retry the payment in full.
4316     */
4317    LDKPaymentSendFailure_ParameterError,
4318    /**
4319     * A parameter in a single path which was passed to send_payment was invalid, preventing us
4320     * from attempting to send the payment at all. No channel state has been changed or messages
4321     * sent to peers, and once you've changed the parameter at error, you can freely retry the
4322     * payment in full.
4323     *
4324     * The results here are ordered the same as the paths in the route object which was passed to
4325     * send_payment.
4326     */
4327    LDKPaymentSendFailure_PathParameterError,
4328    /**
4329     * All paths which were attempted failed to send, with no channel state change taking place.
4330     * You can freely retry the payment in full (though you probably want to do so over different
4331     * paths than the ones selected).
4332     */
4333    LDKPaymentSendFailure_AllFailedRetrySafe,
4334    /**
4335     * Some paths which were attempted failed to send, though possibly not all. At least some
4336     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
4337     * in over-/re-payment.
4338     *
4339     * The results here are ordered the same as the paths in the route object which was passed to
4340     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
4341     * retried (though there is currently no API with which to do so).
4342     *
4343     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
4344     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
4345     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
4346     * with the latest update_id.
4347     */
4348    LDKPaymentSendFailure_PartialFailure,
4349    /**
4350     * Must be last for serialization purposes
4351     */
4352    LDKPaymentSendFailure_Sentinel,
4353 } LDKPaymentSendFailure_Tag;
4354
4355 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
4356    LDKPaymentSendFailure_Tag tag;
4357    union {
4358       struct {
4359          struct LDKAPIError parameter_error;
4360       };
4361       struct {
4362          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
4363       };
4364       struct {
4365          struct LDKCVec_APIErrorZ all_failed_retry_safe;
4366       };
4367       struct {
4368          struct LDKCVec_CResult_NoneAPIErrorZZ partial_failure;
4369       };
4370    };
4371 } LDKPaymentSendFailure;
4372
4373 /**
4374  * The contents of CResult_NonePaymentSendFailureZ
4375  */
4376 typedef union LDKCResult_NonePaymentSendFailureZPtr {
4377    /**
4378     * Note that this value is always NULL, as there are no contents in the OK variant
4379     */
4380    void *result;
4381    /**
4382     * A pointer to the contents in the error state.
4383     * Reading from this pointer when `result_ok` is set is undefined.
4384     */
4385    struct LDKPaymentSendFailure *err;
4386 } LDKCResult_NonePaymentSendFailureZPtr;
4387
4388 /**
4389  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
4390  * containing a () on success and a crate::ln::channelmanager::PaymentSendFailure on failure.
4391  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4392  */
4393 typedef struct LDKCResult_NonePaymentSendFailureZ {
4394    /**
4395     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
4396     * `err` or `result` depending on the state of `result_ok`.
4397     */
4398    union LDKCResult_NonePaymentSendFailureZPtr contents;
4399    /**
4400     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
4401     */
4402    bool result_ok;
4403 } LDKCResult_NonePaymentSendFailureZ;
4404
4405 /**
4406  * A dynamically-allocated array of crate::chain::channelmonitor::ChannelMonitors of arbitrary size.
4407  * This corresponds to std::vector in C++
4408  */
4409 typedef struct LDKCVec_ChannelMonitorZ {
4410    /**
4411     * The elements in the array.
4412     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4413     */
4414    struct LDKChannelMonitor *data;
4415    /**
4416     * The number of elements pointed to by `data`.
4417     */
4418    uintptr_t datalen;
4419 } LDKCVec_ChannelMonitorZ;
4420
4421 /**
4422  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
4423  * blocks are connected and disconnected.
4424  *
4425  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
4426  * responsible for maintaining a set of monitors such that they can be updated accordingly as
4427  * channel state changes and HTLCs are resolved. See method documentation for specific
4428  * requirements.
4429  *
4430  * Implementations **must** ensure that updates are successfully applied and persisted upon method
4431  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
4432  * without taking any further action such as persisting the current state.
4433  *
4434  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
4435  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
4436  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
4437  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
4438  * multiple instances.
4439  *
4440  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
4441  * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4442  * [`PermanentFailure`]: channelmonitor::ChannelMonitorUpdateErr::PermanentFailure
4443  */
4444 typedef struct LDKWatch {
4445    /**
4446     * An opaque pointer which is passed to your function implementations as an argument.
4447     * This has no meaning in the LDK, and can be NULL or any other value.
4448     */
4449    void *this_arg;
4450    /**
4451     * Watches a channel identified by `funding_txo` using `monitor`.
4452     *
4453     * Implementations are responsible for watching the chain for the funding transaction along
4454     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
4455     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
4456     *
4457     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
4458     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
4459     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
4460     */
4461    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
4462    /**
4463     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
4464     *
4465     * Implementations must call [`update_monitor`] with the given update. See
4466     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
4467     *
4468     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
4469     * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4470     */
4471    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
4472    /**
4473     * Returns any monitor events since the last call. Subsequent calls must only return new
4474     * events.
4475     */
4476    struct LDKCVec_MonitorEventZ (*release_pending_monitor_events)(const void *this_arg);
4477    /**
4478     * Frees any resources associated with this object given its this_arg pointer.
4479     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4480     */
4481    void (*free)(void *this_arg);
4482 } LDKWatch;
4483
4484 /**
4485  * An interface to send a transaction to the Bitcoin network.
4486  */
4487 typedef struct LDKBroadcasterInterface {
4488    /**
4489     * An opaque pointer which is passed to your function implementations as an argument.
4490     * This has no meaning in the LDK, and can be NULL or any other value.
4491     */
4492    void *this_arg;
4493    /**
4494     * Sends a transaction out to (hopefully) be mined.
4495     */
4496    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
4497    /**
4498     * Frees any resources associated with this object given its this_arg pointer.
4499     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4500     */
4501    void (*free)(void *this_arg);
4502 } LDKBroadcasterInterface;
4503
4504 /**
4505  * The contents of CResult_SignDecodeErrorZ
4506  */
4507 typedef union LDKCResult_SignDecodeErrorZPtr {
4508    /**
4509     * A pointer to the contents in the success state.
4510     * Reading from this pointer when `result_ok` is not set is undefined.
4511     */
4512    struct LDKSign *result;
4513    /**
4514     * A pointer to the contents in the error state.
4515     * Reading from this pointer when `result_ok` is set is undefined.
4516     */
4517    struct LDKDecodeError *err;
4518 } LDKCResult_SignDecodeErrorZPtr;
4519
4520 /**
4521  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
4522  * containing a crate::chain::keysinterface::Sign on success and a crate::ln::msgs::DecodeError on failure.
4523  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4524  */
4525 typedef struct LDKCResult_SignDecodeErrorZ {
4526    /**
4527     * The contents of this CResult_SignDecodeErrorZ, accessible via either
4528     * `err` or `result` depending on the state of `result_ok`.
4529     */
4530    union LDKCResult_SignDecodeErrorZPtr contents;
4531    /**
4532     * Whether this CResult_SignDecodeErrorZ represents a success state.
4533     */
4534    bool result_ok;
4535 } LDKCResult_SignDecodeErrorZ;
4536
4537 /**
4538  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
4539  * own the memory pointed to by data.
4540  */
4541 typedef struct LDKu8slice {
4542    /**
4543     * A pointer to the byte buffer
4544     */
4545    const uint8_t *data;
4546    /**
4547     * The number of bytes pointed to by `data`.
4548     */
4549    uintptr_t datalen;
4550 } LDKu8slice;
4551
4552 /**
4553  * A trait to describe an object which can get user secrets and key material.
4554  */
4555 typedef struct LDKKeysInterface {
4556    /**
4557     * An opaque pointer which is passed to your function implementations as an argument.
4558     * This has no meaning in the LDK, and can be NULL or any other value.
4559     */
4560    void *this_arg;
4561    /**
4562     * Get node secret key (aka node_id or network_key).
4563     *
4564     * This method must return the same value each time it is called.
4565     */
4566    struct LDKSecretKey (*get_node_secret)(const void *this_arg);
4567    /**
4568     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
4569     *
4570     * This method should return a different value each time it is called, to avoid linking
4571     * on-chain funds across channels as controlled to the same user.
4572     */
4573    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
4574    /**
4575     * Get a public key which we will send funds to (in the form of a P2WPKH output) when closing
4576     * a channel.
4577     *
4578     * This method should return a different value each time it is called, to avoid linking
4579     * on-chain funds across channels as controlled to the same user.
4580     */
4581    struct LDKPublicKey (*get_shutdown_pubkey)(const void *this_arg);
4582    /**
4583     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
4584     * restarted with some stale data!
4585     *
4586     * This method must return a different value each time it is called.
4587     */
4588    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
4589    /**
4590     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
4591     * onion packets and for temporary channel IDs. There is no requirement that these be
4592     * persisted anywhere, though they must be unique across restarts.
4593     *
4594     * This method must return a different value each time it is called.
4595     */
4596    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
4597    /**
4598     * Reads a `Signer` for this `KeysInterface` from the given input stream.
4599     * This is only called during deserialization of other objects which contain
4600     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
4601     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
4602     * contain no versioning scheme. You may wish to include your own version prefix and ensure
4603     * you've read all of the provided bytes to ensure no corruption occurred.
4604     */
4605    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
4606    /**
4607     * Frees any resources associated with this object given its this_arg pointer.
4608     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4609     */
4610    void (*free)(void *this_arg);
4611 } LDKKeysInterface;
4612
4613 /**
4614  * A trait which should be implemented to provide feerate information on a number of time
4615  * horizons.
4616  *
4617  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
4618  * called from inside the library in response to chain events, P2P events, or timer events).
4619  */
4620 typedef struct LDKFeeEstimator {
4621    /**
4622     * An opaque pointer which is passed to your function implementations as an argument.
4623     * This has no meaning in the LDK, and can be NULL or any other value.
4624     */
4625    void *this_arg;
4626    /**
4627     * Gets estimated satoshis of fee required per 1000 Weight-Units.
4628     *
4629     * Must be no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later round-downs
4630     * don't put us below 1 satoshi-per-byte).
4631     *
4632     * This translates to:
4633     *  * satoshis-per-byte * 250
4634     *  * ceil(satoshis-per-kbyte / 4)
4635     */
4636    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
4637    /**
4638     * Frees any resources associated with this object given its this_arg pointer.
4639     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4640     */
4641    void (*free)(void *this_arg);
4642 } LDKFeeEstimator;
4643
4644 /**
4645  * A trait encapsulating the operations required of a logger
4646  */
4647 typedef struct LDKLogger {
4648    /**
4649     * An opaque pointer which is passed to your function implementations as an argument.
4650     * This has no meaning in the LDK, and can be NULL or any other value.
4651     */
4652    void *this_arg;
4653    /**
4654     * Logs the `Record`
4655     */
4656    void (*log)(const void *this_arg, const char *record);
4657    /**
4658     * Frees any resources associated with this object given its this_arg pointer.
4659     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4660     */
4661    void (*free)(void *this_arg);
4662 } LDKLogger;
4663
4664
4665
4666 /**
4667  * Manager which keeps track of a number of channels and sends messages to the appropriate
4668  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
4669  *
4670  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
4671  * to individual Channels.
4672  *
4673  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
4674  * all peers during write/read (though does not modify this instance, only the instance being
4675  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
4676  * called funding_transaction_generated for outbound channels).
4677  *
4678  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
4679  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
4680  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
4681  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
4682  * the serialization process). If the deserialized version is out-of-date compared to the
4683  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
4684  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
4685  *
4686  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
4687  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
4688  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
4689  * block_connected() to step towards your best block) upon deserialization before using the
4690  * object!
4691  *
4692  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
4693  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
4694  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
4695  * offline for a full minute. In order to track this, you must call
4696  * timer_chan_freshness_every_min roughly once per minute, though it doesn't have to be perfect.
4697  *
4698  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
4699  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
4700  * essentially you should default to using a SimpleRefChannelManager, and use a
4701  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
4702  * you're using lightning-net-tokio.
4703  */
4704 typedef struct MUST_USE_STRUCT LDKChannelManager {
4705    /**
4706     * A pointer to the opaque Rust object.
4707     * Nearly everywhere, inner must be non-null, however in places where
4708     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4709     */
4710    LDKnativeChannelManager *inner;
4711    /**
4712     * Indicates that this is the only struct which contains the same pointer.
4713     * Rust functions which take ownership of an object provided via an argument require
4714     * this to be true and invalidate the object pointed to by inner.
4715     */
4716    bool is_owned;
4717 } LDKChannelManager;
4718
4719 /**
4720  * A tuple of 2 elements. See the individual fields for the types contained.
4721  */
4722 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
4723    /**
4724     * The element at position 0
4725     */
4726    struct LDKThirtyTwoBytes a;
4727    /**
4728     * The element at position 1
4729     */
4730    struct LDKChannelManager b;
4731 } LDKC2Tuple_BlockHashChannelManagerZ;
4732
4733 /**
4734  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
4735  */
4736 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
4737    /**
4738     * A pointer to the contents in the success state.
4739     * Reading from this pointer when `result_ok` is not set is undefined.
4740     */
4741    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
4742    /**
4743     * A pointer to the contents in the error state.
4744     * Reading from this pointer when `result_ok` is set is undefined.
4745     */
4746    struct LDKDecodeError *err;
4747 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
4748
4749 /**
4750  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
4751  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::ln::msgs::DecodeError on failure.
4752  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4753  */
4754 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
4755    /**
4756     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
4757     * `err` or `result` depending on the state of `result_ok`.
4758     */
4759    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
4760    /**
4761     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
4762     */
4763    bool result_ok;
4764 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
4765
4766 /**
4767  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
4768  */
4769 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
4770    /**
4771     * A pointer to the contents in the success state.
4772     * Reading from this pointer when `result_ok` is not set is undefined.
4773     */
4774    struct LDKSpendableOutputDescriptor *result;
4775    /**
4776     * A pointer to the contents in the error state.
4777     * Reading from this pointer when `result_ok` is set is undefined.
4778     */
4779    struct LDKDecodeError *err;
4780 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
4781
4782 /**
4783  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4784  * containing a crate::chain::keysinterface::SpendableOutputDescriptor on success and a crate::ln::msgs::DecodeError on failure.
4785  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4786  */
4787 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
4788    /**
4789     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
4790     * `err` or `result` depending on the state of `result_ok`.
4791     */
4792    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
4793    /**
4794     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
4795     */
4796    bool result_ok;
4797 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
4798
4799 /**
4800  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
4801  * This corresponds to std::vector in C++
4802  */
4803 typedef struct LDKCVec_CVec_u8ZZ {
4804    /**
4805     * The elements in the array.
4806     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4807     */
4808    struct LDKCVec_u8Z *data;
4809    /**
4810     * The number of elements pointed to by `data`.
4811     */
4812    uintptr_t datalen;
4813 } LDKCVec_CVec_u8ZZ;
4814
4815 /**
4816  * The contents of CResult_CVec_CVec_u8ZZNoneZ
4817  */
4818 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
4819    /**
4820     * A pointer to the contents in the success state.
4821     * Reading from this pointer when `result_ok` is not set is undefined.
4822     */
4823    struct LDKCVec_CVec_u8ZZ *result;
4824    /**
4825     * Note that this value is always NULL, as there are no contents in the Err variant
4826     */
4827    void *err;
4828 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
4829
4830 /**
4831  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
4832  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
4833  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4834  */
4835 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
4836    /**
4837     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
4838     * `err` or `result` depending on the state of `result_ok`.
4839     */
4840    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
4841    /**
4842     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
4843     */
4844    bool result_ok;
4845 } LDKCResult_CVec_CVec_u8ZZNoneZ;
4846
4847
4848
4849 /**
4850  * A simple implementation of Sign that just keeps the private keys in memory.
4851  *
4852  * This implementation performs no policy checks and is insufficient by itself as
4853  * a secure external signer.
4854  */
4855 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
4856    /**
4857     * A pointer to the opaque Rust object.
4858     * Nearly everywhere, inner must be non-null, however in places where
4859     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4860     */
4861    LDKnativeInMemorySigner *inner;
4862    /**
4863     * Indicates that this is the only struct which contains the same pointer.
4864     * Rust functions which take ownership of an object provided via an argument require
4865     * this to be true and invalidate the object pointed to by inner.
4866     */
4867    bool is_owned;
4868 } LDKInMemorySigner;
4869
4870 /**
4871  * The contents of CResult_InMemorySignerDecodeErrorZ
4872  */
4873 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
4874    /**
4875     * A pointer to the contents in the success state.
4876     * Reading from this pointer when `result_ok` is not set is undefined.
4877     */
4878    struct LDKInMemorySigner *result;
4879    /**
4880     * A pointer to the contents in the error state.
4881     * Reading from this pointer when `result_ok` is set is undefined.
4882     */
4883    struct LDKDecodeError *err;
4884 } LDKCResult_InMemorySignerDecodeErrorZPtr;
4885
4886 /**
4887  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
4888  * containing a crate::chain::keysinterface::InMemorySigner on success and a crate::ln::msgs::DecodeError on failure.
4889  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4890  */
4891 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
4892    /**
4893     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
4894     * `err` or `result` depending on the state of `result_ok`.
4895     */
4896    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
4897    /**
4898     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
4899     */
4900    bool result_ok;
4901 } LDKCResult_InMemorySignerDecodeErrorZ;
4902
4903 /**
4904  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
4905  * This corresponds to std::vector in C++
4906  */
4907 typedef struct LDKCVec_TxOutZ {
4908    /**
4909     * The elements in the array.
4910     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4911     */
4912    struct LDKTxOut *data;
4913    /**
4914     * The number of elements pointed to by `data`.
4915     */
4916    uintptr_t datalen;
4917 } LDKCVec_TxOutZ;
4918
4919 /**
4920  * The contents of CResult_TransactionNoneZ
4921  */
4922 typedef union LDKCResult_TransactionNoneZPtr {
4923    /**
4924     * A pointer to the contents in the success state.
4925     * Reading from this pointer when `result_ok` is not set is undefined.
4926     */
4927    struct LDKTransaction *result;
4928    /**
4929     * Note that this value is always NULL, as there are no contents in the Err variant
4930     */
4931    void *err;
4932 } LDKCResult_TransactionNoneZPtr;
4933
4934 /**
4935  * A CResult_TransactionNoneZ represents the result of a fallible operation,
4936  * containing a crate::c_types::Transaction on success and a () on failure.
4937  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4938  */
4939 typedef struct LDKCResult_TransactionNoneZ {
4940    /**
4941     * The contents of this CResult_TransactionNoneZ, accessible via either
4942     * `err` or `result` depending on the state of `result_ok`.
4943     */
4944    union LDKCResult_TransactionNoneZPtr contents;
4945    /**
4946     * Whether this CResult_TransactionNoneZ represents a success state.
4947     */
4948    bool result_ok;
4949 } LDKCResult_TransactionNoneZ;
4950
4951
4952
4953 /**
4954  * A hop in a route
4955  */
4956 typedef struct MUST_USE_STRUCT LDKRouteHop {
4957    /**
4958     * A pointer to the opaque Rust object.
4959     * Nearly everywhere, inner must be non-null, however in places where
4960     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4961     */
4962    LDKnativeRouteHop *inner;
4963    /**
4964     * Indicates that this is the only struct which contains the same pointer.
4965     * Rust functions which take ownership of an object provided via an argument require
4966     * this to be true and invalidate the object pointed to by inner.
4967     */
4968    bool is_owned;
4969 } LDKRouteHop;
4970
4971 /**
4972  * A dynamically-allocated array of crate::routing::router::RouteHops of arbitrary size.
4973  * This corresponds to std::vector in C++
4974  */
4975 typedef struct LDKCVec_RouteHopZ {
4976    /**
4977     * The elements in the array.
4978     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4979     */
4980    struct LDKRouteHop *data;
4981    /**
4982     * The number of elements pointed to by `data`.
4983     */
4984    uintptr_t datalen;
4985 } LDKCVec_RouteHopZ;
4986
4987 /**
4988  * A dynamically-allocated array of crate::c_types::derived::CVec_RouteHopZs of arbitrary size.
4989  * This corresponds to std::vector in C++
4990  */
4991 typedef struct LDKCVec_CVec_RouteHopZZ {
4992    /**
4993     * The elements in the array.
4994     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4995     */
4996    struct LDKCVec_RouteHopZ *data;
4997    /**
4998     * The number of elements pointed to by `data`.
4999     */
5000    uintptr_t datalen;
5001 } LDKCVec_CVec_RouteHopZZ;
5002
5003
5004
5005 /**
5006  * A route directs a payment from the sender (us) to the recipient. If the recipient supports MPP,
5007  * it can take multiple paths. Each path is composed of one or more hops through the network.
5008  */
5009 typedef struct MUST_USE_STRUCT LDKRoute {
5010    /**
5011     * A pointer to the opaque Rust object.
5012     * Nearly everywhere, inner must be non-null, however in places where
5013     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5014     */
5015    LDKnativeRoute *inner;
5016    /**
5017     * Indicates that this is the only struct which contains the same pointer.
5018     * Rust functions which take ownership of an object provided via an argument require
5019     * this to be true and invalidate the object pointed to by inner.
5020     */
5021    bool is_owned;
5022 } LDKRoute;
5023
5024 /**
5025  * The contents of CResult_RouteDecodeErrorZ
5026  */
5027 typedef union LDKCResult_RouteDecodeErrorZPtr {
5028    /**
5029     * A pointer to the contents in the success state.
5030     * Reading from this pointer when `result_ok` is not set is undefined.
5031     */
5032    struct LDKRoute *result;
5033    /**
5034     * A pointer to the contents in the error state.
5035     * Reading from this pointer when `result_ok` is set is undefined.
5036     */
5037    struct LDKDecodeError *err;
5038 } LDKCResult_RouteDecodeErrorZPtr;
5039
5040 /**
5041  * A CResult_RouteDecodeErrorZ represents the result of a fallible operation,
5042  * containing a crate::routing::router::Route on success and a crate::ln::msgs::DecodeError on failure.
5043  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5044  */
5045 typedef struct LDKCResult_RouteDecodeErrorZ {
5046    /**
5047     * The contents of this CResult_RouteDecodeErrorZ, accessible via either
5048     * `err` or `result` depending on the state of `result_ok`.
5049     */
5050    union LDKCResult_RouteDecodeErrorZPtr contents;
5051    /**
5052     * Whether this CResult_RouteDecodeErrorZ represents a success state.
5053     */
5054    bool result_ok;
5055 } LDKCResult_RouteDecodeErrorZ;
5056
5057
5058
5059 /**
5060  * A channel descriptor which provides a last-hop route to get_route
5061  */
5062 typedef struct MUST_USE_STRUCT LDKRouteHint {
5063    /**
5064     * A pointer to the opaque Rust object.
5065     * Nearly everywhere, inner must be non-null, however in places where
5066     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5067     */
5068    LDKnativeRouteHint *inner;
5069    /**
5070     * Indicates that this is the only struct which contains the same pointer.
5071     * Rust functions which take ownership of an object provided via an argument require
5072     * this to be true and invalidate the object pointed to by inner.
5073     */
5074    bool is_owned;
5075 } LDKRouteHint;
5076
5077 /**
5078  * A dynamically-allocated array of crate::routing::router::RouteHints of arbitrary size.
5079  * This corresponds to std::vector in C++
5080  */
5081 typedef struct LDKCVec_RouteHintZ {
5082    /**
5083     * The elements in the array.
5084     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5085     */
5086    struct LDKRouteHint *data;
5087    /**
5088     * The number of elements pointed to by `data`.
5089     */
5090    uintptr_t datalen;
5091 } LDKCVec_RouteHintZ;
5092
5093 /**
5094  * The contents of CResult_RouteLightningErrorZ
5095  */
5096 typedef union LDKCResult_RouteLightningErrorZPtr {
5097    /**
5098     * A pointer to the contents in the success state.
5099     * Reading from this pointer when `result_ok` is not set is undefined.
5100     */
5101    struct LDKRoute *result;
5102    /**
5103     * A pointer to the contents in the error state.
5104     * Reading from this pointer when `result_ok` is set is undefined.
5105     */
5106    struct LDKLightningError *err;
5107 } LDKCResult_RouteLightningErrorZPtr;
5108
5109 /**
5110  * A CResult_RouteLightningErrorZ represents the result of a fallible operation,
5111  * containing a crate::routing::router::Route on success and a crate::ln::msgs::LightningError on failure.
5112  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5113  */
5114 typedef struct LDKCResult_RouteLightningErrorZ {
5115    /**
5116     * The contents of this CResult_RouteLightningErrorZ, accessible via either
5117     * `err` or `result` depending on the state of `result_ok`.
5118     */
5119    union LDKCResult_RouteLightningErrorZPtr contents;
5120    /**
5121     * Whether this CResult_RouteLightningErrorZ represents a success state.
5122     */
5123    bool result_ok;
5124 } LDKCResult_RouteLightningErrorZ;
5125
5126 /**
5127  * The contents of CResult_NetAddressu8Z
5128  */
5129 typedef union LDKCResult_NetAddressu8ZPtr {
5130    /**
5131     * A pointer to the contents in the success state.
5132     * Reading from this pointer when `result_ok` is not set is undefined.
5133     */
5134    struct LDKNetAddress *result;
5135    /**
5136     * A pointer to the contents in the error state.
5137     * Reading from this pointer when `result_ok` is set is undefined.
5138     */
5139    uint8_t *err;
5140 } LDKCResult_NetAddressu8ZPtr;
5141
5142 /**
5143  * A CResult_NetAddressu8Z represents the result of a fallible operation,
5144  * containing a crate::ln::msgs::NetAddress on success and a u8 on failure.
5145  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5146  */
5147 typedef struct LDKCResult_NetAddressu8Z {
5148    /**
5149     * The contents of this CResult_NetAddressu8Z, accessible via either
5150     * `err` or `result` depending on the state of `result_ok`.
5151     */
5152    union LDKCResult_NetAddressu8ZPtr contents;
5153    /**
5154     * Whether this CResult_NetAddressu8Z represents a success state.
5155     */
5156    bool result_ok;
5157 } LDKCResult_NetAddressu8Z;
5158
5159 /**
5160  * The contents of CResult_CResult_NetAddressu8ZDecodeErrorZ
5161  */
5162 typedef union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr {
5163    /**
5164     * A pointer to the contents in the success state.
5165     * Reading from this pointer when `result_ok` is not set is undefined.
5166     */
5167    struct LDKCResult_NetAddressu8Z *result;
5168    /**
5169     * A pointer to the contents in the error state.
5170     * Reading from this pointer when `result_ok` is set is undefined.
5171     */
5172    struct LDKDecodeError *err;
5173 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr;
5174
5175 /**
5176  * A CResult_CResult_NetAddressu8ZDecodeErrorZ represents the result of a fallible operation,
5177  * containing a crate::c_types::derived::CResult_NetAddressu8Z on success and a crate::ln::msgs::DecodeError on failure.
5178  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5179  */
5180 typedef struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ {
5181    /**
5182     * The contents of this CResult_CResult_NetAddressu8ZDecodeErrorZ, accessible via either
5183     * `err` or `result` depending on the state of `result_ok`.
5184     */
5185    union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr contents;
5186    /**
5187     * Whether this CResult_CResult_NetAddressu8ZDecodeErrorZ represents a success state.
5188     */
5189    bool result_ok;
5190 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZ;
5191
5192
5193
5194 /**
5195  * An update_add_htlc message to be sent or received from a peer
5196  */
5197 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
5198    /**
5199     * A pointer to the opaque Rust object.
5200     * Nearly everywhere, inner must be non-null, however in places where
5201     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5202     */
5203    LDKnativeUpdateAddHTLC *inner;
5204    /**
5205     * Indicates that this is the only struct which contains the same pointer.
5206     * Rust functions which take ownership of an object provided via an argument require
5207     * this to be true and invalidate the object pointed to by inner.
5208     */
5209    bool is_owned;
5210 } LDKUpdateAddHTLC;
5211
5212 /**
5213  * A dynamically-allocated array of crate::ln::msgs::UpdateAddHTLCs of arbitrary size.
5214  * This corresponds to std::vector in C++
5215  */
5216 typedef struct LDKCVec_UpdateAddHTLCZ {
5217    /**
5218     * The elements in the array.
5219     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5220     */
5221    struct LDKUpdateAddHTLC *data;
5222    /**
5223     * The number of elements pointed to by `data`.
5224     */
5225    uintptr_t datalen;
5226 } LDKCVec_UpdateAddHTLCZ;
5227
5228
5229
5230 /**
5231  * An update_fulfill_htlc message to be sent or received from a peer
5232  */
5233 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
5234    /**
5235     * A pointer to the opaque Rust object.
5236     * Nearly everywhere, inner must be non-null, however in places where
5237     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5238     */
5239    LDKnativeUpdateFulfillHTLC *inner;
5240    /**
5241     * Indicates that this is the only struct which contains the same pointer.
5242     * Rust functions which take ownership of an object provided via an argument require
5243     * this to be true and invalidate the object pointed to by inner.
5244     */
5245    bool is_owned;
5246 } LDKUpdateFulfillHTLC;
5247
5248 /**
5249  * A dynamically-allocated array of crate::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
5250  * This corresponds to std::vector in C++
5251  */
5252 typedef struct LDKCVec_UpdateFulfillHTLCZ {
5253    /**
5254     * The elements in the array.
5255     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5256     */
5257    struct LDKUpdateFulfillHTLC *data;
5258    /**
5259     * The number of elements pointed to by `data`.
5260     */
5261    uintptr_t datalen;
5262 } LDKCVec_UpdateFulfillHTLCZ;
5263
5264
5265
5266 /**
5267  * An update_fail_htlc message to be sent or received from a peer
5268  */
5269 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
5270    /**
5271     * A pointer to the opaque Rust object.
5272     * Nearly everywhere, inner must be non-null, however in places where
5273     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5274     */
5275    LDKnativeUpdateFailHTLC *inner;
5276    /**
5277     * Indicates that this is the only struct which contains the same pointer.
5278     * Rust functions which take ownership of an object provided via an argument require
5279     * this to be true and invalidate the object pointed to by inner.
5280     */
5281    bool is_owned;
5282 } LDKUpdateFailHTLC;
5283
5284 /**
5285  * A dynamically-allocated array of crate::ln::msgs::UpdateFailHTLCs of arbitrary size.
5286  * This corresponds to std::vector in C++
5287  */
5288 typedef struct LDKCVec_UpdateFailHTLCZ {
5289    /**
5290     * The elements in the array.
5291     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5292     */
5293    struct LDKUpdateFailHTLC *data;
5294    /**
5295     * The number of elements pointed to by `data`.
5296     */
5297    uintptr_t datalen;
5298 } LDKCVec_UpdateFailHTLCZ;
5299
5300
5301
5302 /**
5303  * An update_fail_malformed_htlc message to be sent or received from a peer
5304  */
5305 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
5306    /**
5307     * A pointer to the opaque Rust object.
5308     * Nearly everywhere, inner must be non-null, however in places where
5309     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5310     */
5311    LDKnativeUpdateFailMalformedHTLC *inner;
5312    /**
5313     * Indicates that this is the only struct which contains the same pointer.
5314     * Rust functions which take ownership of an object provided via an argument require
5315     * this to be true and invalidate the object pointed to by inner.
5316     */
5317    bool is_owned;
5318 } LDKUpdateFailMalformedHTLC;
5319
5320 /**
5321  * A dynamically-allocated array of crate::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
5322  * This corresponds to std::vector in C++
5323  */
5324 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
5325    /**
5326     * The elements in the array.
5327     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5328     */
5329    struct LDKUpdateFailMalformedHTLC *data;
5330    /**
5331     * The number of elements pointed to by `data`.
5332     */
5333    uintptr_t datalen;
5334 } LDKCVec_UpdateFailMalformedHTLCZ;
5335
5336 /**
5337  * The contents of CResult_AcceptChannelDecodeErrorZ
5338  */
5339 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
5340    /**
5341     * A pointer to the contents in the success state.
5342     * Reading from this pointer when `result_ok` is not set is undefined.
5343     */
5344    struct LDKAcceptChannel *result;
5345    /**
5346     * A pointer to the contents in the error state.
5347     * Reading from this pointer when `result_ok` is set is undefined.
5348     */
5349    struct LDKDecodeError *err;
5350 } LDKCResult_AcceptChannelDecodeErrorZPtr;
5351
5352 /**
5353  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
5354  * containing a crate::ln::msgs::AcceptChannel on success and a crate::ln::msgs::DecodeError on failure.
5355  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5356  */
5357 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
5358    /**
5359     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
5360     * `err` or `result` depending on the state of `result_ok`.
5361     */
5362    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
5363    /**
5364     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
5365     */
5366    bool result_ok;
5367 } LDKCResult_AcceptChannelDecodeErrorZ;
5368
5369 /**
5370  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
5371  */
5372 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
5373    /**
5374     * A pointer to the contents in the success state.
5375     * Reading from this pointer when `result_ok` is not set is undefined.
5376     */
5377    struct LDKAnnouncementSignatures *result;
5378    /**
5379     * A pointer to the contents in the error state.
5380     * Reading from this pointer when `result_ok` is set is undefined.
5381     */
5382    struct LDKDecodeError *err;
5383 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
5384
5385 /**
5386  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
5387  * containing a crate::ln::msgs::AnnouncementSignatures on success and a crate::ln::msgs::DecodeError on failure.
5388  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5389  */
5390 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
5391    /**
5392     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
5393     * `err` or `result` depending on the state of `result_ok`.
5394     */
5395    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
5396    /**
5397     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
5398     */
5399    bool result_ok;
5400 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
5401
5402 /**
5403  * The contents of CResult_ChannelReestablishDecodeErrorZ
5404  */
5405 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
5406    /**
5407     * A pointer to the contents in the success state.
5408     * Reading from this pointer when `result_ok` is not set is undefined.
5409     */
5410    struct LDKChannelReestablish *result;
5411    /**
5412     * A pointer to the contents in the error state.
5413     * Reading from this pointer when `result_ok` is set is undefined.
5414     */
5415    struct LDKDecodeError *err;
5416 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
5417
5418 /**
5419  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
5420  * containing a crate::ln::msgs::ChannelReestablish on success and a crate::ln::msgs::DecodeError on failure.
5421  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5422  */
5423 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
5424    /**
5425     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
5426     * `err` or `result` depending on the state of `result_ok`.
5427     */
5428    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
5429    /**
5430     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
5431     */
5432    bool result_ok;
5433 } LDKCResult_ChannelReestablishDecodeErrorZ;
5434
5435 /**
5436  * The contents of CResult_ClosingSignedDecodeErrorZ
5437  */
5438 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
5439    /**
5440     * A pointer to the contents in the success state.
5441     * Reading from this pointer when `result_ok` is not set is undefined.
5442     */
5443    struct LDKClosingSigned *result;
5444    /**
5445     * A pointer to the contents in the error state.
5446     * Reading from this pointer when `result_ok` is set is undefined.
5447     */
5448    struct LDKDecodeError *err;
5449 } LDKCResult_ClosingSignedDecodeErrorZPtr;
5450
5451 /**
5452  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
5453  * containing a crate::ln::msgs::ClosingSigned on success and a crate::ln::msgs::DecodeError on failure.
5454  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5455  */
5456 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
5457    /**
5458     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
5459     * `err` or `result` depending on the state of `result_ok`.
5460     */
5461    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
5462    /**
5463     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
5464     */
5465    bool result_ok;
5466 } LDKCResult_ClosingSignedDecodeErrorZ;
5467
5468
5469
5470 /**
5471  * A commitment_signed message to be sent or received from a peer
5472  */
5473 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
5474    /**
5475     * A pointer to the opaque Rust object.
5476     * Nearly everywhere, inner must be non-null, however in places where
5477     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5478     */
5479    LDKnativeCommitmentSigned *inner;
5480    /**
5481     * Indicates that this is the only struct which contains the same pointer.
5482     * Rust functions which take ownership of an object provided via an argument require
5483     * this to be true and invalidate the object pointed to by inner.
5484     */
5485    bool is_owned;
5486 } LDKCommitmentSigned;
5487
5488 /**
5489  * The contents of CResult_CommitmentSignedDecodeErrorZ
5490  */
5491 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
5492    /**
5493     * A pointer to the contents in the success state.
5494     * Reading from this pointer when `result_ok` is not set is undefined.
5495     */
5496    struct LDKCommitmentSigned *result;
5497    /**
5498     * A pointer to the contents in the error state.
5499     * Reading from this pointer when `result_ok` is set is undefined.
5500     */
5501    struct LDKDecodeError *err;
5502 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
5503
5504 /**
5505  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
5506  * containing a crate::ln::msgs::CommitmentSigned on success and a crate::ln::msgs::DecodeError on failure.
5507  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5508  */
5509 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
5510    /**
5511     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
5512     * `err` or `result` depending on the state of `result_ok`.
5513     */
5514    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
5515    /**
5516     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
5517     */
5518    bool result_ok;
5519 } LDKCResult_CommitmentSignedDecodeErrorZ;
5520
5521 /**
5522  * The contents of CResult_FundingCreatedDecodeErrorZ
5523  */
5524 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
5525    /**
5526     * A pointer to the contents in the success state.
5527     * Reading from this pointer when `result_ok` is not set is undefined.
5528     */
5529    struct LDKFundingCreated *result;
5530    /**
5531     * A pointer to the contents in the error state.
5532     * Reading from this pointer when `result_ok` is set is undefined.
5533     */
5534    struct LDKDecodeError *err;
5535 } LDKCResult_FundingCreatedDecodeErrorZPtr;
5536
5537 /**
5538  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
5539  * containing a crate::ln::msgs::FundingCreated on success and a crate::ln::msgs::DecodeError on failure.
5540  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5541  */
5542 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
5543    /**
5544     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
5545     * `err` or `result` depending on the state of `result_ok`.
5546     */
5547    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
5548    /**
5549     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
5550     */
5551    bool result_ok;
5552 } LDKCResult_FundingCreatedDecodeErrorZ;
5553
5554 /**
5555  * The contents of CResult_FundingSignedDecodeErrorZ
5556  */
5557 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
5558    /**
5559     * A pointer to the contents in the success state.
5560     * Reading from this pointer when `result_ok` is not set is undefined.
5561     */
5562    struct LDKFundingSigned *result;
5563    /**
5564     * A pointer to the contents in the error state.
5565     * Reading from this pointer when `result_ok` is set is undefined.
5566     */
5567    struct LDKDecodeError *err;
5568 } LDKCResult_FundingSignedDecodeErrorZPtr;
5569
5570 /**
5571  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
5572  * containing a crate::ln::msgs::FundingSigned on success and a crate::ln::msgs::DecodeError on failure.
5573  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5574  */
5575 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
5576    /**
5577     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
5578     * `err` or `result` depending on the state of `result_ok`.
5579     */
5580    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
5581    /**
5582     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
5583     */
5584    bool result_ok;
5585 } LDKCResult_FundingSignedDecodeErrorZ;
5586
5587 /**
5588  * The contents of CResult_FundingLockedDecodeErrorZ
5589  */
5590 typedef union LDKCResult_FundingLockedDecodeErrorZPtr {
5591    /**
5592     * A pointer to the contents in the success state.
5593     * Reading from this pointer when `result_ok` is not set is undefined.
5594     */
5595    struct LDKFundingLocked *result;
5596    /**
5597     * A pointer to the contents in the error state.
5598     * Reading from this pointer when `result_ok` is set is undefined.
5599     */
5600    struct LDKDecodeError *err;
5601 } LDKCResult_FundingLockedDecodeErrorZPtr;
5602
5603 /**
5604  * A CResult_FundingLockedDecodeErrorZ represents the result of a fallible operation,
5605  * containing a crate::ln::msgs::FundingLocked on success and a crate::ln::msgs::DecodeError on failure.
5606  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5607  */
5608 typedef struct LDKCResult_FundingLockedDecodeErrorZ {
5609    /**
5610     * The contents of this CResult_FundingLockedDecodeErrorZ, accessible via either
5611     * `err` or `result` depending on the state of `result_ok`.
5612     */
5613    union LDKCResult_FundingLockedDecodeErrorZPtr contents;
5614    /**
5615     * Whether this CResult_FundingLockedDecodeErrorZ represents a success state.
5616     */
5617    bool result_ok;
5618 } LDKCResult_FundingLockedDecodeErrorZ;
5619
5620
5621
5622 /**
5623  * An init message to be sent or received from a peer
5624  */
5625 typedef struct MUST_USE_STRUCT LDKInit {
5626    /**
5627     * A pointer to the opaque Rust object.
5628     * Nearly everywhere, inner must be non-null, however in places where
5629     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5630     */
5631    LDKnativeInit *inner;
5632    /**
5633     * Indicates that this is the only struct which contains the same pointer.
5634     * Rust functions which take ownership of an object provided via an argument require
5635     * this to be true and invalidate the object pointed to by inner.
5636     */
5637    bool is_owned;
5638 } LDKInit;
5639
5640 /**
5641  * The contents of CResult_InitDecodeErrorZ
5642  */
5643 typedef union LDKCResult_InitDecodeErrorZPtr {
5644    /**
5645     * A pointer to the contents in the success state.
5646     * Reading from this pointer when `result_ok` is not set is undefined.
5647     */
5648    struct LDKInit *result;
5649    /**
5650     * A pointer to the contents in the error state.
5651     * Reading from this pointer when `result_ok` is set is undefined.
5652     */
5653    struct LDKDecodeError *err;
5654 } LDKCResult_InitDecodeErrorZPtr;
5655
5656 /**
5657  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
5658  * containing a crate::ln::msgs::Init on success and a crate::ln::msgs::DecodeError on failure.
5659  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5660  */
5661 typedef struct LDKCResult_InitDecodeErrorZ {
5662    /**
5663     * The contents of this CResult_InitDecodeErrorZ, accessible via either
5664     * `err` or `result` depending on the state of `result_ok`.
5665     */
5666    union LDKCResult_InitDecodeErrorZPtr contents;
5667    /**
5668     * Whether this CResult_InitDecodeErrorZ represents a success state.
5669     */
5670    bool result_ok;
5671 } LDKCResult_InitDecodeErrorZ;
5672
5673 /**
5674  * The contents of CResult_OpenChannelDecodeErrorZ
5675  */
5676 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
5677    /**
5678     * A pointer to the contents in the success state.
5679     * Reading from this pointer when `result_ok` is not set is undefined.
5680     */
5681    struct LDKOpenChannel *result;
5682    /**
5683     * A pointer to the contents in the error state.
5684     * Reading from this pointer when `result_ok` is set is undefined.
5685     */
5686    struct LDKDecodeError *err;
5687 } LDKCResult_OpenChannelDecodeErrorZPtr;
5688
5689 /**
5690  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
5691  * containing a crate::ln::msgs::OpenChannel on success and a crate::ln::msgs::DecodeError on failure.
5692  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5693  */
5694 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
5695    /**
5696     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
5697     * `err` or `result` depending on the state of `result_ok`.
5698     */
5699    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
5700    /**
5701     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
5702     */
5703    bool result_ok;
5704 } LDKCResult_OpenChannelDecodeErrorZ;
5705
5706 /**
5707  * The contents of CResult_RevokeAndACKDecodeErrorZ
5708  */
5709 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
5710    /**
5711     * A pointer to the contents in the success state.
5712     * Reading from this pointer when `result_ok` is not set is undefined.
5713     */
5714    struct LDKRevokeAndACK *result;
5715    /**
5716     * A pointer to the contents in the error state.
5717     * Reading from this pointer when `result_ok` is set is undefined.
5718     */
5719    struct LDKDecodeError *err;
5720 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
5721
5722 /**
5723  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
5724  * containing a crate::ln::msgs::RevokeAndACK on success and a crate::ln::msgs::DecodeError on failure.
5725  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5726  */
5727 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
5728    /**
5729     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
5730     * `err` or `result` depending on the state of `result_ok`.
5731     */
5732    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
5733    /**
5734     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
5735     */
5736    bool result_ok;
5737 } LDKCResult_RevokeAndACKDecodeErrorZ;
5738
5739 /**
5740  * The contents of CResult_ShutdownDecodeErrorZ
5741  */
5742 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
5743    /**
5744     * A pointer to the contents in the success state.
5745     * Reading from this pointer when `result_ok` is not set is undefined.
5746     */
5747    struct LDKShutdown *result;
5748    /**
5749     * A pointer to the contents in the error state.
5750     * Reading from this pointer when `result_ok` is set is undefined.
5751     */
5752    struct LDKDecodeError *err;
5753 } LDKCResult_ShutdownDecodeErrorZPtr;
5754
5755 /**
5756  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
5757  * containing a crate::ln::msgs::Shutdown on success and a crate::ln::msgs::DecodeError on failure.
5758  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5759  */
5760 typedef struct LDKCResult_ShutdownDecodeErrorZ {
5761    /**
5762     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
5763     * `err` or `result` depending on the state of `result_ok`.
5764     */
5765    union LDKCResult_ShutdownDecodeErrorZPtr contents;
5766    /**
5767     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
5768     */
5769    bool result_ok;
5770 } LDKCResult_ShutdownDecodeErrorZ;
5771
5772 /**
5773  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
5774  */
5775 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
5776    /**
5777     * A pointer to the contents in the success state.
5778     * Reading from this pointer when `result_ok` is not set is undefined.
5779     */
5780    struct LDKUpdateFailHTLC *result;
5781    /**
5782     * A pointer to the contents in the error state.
5783     * Reading from this pointer when `result_ok` is set is undefined.
5784     */
5785    struct LDKDecodeError *err;
5786 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
5787
5788 /**
5789  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
5790  * containing a crate::ln::msgs::UpdateFailHTLC on success and a crate::ln::msgs::DecodeError on failure.
5791  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5792  */
5793 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
5794    /**
5795     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
5796     * `err` or `result` depending on the state of `result_ok`.
5797     */
5798    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
5799    /**
5800     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
5801     */
5802    bool result_ok;
5803 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
5804
5805 /**
5806  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
5807  */
5808 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
5809    /**
5810     * A pointer to the contents in the success state.
5811     * Reading from this pointer when `result_ok` is not set is undefined.
5812     */
5813    struct LDKUpdateFailMalformedHTLC *result;
5814    /**
5815     * A pointer to the contents in the error state.
5816     * Reading from this pointer when `result_ok` is set is undefined.
5817     */
5818    struct LDKDecodeError *err;
5819 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
5820
5821 /**
5822  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
5823  * containing a crate::ln::msgs::UpdateFailMalformedHTLC on success and a crate::ln::msgs::DecodeError on failure.
5824  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5825  */
5826 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
5827    /**
5828     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
5829     * `err` or `result` depending on the state of `result_ok`.
5830     */
5831    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
5832    /**
5833     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
5834     */
5835    bool result_ok;
5836 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
5837
5838
5839
5840 /**
5841  * An update_fee message to be sent or received from a peer
5842  */
5843 typedef struct MUST_USE_STRUCT LDKUpdateFee {
5844    /**
5845     * A pointer to the opaque Rust object.
5846     * Nearly everywhere, inner must be non-null, however in places where
5847     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5848     */
5849    LDKnativeUpdateFee *inner;
5850    /**
5851     * Indicates that this is the only struct which contains the same pointer.
5852     * Rust functions which take ownership of an object provided via an argument require
5853     * this to be true and invalidate the object pointed to by inner.
5854     */
5855    bool is_owned;
5856 } LDKUpdateFee;
5857
5858 /**
5859  * The contents of CResult_UpdateFeeDecodeErrorZ
5860  */
5861 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
5862    /**
5863     * A pointer to the contents in the success state.
5864     * Reading from this pointer when `result_ok` is not set is undefined.
5865     */
5866    struct LDKUpdateFee *result;
5867    /**
5868     * A pointer to the contents in the error state.
5869     * Reading from this pointer when `result_ok` is set is undefined.
5870     */
5871    struct LDKDecodeError *err;
5872 } LDKCResult_UpdateFeeDecodeErrorZPtr;
5873
5874 /**
5875  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
5876  * containing a crate::ln::msgs::UpdateFee on success and a crate::ln::msgs::DecodeError on failure.
5877  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5878  */
5879 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
5880    /**
5881     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
5882     * `err` or `result` depending on the state of `result_ok`.
5883     */
5884    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
5885    /**
5886     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
5887     */
5888    bool result_ok;
5889 } LDKCResult_UpdateFeeDecodeErrorZ;
5890
5891 /**
5892  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
5893  */
5894 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
5895    /**
5896     * A pointer to the contents in the success state.
5897     * Reading from this pointer when `result_ok` is not set is undefined.
5898     */
5899    struct LDKUpdateFulfillHTLC *result;
5900    /**
5901     * A pointer to the contents in the error state.
5902     * Reading from this pointer when `result_ok` is set is undefined.
5903     */
5904    struct LDKDecodeError *err;
5905 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
5906
5907 /**
5908  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
5909  * containing a crate::ln::msgs::UpdateFulfillHTLC on success and a crate::ln::msgs::DecodeError on failure.
5910  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5911  */
5912 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
5913    /**
5914     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
5915     * `err` or `result` depending on the state of `result_ok`.
5916     */
5917    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
5918    /**
5919     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
5920     */
5921    bool result_ok;
5922 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
5923
5924 /**
5925  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
5926  */
5927 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
5928    /**
5929     * A pointer to the contents in the success state.
5930     * Reading from this pointer when `result_ok` is not set is undefined.
5931     */
5932    struct LDKUpdateAddHTLC *result;
5933    /**
5934     * A pointer to the contents in the error state.
5935     * Reading from this pointer when `result_ok` is set is undefined.
5936     */
5937    struct LDKDecodeError *err;
5938 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
5939
5940 /**
5941  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
5942  * containing a crate::ln::msgs::UpdateAddHTLC on success and a crate::ln::msgs::DecodeError on failure.
5943  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5944  */
5945 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
5946    /**
5947     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
5948     * `err` or `result` depending on the state of `result_ok`.
5949     */
5950    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
5951    /**
5952     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
5953     */
5954    bool result_ok;
5955 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
5956
5957
5958
5959 /**
5960  * A ping message to be sent or received from a peer
5961  */
5962 typedef struct MUST_USE_STRUCT LDKPing {
5963    /**
5964     * A pointer to the opaque Rust object.
5965     * Nearly everywhere, inner must be non-null, however in places where
5966     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5967     */
5968    LDKnativePing *inner;
5969    /**
5970     * Indicates that this is the only struct which contains the same pointer.
5971     * Rust functions which take ownership of an object provided via an argument require
5972     * this to be true and invalidate the object pointed to by inner.
5973     */
5974    bool is_owned;
5975 } LDKPing;
5976
5977 /**
5978  * The contents of CResult_PingDecodeErrorZ
5979  */
5980 typedef union LDKCResult_PingDecodeErrorZPtr {
5981    /**
5982     * A pointer to the contents in the success state.
5983     * Reading from this pointer when `result_ok` is not set is undefined.
5984     */
5985    struct LDKPing *result;
5986    /**
5987     * A pointer to the contents in the error state.
5988     * Reading from this pointer when `result_ok` is set is undefined.
5989     */
5990    struct LDKDecodeError *err;
5991 } LDKCResult_PingDecodeErrorZPtr;
5992
5993 /**
5994  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
5995  * containing a crate::ln::msgs::Ping on success and a crate::ln::msgs::DecodeError on failure.
5996  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5997  */
5998 typedef struct LDKCResult_PingDecodeErrorZ {
5999    /**
6000     * The contents of this CResult_PingDecodeErrorZ, accessible via either
6001     * `err` or `result` depending on the state of `result_ok`.
6002     */
6003    union LDKCResult_PingDecodeErrorZPtr contents;
6004    /**
6005     * Whether this CResult_PingDecodeErrorZ represents a success state.
6006     */
6007    bool result_ok;
6008 } LDKCResult_PingDecodeErrorZ;
6009
6010
6011
6012 /**
6013  * A pong message to be sent or received from a peer
6014  */
6015 typedef struct MUST_USE_STRUCT LDKPong {
6016    /**
6017     * A pointer to the opaque Rust object.
6018     * Nearly everywhere, inner must be non-null, however in places where
6019     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6020     */
6021    LDKnativePong *inner;
6022    /**
6023     * Indicates that this is the only struct which contains the same pointer.
6024     * Rust functions which take ownership of an object provided via an argument require
6025     * this to be true and invalidate the object pointed to by inner.
6026     */
6027    bool is_owned;
6028 } LDKPong;
6029
6030 /**
6031  * The contents of CResult_PongDecodeErrorZ
6032  */
6033 typedef union LDKCResult_PongDecodeErrorZPtr {
6034    /**
6035     * A pointer to the contents in the success state.
6036     * Reading from this pointer when `result_ok` is not set is undefined.
6037     */
6038    struct LDKPong *result;
6039    /**
6040     * A pointer to the contents in the error state.
6041     * Reading from this pointer when `result_ok` is set is undefined.
6042     */
6043    struct LDKDecodeError *err;
6044 } LDKCResult_PongDecodeErrorZPtr;
6045
6046 /**
6047  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
6048  * containing a crate::ln::msgs::Pong on success and a crate::ln::msgs::DecodeError on failure.
6049  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6050  */
6051 typedef struct LDKCResult_PongDecodeErrorZ {
6052    /**
6053     * The contents of this CResult_PongDecodeErrorZ, accessible via either
6054     * `err` or `result` depending on the state of `result_ok`.
6055     */
6056    union LDKCResult_PongDecodeErrorZPtr contents;
6057    /**
6058     * Whether this CResult_PongDecodeErrorZ represents a success state.
6059     */
6060    bool result_ok;
6061 } LDKCResult_PongDecodeErrorZ;
6062
6063 /**
6064  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
6065  */
6066 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
6067    /**
6068     * A pointer to the contents in the success state.
6069     * Reading from this pointer when `result_ok` is not set is undefined.
6070     */
6071    struct LDKUnsignedChannelAnnouncement *result;
6072    /**
6073     * A pointer to the contents in the error state.
6074     * Reading from this pointer when `result_ok` is set is undefined.
6075     */
6076    struct LDKDecodeError *err;
6077 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
6078
6079 /**
6080  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
6081  * containing a crate::ln::msgs::UnsignedChannelAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6082  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6083  */
6084 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
6085    /**
6086     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
6087     * `err` or `result` depending on the state of `result_ok`.
6088     */
6089    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
6090    /**
6091     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
6092     */
6093    bool result_ok;
6094 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
6095
6096 /**
6097  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
6098  */
6099 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
6100    /**
6101     * A pointer to the contents in the success state.
6102     * Reading from this pointer when `result_ok` is not set is undefined.
6103     */
6104    struct LDKChannelAnnouncement *result;
6105    /**
6106     * A pointer to the contents in the error state.
6107     * Reading from this pointer when `result_ok` is set is undefined.
6108     */
6109    struct LDKDecodeError *err;
6110 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
6111
6112 /**
6113  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
6114  * containing a crate::ln::msgs::ChannelAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6115  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6116  */
6117 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
6118    /**
6119     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
6120     * `err` or `result` depending on the state of `result_ok`.
6121     */
6122    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
6123    /**
6124     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
6125     */
6126    bool result_ok;
6127 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
6128
6129
6130
6131 /**
6132  * The unsigned part of a channel_update
6133  */
6134 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
6135    /**
6136     * A pointer to the opaque Rust object.
6137     * Nearly everywhere, inner must be non-null, however in places where
6138     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6139     */
6140    LDKnativeUnsignedChannelUpdate *inner;
6141    /**
6142     * Indicates that this is the only struct which contains the same pointer.
6143     * Rust functions which take ownership of an object provided via an argument require
6144     * this to be true and invalidate the object pointed to by inner.
6145     */
6146    bool is_owned;
6147 } LDKUnsignedChannelUpdate;
6148
6149 /**
6150  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
6151  */
6152 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
6153    /**
6154     * A pointer to the contents in the success state.
6155     * Reading from this pointer when `result_ok` is not set is undefined.
6156     */
6157    struct LDKUnsignedChannelUpdate *result;
6158    /**
6159     * A pointer to the contents in the error state.
6160     * Reading from this pointer when `result_ok` is set is undefined.
6161     */
6162    struct LDKDecodeError *err;
6163 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
6164
6165 /**
6166  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
6167  * containing a crate::ln::msgs::UnsignedChannelUpdate on success and a crate::ln::msgs::DecodeError on failure.
6168  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6169  */
6170 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
6171    /**
6172     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
6173     * `err` or `result` depending on the state of `result_ok`.
6174     */
6175    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
6176    /**
6177     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
6178     */
6179    bool result_ok;
6180 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
6181
6182 /**
6183  * The contents of CResult_ChannelUpdateDecodeErrorZ
6184  */
6185 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
6186    /**
6187     * A pointer to the contents in the success state.
6188     * Reading from this pointer when `result_ok` is not set is undefined.
6189     */
6190    struct LDKChannelUpdate *result;
6191    /**
6192     * A pointer to the contents in the error state.
6193     * Reading from this pointer when `result_ok` is set is undefined.
6194     */
6195    struct LDKDecodeError *err;
6196 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
6197
6198 /**
6199  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
6200  * containing a crate::ln::msgs::ChannelUpdate on success and a crate::ln::msgs::DecodeError on failure.
6201  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6202  */
6203 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
6204    /**
6205     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
6206     * `err` or `result` depending on the state of `result_ok`.
6207     */
6208    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
6209    /**
6210     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
6211     */
6212    bool result_ok;
6213 } LDKCResult_ChannelUpdateDecodeErrorZ;
6214
6215 /**
6216  * The contents of CResult_ErrorMessageDecodeErrorZ
6217  */
6218 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
6219    /**
6220     * A pointer to the contents in the success state.
6221     * Reading from this pointer when `result_ok` is not set is undefined.
6222     */
6223    struct LDKErrorMessage *result;
6224    /**
6225     * A pointer to the contents in the error state.
6226     * Reading from this pointer when `result_ok` is set is undefined.
6227     */
6228    struct LDKDecodeError *err;
6229 } LDKCResult_ErrorMessageDecodeErrorZPtr;
6230
6231 /**
6232  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
6233  * containing a crate::ln::msgs::ErrorMessage on success and a crate::ln::msgs::DecodeError on failure.
6234  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6235  */
6236 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
6237    /**
6238     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
6239     * `err` or `result` depending on the state of `result_ok`.
6240     */
6241    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
6242    /**
6243     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
6244     */
6245    bool result_ok;
6246 } LDKCResult_ErrorMessageDecodeErrorZ;
6247
6248
6249
6250 /**
6251  * The unsigned part of a node_announcement
6252  */
6253 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
6254    /**
6255     * A pointer to the opaque Rust object.
6256     * Nearly everywhere, inner must be non-null, however in places where
6257     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6258     */
6259    LDKnativeUnsignedNodeAnnouncement *inner;
6260    /**
6261     * Indicates that this is the only struct which contains the same pointer.
6262     * Rust functions which take ownership of an object provided via an argument require
6263     * this to be true and invalidate the object pointed to by inner.
6264     */
6265    bool is_owned;
6266 } LDKUnsignedNodeAnnouncement;
6267
6268 /**
6269  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
6270  */
6271 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
6272    /**
6273     * A pointer to the contents in the success state.
6274     * Reading from this pointer when `result_ok` is not set is undefined.
6275     */
6276    struct LDKUnsignedNodeAnnouncement *result;
6277    /**
6278     * A pointer to the contents in the error state.
6279     * Reading from this pointer when `result_ok` is set is undefined.
6280     */
6281    struct LDKDecodeError *err;
6282 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
6283
6284 /**
6285  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
6286  * containing a crate::ln::msgs::UnsignedNodeAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6287  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6288  */
6289 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
6290    /**
6291     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
6292     * `err` or `result` depending on the state of `result_ok`.
6293     */
6294    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
6295    /**
6296     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
6297     */
6298    bool result_ok;
6299 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
6300
6301 /**
6302  * The contents of CResult_NodeAnnouncementDecodeErrorZ
6303  */
6304 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
6305    /**
6306     * A pointer to the contents in the success state.
6307     * Reading from this pointer when `result_ok` is not set is undefined.
6308     */
6309    struct LDKNodeAnnouncement *result;
6310    /**
6311     * A pointer to the contents in the error state.
6312     * Reading from this pointer when `result_ok` is set is undefined.
6313     */
6314    struct LDKDecodeError *err;
6315 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
6316
6317 /**
6318  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
6319  * containing a crate::ln::msgs::NodeAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6320  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6321  */
6322 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
6323    /**
6324     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
6325     * `err` or `result` depending on the state of `result_ok`.
6326     */
6327    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
6328    /**
6329     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
6330     */
6331    bool result_ok;
6332 } LDKCResult_NodeAnnouncementDecodeErrorZ;
6333
6334 /**
6335  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
6336  */
6337 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
6338    /**
6339     * A pointer to the contents in the success state.
6340     * Reading from this pointer when `result_ok` is not set is undefined.
6341     */
6342    struct LDKQueryShortChannelIds *result;
6343    /**
6344     * A pointer to the contents in the error state.
6345     * Reading from this pointer when `result_ok` is set is undefined.
6346     */
6347    struct LDKDecodeError *err;
6348 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
6349
6350 /**
6351  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
6352  * containing a crate::ln::msgs::QueryShortChannelIds on success and a crate::ln::msgs::DecodeError on failure.
6353  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6354  */
6355 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
6356    /**
6357     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
6358     * `err` or `result` depending on the state of `result_ok`.
6359     */
6360    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
6361    /**
6362     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
6363     */
6364    bool result_ok;
6365 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
6366
6367
6368
6369 /**
6370  * A reply_short_channel_ids_end message is sent as a reply to a
6371  * query_short_channel_ids message. The query recipient makes a best
6372  * effort to respond based on their local network view which may not be
6373  * a perfect view of the network.
6374  */
6375 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
6376    /**
6377     * A pointer to the opaque Rust object.
6378     * Nearly everywhere, inner must be non-null, however in places where
6379     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6380     */
6381    LDKnativeReplyShortChannelIdsEnd *inner;
6382    /**
6383     * Indicates that this is the only struct which contains the same pointer.
6384     * Rust functions which take ownership of an object provided via an argument require
6385     * this to be true and invalidate the object pointed to by inner.
6386     */
6387    bool is_owned;
6388 } LDKReplyShortChannelIdsEnd;
6389
6390 /**
6391  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
6392  */
6393 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
6394    /**
6395     * A pointer to the contents in the success state.
6396     * Reading from this pointer when `result_ok` is not set is undefined.
6397     */
6398    struct LDKReplyShortChannelIdsEnd *result;
6399    /**
6400     * A pointer to the contents in the error state.
6401     * Reading from this pointer when `result_ok` is set is undefined.
6402     */
6403    struct LDKDecodeError *err;
6404 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
6405
6406 /**
6407  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
6408  * containing a crate::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::ln::msgs::DecodeError on failure.
6409  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6410  */
6411 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
6412    /**
6413     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
6414     * `err` or `result` depending on the state of `result_ok`.
6415     */
6416    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
6417    /**
6418     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
6419     */
6420    bool result_ok;
6421 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
6422
6423 /**
6424  * The contents of CResult_QueryChannelRangeDecodeErrorZ
6425  */
6426 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
6427    /**
6428     * A pointer to the contents in the success state.
6429     * Reading from this pointer when `result_ok` is not set is undefined.
6430     */
6431    struct LDKQueryChannelRange *result;
6432    /**
6433     * A pointer to the contents in the error state.
6434     * Reading from this pointer when `result_ok` is set is undefined.
6435     */
6436    struct LDKDecodeError *err;
6437 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
6438
6439 /**
6440  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
6441  * containing a crate::ln::msgs::QueryChannelRange on success and a crate::ln::msgs::DecodeError on failure.
6442  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6443  */
6444 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
6445    /**
6446     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
6447     * `err` or `result` depending on the state of `result_ok`.
6448     */
6449    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
6450    /**
6451     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
6452     */
6453    bool result_ok;
6454 } LDKCResult_QueryChannelRangeDecodeErrorZ;
6455
6456 /**
6457  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
6458  */
6459 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
6460    /**
6461     * A pointer to the contents in the success state.
6462     * Reading from this pointer when `result_ok` is not set is undefined.
6463     */
6464    struct LDKReplyChannelRange *result;
6465    /**
6466     * A pointer to the contents in the error state.
6467     * Reading from this pointer when `result_ok` is set is undefined.
6468     */
6469    struct LDKDecodeError *err;
6470 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
6471
6472 /**
6473  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
6474  * containing a crate::ln::msgs::ReplyChannelRange on success and a crate::ln::msgs::DecodeError on failure.
6475  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6476  */
6477 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
6478    /**
6479     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
6480     * `err` or `result` depending on the state of `result_ok`.
6481     */
6482    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
6483    /**
6484     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
6485     */
6486    bool result_ok;
6487 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
6488
6489
6490
6491 /**
6492  * A gossip_timestamp_filter message is used by a node to request
6493  * gossip relay for messages in the requested time range when the
6494  * gossip_queries feature has been negotiated.
6495  */
6496 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
6497    /**
6498     * A pointer to the opaque Rust object.
6499     * Nearly everywhere, inner must be non-null, however in places where
6500     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6501     */
6502    LDKnativeGossipTimestampFilter *inner;
6503    /**
6504     * Indicates that this is the only struct which contains the same pointer.
6505     * Rust functions which take ownership of an object provided via an argument require
6506     * this to be true and invalidate the object pointed to by inner.
6507     */
6508    bool is_owned;
6509 } LDKGossipTimestampFilter;
6510
6511 /**
6512  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
6513  */
6514 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
6515    /**
6516     * A pointer to the contents in the success state.
6517     * Reading from this pointer when `result_ok` is not set is undefined.
6518     */
6519    struct LDKGossipTimestampFilter *result;
6520    /**
6521     * A pointer to the contents in the error state.
6522     * Reading from this pointer when `result_ok` is set is undefined.
6523     */
6524    struct LDKDecodeError *err;
6525 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
6526
6527 /**
6528  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
6529  * containing a crate::ln::msgs::GossipTimestampFilter on success and a crate::ln::msgs::DecodeError on failure.
6530  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6531  */
6532 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
6533    /**
6534     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
6535     * `err` or `result` depending on the state of `result_ok`.
6536     */
6537    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
6538    /**
6539     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
6540     */
6541    bool result_ok;
6542 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
6543
6544 /**
6545  * A trait indicating an object may generate message send events
6546  */
6547 typedef struct LDKMessageSendEventsProvider {
6548    /**
6549     * An opaque pointer which is passed to your function implementations as an argument.
6550     * This has no meaning in the LDK, and can be NULL or any other value.
6551     */
6552    void *this_arg;
6553    /**
6554     * Gets the list of pending events which were generated by previous actions, clearing the list
6555     * in the process.
6556     */
6557    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
6558    /**
6559     * Frees any resources associated with this object given its this_arg pointer.
6560     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6561     */
6562    void (*free)(void *this_arg);
6563 } LDKMessageSendEventsProvider;
6564
6565 /**
6566  * A trait indicating an object may generate events
6567  */
6568 typedef struct LDKEventsProvider {
6569    /**
6570     * An opaque pointer which is passed to your function implementations as an argument.
6571     * This has no meaning in the LDK, and can be NULL or any other value.
6572     */
6573    void *this_arg;
6574    /**
6575     * Gets the list of pending events which were generated by previous actions, clearing the list
6576     * in the process.
6577     */
6578    struct LDKCVec_EventZ (*get_and_clear_pending_events)(const void *this_arg);
6579    /**
6580     * Frees any resources associated with this object given its this_arg pointer.
6581     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6582     */
6583    void (*free)(void *this_arg);
6584 } LDKEventsProvider;
6585
6586
6587
6588 /**
6589  * Configuration we set when applicable.
6590  *
6591  * Default::default() provides sane defaults.
6592  */
6593 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
6594    /**
6595     * A pointer to the opaque Rust object.
6596     * Nearly everywhere, inner must be non-null, however in places where
6597     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6598     */
6599    LDKnativeChannelHandshakeConfig *inner;
6600    /**
6601     * Indicates that this is the only struct which contains the same pointer.
6602     * Rust functions which take ownership of an object provided via an argument require
6603     * this to be true and invalidate the object pointed to by inner.
6604     */
6605    bool is_owned;
6606 } LDKChannelHandshakeConfig;
6607
6608
6609
6610 /**
6611  * Optional channel limits which are applied during channel creation.
6612  *
6613  * These limits are only applied to our counterparty's limits, not our own.
6614  *
6615  * Use 0/<type>::max_value() as appropriate to skip checking.
6616  *
6617  * Provides sane defaults for most configurations.
6618  *
6619  * Most additional limits are disabled except those with which specify a default in individual
6620  * field documentation. Note that this may result in barely-usable channels, but since they
6621  * are applied mostly only to incoming channels that's not much of a problem.
6622  */
6623 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
6624    /**
6625     * A pointer to the opaque Rust object.
6626     * Nearly everywhere, inner must be non-null, however in places where
6627     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6628     */
6629    LDKnativeChannelHandshakeLimits *inner;
6630    /**
6631     * Indicates that this is the only struct which contains the same pointer.
6632     * Rust functions which take ownership of an object provided via an argument require
6633     * this to be true and invalidate the object pointed to by inner.
6634     */
6635    bool is_owned;
6636 } LDKChannelHandshakeLimits;
6637
6638
6639
6640 /**
6641  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
6642  *
6643  * Default::default() provides sane defaults for most configurations
6644  * (but currently with 0 relay fees!)
6645  */
6646 typedef struct MUST_USE_STRUCT LDKUserConfig {
6647    /**
6648     * A pointer to the opaque Rust object.
6649     * Nearly everywhere, inner must be non-null, however in places where
6650     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6651     */
6652    LDKnativeUserConfig *inner;
6653    /**
6654     * Indicates that this is the only struct which contains the same pointer.
6655     * Rust functions which take ownership of an object provided via an argument require
6656     * this to be true and invalidate the object pointed to by inner.
6657     */
6658    bool is_owned;
6659 } LDKUserConfig;
6660
6661 /**
6662  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
6663  * UTXOs.
6664  */
6665 typedef struct LDKAccess {
6666    /**
6667     * An opaque pointer which is passed to your function implementations as an argument.
6668     * This has no meaning in the LDK, and can be NULL or any other value.
6669     */
6670    void *this_arg;
6671    /**
6672     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
6673     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
6674     * is unknown.
6675     *
6676     * [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
6677     */
6678    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
6679    /**
6680     * Frees any resources associated with this object given its this_arg pointer.
6681     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6682     */
6683    void (*free)(void *this_arg);
6684 } LDKAccess;
6685
6686 /**
6687  * The `Listen` trait is used to be notified of when blocks have been connected or disconnected
6688  * from the chain.
6689  *
6690  * Useful when needing to replay chain data upon startup or as new chain events occur.
6691  */
6692 typedef struct LDKListen {
6693    /**
6694     * An opaque pointer which is passed to your function implementations as an argument.
6695     * This has no meaning in the LDK, and can be NULL or any other value.
6696     */
6697    void *this_arg;
6698    /**
6699     * Notifies the listener that a block was added at the given height.
6700     */
6701    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
6702    /**
6703     * Notifies the listener that a block was removed at the given height.
6704     */
6705    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
6706    /**
6707     * Frees any resources associated with this object given its this_arg pointer.
6708     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6709     */
6710    void (*free)(void *this_arg);
6711 } LDKListen;
6712
6713
6714
6715 /**
6716  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
6717  *
6718  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
6719  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
6720  * the return value of [`Filter::register_output`].
6721  *
6722  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
6723  * may have been spent there. See [`Filter::register_output`] for details.
6724  *
6725  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
6726  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
6727  */
6728 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
6729    /**
6730     * A pointer to the opaque Rust object.
6731     * Nearly everywhere, inner must be non-null, however in places where
6732     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6733     */
6734    LDKnativeWatchedOutput *inner;
6735    /**
6736     * Indicates that this is the only struct which contains the same pointer.
6737     * Rust functions which take ownership of an object provided via an argument require
6738     * this to be true and invalidate the object pointed to by inner.
6739     */
6740    bool is_owned;
6741 } LDKWatchedOutput;
6742
6743 /**
6744  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
6745  * channels.
6746  *
6747  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
6748  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
6749  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
6750  * receiving full blocks from a chain source, any further filtering is unnecessary.
6751  *
6752  * After an output has been registered, subsequent block retrievals from the chain source must not
6753  * exclude any transactions matching the new criteria nor any in-block descendants of such
6754  * transactions.
6755  *
6756  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
6757  * should not block on I/O. Implementations should instead queue the newly monitored data to be
6758  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
6759  * invocation that has called the `Filter` must return [`TemporaryFailure`].
6760  *
6761  * [`TemporaryFailure`]: channelmonitor::ChannelMonitorUpdateErr::TemporaryFailure
6762  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
6763  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
6764  */
6765 typedef struct LDKFilter {
6766    /**
6767     * An opaque pointer which is passed to your function implementations as an argument.
6768     * This has no meaning in the LDK, and can be NULL or any other value.
6769     */
6770    void *this_arg;
6771    /**
6772     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
6773     * a spending condition.
6774     */
6775    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
6776    /**
6777     * Registers interest in spends of a transaction output.
6778     *
6779     * Optionally, when `output.block_hash` is set, should return any transaction spending the
6780     * output that is found in the corresponding block along with its index.
6781     *
6782     * This return value is useful for Electrum clients in order to supply in-block descendant
6783     * transactions which otherwise were not included. This is not necessary for other clients if
6784     * such descendant transactions were already included (e.g., when a BIP 157 client provides the
6785     * full block).
6786     */
6787    struct LDKCOption_C2Tuple_usizeTransactionZZ (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
6788    /**
6789     * Frees any resources associated with this object given its this_arg pointer.
6790     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6791     */
6792    void (*free)(void *this_arg);
6793 } LDKFilter;
6794
6795 /**
6796  * `Persist` defines behavior for persisting channel monitors: this could mean
6797  * writing once to disk, and/or uploading to one or more backup services.
6798  *
6799  * Note that for every new monitor, you **must** persist the new `ChannelMonitor`
6800  * to disk/backups. And, on every update, you **must** persist either the
6801  * `ChannelMonitorUpdate` or the updated monitor itself. Otherwise, there is risk
6802  * of situations such as revoking a transaction, then crashing before this
6803  * revocation can be persisted, then unintentionally broadcasting a revoked
6804  * transaction and losing money. This is a risk because previous channel states
6805  * are toxic, so it's important that whatever channel state is persisted is
6806  * kept up-to-date.
6807  */
6808 typedef struct LDKPersist {
6809    /**
6810     * An opaque pointer which is passed to your function implementations as an argument.
6811     * This has no meaning in the LDK, and can be NULL or any other value.
6812     */
6813    void *this_arg;
6814    /**
6815     * Persist a new channel's data. The data can be stored any way you want, but
6816     * the identifier provided by Rust-Lightning is the channel's outpoint (and
6817     * it is up to you to maintain a correct mapping between the outpoint and the
6818     * stored channel data). Note that you **must** persist every new monitor to
6819     * disk. See the `Persist` trait documentation for more details.
6820     *
6821     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
6822     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
6823     */
6824    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint id, const struct LDKChannelMonitor *NONNULL_PTR data);
6825    /**
6826     * Update one channel's data. The provided `ChannelMonitor` has already
6827     * applied the given update.
6828     *
6829     * Note that on every update, you **must** persist either the
6830     * `ChannelMonitorUpdate` or the updated monitor itself to disk/backups. See
6831     * the `Persist` trait documentation for more details.
6832     *
6833     * If an implementer chooses to persist the updates only, they need to make
6834     * sure that all the updates are applied to the `ChannelMonitors` *before*
6835     * the set of channel monitors is given to the `ChannelManager`
6836     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
6837     * applying a monitor update to a monitor. If full `ChannelMonitors` are
6838     * persisted, then there is no need to persist individual updates.
6839     *
6840     * Note that there could be a performance tradeoff between persisting complete
6841     * channel monitors on every update vs. persisting only updates and applying
6842     * them in batches. The size of each monitor grows `O(number of state updates)`
6843     * whereas updates are small and `O(1)`.
6844     *
6845     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
6846     * [`ChannelMonitorUpdate::write`] for writing out an update, and
6847     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
6848     */
6849    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);
6850    /**
6851     * Frees any resources associated with this object given its this_arg pointer.
6852     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6853     */
6854    void (*free)(void *this_arg);
6855 } LDKPersist;
6856
6857
6858
6859 /**
6860  * An implementation of [`chain::Watch`] for monitoring channels.
6861  *
6862  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
6863  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
6864  * or used independently to monitor channels remotely. See the [module-level documentation] for
6865  * details.
6866  *
6867  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
6868  * [module-level documentation]: crate::chain::chainmonitor
6869  */
6870 typedef struct MUST_USE_STRUCT LDKChainMonitor {
6871    /**
6872     * A pointer to the opaque Rust object.
6873     * Nearly everywhere, inner must be non-null, however in places where
6874     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6875     */
6876    LDKnativeChainMonitor *inner;
6877    /**
6878     * Indicates that this is the only struct which contains the same pointer.
6879     * Rust functions which take ownership of an object provided via an argument require
6880     * this to be true and invalidate the object pointed to by inner.
6881     */
6882    bool is_owned;
6883 } LDKChainMonitor;
6884
6885
6886
6887 /**
6888  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
6889  * and derives keys from that.
6890  *
6891  * Your node_id is seed/0'
6892  * ChannelMonitor closes may use seed/1'
6893  * Cooperative closes may use seed/2'
6894  * The two close keys may be needed to claim on-chain funds!
6895  */
6896 typedef struct MUST_USE_STRUCT LDKKeysManager {
6897    /**
6898     * A pointer to the opaque Rust object.
6899     * Nearly everywhere, inner must be non-null, however in places where
6900     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6901     */
6902    LDKnativeKeysManager *inner;
6903    /**
6904     * Indicates that this is the only struct which contains the same pointer.
6905     * Rust functions which take ownership of an object provided via an argument require
6906     * this to be true and invalidate the object pointed to by inner.
6907     */
6908    bool is_owned;
6909 } LDKKeysManager;
6910
6911
6912
6913 /**
6914  * Chain-related parameters used to construct a new `ChannelManager`.
6915  *
6916  * Typically, the block-specific parameters are derived from the best block hash for the network,
6917  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
6918  * are not needed when deserializing a previously constructed `ChannelManager`.
6919  */
6920 typedef struct MUST_USE_STRUCT LDKChainParameters {
6921    /**
6922     * A pointer to the opaque Rust object.
6923     * Nearly everywhere, inner must be non-null, however in places where
6924     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6925     */
6926    LDKnativeChainParameters *inner;
6927    /**
6928     * Indicates that this is the only struct which contains the same pointer.
6929     * Rust functions which take ownership of an object provided via an argument require
6930     * this to be true and invalidate the object pointed to by inner.
6931     */
6932    bool is_owned;
6933 } LDKChainParameters;
6934
6935 /**
6936  * A 3-byte byte array.
6937  */
6938 typedef struct LDKThreeBytes {
6939    /**
6940     * The three bytes
6941     */
6942    uint8_t data[3];
6943 } LDKThreeBytes;
6944
6945 /**
6946  * A trait to describe an object which can receive channel messages.
6947  *
6948  * Messages MAY be called in parallel when they originate from different their_node_ids, however
6949  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
6950  */
6951 typedef struct LDKChannelMessageHandler {
6952    /**
6953     * An opaque pointer which is passed to your function implementations as an argument.
6954     * This has no meaning in the LDK, and can be NULL or any other value.
6955     */
6956    void *this_arg;
6957    /**
6958     * Handle an incoming open_channel message from the given peer.
6959     */
6960    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
6961    /**
6962     * Handle an incoming accept_channel message from the given peer.
6963     */
6964    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
6965    /**
6966     * Handle an incoming funding_created message from the given peer.
6967     */
6968    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
6969    /**
6970     * Handle an incoming funding_signed message from the given peer.
6971     */
6972    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
6973    /**
6974     * Handle an incoming funding_locked message from the given peer.
6975     */
6976    void (*handle_funding_locked)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
6977    /**
6978     * Handle an incoming shutdown message from the given peer.
6979     */
6980    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);
6981    /**
6982     * Handle an incoming closing_signed message from the given peer.
6983     */
6984    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
6985    /**
6986     * Handle an incoming update_add_htlc message from the given peer.
6987     */
6988    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
6989    /**
6990     * Handle an incoming update_fulfill_htlc message from the given peer.
6991     */
6992    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
6993    /**
6994     * Handle an incoming update_fail_htlc message from the given peer.
6995     */
6996    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
6997    /**
6998     * Handle an incoming update_fail_malformed_htlc message from the given peer.
6999     */
7000    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
7001    /**
7002     * Handle an incoming commitment_signed message from the given peer.
7003     */
7004    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
7005    /**
7006     * Handle an incoming revoke_and_ack message from the given peer.
7007     */
7008    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
7009    /**
7010     * Handle an incoming update_fee message from the given peer.
7011     */
7012    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
7013    /**
7014     * Handle an incoming announcement_signatures message from the given peer.
7015     */
7016    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
7017    /**
7018     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
7019     * is believed to be possible in the future (eg they're sending us messages we don't
7020     * understand or indicate they require unknown feature bits), no_connection_possible is set
7021     * and any outstanding channels should be failed.
7022     */
7023    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
7024    /**
7025     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
7026     */
7027    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
7028    /**
7029     * Handle an incoming channel_reestablish message from the given peer.
7030     */
7031    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
7032    /**
7033     * Handle an incoming channel update from the given peer.
7034     */
7035    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
7036    /**
7037     * Handle an incoming error message from the given peer.
7038     */
7039    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
7040    /**
7041     * Implementation of MessageSendEventsProvider for this object.
7042     */
7043    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
7044    /**
7045     * Frees any resources associated with this object given its this_arg pointer.
7046     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7047     */
7048    void (*free)(void *this_arg);
7049 } LDKChannelMessageHandler;
7050
7051
7052
7053 /**
7054  * Arguments for the creation of a ChannelManager that are not deserialized.
7055  *
7056  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
7057  * is:
7058  * 1) Deserialize all stored ChannelMonitors.
7059  * 2) Deserialize the ChannelManager by filling in this struct and calling:
7060  *    <(BlockHash, ChannelManager)>::read(reader, args)
7061  *    This may result in closing some Channels if the ChannelMonitor is newer than the stored
7062  *    ChannelManager state to ensure no loss of funds. Thus, transactions may be broadcasted.
7063  * 3) If you are not fetching full blocks, register all relevant ChannelMonitor outpoints the same
7064  *    way you would handle a `chain::Filter` call using ChannelMonitor::get_outputs_to_watch() and
7065  *    ChannelMonitor::get_funding_txo().
7066  * 4) Reconnect blocks on your ChannelMonitors.
7067  * 5) Disconnect/connect blocks on the ChannelManager.
7068  * 6) Move the ChannelMonitors into your local chain::Watch.
7069  *
7070  * Note that the ordering of #4-6 is not of importance, however all three must occur before you
7071  * call any other methods on the newly-deserialized ChannelManager.
7072  *
7073  * Note that because some channels may be closed during deserialization, it is critical that you
7074  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
7075  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
7076  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
7077  * not force-close the same channels but consider them live), you may end up revoking a state for
7078  * which you've already broadcasted the transaction.
7079  */
7080 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
7081    /**
7082     * A pointer to the opaque Rust object.
7083     * Nearly everywhere, inner must be non-null, however in places where
7084     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7085     */
7086    LDKnativeChannelManagerReadArgs *inner;
7087    /**
7088     * Indicates that this is the only struct which contains the same pointer.
7089     * Rust functions which take ownership of an object provided via an argument require
7090     * this to be true and invalidate the object pointed to by inner.
7091     */
7092    bool is_owned;
7093 } LDKChannelManagerReadArgs;
7094
7095
7096
7097 /**
7098  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
7099  * This is used to convince the recipient that the channel is at a certain commitment
7100  * number even if they lost that data due to a local failure.  Of course, the peer may lie
7101  * and even later commitments may have been revoked.
7102  */
7103 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
7104    /**
7105     * A pointer to the opaque Rust object.
7106     * Nearly everywhere, inner must be non-null, however in places where
7107     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7108     */
7109    LDKnativeDataLossProtect *inner;
7110    /**
7111     * Indicates that this is the only struct which contains the same pointer.
7112     * Rust functions which take ownership of an object provided via an argument require
7113     * this to be true and invalidate the object pointed to by inner.
7114     */
7115    bool is_owned;
7116 } LDKDataLossProtect;
7117
7118 /**
7119  * A trait to describe an object which can receive routing messages.
7120  *
7121  * # Implementor DoS Warnings
7122  *
7123  * For `gossip_queries` messages there are potential DoS vectors when handling
7124  * inbound queries. Implementors using an on-disk network graph should be aware of
7125  * repeated disk I/O for queries accessing different parts of the network graph.
7126  */
7127 typedef struct LDKRoutingMessageHandler {
7128    /**
7129     * An opaque pointer which is passed to your function implementations as an argument.
7130     * This has no meaning in the LDK, and can be NULL or any other value.
7131     */
7132    void *this_arg;
7133    /**
7134     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
7135     * false or returning an Err otherwise.
7136     */
7137    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
7138    /**
7139     * Handle a channel_announcement message, returning true if it should be forwarded on, false
7140     * or returning an Err otherwise.
7141     */
7142    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
7143    /**
7144     * Handle an incoming channel_update message, returning true if it should be forwarded on,
7145     * false or returning an Err otherwise.
7146     */
7147    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
7148    /**
7149     * Handle some updates to the route graph that we learned due to an outbound failed payment.
7150     */
7151    void (*handle_htlc_fail_channel_update)(const void *this_arg, const struct LDKHTLCFailChannelUpdate *NONNULL_PTR update);
7152    /**
7153     * Gets a subset of the channel announcements and updates required to dump our routing table
7154     * to a remote node, starting at the short_channel_id indicated by starting_point and
7155     * including the batch_amount entries immediately higher in numerical value than starting_point.
7156     */
7157    struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcements)(const void *this_arg, uint64_t starting_point, uint8_t batch_amount);
7158    /**
7159     * Gets a subset of the node announcements required to dump our routing table to a remote node,
7160     * starting at the node *after* the provided publickey and including batch_amount entries
7161     * immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
7162     * If None is provided for starting_point, we start at the first node.
7163     */
7164    struct LDKCVec_NodeAnnouncementZ (*get_next_node_announcements)(const void *this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount);
7165    /**
7166     * Called when a connection is established with a peer. This can be used to
7167     * perform routing table synchronization using a strategy defined by the
7168     * implementor.
7169     */
7170    void (*sync_routing_table)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
7171    /**
7172     * Handles the reply of a query we initiated to learn about channels
7173     * for a given range of blocks. We can expect to receive one or more
7174     * replies to a single query.
7175     */
7176    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
7177    /**
7178     * Handles the reply of a query we initiated asking for routing gossip
7179     * messages for a list of channels. We should receive this message when
7180     * a node has completed its best effort to send us the pertaining routing
7181     * gossip messages.
7182     */
7183    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
7184    /**
7185     * Handles when a peer asks us to send a list of short_channel_ids
7186     * for the requested range of blocks.
7187     */
7188    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
7189    /**
7190     * Handles when a peer asks us to send routing gossip messages for a
7191     * list of short_channel_ids.
7192     */
7193    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
7194    /**
7195     * Implementation of MessageSendEventsProvider for this object.
7196     */
7197    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
7198    /**
7199     * Frees any resources associated with this object given its this_arg pointer.
7200     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7201     */
7202    void (*free)(void *this_arg);
7203 } LDKRoutingMessageHandler;
7204
7205
7206
7207 /**
7208  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
7209  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
7210  */
7211 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
7212    /**
7213     * A pointer to the opaque Rust object.
7214     * Nearly everywhere, inner must be non-null, however in places where
7215     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7216     */
7217    LDKnativeIgnoringMessageHandler *inner;
7218    /**
7219     * Indicates that this is the only struct which contains the same pointer.
7220     * Rust functions which take ownership of an object provided via an argument require
7221     * this to be true and invalidate the object pointed to by inner.
7222     */
7223    bool is_owned;
7224 } LDKIgnoringMessageHandler;
7225
7226
7227
7228 /**
7229  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
7230  * You can provide one of these as the route_handler in a MessageHandler.
7231  */
7232 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
7233    /**
7234     * A pointer to the opaque Rust object.
7235     * Nearly everywhere, inner must be non-null, however in places where
7236     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7237     */
7238    LDKnativeErroringMessageHandler *inner;
7239    /**
7240     * Indicates that this is the only struct which contains the same pointer.
7241     * Rust functions which take ownership of an object provided via an argument require
7242     * this to be true and invalidate the object pointed to by inner.
7243     */
7244    bool is_owned;
7245 } LDKErroringMessageHandler;
7246
7247
7248
7249 /**
7250  * Provides references to trait impls which handle different types of messages.
7251  */
7252 typedef struct MUST_USE_STRUCT LDKMessageHandler {
7253    /**
7254     * A pointer to the opaque Rust object.
7255     * Nearly everywhere, inner must be non-null, however in places where
7256     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7257     */
7258    LDKnativeMessageHandler *inner;
7259    /**
7260     * Indicates that this is the only struct which contains the same pointer.
7261     * Rust functions which take ownership of an object provided via an argument require
7262     * this to be true and invalidate the object pointed to by inner.
7263     */
7264    bool is_owned;
7265 } LDKMessageHandler;
7266
7267 /**
7268  * Provides an object which can be used to send data to and which uniquely identifies a connection
7269  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
7270  * implement Hash to meet the PeerManager API.
7271  *
7272  * For efficiency, Clone should be relatively cheap for this type.
7273  *
7274  * You probably want to just extend an int and put a file descriptor in a struct and implement
7275  * send_data. Note that if you are using a higher-level net library that may call close() itself,
7276  * be careful to ensure you don't have races whereby you might register a new connection with an
7277  * fd which is the same as a previous one which has yet to be removed via
7278  * PeerManager::socket_disconnected().
7279  */
7280 typedef struct LDKSocketDescriptor {
7281    /**
7282     * An opaque pointer which is passed to your function implementations as an argument.
7283     * This has no meaning in the LDK, and can be NULL or any other value.
7284     */
7285    void *this_arg;
7286    /**
7287     * Attempts to send some data from the given slice to the peer.
7288     *
7289     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
7290     * Note that in the disconnected case, socket_disconnected must still fire and further write
7291     * attempts may occur until that time.
7292     *
7293     * If the returned size is smaller than data.len(), a write_available event must
7294     * trigger the next time more data can be written. Additionally, until the a send_data event
7295     * completes fully, no further read_events should trigger on the same peer!
7296     *
7297     * If a read_event on this descriptor had previously returned true (indicating that read
7298     * events should be paused to prevent DoS in the send buffer), resume_read may be set
7299     * indicating that read events on this descriptor should resume. A resume_read of false does
7300     * *not* imply that further read events should be paused.
7301     */
7302    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
7303    /**
7304     * Disconnect the socket pointed to by this SocketDescriptor. Once this function returns, no
7305     * more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
7306     * this descriptor. No socket_disconnected call should be generated as a result of this call,
7307     * though races may occur whereby disconnect_socket is called after a call to
7308     * socket_disconnected but prior to socket_disconnected returning.
7309     */
7310    void (*disconnect_socket)(void *this_arg);
7311    /**
7312     * Checks if two objects are equal given this object's this_arg pointer and another object.
7313     */
7314    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
7315    /**
7316     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
7317     * This is used, for example, for inclusion of this object in a hash map.
7318     */
7319    uint64_t (*hash)(const void *this_arg);
7320    /**
7321     * Creates a copy of the object pointed to by this_arg, for a copy of this SocketDescriptor.
7322     * Note that the ultimate copy of the SocketDescriptor will have all function pointers the same as the original.
7323     * May be NULL if no action needs to be taken, the this_arg pointer will be copied into the new SocketDescriptor.
7324     */
7325    void *(*clone)(const void *this_arg);
7326    /**
7327     * Frees any resources associated with this object given its this_arg pointer.
7328     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7329     */
7330    void (*free)(void *this_arg);
7331 } LDKSocketDescriptor;
7332
7333
7334
7335 /**
7336  * A PeerManager manages a set of peers, described by their SocketDescriptor and marshalls socket
7337  * events into messages which it passes on to its MessageHandlers.
7338  *
7339  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
7340  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
7341  * essentially you should default to using a SimpleRefPeerManager, and use a
7342  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
7343  * you're using lightning-net-tokio.
7344  */
7345 typedef struct MUST_USE_STRUCT LDKPeerManager {
7346    /**
7347     * A pointer to the opaque Rust object.
7348     * Nearly everywhere, inner must be non-null, however in places where
7349     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7350     */
7351    LDKnativePeerManager *inner;
7352    /**
7353     * Indicates that this is the only struct which contains the same pointer.
7354     * Rust functions which take ownership of an object provided via an argument require
7355     * this to be true and invalidate the object pointed to by inner.
7356     */
7357    bool is_owned;
7358 } LDKPeerManager;
7359
7360
7361
7362 /**
7363  * Static channel fields used to build transactions given per-commitment fields, organized by
7364  * broadcaster/countersignatory.
7365  *
7366  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
7367  * as_holder_broadcastable and as_counterparty_broadcastable functions.
7368  */
7369 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
7370    /**
7371     * A pointer to the opaque Rust object.
7372     * Nearly everywhere, inner must be non-null, however in places where
7373     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7374     */
7375    LDKnativeDirectedChannelTransactionParameters *inner;
7376    /**
7377     * Indicates that this is the only struct which contains the same pointer.
7378     * Rust functions which take ownership of an object provided via an argument require
7379     * this to be true and invalidate the object pointed to by inner.
7380     */
7381    bool is_owned;
7382 } LDKDirectedChannelTransactionParameters;
7383
7384
7385
7386 /**
7387  * A simple newtype for RwLockReadGuard<'a, NetworkGraph>.
7388  * This exists only to make accessing a RwLock<NetworkGraph> possible from
7389  * the C bindings, as it can be done directly in Rust code.
7390  */
7391 typedef struct MUST_USE_STRUCT LDKLockedNetworkGraph {
7392    /**
7393     * A pointer to the opaque Rust object.
7394     * Nearly everywhere, inner must be non-null, however in places where
7395     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7396     */
7397    LDKnativeLockedNetworkGraph *inner;
7398    /**
7399     * Indicates that this is the only struct which contains the same pointer.
7400     * Rust functions which take ownership of an object provided via an argument require
7401     * this to be true and invalidate the object pointed to by inner.
7402     */
7403    bool is_owned;
7404 } LDKLockedNetworkGraph;
7405
7406
7407
7408 /**
7409  * Receives and validates network updates from peers,
7410  * stores authentic and relevant data as a network graph.
7411  * This network graph is then used for routing payments.
7412  * Provides interface to help with initial routing sync by
7413  * serving historical announcements.
7414  */
7415 typedef struct MUST_USE_STRUCT LDKNetGraphMsgHandler {
7416    /**
7417     * A pointer to the opaque Rust object.
7418     * Nearly everywhere, inner must be non-null, however in places where
7419     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7420     */
7421    LDKnativeNetGraphMsgHandler *inner;
7422    /**
7423     * Indicates that this is the only struct which contains the same pointer.
7424     * Rust functions which take ownership of an object provided via an argument require
7425     * this to be true and invalidate the object pointed to by inner.
7426     */
7427    bool is_owned;
7428 } LDKNetGraphMsgHandler;
7429
7430 extern const uintptr_t MAX_BUF_SIZE;
7431
7432 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
7433
7434 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
7435
7436 extern const uint16_t BREAKDOWN_TIMEOUT;
7437
7438 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
7439
7440 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
7441
7442 /**
7443  * Frees the data buffer, if data_is_owned is set and datalen > 0.
7444  */
7445 void Transaction_free(struct LDKTransaction _res);
7446
7447 /**
7448  * Frees the data pointed to by script_pubkey.
7449  */
7450 void TxOut_free(struct LDKTxOut _res);
7451
7452 /**
7453  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
7454  */
7455 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
7456
7457 /**
7458  * Creates a new CResult_SecretKeyErrorZ in the success state.
7459  */
7460 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
7461
7462 /**
7463  * Creates a new CResult_SecretKeyErrorZ in the error state.
7464  */
7465 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
7466
7467 /**
7468  * Frees any resources used by the CResult_SecretKeyErrorZ.
7469  */
7470 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
7471
7472 /**
7473  * Creates a new CResult_PublicKeyErrorZ in the success state.
7474  */
7475 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
7476
7477 /**
7478  * Creates a new CResult_PublicKeyErrorZ in the error state.
7479  */
7480 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
7481
7482 /**
7483  * Frees any resources used by the CResult_PublicKeyErrorZ.
7484  */
7485 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
7486
7487 /**
7488  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
7489  */
7490 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
7491
7492 /**
7493  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
7494  */
7495 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
7496
7497 /**
7498  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
7499  */
7500 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
7501
7502 /**
7503  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
7504  * but with all dynamically-allocated buffers duplicated in new buffers.
7505  */
7506 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
7507
7508 /**
7509  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
7510  */
7511 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
7512
7513 /**
7514  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
7515  */
7516 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
7517
7518 /**
7519  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
7520  */
7521 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
7522
7523 /**
7524  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
7525  * but with all dynamically-allocated buffers duplicated in new buffers.
7526  */
7527 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
7528
7529 /**
7530  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
7531  */
7532 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
7533
7534 /**
7535  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
7536  */
7537 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
7538
7539 /**
7540  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
7541  */
7542 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
7543
7544 /**
7545  * Constructs a new COption_u32Z containing a u32
7546  */
7547 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
7548
7549 /**
7550  * Constructs a new COption_u32Z containing nothing
7551  */
7552 struct LDKCOption_u32Z COption_u32Z_none(void);
7553
7554 /**
7555  * Frees any resources associated with the u32, if we are in the Some state
7556  */
7557 void COption_u32Z_free(struct LDKCOption_u32Z _res);
7558
7559 /**
7560  * Creates a new COption_u32Z which has the same data as `orig`
7561  * but with all dynamically-allocated buffers duplicated in new buffers.
7562  */
7563 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
7564
7565 /**
7566  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
7567  */
7568 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
7569
7570 /**
7571  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
7572  */
7573 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
7574
7575 /**
7576  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
7577  */
7578 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
7579
7580 /**
7581  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
7582  * but with all dynamically-allocated buffers duplicated in new buffers.
7583  */
7584 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
7585
7586 /**
7587  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
7588  */
7589 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
7590
7591 /**
7592  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
7593  */
7594 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
7595
7596 /**
7597  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
7598  */
7599 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
7600
7601 /**
7602  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
7603  * but with all dynamically-allocated buffers duplicated in new buffers.
7604  */
7605 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
7606
7607 /**
7608  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
7609  */
7610 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
7611
7612 /**
7613  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
7614  */
7615 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
7616
7617 /**
7618  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
7619  */
7620 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
7621
7622 /**
7623  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
7624  * but with all dynamically-allocated buffers duplicated in new buffers.
7625  */
7626 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
7627
7628 /**
7629  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7630  */
7631 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
7632
7633 /**
7634  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
7635  */
7636 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
7637
7638 /**
7639  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
7640  */
7641 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7642
7643 /**
7644  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
7645  */
7646 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
7647
7648 /**
7649  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
7650  * but with all dynamically-allocated buffers duplicated in new buffers.
7651  */
7652 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7653
7654 /**
7655  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
7656  */
7657 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
7658
7659 /**
7660  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
7661  */
7662 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7663
7664 /**
7665  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
7666  */
7667 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
7668
7669 /**
7670  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
7671  * but with all dynamically-allocated buffers duplicated in new buffers.
7672  */
7673 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7674
7675 /**
7676  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
7677  */
7678 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
7679
7680 /**
7681  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
7682  */
7683 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7684
7685 /**
7686  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
7687  */
7688 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
7689
7690 /**
7691  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
7692  * but with all dynamically-allocated buffers duplicated in new buffers.
7693  */
7694 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7695
7696 /**
7697  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
7698  */
7699 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
7700
7701 /**
7702  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
7703  */
7704 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
7705
7706 /**
7707  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
7708  */
7709 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
7710
7711 /**
7712  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
7713  */
7714 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
7715
7716 /**
7717  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
7718  */
7719 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
7720
7721 /**
7722  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
7723  */
7724 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
7725
7726 /**
7727  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
7728  * but with all dynamically-allocated buffers duplicated in new buffers.
7729  */
7730 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
7731
7732 /**
7733  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7734  */
7735 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
7736
7737 /**
7738  * Creates a new CResult_boolLightningErrorZ in the success state.
7739  */
7740 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
7741
7742 /**
7743  * Creates a new CResult_boolLightningErrorZ in the error state.
7744  */
7745 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
7746
7747 /**
7748  * Frees any resources used by the CResult_boolLightningErrorZ.
7749  */
7750 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
7751
7752 /**
7753  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
7754  * but with all dynamically-allocated buffers duplicated in new buffers.
7755  */
7756 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
7757
7758 /**
7759  * Creates a new tuple which has the same data as `orig`
7760  * but with all dynamically-allocated buffers duplicated in new buffers.
7761  */
7762 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
7763
7764 /**
7765  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
7766  */
7767 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
7768
7769 /**
7770  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
7771  */
7772 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
7773
7774 /**
7775  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7776  */
7777 void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
7778
7779 /**
7780  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7781  */
7782 void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
7783
7784 /**
7785  * Creates a new CResult_NoneLightningErrorZ in the success state.
7786  */
7787 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
7788
7789 /**
7790  * Creates a new CResult_NoneLightningErrorZ in the error state.
7791  */
7792 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
7793
7794 /**
7795  * Frees any resources used by the CResult_NoneLightningErrorZ.
7796  */
7797 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
7798
7799 /**
7800  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
7801  * but with all dynamically-allocated buffers duplicated in new buffers.
7802  */
7803 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
7804
7805 /**
7806  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7807  */
7808 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
7809
7810 /**
7811  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7812  */
7813 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
7814
7815 /**
7816  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
7817  */
7818 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
7819
7820 /**
7821  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
7822  */
7823 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
7824
7825 /**
7826  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
7827  */
7828 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
7829
7830 /**
7831  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
7832  * but with all dynamically-allocated buffers duplicated in new buffers.
7833  */
7834 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
7835
7836 /**
7837  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
7838  */
7839 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
7840
7841 /**
7842  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
7843  */
7844 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
7845
7846 /**
7847  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
7848  */
7849 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
7850
7851 /**
7852  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
7853  * but with all dynamically-allocated buffers duplicated in new buffers.
7854  */
7855 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
7856
7857 /**
7858  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
7859  */
7860 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
7861
7862 /**
7863  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
7864  */
7865 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
7866
7867 /**
7868  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
7869  */
7870 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
7871
7872 /**
7873  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
7874  * but with all dynamically-allocated buffers duplicated in new buffers.
7875  */
7876 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
7877
7878 /**
7879  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
7880  */
7881 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
7882
7883 /**
7884  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
7885  */
7886 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7887
7888 /**
7889  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
7890  */
7891 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
7892
7893 /**
7894  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
7895  */
7896 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
7897
7898 /**
7899  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
7900  */
7901 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7902
7903 /**
7904  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
7905  */
7906 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
7907
7908 /**
7909  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
7910  */
7911 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
7912
7913 /**
7914  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
7915  */
7916 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7917
7918 /**
7919  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
7920  */
7921 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
7922
7923 /**
7924  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
7925  */
7926 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
7927
7928 /**
7929  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
7930  */
7931 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7932
7933 /**
7934  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
7935  */
7936 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
7937
7938 /**
7939  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
7940  */
7941 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
7942
7943 /**
7944  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
7945  */
7946 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
7947
7948 /**
7949  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
7950  */
7951 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
7952
7953 /**
7954  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
7955  * but with all dynamically-allocated buffers duplicated in new buffers.
7956  */
7957 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
7958
7959 /**
7960  * Constructs a new COption_u64Z containing a u64
7961  */
7962 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
7963
7964 /**
7965  * Constructs a new COption_u64Z containing nothing
7966  */
7967 struct LDKCOption_u64Z COption_u64Z_none(void);
7968
7969 /**
7970  * Frees any resources associated with the u64, if we are in the Some state
7971  */
7972 void COption_u64Z_free(struct LDKCOption_u64Z _res);
7973
7974 /**
7975  * Creates a new COption_u64Z which has the same data as `orig`
7976  * but with all dynamically-allocated buffers duplicated in new buffers.
7977  */
7978 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
7979
7980 /**
7981  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the success state.
7982  */
7983 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o);
7984
7985 /**
7986  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the error state.
7987  */
7988 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
7989
7990 /**
7991  * Frees any resources used by the CResult_DirectionalChannelInfoDecodeErrorZ.
7992  */
7993 void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
7994
7995 /**
7996  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ which has the same data as `orig`
7997  * but with all dynamically-allocated buffers duplicated in new buffers.
7998  */
7999 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
8000
8001 /**
8002  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
8003  */
8004 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
8005
8006 /**
8007  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
8008  */
8009 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
8010
8011 /**
8012  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
8013  */
8014 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
8015
8016 /**
8017  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
8018  * but with all dynamically-allocated buffers duplicated in new buffers.
8019  */
8020 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
8021
8022 /**
8023  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
8024  */
8025 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
8026
8027 /**
8028  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
8029  */
8030 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
8031
8032 /**
8033  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
8034  */
8035 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
8036
8037 /**
8038  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
8039  * but with all dynamically-allocated buffers duplicated in new buffers.
8040  */
8041 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
8042
8043 /**
8044  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8045  */
8046 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
8047
8048 /**
8049  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
8050  */
8051 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
8052
8053 /**
8054  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
8055  */
8056 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
8057
8058 /**
8059  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
8060  */
8061 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
8062
8063 /**
8064  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
8065  * but with all dynamically-allocated buffers duplicated in new buffers.
8066  */
8067 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
8068
8069 /**
8070  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8071  */
8072 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
8073
8074 /**
8075  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
8076  */
8077 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
8078
8079 /**
8080  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
8081  */
8082 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
8083
8084 /**
8085  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
8086  */
8087 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
8088
8089 /**
8090  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
8091  * but with all dynamically-allocated buffers duplicated in new buffers.
8092  */
8093 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
8094
8095 /**
8096  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
8097  */
8098 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
8099
8100 /**
8101  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
8102  */
8103 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
8104
8105 /**
8106  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
8107  */
8108 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
8109
8110 /**
8111  * Creates a new CResult_NetworkGraphDecodeErrorZ which has the same data as `orig`
8112  * but with all dynamically-allocated buffers duplicated in new buffers.
8113  */
8114 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
8115
8116 /**
8117  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
8118  */
8119 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
8120
8121 /**
8122  * Frees any resources used by the C2Tuple_usizeTransactionZ.
8123  */
8124 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
8125
8126 /**
8127  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8128  */
8129 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
8130
8131 /**
8132  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
8133  */
8134 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
8135
8136 /**
8137  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
8138  */
8139 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
8140
8141 /**
8142  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
8143  */
8144 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
8145
8146 /**
8147  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
8148  * but with all dynamically-allocated buffers duplicated in new buffers.
8149  */
8150 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
8151
8152 /**
8153  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8154  */
8155 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
8156
8157 /**
8158  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8159  */
8160 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
8161
8162 /**
8163  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
8164  */
8165 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
8166
8167 /**
8168  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
8169  */
8170 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
8171
8172 /**
8173  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
8174  */
8175 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
8176
8177 /**
8178  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
8179  * but with all dynamically-allocated buffers duplicated in new buffers.
8180  */
8181 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
8182
8183 /**
8184  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
8185  */
8186 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
8187
8188 /**
8189  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
8190  */
8191 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
8192
8193 /**
8194  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
8195  */
8196 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
8197
8198 /**
8199  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
8200  * but with all dynamically-allocated buffers duplicated in new buffers.
8201  */
8202 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
8203
8204 /**
8205  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
8206  */
8207 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
8208
8209 /**
8210  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
8211  */
8212 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
8213
8214 /**
8215  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
8216  */
8217 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
8218
8219 /**
8220  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
8221  * but with all dynamically-allocated buffers duplicated in new buffers.
8222  */
8223 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
8224
8225 /**
8226  * Creates a new CResult_NoneMonitorUpdateErrorZ in the success state.
8227  */
8228 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
8229
8230 /**
8231  * Creates a new CResult_NoneMonitorUpdateErrorZ in the error state.
8232  */
8233 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e);
8234
8235 /**
8236  * Frees any resources used by the CResult_NoneMonitorUpdateErrorZ.
8237  */
8238 void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res);
8239
8240 /**
8241  * Creates a new CResult_NoneMonitorUpdateErrorZ which has the same data as `orig`
8242  * but with all dynamically-allocated buffers duplicated in new buffers.
8243  */
8244 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
8245
8246 /**
8247  * Creates a new tuple which has the same data as `orig`
8248  * but with all dynamically-allocated buffers duplicated in new buffers.
8249  */
8250 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
8251
8252 /**
8253  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
8254  */
8255 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
8256
8257 /**
8258  * Frees any resources used by the C2Tuple_OutPointScriptZ.
8259  */
8260 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
8261
8262 /**
8263  * Creates a new tuple which has the same data as `orig`
8264  * but with all dynamically-allocated buffers duplicated in new buffers.
8265  */
8266 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
8267
8268 /**
8269  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
8270  */
8271 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
8272
8273 /**
8274  * Frees any resources used by the C2Tuple_u32ScriptZ.
8275  */
8276 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
8277
8278 /**
8279  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8280  */
8281 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
8282
8283 /**
8284  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
8285  */
8286 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
8287
8288 /**
8289  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
8290  */
8291 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
8292
8293 /**
8294  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8295  */
8296 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
8297
8298 /**
8299  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8300  */
8301 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
8302
8303 /**
8304  * Creates a new tuple which has the same data as `orig`
8305  * but with all dynamically-allocated buffers duplicated in new buffers.
8306  */
8307 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
8308
8309 /**
8310  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
8311  */
8312 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
8313
8314 /**
8315  * Frees any resources used by the C2Tuple_u32TxOutZ.
8316  */
8317 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
8318
8319 /**
8320  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8321  */
8322 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
8323
8324 /**
8325  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
8326  */
8327 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
8328
8329 /**
8330  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
8331  */
8332 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
8333
8334 /**
8335  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8336  */
8337 void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res);
8338
8339 /**
8340  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
8341  */
8342 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
8343
8344 /**
8345  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
8346  */
8347 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
8348
8349 /**
8350  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
8351  */
8352 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
8353
8354 /**
8355  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
8356  */
8357 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
8358
8359 /**
8360  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
8361  */
8362 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
8363
8364 /**
8365  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8366  */
8367 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
8368
8369 /**
8370  * Creates a new CResult_TxOutAccessErrorZ in the success state.
8371  */
8372 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
8373
8374 /**
8375  * Creates a new CResult_TxOutAccessErrorZ in the error state.
8376  */
8377 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
8378
8379 /**
8380  * Frees any resources used by the CResult_TxOutAccessErrorZ.
8381  */
8382 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
8383
8384 /**
8385  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
8386  * but with all dynamically-allocated buffers duplicated in new buffers.
8387  */
8388 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
8389
8390 /**
8391  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing a crate::c_types::derived::C2Tuple_usizeTransactionZ
8392  */
8393 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
8394
8395 /**
8396  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing nothing
8397  */
8398 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
8399
8400 /**
8401  * Frees any resources associated with the crate::c_types::derived::C2Tuple_usizeTransactionZ, if we are in the Some state
8402  */
8403 void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
8404
8405 /**
8406  * Creates a new CResult_NoneAPIErrorZ in the success state.
8407  */
8408 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
8409
8410 /**
8411  * Creates a new CResult_NoneAPIErrorZ in the error state.
8412  */
8413 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
8414
8415 /**
8416  * Frees any resources used by the CResult_NoneAPIErrorZ.
8417  */
8418 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
8419
8420 /**
8421  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
8422  * but with all dynamically-allocated buffers duplicated in new buffers.
8423  */
8424 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
8425
8426 /**
8427  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8428  */
8429 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
8430
8431 /**
8432  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8433  */
8434 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
8435
8436 /**
8437  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8438  */
8439 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
8440
8441 /**
8442  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
8443  */
8444 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
8445
8446 /**
8447  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
8448  */
8449 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
8450
8451 /**
8452  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
8453  */
8454 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
8455
8456 /**
8457  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
8458  * but with all dynamically-allocated buffers duplicated in new buffers.
8459  */
8460 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
8461
8462 /**
8463  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8464  */
8465 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
8466
8467 /**
8468  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
8469  */
8470 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
8471
8472 /**
8473  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
8474  */
8475 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
8476
8477 /**
8478  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
8479  */
8480 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
8481
8482 /**
8483  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
8484  */
8485 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
8486
8487 /**
8488  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
8489  */
8490 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
8491
8492 /**
8493  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
8494  */
8495 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
8496
8497 /**
8498  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
8499  */
8500 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
8501
8502 /**
8503  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
8504  */
8505 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
8506
8507 /**
8508  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
8509  * but with all dynamically-allocated buffers duplicated in new buffers.
8510  */
8511 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
8512
8513 /**
8514  * Creates a new tuple which has the same data as `orig`
8515  * but with all dynamically-allocated buffers duplicated in new buffers.
8516  */
8517 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
8518
8519 /**
8520  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
8521  */
8522 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
8523
8524 /**
8525  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
8526  */
8527 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
8528
8529 /**
8530  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
8531  */
8532 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
8533
8534 /**
8535  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
8536  */
8537 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
8538
8539 /**
8540  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
8541  */
8542 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
8543
8544 /**
8545  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
8546  * but with all dynamically-allocated buffers duplicated in new buffers.
8547  */
8548 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
8549
8550 /**
8551  * Creates a new CResult_SignatureNoneZ in the success state.
8552  */
8553 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
8554
8555 /**
8556  * Creates a new CResult_SignatureNoneZ in the error state.
8557  */
8558 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
8559
8560 /**
8561  * Frees any resources used by the CResult_SignatureNoneZ.
8562  */
8563 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
8564
8565 /**
8566  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
8567  * but with all dynamically-allocated buffers duplicated in new buffers.
8568  */
8569 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
8570
8571 /**
8572  * Creates a new CResult_SignDecodeErrorZ in the success state.
8573  */
8574 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
8575
8576 /**
8577  * Creates a new CResult_SignDecodeErrorZ in the error state.
8578  */
8579 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
8580
8581 /**
8582  * Frees any resources used by the CResult_SignDecodeErrorZ.
8583  */
8584 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
8585
8586 /**
8587  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
8588  * but with all dynamically-allocated buffers duplicated in new buffers.
8589  */
8590 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
8591
8592 /**
8593  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8594  */
8595 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
8596
8597 /**
8598  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
8599  */
8600 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
8601
8602 /**
8603  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
8604  */
8605 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
8606
8607 /**
8608  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
8609  */
8610 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
8611
8612 /**
8613  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
8614  * but with all dynamically-allocated buffers duplicated in new buffers.
8615  */
8616 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
8617
8618 /**
8619  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
8620  */
8621 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
8622
8623 /**
8624  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
8625  */
8626 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
8627
8628 /**
8629  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
8630  */
8631 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
8632
8633 /**
8634  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
8635  * but with all dynamically-allocated buffers duplicated in new buffers.
8636  */
8637 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
8638
8639 /**
8640  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8641  */
8642 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
8643
8644 /**
8645  * Creates a new CResult_TransactionNoneZ in the success state.
8646  */
8647 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
8648
8649 /**
8650  * Creates a new CResult_TransactionNoneZ in the error state.
8651  */
8652 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
8653
8654 /**
8655  * Frees any resources used by the CResult_TransactionNoneZ.
8656  */
8657 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
8658
8659 /**
8660  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8661  */
8662 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
8663
8664 /**
8665  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8666  */
8667 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
8668
8669 /**
8670  * Creates a new CResult_RouteDecodeErrorZ in the success state.
8671  */
8672 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
8673
8674 /**
8675  * Creates a new CResult_RouteDecodeErrorZ in the error state.
8676  */
8677 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
8678
8679 /**
8680  * Frees any resources used by the CResult_RouteDecodeErrorZ.
8681  */
8682 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
8683
8684 /**
8685  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
8686  * but with all dynamically-allocated buffers duplicated in new buffers.
8687  */
8688 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
8689
8690 /**
8691  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8692  */
8693 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
8694
8695 /**
8696  * Creates a new CResult_RouteLightningErrorZ in the success state.
8697  */
8698 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
8699
8700 /**
8701  * Creates a new CResult_RouteLightningErrorZ in the error state.
8702  */
8703 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
8704
8705 /**
8706  * Frees any resources used by the CResult_RouteLightningErrorZ.
8707  */
8708 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
8709
8710 /**
8711  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
8712  * but with all dynamically-allocated buffers duplicated in new buffers.
8713  */
8714 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
8715
8716 /**
8717  * Creates a new CResult_NetAddressu8Z in the success state.
8718  */
8719 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o);
8720
8721 /**
8722  * Creates a new CResult_NetAddressu8Z in the error state.
8723  */
8724 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_err(uint8_t e);
8725
8726 /**
8727  * Frees any resources used by the CResult_NetAddressu8Z.
8728  */
8729 void CResult_NetAddressu8Z_free(struct LDKCResult_NetAddressu8Z _res);
8730
8731 /**
8732  * Creates a new CResult_NetAddressu8Z which has the same data as `orig`
8733  * but with all dynamically-allocated buffers duplicated in new buffers.
8734  */
8735 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_clone(const struct LDKCResult_NetAddressu8Z *NONNULL_PTR orig);
8736
8737 /**
8738  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the success state.
8739  */
8740 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_ok(struct LDKCResult_NetAddressu8Z o);
8741
8742 /**
8743  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the error state.
8744  */
8745 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_err(struct LDKDecodeError e);
8746
8747 /**
8748  * Frees any resources used by the CResult_CResult_NetAddressu8ZDecodeErrorZ.
8749  */
8750 void CResult_CResult_NetAddressu8ZDecodeErrorZ_free(struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ _res);
8751
8752 /**
8753  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ which has the same data as `orig`
8754  * but with all dynamically-allocated buffers duplicated in new buffers.
8755  */
8756 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(const struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ *NONNULL_PTR orig);
8757
8758 /**
8759  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8760  */
8761 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
8762
8763 /**
8764  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8765  */
8766 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
8767
8768 /**
8769  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8770  */
8771 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
8772
8773 /**
8774  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8775  */
8776 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
8777
8778 /**
8779  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
8780  */
8781 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
8782
8783 /**
8784  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
8785  */
8786 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
8787
8788 /**
8789  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
8790  */
8791 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
8792
8793 /**
8794  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
8795  * but with all dynamically-allocated buffers duplicated in new buffers.
8796  */
8797 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
8798
8799 /**
8800  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
8801  */
8802 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
8803
8804 /**
8805  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
8806  */
8807 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
8808
8809 /**
8810  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
8811  */
8812 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
8813
8814 /**
8815  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
8816  * but with all dynamically-allocated buffers duplicated in new buffers.
8817  */
8818 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
8819
8820 /**
8821  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
8822  */
8823 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
8824
8825 /**
8826  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
8827  */
8828 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
8829
8830 /**
8831  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
8832  */
8833 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
8834
8835 /**
8836  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
8837  * but with all dynamically-allocated buffers duplicated in new buffers.
8838  */
8839 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
8840
8841 /**
8842  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
8843  */
8844 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
8845
8846 /**
8847  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
8848  */
8849 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
8850
8851 /**
8852  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
8853  */
8854 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
8855
8856 /**
8857  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
8858  * but with all dynamically-allocated buffers duplicated in new buffers.
8859  */
8860 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
8861
8862 /**
8863  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
8864  */
8865 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
8866
8867 /**
8868  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
8869  */
8870 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
8871
8872 /**
8873  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
8874  */
8875 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
8876
8877 /**
8878  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
8879  * but with all dynamically-allocated buffers duplicated in new buffers.
8880  */
8881 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
8882
8883 /**
8884  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
8885  */
8886 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
8887
8888 /**
8889  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
8890  */
8891 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
8892
8893 /**
8894  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
8895  */
8896 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
8897
8898 /**
8899  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
8900  * but with all dynamically-allocated buffers duplicated in new buffers.
8901  */
8902 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
8903
8904 /**
8905  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
8906  */
8907 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
8908
8909 /**
8910  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
8911  */
8912 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
8913
8914 /**
8915  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
8916  */
8917 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
8918
8919 /**
8920  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
8921  * but with all dynamically-allocated buffers duplicated in new buffers.
8922  */
8923 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
8924
8925 /**
8926  * Creates a new CResult_FundingLockedDecodeErrorZ in the success state.
8927  */
8928 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
8929
8930 /**
8931  * Creates a new CResult_FundingLockedDecodeErrorZ in the error state.
8932  */
8933 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
8934
8935 /**
8936  * Frees any resources used by the CResult_FundingLockedDecodeErrorZ.
8937  */
8938 void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
8939
8940 /**
8941  * Creates a new CResult_FundingLockedDecodeErrorZ which has the same data as `orig`
8942  * but with all dynamically-allocated buffers duplicated in new buffers.
8943  */
8944 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
8945
8946 /**
8947  * Creates a new CResult_InitDecodeErrorZ in the success state.
8948  */
8949 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
8950
8951 /**
8952  * Creates a new CResult_InitDecodeErrorZ in the error state.
8953  */
8954 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
8955
8956 /**
8957  * Frees any resources used by the CResult_InitDecodeErrorZ.
8958  */
8959 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
8960
8961 /**
8962  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
8963  * but with all dynamically-allocated buffers duplicated in new buffers.
8964  */
8965 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
8966
8967 /**
8968  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
8969  */
8970 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
8971
8972 /**
8973  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
8974  */
8975 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
8976
8977 /**
8978  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
8979  */
8980 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
8981
8982 /**
8983  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
8984  * but with all dynamically-allocated buffers duplicated in new buffers.
8985  */
8986 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
8987
8988 /**
8989  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
8990  */
8991 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
8992
8993 /**
8994  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
8995  */
8996 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
8997
8998 /**
8999  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
9000  */
9001 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
9002
9003 /**
9004  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
9005  * but with all dynamically-allocated buffers duplicated in new buffers.
9006  */
9007 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
9008
9009 /**
9010  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
9011  */
9012 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
9013
9014 /**
9015  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
9016  */
9017 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
9018
9019 /**
9020  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
9021  */
9022 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
9023
9024 /**
9025  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
9026  * but with all dynamically-allocated buffers duplicated in new buffers.
9027  */
9028 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
9029
9030 /**
9031  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
9032  */
9033 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
9034
9035 /**
9036  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
9037  */
9038 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9039
9040 /**
9041  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
9042  */
9043 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
9044
9045 /**
9046  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
9047  * but with all dynamically-allocated buffers duplicated in new buffers.
9048  */
9049 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
9050
9051 /**
9052  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
9053  */
9054 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
9055
9056 /**
9057  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
9058  */
9059 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9060
9061 /**
9062  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
9063  */
9064 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
9065
9066 /**
9067  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
9068  * but with all dynamically-allocated buffers duplicated in new buffers.
9069  */
9070 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
9071
9072 /**
9073  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
9074  */
9075 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
9076
9077 /**
9078  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
9079  */
9080 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
9081
9082 /**
9083  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
9084  */
9085 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
9086
9087 /**
9088  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
9089  * but with all dynamically-allocated buffers duplicated in new buffers.
9090  */
9091 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
9092
9093 /**
9094  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
9095  */
9096 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
9097
9098 /**
9099  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
9100  */
9101 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9102
9103 /**
9104  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
9105  */
9106 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
9107
9108 /**
9109  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
9110  * but with all dynamically-allocated buffers duplicated in new buffers.
9111  */
9112 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
9113
9114 /**
9115  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
9116  */
9117 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
9118
9119 /**
9120  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
9121  */
9122 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9123
9124 /**
9125  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
9126  */
9127 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
9128
9129 /**
9130  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
9131  * but with all dynamically-allocated buffers duplicated in new buffers.
9132  */
9133 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
9134
9135 /**
9136  * Creates a new CResult_PingDecodeErrorZ in the success state.
9137  */
9138 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
9139
9140 /**
9141  * Creates a new CResult_PingDecodeErrorZ in the error state.
9142  */
9143 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
9144
9145 /**
9146  * Frees any resources used by the CResult_PingDecodeErrorZ.
9147  */
9148 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
9149
9150 /**
9151  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
9152  * but with all dynamically-allocated buffers duplicated in new buffers.
9153  */
9154 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
9155
9156 /**
9157  * Creates a new CResult_PongDecodeErrorZ in the success state.
9158  */
9159 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
9160
9161 /**
9162  * Creates a new CResult_PongDecodeErrorZ in the error state.
9163  */
9164 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
9165
9166 /**
9167  * Frees any resources used by the CResult_PongDecodeErrorZ.
9168  */
9169 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
9170
9171 /**
9172  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
9173  * but with all dynamically-allocated buffers duplicated in new buffers.
9174  */
9175 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
9176
9177 /**
9178  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
9179  */
9180 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
9181
9182 /**
9183  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
9184  */
9185 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9186
9187 /**
9188  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
9189  */
9190 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
9191
9192 /**
9193  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
9194  * but with all dynamically-allocated buffers duplicated in new buffers.
9195  */
9196 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9197
9198 /**
9199  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
9200  */
9201 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
9202
9203 /**
9204  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
9205  */
9206 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9207
9208 /**
9209  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
9210  */
9211 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
9212
9213 /**
9214  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
9215  * but with all dynamically-allocated buffers duplicated in new buffers.
9216  */
9217 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9218
9219 /**
9220  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
9221  */
9222 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
9223
9224 /**
9225  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
9226  */
9227 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
9228
9229 /**
9230  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
9231  */
9232 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
9233
9234 /**
9235  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
9236  * but with all dynamically-allocated buffers duplicated in new buffers.
9237  */
9238 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
9239
9240 /**
9241  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
9242  */
9243 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
9244
9245 /**
9246  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
9247  */
9248 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
9249
9250 /**
9251  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
9252  */
9253 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
9254
9255 /**
9256  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
9257  * but with all dynamically-allocated buffers duplicated in new buffers.
9258  */
9259 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
9260
9261 /**
9262  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
9263  */
9264 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
9265
9266 /**
9267  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
9268  */
9269 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
9270
9271 /**
9272  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
9273  */
9274 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
9275
9276 /**
9277  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
9278  * but with all dynamically-allocated buffers duplicated in new buffers.
9279  */
9280 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
9281
9282 /**
9283  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
9284  */
9285 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
9286
9287 /**
9288  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
9289  */
9290 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9291
9292 /**
9293  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
9294  */
9295 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
9296
9297 /**
9298  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
9299  * but with all dynamically-allocated buffers duplicated in new buffers.
9300  */
9301 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9302
9303 /**
9304  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
9305  */
9306 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
9307
9308 /**
9309  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
9310  */
9311 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9312
9313 /**
9314  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
9315  */
9316 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
9317
9318 /**
9319  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
9320  * but with all dynamically-allocated buffers duplicated in new buffers.
9321  */
9322 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9323
9324 /**
9325  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
9326  */
9327 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
9328
9329 /**
9330  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
9331  */
9332 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
9333
9334 /**
9335  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
9336  */
9337 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
9338
9339 /**
9340  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
9341  * but with all dynamically-allocated buffers duplicated in new buffers.
9342  */
9343 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
9344
9345 /**
9346  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
9347  */
9348 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
9349
9350 /**
9351  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
9352  */
9353 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
9354
9355 /**
9356  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
9357  */
9358 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
9359
9360 /**
9361  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
9362  * but with all dynamically-allocated buffers duplicated in new buffers.
9363  */
9364 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
9365
9366 /**
9367  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
9368  */
9369 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
9370
9371 /**
9372  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
9373  */
9374 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
9375
9376 /**
9377  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
9378  */
9379 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
9380
9381 /**
9382  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
9383  * but with all dynamically-allocated buffers duplicated in new buffers.
9384  */
9385 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
9386
9387 /**
9388  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
9389  */
9390 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
9391
9392 /**
9393  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
9394  */
9395 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
9396
9397 /**
9398  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
9399  */
9400 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
9401
9402 /**
9403  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
9404  * but with all dynamically-allocated buffers duplicated in new buffers.
9405  */
9406 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
9407
9408 /**
9409  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
9410  */
9411 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
9412
9413 /**
9414  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
9415  */
9416 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
9417
9418 /**
9419  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
9420  */
9421 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
9422
9423 /**
9424  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
9425  * but with all dynamically-allocated buffers duplicated in new buffers.
9426  */
9427 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
9428
9429 /**
9430  * Frees any resources used by the Event
9431  */
9432 void Event_free(struct LDKEvent this_ptr);
9433
9434 /**
9435  * Creates a copy of the Event
9436  */
9437 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
9438
9439 /**
9440  * Serialize the Event object into a byte array which can be read by Event_read
9441  */
9442 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
9443
9444 /**
9445  * Frees any resources used by the MessageSendEvent
9446  */
9447 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
9448
9449 /**
9450  * Creates a copy of the MessageSendEvent
9451  */
9452 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
9453
9454 /**
9455  * Calls the free function if one is set
9456  */
9457 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
9458
9459 /**
9460  * Calls the free function if one is set
9461  */
9462 void EventsProvider_free(struct LDKEventsProvider this_ptr);
9463
9464 /**
9465  * Frees any resources used by the APIError
9466  */
9467 void APIError_free(struct LDKAPIError this_ptr);
9468
9469 /**
9470  * Creates a copy of the APIError
9471  */
9472 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
9473
9474 /**
9475  * Creates a copy of the Level
9476  */
9477 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
9478
9479 /**
9480  * Returns the most verbose logging level.
9481  */
9482 MUST_USE_RES enum LDKLevel Level_max(void);
9483
9484 /**
9485  * Calls the free function if one is set
9486  */
9487 void Logger_free(struct LDKLogger this_ptr);
9488
9489 /**
9490  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
9491  */
9492 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
9493
9494 /**
9495  * Confirmations we will wait for before considering the channel locked in.
9496  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
9497  * equivalent limit applied to outbound channels).
9498  *
9499  * Default value: 6.
9500  */
9501 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9502
9503 /**
9504  * Confirmations we will wait for before considering the channel locked in.
9505  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
9506  * equivalent limit applied to outbound channels).
9507  *
9508  * Default value: 6.
9509  */
9510 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
9511
9512 /**
9513  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
9514  * the number of blocks we have to punish our counterparty if they broadcast a revoked
9515  * transaction).
9516  *
9517  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
9518  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
9519  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
9520  * possibly with time in between to RBF the spending transaction).
9521  *
9522  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
9523  * case of an honest unilateral channel close, which implicitly decrease the economic value of
9524  * our channel.
9525  *
9526  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
9527  * can tweak config to ask for more security, not less.
9528  */
9529 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9530
9531 /**
9532  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
9533  * the number of blocks we have to punish our counterparty if they broadcast a revoked
9534  * transaction).
9535  *
9536  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
9537  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
9538  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
9539  * possibly with time in between to RBF the spending transaction).
9540  *
9541  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
9542  * case of an honest unilateral channel close, which implicitly decrease the economic value of
9543  * our channel.
9544  *
9545  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
9546  * can tweak config to ask for more security, not less.
9547  */
9548 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
9549
9550 /**
9551  * Set to the smallest value HTLC we will accept to process.
9552  *
9553  * This value is sent to our counterparty on channel-open and we close the channel any time
9554  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
9555  *
9556  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
9557  * by the protocol.
9558  */
9559 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9560
9561 /**
9562  * Set to the smallest value HTLC we will accept to process.
9563  *
9564  * This value is sent to our counterparty on channel-open and we close the channel any time
9565  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
9566  *
9567  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
9568  * by the protocol.
9569  */
9570 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
9571
9572 /**
9573  * Constructs a new ChannelHandshakeConfig given each field
9574  */
9575 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);
9576
9577 /**
9578  * Creates a copy of the ChannelHandshakeConfig
9579  */
9580 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
9581
9582 /**
9583  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
9584  */
9585 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
9586
9587 /**
9588  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
9589  */
9590 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
9591
9592 /**
9593  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
9594  * only applies to inbound channels.
9595  *
9596  * Default value: 0.
9597  */
9598 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9599
9600 /**
9601  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
9602  * only applies to inbound channels.
9603  *
9604  * Default value: 0.
9605  */
9606 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9607
9608 /**
9609  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
9610  * you to limit the maximum minimum-size they can require.
9611  *
9612  * Default value: u64::max_value.
9613  */
9614 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9615
9616 /**
9617  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
9618  * you to limit the maximum minimum-size they can require.
9619  *
9620  * Default value: u64::max_value.
9621  */
9622 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9623
9624 /**
9625  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
9626  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
9627  *
9628  * Default value: 0.
9629  */
9630 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9631
9632 /**
9633  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
9634  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
9635  *
9636  * Default value: 0.
9637  */
9638 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9639
9640 /**
9641  * The remote node will require we keep a certain amount in direct payment to ourselves at all
9642  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
9643  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
9644  *
9645  * Default value: u64::max_value.
9646  */
9647 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9648
9649 /**
9650  * The remote node will require we keep a certain amount in direct payment to ourselves at all
9651  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
9652  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
9653  *
9654  * Default value: u64::max_value.
9655  */
9656 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9657
9658 /**
9659  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
9660  * time. This allows you to set a minimum such value.
9661  *
9662  * Default value: 0.
9663  */
9664 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9665
9666 /**
9667  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
9668  * time. This allows you to set a minimum such value.
9669  *
9670  * Default value: 0.
9671  */
9672 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
9673
9674 /**
9675  * Outputs below a certain value will not be added to on-chain transactions. The dust value is
9676  * required to always be higher than this value so this only applies to HTLC outputs (and
9677  * potentially to-self outputs before any payments have been made).
9678  * Thus, HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9679  * This setting allows you to set a minimum dust limit for their commitment transactions,
9680  * reflecting the reality that tiny outputs are not considered standard transactions and will
9681  * not propagate through the Bitcoin network.
9682  *
9683  * Default value: 546, the current dust limit on the Bitcoin network.
9684  */
9685 uint64_t ChannelHandshakeLimits_get_min_dust_limit_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9686
9687 /**
9688  * Outputs below a certain value will not be added to on-chain transactions. The dust value is
9689  * required to always be higher than this value so this only applies to HTLC outputs (and
9690  * potentially to-self outputs before any payments have been made).
9691  * Thus, HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9692  * This setting allows you to set a minimum dust limit for their commitment transactions,
9693  * reflecting the reality that tiny outputs are not considered standard transactions and will
9694  * not propagate through the Bitcoin network.
9695  *
9696  * Default value: 546, the current dust limit on the Bitcoin network.
9697  */
9698 void ChannelHandshakeLimits_set_min_dust_limit_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9699
9700 /**
9701  * Maximum allowed threshold above which outputs will not be generated in their commitment
9702  * transactions.
9703  * HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9704  *
9705  * Default value: u64::max_value.
9706  */
9707 uint64_t ChannelHandshakeLimits_get_max_dust_limit_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9708
9709 /**
9710  * Maximum allowed threshold above which outputs will not be generated in their commitment
9711  * transactions.
9712  * HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9713  *
9714  * Default value: u64::max_value.
9715  */
9716 void ChannelHandshakeLimits_set_max_dust_limit_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9717
9718 /**
9719  * Before a channel is usable the funding transaction will need to be confirmed by at least a
9720  * certain number of blocks, specified by the node which is not the funder (as the funder can
9721  * assume they aren't going to double-spend themselves).
9722  * This config allows you to set a limit on the maximum amount of time to wait.
9723  *
9724  * Default value: 144, or roughly one day and only applies to outbound channels.
9725  */
9726 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
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 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
9737
9738 /**
9739  * Set to force the incoming channel to match our announced channel preference in
9740  * ChannelConfig.
9741  *
9742  * Default value: true, to make the default that no announced channels are possible (which is
9743  * appropriate for any nodes which are not online very reliably).
9744  */
9745 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9746
9747 /**
9748  * Set to force the incoming channel to match our announced channel preference in
9749  * ChannelConfig.
9750  *
9751  * Default value: true, to make the default that no announced channels are possible (which is
9752  * appropriate for any nodes which are not online very reliably).
9753  */
9754 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
9755
9756 /**
9757  * Set to the amount of time we're willing to wait to claim money back to us.
9758  *
9759  * Not checking this value would be a security issue, as our peer would be able to set it to
9760  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
9761  *
9762  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
9763  * reduce the loss of having useless locked funds (if your peer accepts)
9764  */
9765 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9766
9767 /**
9768  * Set to the amount of time we're willing to wait to claim money back to us.
9769  *
9770  * Not checking this value would be a security issue, as our peer would be able to set it to
9771  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
9772  *
9773  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
9774  * reduce the loss of having useless locked funds (if your peer accepts)
9775  */
9776 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
9777
9778 /**
9779  * Constructs a new ChannelHandshakeLimits given each field
9780  */
9781 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);
9782
9783 /**
9784  * Creates a copy of the ChannelHandshakeLimits
9785  */
9786 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
9787
9788 /**
9789  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
9790  */
9791 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
9792
9793 /**
9794  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
9795  */
9796 void ChannelConfig_free(struct LDKChannelConfig this_obj);
9797
9798 /**
9799  * Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
9800  * This may be allowed to change at runtime in a later update, however doing so must result in
9801  * update messages sent to notify all nodes of our updated relay fee.
9802  *
9803  * Default value: 0.
9804  */
9805 uint32_t ChannelConfig_get_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9806
9807 /**
9808  * Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
9809  * This may be allowed to change at runtime in a later update, however doing so must result in
9810  * update messages sent to notify all nodes of our updated relay fee.
9811  *
9812  * Default value: 0.
9813  */
9814 void ChannelConfig_set_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
9815
9816 /**
9817  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
9818  * the channel this config applies to.
9819  *
9820  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
9821  * HTLC balance when a channel appears on-chain whereas
9822  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
9823  * (non-HTLC-encumbered) balance.
9824  *
9825  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
9826  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
9827  * commitment transaction at least once per this many blocks (minus some margin to allow us
9828  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
9829  * the spending transaction).
9830  *
9831  * Default value: 72 (12 hours at an average of 6 blocks/hour).
9832  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
9833  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
9834  *
9835  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
9836  */
9837 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9838
9839 /**
9840  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
9841  * the channel this config applies to.
9842  *
9843  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
9844  * HTLC balance when a channel appears on-chain whereas
9845  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
9846  * (non-HTLC-encumbered) balance.
9847  *
9848  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
9849  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
9850  * commitment transaction at least once per this many blocks (minus some margin to allow us
9851  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
9852  * the spending transaction).
9853  *
9854  * Default value: 72 (12 hours at an average of 6 blocks/hour).
9855  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
9856  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
9857  *
9858  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
9859  */
9860 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
9861
9862 /**
9863  * Set to announce the channel publicly and notify all nodes that they can route via this
9864  * channel.
9865  *
9866  * This should only be set to true for nodes which expect to be online reliably.
9867  *
9868  * As the node which funds a channel picks this value this will only apply for new outbound
9869  * channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
9870  *
9871  * This cannot be changed after the initial channel handshake.
9872  *
9873  * Default value: false.
9874  */
9875 bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9876
9877 /**
9878  * Set to announce the channel publicly and notify all nodes that they can route via this
9879  * channel.
9880  *
9881  * This should only be set to true for nodes which expect to be online reliably.
9882  *
9883  * As the node which funds a channel picks this value this will only apply for new outbound
9884  * channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
9885  *
9886  * This cannot be changed after the initial channel handshake.
9887  *
9888  * Default value: false.
9889  */
9890 void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
9891
9892 /**
9893  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
9894  * supports it, they will then enforce the mutual-close output to us matches what we provided
9895  * at intialization, preventing us from closing to an alternate pubkey.
9896  *
9897  * This is set to true by default to provide a slight increase in security, though ultimately
9898  * any attacker who is able to take control of a channel can just as easily send the funds via
9899  * lightning payments, so we never require that our counterparties support this option.
9900  *
9901  * This cannot be changed after a channel has been initialized.
9902  *
9903  * Default value: true.
9904  */
9905 bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9906
9907 /**
9908  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
9909  * supports it, they will then enforce the mutual-close output to us matches what we provided
9910  * at intialization, preventing us from closing to an alternate pubkey.
9911  *
9912  * This is set to true by default to provide a slight increase in security, though ultimately
9913  * any attacker who is able to take control of a channel can just as easily send the funds via
9914  * lightning payments, so we never require that our counterparties support this option.
9915  *
9916  * This cannot be changed after a channel has been initialized.
9917  *
9918  * Default value: true.
9919  */
9920 void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
9921
9922 /**
9923  * Constructs a new ChannelConfig given each field
9924  */
9925 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);
9926
9927 /**
9928  * Creates a copy of the ChannelConfig
9929  */
9930 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
9931
9932 /**
9933  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
9934  */
9935 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
9936
9937 /**
9938  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
9939  */
9940 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
9941
9942 /**
9943  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
9944  */
9945 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
9946
9947 /**
9948  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
9949  */
9950 void UserConfig_free(struct LDKUserConfig this_obj);
9951
9952 /**
9953  * Channel config that we propose to our counterparty.
9954  */
9955 struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9956
9957 /**
9958  * Channel config that we propose to our counterparty.
9959  */
9960 void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
9961
9962 /**
9963  * Limits applied to our counterparty's proposed channel config settings.
9964  */
9965 struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9966
9967 /**
9968  * Limits applied to our counterparty's proposed channel config settings.
9969  */
9970 void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
9971
9972 /**
9973  * Channel config which affects behavior during channel lifetime.
9974  */
9975 struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9976
9977 /**
9978  * Channel config which affects behavior during channel lifetime.
9979  */
9980 void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
9981
9982 /**
9983  * Constructs a new UserConfig given each field
9984  */
9985 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);
9986
9987 /**
9988  * Creates a copy of the UserConfig
9989  */
9990 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
9991
9992 /**
9993  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
9994  */
9995 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
9996
9997 /**
9998  * Creates a copy of the AccessError
9999  */
10000 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
10001
10002 /**
10003  * Calls the free function if one is set
10004  */
10005 void Access_free(struct LDKAccess this_ptr);
10006
10007 /**
10008  * Calls the free function if one is set
10009  */
10010 void Listen_free(struct LDKListen this_ptr);
10011
10012 /**
10013  * Calls the free function if one is set
10014  */
10015 void Watch_free(struct LDKWatch this_ptr);
10016
10017 /**
10018  * Calls the free function if one is set
10019  */
10020 void Filter_free(struct LDKFilter this_ptr);
10021
10022 /**
10023  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
10024  */
10025 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
10026
10027 /**
10028  * First block where the transaction output may have been spent.
10029  */
10030 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10031
10032 /**
10033  * First block where the transaction output may have been spent.
10034  */
10035 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10036
10037 /**
10038  * Outpoint identifying the transaction output.
10039  */
10040 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10041
10042 /**
10043  * Outpoint identifying the transaction output.
10044  */
10045 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10046
10047 /**
10048  * Spending condition of the transaction output.
10049  */
10050 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10051
10052 /**
10053  * Spending condition of the transaction output.
10054  */
10055 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
10056
10057 /**
10058  * Constructs a new WatchedOutput given each field
10059  */
10060 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
10061
10062 /**
10063  * Calls the free function if one is set
10064  */
10065 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
10066
10067 /**
10068  * Creates a copy of the ConfirmationTarget
10069  */
10070 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
10071
10072 /**
10073  * Calls the free function if one is set
10074  */
10075 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
10076
10077 /**
10078  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
10079  */
10080 void ChainMonitor_free(struct LDKChainMonitor this_obj);
10081
10082 /**
10083  * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
10084  * of a channel and reacting accordingly based on transactions in the connected block. See
10085  * [`ChannelMonitor::block_connected`] for details. Any HTLCs that were resolved on chain will
10086  * be returned by [`chain::Watch::release_pending_monitor_events`].
10087  *
10088  * Calls back to [`chain::Filter`] if any monitor indicated new outputs to watch. Subsequent
10089  * calls must not exclude any transactions matching the new outputs nor any in-block
10090  * descendants of such transactions. It is not necessary to re-fetch the block to obtain
10091  * updated `txdata`.
10092  */
10093 void ChainMonitor_block_connected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
10094
10095 /**
10096  * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
10097  * of a channel based on the disconnected block. See [`ChannelMonitor::block_disconnected`] for
10098  * details.
10099  */
10100 void ChainMonitor_block_disconnected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
10101
10102 /**
10103  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
10104  *
10105  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
10106  * will call back to it indicating transactions and outputs of interest. This allows clients to
10107  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
10108  * always need to fetch full blocks absent another means for determining which blocks contain
10109  * transactions relevant to the watched channels.
10110  */
10111 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKFilter *chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
10112
10113 /**
10114  * Constructs a new Watch which calls the relevant methods on this_arg.
10115  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
10116  */
10117 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
10118
10119 /**
10120  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
10121  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
10122  */
10123 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
10124
10125 /**
10126  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
10127  */
10128 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
10129
10130 /**
10131  * The sequence number of this update. Updates *must* be replayed in-order according to this
10132  * sequence number (and updates may panic if they are not). The update_id values are strictly
10133  * increasing and increase by one for each new update, with one exception specified below.
10134  *
10135  * This sequence number is also used to track up to which points updates which returned
10136  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
10137  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
10138  *
10139  * The only instance where update_id values are not strictly increasing is the case where we
10140  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
10141  * its docs for more details.
10142  */
10143 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
10144
10145 /**
10146  * The sequence number of this update. Updates *must* be replayed in-order according to this
10147  * sequence number (and updates may panic if they are not). The update_id values are strictly
10148  * increasing and increase by one for each new update, with one exception specified below.
10149  *
10150  * This sequence number is also used to track up to which points updates which returned
10151  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
10152  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
10153  *
10154  * The only instance where update_id values are not strictly increasing is the case where we
10155  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
10156  * its docs for more details.
10157  */
10158 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
10159
10160 /**
10161  * Creates a copy of the ChannelMonitorUpdate
10162  */
10163 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
10164
10165 /**
10166  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
10167  */
10168 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
10169
10170 /**
10171  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
10172  */
10173 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
10174
10175 /**
10176  * Creates a copy of the ChannelMonitorUpdateErr
10177  */
10178 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
10179
10180 /**
10181  * Frees any resources used by the MonitorUpdateError, if is_owned is set and inner is non-NULL.
10182  */
10183 void MonitorUpdateError_free(struct LDKMonitorUpdateError this_obj);
10184
10185 /**
10186  * Creates a copy of the MonitorUpdateError
10187  */
10188 struct LDKMonitorUpdateError MonitorUpdateError_clone(const struct LDKMonitorUpdateError *NONNULL_PTR orig);
10189
10190 /**
10191  * Frees any resources used by the MonitorEvent
10192  */
10193 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
10194
10195 /**
10196  * Creates a copy of the MonitorEvent
10197  */
10198 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
10199
10200 /**
10201  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
10202  */
10203 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
10204
10205 /**
10206  * Creates a copy of the HTLCUpdate
10207  */
10208 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
10209
10210 /**
10211  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
10212  */
10213 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
10214
10215 /**
10216  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
10217  */
10218 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
10219
10220 /**
10221  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
10222  */
10223 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
10224
10225 /**
10226  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
10227  */
10228 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
10229
10230 /**
10231  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
10232  * itself.
10233  *
10234  * panics if the given update is not the next update by update_id.
10235  */
10236 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);
10237
10238 /**
10239  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
10240  * ChannelMonitor.
10241  */
10242 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10243
10244 /**
10245  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
10246  */
10247 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10248
10249 /**
10250  * Gets a list of txids, with their output scripts (in the order they appear in the
10251  * transaction), which we must learn about spends of via block_connected().
10252  */
10253 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10254
10255 /**
10256  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
10257  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
10258  * have been registered.
10259  */
10260 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
10261
10262 /**
10263  * Get the list of HTLCs who's status has been updated on chain. This should be called by
10264  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
10265  */
10266 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10267
10268 /**
10269  * Gets the list of pending events which were generated by previous actions, clearing the list
10270  * in the process.
10271  *
10272  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
10273  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
10274  * no internal locking in ChannelMonitors.
10275  */
10276 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10277
10278 /**
10279  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
10280  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
10281  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
10282  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
10283  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
10284  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
10285  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
10286  * out-of-band the other node operator to coordinate with him if option is available to you.
10287  * In any-case, choice is up to the user.
10288  */
10289 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);
10290
10291 /**
10292  * Processes transactions in a newly connected block, which may result in any of the following:
10293  * - update the monitor's state against resolved HTLCs
10294  * - punish the counterparty in the case of seeing a revoked commitment transaction
10295  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
10296  * - detect settled outputs for later spending
10297  * - schedule and bump any in-flight claims
10298  *
10299  * Returns any new outputs to watch from `txdata`; after called, these are also included in
10300  * [`get_outputs_to_watch`].
10301  *
10302  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
10303  */
10304 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);
10305
10306 /**
10307  * Determines if the disconnected block contained any transactions of interest and updates
10308  * appropriately.
10309  */
10310 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);
10311
10312 /**
10313  * Calls the free function if one is set
10314  */
10315 void Persist_free(struct LDKPersist this_ptr);
10316
10317 /**
10318  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
10319  */
10320 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
10321
10322 /**
10323  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
10324  */
10325 void OutPoint_free(struct LDKOutPoint this_obj);
10326
10327 /**
10328  * The referenced transaction's txid.
10329  */
10330 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
10331
10332 /**
10333  * The referenced transaction's txid.
10334  */
10335 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10336
10337 /**
10338  * The index of the referenced output in its transaction's vout.
10339  */
10340 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
10341
10342 /**
10343  * The index of the referenced output in its transaction's vout.
10344  */
10345 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
10346
10347 /**
10348  * Constructs a new OutPoint given each field
10349  */
10350 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
10351
10352 /**
10353  * Creates a copy of the OutPoint
10354  */
10355 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
10356
10357 /**
10358  * Convert an `OutPoint` to a lightning channel id.
10359  */
10360 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
10361
10362 /**
10363  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
10364  */
10365 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
10366
10367 /**
10368  * Read a OutPoint from a byte array, created by OutPoint_write
10369  */
10370 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
10371
10372 /**
10373  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
10374  */
10375 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
10376
10377 /**
10378  * The outpoint which is spendable
10379  */
10380 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10381
10382 /**
10383  * The outpoint which is spendable
10384  */
10385 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10386
10387 /**
10388  * Per commitment point to derive delayed_payment_key by key holder
10389  */
10390 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10391
10392 /**
10393  * Per commitment point to derive delayed_payment_key by key holder
10394  */
10395 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10396
10397 /**
10398  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
10399  * the witness_script.
10400  */
10401 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10402
10403 /**
10404  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
10405  * the witness_script.
10406  */
10407 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
10408
10409 /**
10410  * The output which is referenced by the given outpoint
10411  */
10412 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
10413
10414 /**
10415  * The revocation point specific to the commitment transaction which was broadcast. Used to
10416  * derive the witnessScript for this output.
10417  */
10418 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10419
10420 /**
10421  * The revocation point specific to the commitment transaction which was broadcast. Used to
10422  * derive the witnessScript for this output.
10423  */
10424 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10425
10426 /**
10427  * Arbitrary identification information returned by a call to
10428  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10429  * the channel to spend the output.
10430  */
10431 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
10432
10433 /**
10434  * Arbitrary identification information returned by a call to
10435  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10436  * the channel to spend the output.
10437  */
10438 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10439
10440 /**
10441  * The value of the channel which this output originated from, possibly indirectly.
10442  */
10443 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10444
10445 /**
10446  * The value of the channel which this output originated from, possibly indirectly.
10447  */
10448 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
10449
10450 /**
10451  * Constructs a new DelayedPaymentOutputDescriptor given each field
10452  */
10453 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);
10454
10455 /**
10456  * Creates a copy of the DelayedPaymentOutputDescriptor
10457  */
10458 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
10459
10460 /**
10461  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
10462  */
10463 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
10464
10465 /**
10466  * The outpoint which is spendable
10467  */
10468 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10469
10470 /**
10471  * The outpoint which is spendable
10472  */
10473 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10474
10475 /**
10476  * The output which is referenced by the given outpoint
10477  */
10478 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
10479
10480 /**
10481  * Arbitrary identification information returned by a call to
10482  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10483  * the channel to spend the output.
10484  */
10485 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
10486
10487 /**
10488  * Arbitrary identification information returned by a call to
10489  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10490  * the channel to spend the output.
10491  */
10492 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10493
10494 /**
10495  * The value of the channel which this transactions spends.
10496  */
10497 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10498
10499 /**
10500  * The value of the channel which this transactions spends.
10501  */
10502 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
10503
10504 /**
10505  * Constructs a new StaticPaymentOutputDescriptor given each field
10506  */
10507 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);
10508
10509 /**
10510  * Creates a copy of the StaticPaymentOutputDescriptor
10511  */
10512 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
10513
10514 /**
10515  * Frees any resources used by the SpendableOutputDescriptor
10516  */
10517 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
10518
10519 /**
10520  * Creates a copy of the SpendableOutputDescriptor
10521  */
10522 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
10523
10524 /**
10525  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
10526  */
10527 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
10528
10529 /**
10530  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
10531  */
10532 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
10533
10534 /**
10535  * Creates a copy of a Sign
10536  */
10537 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
10538
10539 /**
10540  * Calls the free function if one is set
10541  */
10542 void Sign_free(struct LDKSign this_ptr);
10543
10544 /**
10545  * Calls the free function if one is set
10546  */
10547 void KeysInterface_free(struct LDKKeysInterface this_ptr);
10548
10549 /**
10550  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
10551  */
10552 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
10553
10554 /**
10555  * Private key of anchor tx
10556  */
10557 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10558
10559 /**
10560  * Private key of anchor tx
10561  */
10562 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10563
10564 /**
10565  * Holder secret key for blinded revocation pubkey
10566  */
10567 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10568
10569 /**
10570  * Holder secret key for blinded revocation pubkey
10571  */
10572 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10573
10574 /**
10575  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
10576  */
10577 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10578
10579 /**
10580  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
10581  */
10582 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10583
10584 /**
10585  * Holder secret key used in HTLC tx
10586  */
10587 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10588
10589 /**
10590  * Holder secret key used in HTLC tx
10591  */
10592 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10593
10594 /**
10595  * Holder htlc secret key used in commitment tx htlc outputs
10596  */
10597 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10598
10599 /**
10600  * Holder htlc secret key used in commitment tx htlc outputs
10601  */
10602 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10603
10604 /**
10605  * Commitment seed
10606  */
10607 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10608
10609 /**
10610  * Commitment seed
10611  */
10612 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10613
10614 /**
10615  * Creates a copy of the InMemorySigner
10616  */
10617 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
10618
10619 /**
10620  * Create a new InMemorySigner
10621  */
10622 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);
10623
10624 /**
10625  * Counterparty pubkeys.
10626  * Will panic if ready_channel wasn't called.
10627  */
10628 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10629
10630 /**
10631  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
10632  * transactions, ie the amount of time that we have to wait to recover our funds if we
10633  * broadcast a transaction.
10634  * Will panic if ready_channel wasn't called.
10635  */
10636 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10637
10638 /**
10639  * The contest_delay value specified by us and applied on transactions broadcastable
10640  * by our counterparty, ie the amount of time that they have to wait to recover their funds
10641  * if they broadcast a transaction.
10642  * Will panic if ready_channel wasn't called.
10643  */
10644 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10645
10646 /**
10647  * Whether the holder is the initiator
10648  * Will panic if ready_channel wasn't called.
10649  */
10650 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10651
10652 /**
10653  * Funding outpoint
10654  * Will panic if ready_channel wasn't called.
10655  */
10656 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10657
10658 /**
10659  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
10660  * building transactions.
10661  *
10662  * Will panic if ready_channel wasn't called.
10663  */
10664 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10665
10666 /**
10667  * Sign the single input of spend_tx at index `input_idx` which spends the output
10668  * described by descriptor, returning the witness stack for the input.
10669  *
10670  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
10671  * or is not spending the outpoint described by `descriptor.outpoint`.
10672  */
10673 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);
10674
10675 /**
10676  * Sign the single input of spend_tx at index `input_idx` which spends the output
10677  * described by descriptor, returning the witness stack for the input.
10678  *
10679  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
10680  * is not spending the outpoint described by `descriptor.outpoint`, or does not have a
10681  * sequence set to `descriptor.to_self_delay`.
10682  */
10683 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);
10684
10685 /**
10686  * Constructs a new Sign which calls the relevant methods on this_arg.
10687  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
10688  */
10689 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10690
10691 /**
10692  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
10693  */
10694 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
10695
10696 /**
10697  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
10698  */
10699 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
10700
10701 /**
10702  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
10703  */
10704 void KeysManager_free(struct LDKKeysManager this_obj);
10705
10706 /**
10707  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
10708  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
10709  * starting_time isn't strictly required to actually be a time, but it must absolutely,
10710  * without a doubt, be unique to this instance. ie if you start multiple times with the same
10711  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
10712  * simply use the current time (with very high precision).
10713  *
10714  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
10715  * obviously, starting_time should be unique every time you reload the library - it is only
10716  * used to generate new ephemeral key data (which will be stored by the individual channel if
10717  * necessary).
10718  *
10719  * Note that the seed is required to recover certain on-chain funds independent of
10720  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
10721  * channel, and some on-chain during-closing funds.
10722  *
10723  * Note that until the 0.1 release there is no guarantee of backward compatibility between
10724  * versions. Once the library is more fully supported, the docs will be updated to include a
10725  * detailed description of the guarantee.
10726  */
10727 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
10728
10729 /**
10730  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
10731  *
10732  * Key derivation parameters are accessible through a per-channel secrets
10733  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
10734  * onchain output detection for which a corresponding delayed_payment_key must be derived.
10735  */
10736 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]);
10737
10738 /**
10739  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
10740  * output to the given change destination (if sufficient change value remains). The
10741  * transaction will have a feerate, at least, of the given value.
10742  *
10743  * Returns `Err(())` if the output value is greater than the input value minus required fee or
10744  * if a descriptor was duplicated.
10745  *
10746  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
10747  *
10748  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
10749  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
10750  */
10751 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);
10752
10753 /**
10754  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
10755  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
10756  */
10757 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
10758
10759 /**
10760  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
10761  */
10762 void ChannelManager_free(struct LDKChannelManager this_obj);
10763
10764 /**
10765  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
10766  */
10767 void ChainParameters_free(struct LDKChainParameters this_obj);
10768
10769 /**
10770  * The network for determining the `chain_hash` in Lightning messages.
10771  */
10772 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
10773
10774 /**
10775  * The network for determining the `chain_hash` in Lightning messages.
10776  */
10777 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
10778
10779 /**
10780  * The hash of the latest block successfully connected.
10781  */
10782 const uint8_t (*ChainParameters_get_latest_hash(const struct LDKChainParameters *NONNULL_PTR this_ptr))[32];
10783
10784 /**
10785  * The hash of the latest block successfully connected.
10786  */
10787 void ChainParameters_set_latest_hash(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10788
10789 /**
10790  * The height of the latest block successfully connected.
10791  *
10792  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
10793  */
10794 uintptr_t ChainParameters_get_latest_height(const struct LDKChainParameters *NONNULL_PTR this_ptr);
10795
10796 /**
10797  * The height of the latest block successfully connected.
10798  *
10799  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
10800  */
10801 void ChainParameters_set_latest_height(struct LDKChainParameters *NONNULL_PTR this_ptr, uintptr_t val);
10802
10803 /**
10804  * Constructs a new ChainParameters given each field
10805  */
10806 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKThirtyTwoBytes latest_hash_arg, uintptr_t latest_height_arg);
10807
10808 /**
10809  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
10810  */
10811 void ChannelDetails_free(struct LDKChannelDetails this_obj);
10812
10813 /**
10814  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
10815  * thereafter this is the txid of the funding transaction xor the funding transaction output).
10816  * Note that this means this value is *not* persistent - it can change once during the
10817  * lifetime of the channel.
10818  */
10819 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
10820
10821 /**
10822  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
10823  * thereafter this is the txid of the funding transaction xor the funding transaction output).
10824  * Note that this means this value is *not* persistent - it can change once during the
10825  * lifetime of the channel.
10826  */
10827 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10828
10829 /**
10830  * The position of the funding transaction in the chain. None if the funding transaction has
10831  * not yet been confirmed and the channel fully opened.
10832  */
10833 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10834
10835 /**
10836  * The position of the funding transaction in the chain. None if the funding transaction has
10837  * not yet been confirmed and the channel fully opened.
10838  */
10839 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
10840
10841 /**
10842  * The node_id of our counterparty
10843  */
10844 struct LDKPublicKey ChannelDetails_get_remote_network_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10845
10846 /**
10847  * The node_id of our counterparty
10848  */
10849 void ChannelDetails_set_remote_network_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10850
10851 /**
10852  * The Features the channel counterparty provided upon last connection.
10853  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
10854  * many routing-relevant features are present in the init context.
10855  */
10856 struct LDKInitFeatures ChannelDetails_get_counterparty_features(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10857
10858 /**
10859  * The Features the channel counterparty provided upon last connection.
10860  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
10861  * many routing-relevant features are present in the init context.
10862  */
10863 void ChannelDetails_set_counterparty_features(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
10864
10865 /**
10866  * The value, in satoshis, of this channel as appears in the funding output
10867  */
10868 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10869
10870 /**
10871  * The value, in satoshis, of this channel as appears in the funding output
10872  */
10873 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10874
10875 /**
10876  * The user_id passed in to create_channel, or 0 if the channel was inbound.
10877  */
10878 uint64_t ChannelDetails_get_user_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10879
10880 /**
10881  * The user_id passed in to create_channel, or 0 if the channel was inbound.
10882  */
10883 void ChannelDetails_set_user_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10884
10885 /**
10886  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
10887  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10888  * available for inclusion in new outbound HTLCs). This further does not include any pending
10889  * outgoing HTLCs which are awaiting some other resolution to be sent.
10890  */
10891 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10892
10893 /**
10894  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
10895  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10896  * available for inclusion in new outbound HTLCs). This further does not include any pending
10897  * outgoing HTLCs which are awaiting some other resolution to be sent.
10898  */
10899 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10900
10901 /**
10902  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
10903  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10904  * available for inclusion in new inbound HTLCs).
10905  * Note that there are some corner cases not fully handled here, so the actual available
10906  * inbound capacity may be slightly higher than this.
10907  */
10908 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10909
10910 /**
10911  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
10912  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10913  * available for inclusion in new inbound HTLCs).
10914  * Note that there are some corner cases not fully handled here, so the actual available
10915  * inbound capacity may be slightly higher than this.
10916  */
10917 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10918
10919 /**
10920  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
10921  * the peer is connected, and (c) no monitor update failure is pending resolution.
10922  */
10923 bool ChannelDetails_get_is_live(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10924
10925 /**
10926  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
10927  * the peer is connected, and (c) no monitor update failure is pending resolution.
10928  */
10929 void ChannelDetails_set_is_live(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
10930
10931 /**
10932  * Creates a copy of the ChannelDetails
10933  */
10934 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
10935
10936 /**
10937  * Frees any resources used by the PaymentSendFailure
10938  */
10939 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
10940
10941 /**
10942  * Creates a copy of the PaymentSendFailure
10943  */
10944 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
10945
10946 /**
10947  * Constructs a new ChannelManager to hold several channels and route between them.
10948  *
10949  * This is the main \"logic hub\" for all channel-related actions, and implements
10950  * ChannelMessageHandler.
10951  *
10952  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
10953  *
10954  * panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
10955  *
10956  * Users need to notify the new ChannelManager when a new block is connected or
10957  * disconnected using its `block_connected` and `block_disconnected` methods, starting
10958  * from after `params.latest_hash`.
10959  */
10960 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);
10961
10962 /**
10963  * Creates a new outbound channel to the given remote node and with the given value.
10964  *
10965  * user_id will be provided back as user_channel_id in FundingGenerationReady and
10966  * FundingBroadcastSafe events to allow tracking of which events correspond with which
10967  * create_channel call. Note that user_channel_id defaults to 0 for inbound channels, so you
10968  * may wish to avoid using 0 for user_id here.
10969  *
10970  * If successful, will generate a SendOpenChannel message event, so you should probably poll
10971  * PeerManager::process_events afterwards.
10972  *
10973  * Raises APIError::APIMisuseError when channel_value_satoshis > 2**24 or push_msat is
10974  * greater than channel_value_satoshis * 1k or channel_value_satoshis is < 1000.
10975  */
10976 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);
10977
10978 /**
10979  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
10980  * more information.
10981  */
10982 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
10983
10984 /**
10985  * Gets the list of usable channels, in random order. Useful as an argument to
10986  * get_route to ensure non-announced channels are used.
10987  *
10988  * These are guaranteed to have their is_live value set to true, see the documentation for
10989  * ChannelDetails::is_live for more info on exactly what the criteria are.
10990  */
10991 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
10992
10993 /**
10994  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
10995  * will be accepted on the given channel, and after additional timeout/the closing of all
10996  * pending HTLCs, the channel will be closed on chain.
10997  *
10998  * May generate a SendShutdown message event on success, which should be relayed.
10999  */
11000 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
11001
11002 /**
11003  * Force closes a channel, immediately broadcasting the latest local commitment transaction to
11004  * the chain and rejecting new HTLCs on the given channel. Fails if channel_id is unknown to the manager.
11005  */
11006 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
11007
11008 /**
11009  * Force close all channels, immediately broadcasting the latest local commitment transaction
11010  * for each to the chain and rejecting new HTLCs on each.
11011  */
11012 void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
11013
11014 /**
11015  * Sends a payment along a given route.
11016  *
11017  * Value parameters are provided via the last hop in route, see documentation for RouteHop
11018  * fields for more info.
11019  *
11020  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
11021  * payment), we don't do anything to stop you! We always try to ensure that if the provided
11022  * next hop knows the preimage to payment_hash they can claim an additional amount as
11023  * specified in the last hop in the route! Thus, you should probably do your own
11024  * payment_preimage tracking (which you should already be doing as they represent \"proof of
11025  * payment\") and prevent double-sends yourself.
11026  *
11027  * May generate SendHTLCs message(s) event on success, which should be relayed.
11028  *
11029  * Each path may have a different return value, and PaymentSendValue may return a Vec with
11030  * each entry matching the corresponding-index entry in the route paths, see
11031  * PaymentSendFailure for more info.
11032  *
11033  * In general, a path may raise:
11034  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
11035  *    node public key) is specified.
11036  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
11037  *    (including due to previous monitor update failure or new permanent monitor update
11038  *    failure).
11039  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
11040  *    relevant updates.
11041  *
11042  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
11043  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
11044  * different route unless you intend to pay twice!
11045  *
11046  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
11047  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
11048  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
11049  * must not contain multiple paths as multi-path payments require a recipient-provided
11050  * payment_secret.
11051  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
11052  * bit set (either as required or as available). If multiple paths are present in the Route,
11053  * we assume the invoice had the basic_mpp feature set.
11054  */
11055 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);
11056
11057 /**
11058  * Call this upon creation of a funding transaction for the given channel.
11059  *
11060  * Note that ALL inputs in the transaction pointed to by funding_txo MUST spend SegWit outputs
11061  * or your counterparty can steal your funds!
11062  *
11063  * Panics if a funding transaction has already been provided for this channel.
11064  *
11065  * May panic if the funding_txo is duplicative with some other channel (note that this should
11066  * be trivially prevented by using unique funding transaction keys per-channel).
11067  */
11068 void ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKOutPoint funding_txo);
11069
11070 /**
11071  * Generates a signed node_announcement from the given arguments and creates a
11072  * BroadcastNodeAnnouncement event. Note that such messages will be ignored unless peers have
11073  * seen a channel_announcement from us (ie unless we have public channels open).
11074  *
11075  * RGB is a node \"color\" and alias is a printable human-readable string to describe this node
11076  * to humans. They carry no in-protocol meaning.
11077  *
11078  * addresses represent the set (possibly empty) of socket addresses on which this node accepts
11079  * incoming connections. These will be broadcast to the network, publicly tying these
11080  * addresses together. If you wish to preserve user privacy, addresses should likely contain
11081  * only Tor Onion addresses.
11082  *
11083  * Panics if addresses is absurdly large (more than 500).
11084  */
11085 void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
11086
11087 /**
11088  * Processes HTLCs which are pending waiting on random forward delay.
11089  *
11090  * Should only really ever be called in response to a PendingHTLCsForwardable event.
11091  * Will likely generate further events.
11092  */
11093 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
11094
11095 /**
11096  * If a peer is disconnected we mark any channels with that peer as 'disabled'.
11097  * After some time, if channels are still disabled we need to broadcast a ChannelUpdate
11098  * to inform the network about the uselessness of these channels.
11099  *
11100  * This method handles all the details, and must be called roughly once per minute.
11101  *
11102  * Note that in some rare cases this may generate a `chain::Watch::update_channel` call.
11103  */
11104 void ChannelManager_timer_chan_freshness_every_min(const struct LDKChannelManager *NONNULL_PTR this_arg);
11105
11106 /**
11107  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
11108  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
11109  * along the path (including in our own channel on which we received it).
11110  * Returns false if no payment was found to fail backwards, true if the process of failing the
11111  * HTLC backwards has been started.
11112  */
11113 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);
11114
11115 /**
11116  * Provides a payment preimage in response to a PaymentReceived event, returning true and
11117  * generating message events for the net layer to claim the payment, if possible. Thus, you
11118  * should probably kick the net layer to go send messages if this returns true!
11119  *
11120  * You must specify the expected amounts for this HTLC, and we will only claim HTLCs
11121  * available within a few percent of the expected amount. This is critical for several
11122  * reasons : a) it avoids providing senders with `proof-of-payment` (in the form of the
11123  * payment_preimage without having provided the full value and b) it avoids certain
11124  * privacy-breaking recipient-probing attacks which may reveal payment activity to
11125  * motivated attackers.
11126  *
11127  * Note that the privacy concerns in (b) are not relevant in payments with a payment_secret
11128  * set. Thus, for such payments we will claim any payments which do not under-pay.
11129  *
11130  * May panic if called except in response to a PaymentReceived event.
11131  */
11132 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);
11133
11134 /**
11135  * Gets the node_id held by this ChannelManager
11136  */
11137 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
11138
11139 /**
11140  * Restores a single, given channel to normal operation after a
11141  * ChannelMonitorUpdateErr::TemporaryFailure was returned from a channel monitor update
11142  * operation.
11143  *
11144  * All ChannelMonitor updates up to and including highest_applied_update_id must have been
11145  * fully committed in every copy of the given channels' ChannelMonitors.
11146  *
11147  * Note that there is no effect to calling with a highest_applied_update_id other than the
11148  * current latest ChannelMonitorUpdate and one call to this function after multiple
11149  * ChannelMonitorUpdateErr::TemporaryFailures is fine. The highest_applied_update_id field
11150  * exists largely only to prevent races between this and concurrent update_monitor calls.
11151  *
11152  * Thus, the anticipated use is, at a high level:
11153  *  1) You register a chain::Watch with this ChannelManager,
11154  *  2) it stores each update to disk, and begins updating any remote (eg watchtower) copies of
11155  *     said ChannelMonitors as it can, returning ChannelMonitorUpdateErr::TemporaryFailures
11156  *     any time it cannot do so instantly,
11157  *  3) update(s) are applied to each remote copy of a ChannelMonitor,
11158  *  4) once all remote copies are updated, you call this function with the update_id that
11159  *     completed, and once it is the latest the Channel will be re-enabled.
11160  */
11161 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);
11162
11163 /**
11164  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
11165  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
11166  */
11167 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
11168
11169 /**
11170  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
11171  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
11172  */
11173 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
11174
11175 /**
11176  * Constructs a new Listen which calls the relevant methods on this_arg.
11177  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
11178  */
11179 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
11180
11181 /**
11182  * Updates channel state based on transactions seen in a connected block.
11183  */
11184 void ChannelManager_block_connected(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
11185
11186 /**
11187  * Updates channel state based on a disconnected block.
11188  *
11189  * If necessary, the channel may be force-closed without letting the counterparty participate
11190  * in the shutdown.
11191  */
11192 void ChannelManager_block_disconnected(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80]);
11193
11194 /**
11195  * Blocks until ChannelManager needs to be persisted. Only one listener on
11196  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
11197  * up.
11198  */
11199 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
11200
11201 /**
11202  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
11203  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
11204  */
11205 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
11206
11207 /**
11208  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
11209  */
11210 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
11211
11212 /**
11213  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
11214  */
11215 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
11216
11217 /**
11218  * The keys provider which will give us relevant keys. Some keys will be loaded during
11219  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
11220  * signing data.
11221  */
11222 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11223
11224 /**
11225  * The keys provider which will give us relevant keys. Some keys will be loaded during
11226  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
11227  * signing data.
11228  */
11229 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
11230
11231 /**
11232  * The fee_estimator for use in the ChannelManager in the future.
11233  *
11234  * No calls to the FeeEstimator will be made during deserialization.
11235  */
11236 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11237
11238 /**
11239  * The fee_estimator for use in the ChannelManager in the future.
11240  *
11241  * No calls to the FeeEstimator will be made during deserialization.
11242  */
11243 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
11244
11245 /**
11246  * The chain::Watch for use in the ChannelManager in the future.
11247  *
11248  * No calls to the chain::Watch will be made during deserialization. It is assumed that
11249  * you have deserialized ChannelMonitors separately and will add them to your
11250  * chain::Watch after deserializing this ChannelManager.
11251  */
11252 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11253
11254 /**
11255  * The chain::Watch for use in the ChannelManager in the future.
11256  *
11257  * No calls to the chain::Watch will be made during deserialization. It is assumed that
11258  * you have deserialized ChannelMonitors separately and will add them to your
11259  * chain::Watch after deserializing this ChannelManager.
11260  */
11261 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
11262
11263 /**
11264  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
11265  * used to broadcast the latest local commitment transactions of channels which must be
11266  * force-closed during deserialization.
11267  */
11268 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11269
11270 /**
11271  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
11272  * used to broadcast the latest local commitment transactions of channels which must be
11273  * force-closed during deserialization.
11274  */
11275 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
11276
11277 /**
11278  * The Logger for use in the ChannelManager and which may be used to log information during
11279  * deserialization.
11280  */
11281 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11282
11283 /**
11284  * The Logger for use in the ChannelManager and which may be used to log information during
11285  * deserialization.
11286  */
11287 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
11288
11289 /**
11290  * Default settings used for new channels. Any existing channels will continue to use the
11291  * runtime settings which were stored when the ChannelManager was serialized.
11292  */
11293 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11294
11295 /**
11296  * Default settings used for new channels. Any existing channels will continue to use the
11297  * runtime settings which were stored when the ChannelManager was serialized.
11298  */
11299 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
11300
11301 /**
11302  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
11303  * HashMap for you. This is primarily useful for C bindings where it is not practical to
11304  * populate a HashMap directly from C.
11305  */
11306 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);
11307
11308 /**
11309  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
11310  */
11311 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
11312
11313 /**
11314  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
11315  */
11316 void DecodeError_free(struct LDKDecodeError this_obj);
11317
11318 /**
11319  * Creates a copy of the DecodeError
11320  */
11321 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
11322
11323 /**
11324  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
11325  */
11326 void Init_free(struct LDKInit this_obj);
11327
11328 /**
11329  * The relevant features which the sender supports
11330  */
11331 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
11332
11333 /**
11334  * The relevant features which the sender supports
11335  */
11336 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
11337
11338 /**
11339  * Constructs a new Init given each field
11340  */
11341 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
11342
11343 /**
11344  * Creates a copy of the Init
11345  */
11346 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
11347
11348 /**
11349  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
11350  */
11351 void ErrorMessage_free(struct LDKErrorMessage this_obj);
11352
11353 /**
11354  * The channel ID involved in the error
11355  */
11356 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
11357
11358 /**
11359  * The channel ID involved in the error
11360  */
11361 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11362
11363 /**
11364  * A possibly human-readable error description.
11365  * The string should be sanitized before it is used (e.g. emitted to logs
11366  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
11367  * vulnerability in the terminal emulator or the logging subsystem.
11368  */
11369 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
11370
11371 /**
11372  * A possibly human-readable error description.
11373  * The string should be sanitized before it is used (e.g. emitted to logs
11374  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
11375  * vulnerability in the terminal emulator or the logging subsystem.
11376  */
11377 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
11378
11379 /**
11380  * Constructs a new ErrorMessage given each field
11381  */
11382 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z data_arg);
11383
11384 /**
11385  * Creates a copy of the ErrorMessage
11386  */
11387 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
11388
11389 /**
11390  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
11391  */
11392 void Ping_free(struct LDKPing this_obj);
11393
11394 /**
11395  * The desired response length
11396  */
11397 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
11398
11399 /**
11400  * The desired response length
11401  */
11402 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
11403
11404 /**
11405  * The ping packet size.
11406  * This field is not sent on the wire. byteslen zeros are sent.
11407  */
11408 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
11409
11410 /**
11411  * The ping packet size.
11412  * This field is not sent on the wire. byteslen zeros are sent.
11413  */
11414 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
11415
11416 /**
11417  * Constructs a new Ping given each field
11418  */
11419 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
11420
11421 /**
11422  * Creates a copy of the Ping
11423  */
11424 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
11425
11426 /**
11427  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
11428  */
11429 void Pong_free(struct LDKPong this_obj);
11430
11431 /**
11432  * The pong packet size.
11433  * This field is not sent on the wire. byteslen zeros are sent.
11434  */
11435 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
11436
11437 /**
11438  * The pong packet size.
11439  * This field is not sent on the wire. byteslen zeros are sent.
11440  */
11441 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
11442
11443 /**
11444  * Constructs a new Pong given each field
11445  */
11446 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
11447
11448 /**
11449  * Creates a copy of the Pong
11450  */
11451 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
11452
11453 /**
11454  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
11455  */
11456 void OpenChannel_free(struct LDKOpenChannel this_obj);
11457
11458 /**
11459  * The genesis hash of the blockchain where the channel is to be opened
11460  */
11461 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
11462
11463 /**
11464  * The genesis hash of the blockchain where the channel is to be opened
11465  */
11466 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11467
11468 /**
11469  * A temporary channel ID, until the funding outpoint is announced
11470  */
11471 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
11472
11473 /**
11474  * A temporary channel ID, until the funding outpoint is announced
11475  */
11476 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11477
11478 /**
11479  * The channel value
11480  */
11481 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11482
11483 /**
11484  * The channel value
11485  */
11486 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11487
11488 /**
11489  * The amount to push to the counterparty as part of the open, in milli-satoshi
11490  */
11491 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11492
11493 /**
11494  * The amount to push to the counterparty as part of the open, in milli-satoshi
11495  */
11496 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11497
11498 /**
11499  * The threshold below which outputs on transactions broadcast by sender will be omitted
11500  */
11501 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11502
11503 /**
11504  * The threshold below which outputs on transactions broadcast by sender will be omitted
11505  */
11506 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11507
11508 /**
11509  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11510  */
11511 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11512
11513 /**
11514  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11515  */
11516 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11517
11518 /**
11519  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11520  */
11521 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11522
11523 /**
11524  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11525  */
11526 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11527
11528 /**
11529  * The minimum HTLC size incoming to sender, in milli-satoshi
11530  */
11531 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11532
11533 /**
11534  * The minimum HTLC size incoming to sender, in milli-satoshi
11535  */
11536 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11537
11538 /**
11539  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
11540  */
11541 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11542
11543 /**
11544  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
11545  */
11546 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
11547
11548 /**
11549  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11550  */
11551 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11552
11553 /**
11554  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11555  */
11556 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
11557
11558 /**
11559  * The maximum number of inbound HTLCs towards sender
11560  */
11561 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11562
11563 /**
11564  * The maximum number of inbound HTLCs towards sender
11565  */
11566 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
11567
11568 /**
11569  * The sender's key controlling the funding transaction
11570  */
11571 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11572
11573 /**
11574  * The sender's key controlling the funding transaction
11575  */
11576 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11577
11578 /**
11579  * Used to derive a revocation key for transactions broadcast by counterparty
11580  */
11581 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11582
11583 /**
11584  * Used to derive a revocation key for transactions broadcast by counterparty
11585  */
11586 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11587
11588 /**
11589  * A payment key to sender for transactions broadcast by counterparty
11590  */
11591 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11592
11593 /**
11594  * A payment key to sender for transactions broadcast by counterparty
11595  */
11596 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11597
11598 /**
11599  * Used to derive a payment key to sender for transactions broadcast by sender
11600  */
11601 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11602
11603 /**
11604  * Used to derive a payment key to sender for transactions broadcast by sender
11605  */
11606 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11607
11608 /**
11609  * Used to derive an HTLC payment key to sender
11610  */
11611 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11612
11613 /**
11614  * Used to derive an HTLC payment key to sender
11615  */
11616 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11617
11618 /**
11619  * The first to-be-broadcast-by-sender transaction's per commitment point
11620  */
11621 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11622
11623 /**
11624  * The first to-be-broadcast-by-sender transaction's per commitment point
11625  */
11626 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11627
11628 /**
11629  * Channel flags
11630  */
11631 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11632
11633 /**
11634  * Channel flags
11635  */
11636 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
11637
11638 /**
11639  * Creates a copy of the OpenChannel
11640  */
11641 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
11642
11643 /**
11644  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
11645  */
11646 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
11647
11648 /**
11649  * A temporary channel ID, until the funding outpoint is announced
11650  */
11651 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
11652
11653 /**
11654  * A temporary channel ID, until the funding outpoint is announced
11655  */
11656 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11657
11658 /**
11659  * The threshold below which outputs on transactions broadcast by sender will be omitted
11660  */
11661 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11662
11663 /**
11664  * The threshold below which outputs on transactions broadcast by sender will be omitted
11665  */
11666 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11667
11668 /**
11669  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11670  */
11671 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11672
11673 /**
11674  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11675  */
11676 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11677
11678 /**
11679  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11680  */
11681 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11682
11683 /**
11684  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11685  */
11686 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11687
11688 /**
11689  * The minimum HTLC size incoming to sender, in milli-satoshi
11690  */
11691 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11692
11693 /**
11694  * The minimum HTLC size incoming to sender, in milli-satoshi
11695  */
11696 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11697
11698 /**
11699  * Minimum depth of the funding transaction before the channel is considered open
11700  */
11701 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11702
11703 /**
11704  * Minimum depth of the funding transaction before the channel is considered open
11705  */
11706 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
11707
11708 /**
11709  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11710  */
11711 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11712
11713 /**
11714  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11715  */
11716 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
11717
11718 /**
11719  * The maximum number of inbound HTLCs towards sender
11720  */
11721 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11722
11723 /**
11724  * The maximum number of inbound HTLCs towards sender
11725  */
11726 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
11727
11728 /**
11729  * The sender's key controlling the funding transaction
11730  */
11731 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11732
11733 /**
11734  * The sender's key controlling the funding transaction
11735  */
11736 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11737
11738 /**
11739  * Used to derive a revocation key for transactions broadcast by counterparty
11740  */
11741 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11742
11743 /**
11744  * Used to derive a revocation key for transactions broadcast by counterparty
11745  */
11746 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11747
11748 /**
11749  * A payment key to sender for transactions broadcast by counterparty
11750  */
11751 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11752
11753 /**
11754  * A payment key to sender for transactions broadcast by counterparty
11755  */
11756 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11757
11758 /**
11759  * Used to derive a payment key to sender for transactions broadcast by sender
11760  */
11761 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11762
11763 /**
11764  * Used to derive a payment key to sender for transactions broadcast by sender
11765  */
11766 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11767
11768 /**
11769  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
11770  */
11771 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11772
11773 /**
11774  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
11775  */
11776 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11777
11778 /**
11779  * The first to-be-broadcast-by-sender transaction's per commitment point
11780  */
11781 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11782
11783 /**
11784  * The first to-be-broadcast-by-sender transaction's per commitment point
11785  */
11786 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11787
11788 /**
11789  * Creates a copy of the AcceptChannel
11790  */
11791 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
11792
11793 /**
11794  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
11795  */
11796 void FundingCreated_free(struct LDKFundingCreated this_obj);
11797
11798 /**
11799  * A temporary channel ID, until the funding is established
11800  */
11801 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
11802
11803 /**
11804  * A temporary channel ID, until the funding is established
11805  */
11806 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11807
11808 /**
11809  * The funding transaction ID
11810  */
11811 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
11812
11813 /**
11814  * The funding transaction ID
11815  */
11816 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11817
11818 /**
11819  * The specific output index funding this channel
11820  */
11821 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
11822
11823 /**
11824  * The specific output index funding this channel
11825  */
11826 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
11827
11828 /**
11829  * The signature of the channel initiator (funder) on the funding transaction
11830  */
11831 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
11832
11833 /**
11834  * The signature of the channel initiator (funder) on the funding transaction
11835  */
11836 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
11837
11838 /**
11839  * Constructs a new FundingCreated given each field
11840  */
11841 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);
11842
11843 /**
11844  * Creates a copy of the FundingCreated
11845  */
11846 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
11847
11848 /**
11849  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
11850  */
11851 void FundingSigned_free(struct LDKFundingSigned this_obj);
11852
11853 /**
11854  * The channel ID
11855  */
11856 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
11857
11858 /**
11859  * The channel ID
11860  */
11861 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11862
11863 /**
11864  * The signature of the channel acceptor (fundee) on the funding transaction
11865  */
11866 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
11867
11868 /**
11869  * The signature of the channel acceptor (fundee) on the funding transaction
11870  */
11871 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
11872
11873 /**
11874  * Constructs a new FundingSigned given each field
11875  */
11876 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
11877
11878 /**
11879  * Creates a copy of the FundingSigned
11880  */
11881 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
11882
11883 /**
11884  * Frees any resources used by the FundingLocked, if is_owned is set and inner is non-NULL.
11885  */
11886 void FundingLocked_free(struct LDKFundingLocked this_obj);
11887
11888 /**
11889  * The channel ID
11890  */
11891 const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32];
11892
11893 /**
11894  * The channel ID
11895  */
11896 void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11897
11898 /**
11899  * The per-commitment point of the second commitment transaction
11900  */
11901 struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
11902
11903 /**
11904  * The per-commitment point of the second commitment transaction
11905  */
11906 void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11907
11908 /**
11909  * Constructs a new FundingLocked given each field
11910  */
11911 MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
11912
11913 /**
11914  * Creates a copy of the FundingLocked
11915  */
11916 struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
11917
11918 /**
11919  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
11920  */
11921 void Shutdown_free(struct LDKShutdown this_obj);
11922
11923 /**
11924  * The channel ID
11925  */
11926 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
11927
11928 /**
11929  * The channel ID
11930  */
11931 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11932
11933 /**
11934  * The destination of this peer's funds on closing.
11935  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
11936  */
11937 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
11938
11939 /**
11940  * The destination of this peer's funds on closing.
11941  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
11942  */
11943 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
11944
11945 /**
11946  * Constructs a new Shutdown given each field
11947  */
11948 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
11949
11950 /**
11951  * Creates a copy of the Shutdown
11952  */
11953 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
11954
11955 /**
11956  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
11957  */
11958 void ClosingSigned_free(struct LDKClosingSigned this_obj);
11959
11960 /**
11961  * The channel ID
11962  */
11963 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
11964
11965 /**
11966  * The channel ID
11967  */
11968 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11969
11970 /**
11971  * The proposed total fee for the closing transaction
11972  */
11973 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
11974
11975 /**
11976  * The proposed total fee for the closing transaction
11977  */
11978 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
11979
11980 /**
11981  * A signature on the closing transaction
11982  */
11983 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
11984
11985 /**
11986  * A signature on the closing transaction
11987  */
11988 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
11989
11990 /**
11991  * Constructs a new ClosingSigned given each field
11992  */
11993 MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg);
11994
11995 /**
11996  * Creates a copy of the ClosingSigned
11997  */
11998 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
11999
12000 /**
12001  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
12002  */
12003 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
12004
12005 /**
12006  * The channel ID
12007  */
12008 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
12009
12010 /**
12011  * The channel ID
12012  */
12013 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12014
12015 /**
12016  * The HTLC ID
12017  */
12018 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12019
12020 /**
12021  * The HTLC ID
12022  */
12023 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
12024
12025 /**
12026  * The HTLC value in milli-satoshi
12027  */
12028 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12029
12030 /**
12031  * The HTLC value in milli-satoshi
12032  */
12033 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
12034
12035 /**
12036  * The payment hash, the pre-image of which controls HTLC redemption
12037  */
12038 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
12039
12040 /**
12041  * The payment hash, the pre-image of which controls HTLC redemption
12042  */
12043 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12044
12045 /**
12046  * The expiry height of the HTLC
12047  */
12048 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12049
12050 /**
12051  * The expiry height of the HTLC
12052  */
12053 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
12054
12055 /**
12056  * Creates a copy of the UpdateAddHTLC
12057  */
12058 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
12059
12060 /**
12061  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
12062  */
12063 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
12064
12065 /**
12066  * The channel ID
12067  */
12068 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
12069
12070 /**
12071  * The channel ID
12072  */
12073 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12074
12075 /**
12076  * The HTLC ID
12077  */
12078 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
12079
12080 /**
12081  * The HTLC ID
12082  */
12083 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
12084
12085 /**
12086  * The pre-image of the payment hash, allowing HTLC redemption
12087  */
12088 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
12089
12090 /**
12091  * The pre-image of the payment hash, allowing HTLC redemption
12092  */
12093 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12094
12095 /**
12096  * Constructs a new UpdateFulfillHTLC given each field
12097  */
12098 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
12099
12100 /**
12101  * Creates a copy of the UpdateFulfillHTLC
12102  */
12103 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
12104
12105 /**
12106  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
12107  */
12108 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
12109
12110 /**
12111  * The channel ID
12112  */
12113 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
12114
12115 /**
12116  * The channel ID
12117  */
12118 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12119
12120 /**
12121  * The HTLC ID
12122  */
12123 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
12124
12125 /**
12126  * The HTLC ID
12127  */
12128 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
12129
12130 /**
12131  * Creates a copy of the UpdateFailHTLC
12132  */
12133 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
12134
12135 /**
12136  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
12137  */
12138 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
12139
12140 /**
12141  * The channel ID
12142  */
12143 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
12144
12145 /**
12146  * The channel ID
12147  */
12148 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12149
12150 /**
12151  * The HTLC ID
12152  */
12153 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
12154
12155 /**
12156  * The HTLC ID
12157  */
12158 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
12159
12160 /**
12161  * The failure code
12162  */
12163 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
12164
12165 /**
12166  * The failure code
12167  */
12168 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
12169
12170 /**
12171  * Creates a copy of the UpdateFailMalformedHTLC
12172  */
12173 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
12174
12175 /**
12176  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
12177  */
12178 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
12179
12180 /**
12181  * The channel ID
12182  */
12183 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
12184
12185 /**
12186  * The channel ID
12187  */
12188 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12189
12190 /**
12191  * A signature on the commitment transaction
12192  */
12193 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
12194
12195 /**
12196  * A signature on the commitment transaction
12197  */
12198 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
12199
12200 /**
12201  * Signatures on the HTLC transactions
12202  */
12203 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
12204
12205 /**
12206  * Constructs a new CommitmentSigned given each field
12207  */
12208 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
12209
12210 /**
12211  * Creates a copy of the CommitmentSigned
12212  */
12213 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
12214
12215 /**
12216  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
12217  */
12218 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
12219
12220 /**
12221  * The channel ID
12222  */
12223 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
12224
12225 /**
12226  * The channel ID
12227  */
12228 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12229
12230 /**
12231  * The secret corresponding to the per-commitment point
12232  */
12233 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
12234
12235 /**
12236  * The secret corresponding to the per-commitment point
12237  */
12238 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12239
12240 /**
12241  * The next sender-broadcast commitment transaction's per-commitment point
12242  */
12243 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
12244
12245 /**
12246  * The next sender-broadcast commitment transaction's per-commitment point
12247  */
12248 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12249
12250 /**
12251  * Constructs a new RevokeAndACK given each field
12252  */
12253 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);
12254
12255 /**
12256  * Creates a copy of the RevokeAndACK
12257  */
12258 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
12259
12260 /**
12261  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
12262  */
12263 void UpdateFee_free(struct LDKUpdateFee this_obj);
12264
12265 /**
12266  * The channel ID
12267  */
12268 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
12269
12270 /**
12271  * The channel ID
12272  */
12273 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12274
12275 /**
12276  * Fee rate per 1000-weight of the transaction
12277  */
12278 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
12279
12280 /**
12281  * Fee rate per 1000-weight of the transaction
12282  */
12283 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
12284
12285 /**
12286  * Constructs a new UpdateFee given each field
12287  */
12288 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
12289
12290 /**
12291  * Creates a copy of the UpdateFee
12292  */
12293 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
12294
12295 /**
12296  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
12297  */
12298 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
12299
12300 /**
12301  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
12302  * belonging to the recipient
12303  */
12304 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
12305
12306 /**
12307  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
12308  * belonging to the recipient
12309  */
12310 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12311
12312 /**
12313  * The sender's per-commitment point for their current commitment transaction
12314  */
12315 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
12316
12317 /**
12318  * The sender's per-commitment point for their current commitment transaction
12319  */
12320 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12321
12322 /**
12323  * Constructs a new DataLossProtect given each field
12324  */
12325 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
12326
12327 /**
12328  * Creates a copy of the DataLossProtect
12329  */
12330 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
12331
12332 /**
12333  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
12334  */
12335 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
12336
12337 /**
12338  * The channel ID
12339  */
12340 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
12341
12342 /**
12343  * The channel ID
12344  */
12345 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12346
12347 /**
12348  * The next commitment number for the sender
12349  */
12350 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
12351
12352 /**
12353  * The next commitment number for the sender
12354  */
12355 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
12356
12357 /**
12358  * The next commitment number for the recipient
12359  */
12360 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
12361
12362 /**
12363  * The next commitment number for the recipient
12364  */
12365 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
12366
12367 /**
12368  * Creates a copy of the ChannelReestablish
12369  */
12370 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
12371
12372 /**
12373  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
12374  */
12375 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
12376
12377 /**
12378  * The channel ID
12379  */
12380 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
12381
12382 /**
12383  * The channel ID
12384  */
12385 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12386
12387 /**
12388  * The short channel ID
12389  */
12390 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12391
12392 /**
12393  * The short channel ID
12394  */
12395 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
12396
12397 /**
12398  * A signature by the node key
12399  */
12400 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12401
12402 /**
12403  * A signature by the node key
12404  */
12405 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
12406
12407 /**
12408  * A signature by the funding key
12409  */
12410 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12411
12412 /**
12413  * A signature by the funding key
12414  */
12415 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
12416
12417 /**
12418  * Constructs a new AnnouncementSignatures given each field
12419  */
12420 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);
12421
12422 /**
12423  * Creates a copy of the AnnouncementSignatures
12424  */
12425 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
12426
12427 /**
12428  * Frees any resources used by the NetAddress
12429  */
12430 void NetAddress_free(struct LDKNetAddress this_ptr);
12431
12432 /**
12433  * Creates a copy of the NetAddress
12434  */
12435 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
12436
12437 /**
12438  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
12439  */
12440 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
12441
12442 /**
12443  * Read a Result from a byte array, created by Result_write
12444  */
12445 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ Result_read(struct LDKu8slice ser);
12446
12447 /**
12448  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
12449  */
12450 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
12451
12452 /**
12453  * The advertised features
12454  */
12455 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12456
12457 /**
12458  * The advertised features
12459  */
12460 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
12461
12462 /**
12463  * A strictly monotonic announcement counter, with gaps allowed
12464  */
12465 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12466
12467 /**
12468  * A strictly monotonic announcement counter, with gaps allowed
12469  */
12470 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
12471
12472 /**
12473  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
12474  * to this node).
12475  */
12476 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12477
12478 /**
12479  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
12480  * to this node).
12481  */
12482 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12483
12484 /**
12485  * An RGB color for UI purposes
12486  */
12487 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
12488
12489 /**
12490  * An RGB color for UI purposes
12491  */
12492 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
12493
12494 /**
12495  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
12496  * of uniqueness.
12497  */
12498 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
12499
12500 /**
12501  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
12502  * of uniqueness.
12503  */
12504 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12505
12506 /**
12507  * List of addresses on which this node is reachable
12508  */
12509 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
12510
12511 /**
12512  * Creates a copy of the UnsignedNodeAnnouncement
12513  */
12514 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
12515
12516 /**
12517  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
12518  */
12519 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
12520
12521 /**
12522  * The signature by the node key
12523  */
12524 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
12525
12526 /**
12527  * The signature by the node key
12528  */
12529 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12530
12531 /**
12532  * The actual content of the announcement
12533  */
12534 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
12535
12536 /**
12537  * The actual content of the announcement
12538  */
12539 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
12540
12541 /**
12542  * Constructs a new NodeAnnouncement given each field
12543  */
12544 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
12545
12546 /**
12547  * Creates a copy of the NodeAnnouncement
12548  */
12549 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
12550
12551 /**
12552  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
12553  */
12554 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
12555
12556 /**
12557  * The advertised channel features
12558  */
12559 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12560
12561 /**
12562  * The advertised channel features
12563  */
12564 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
12565
12566 /**
12567  * The genesis hash of the blockchain where the channel is to be opened
12568  */
12569 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
12570
12571 /**
12572  * The genesis hash of the blockchain where the channel is to be opened
12573  */
12574 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12575
12576 /**
12577  * The short channel ID
12578  */
12579 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12580
12581 /**
12582  * The short channel ID
12583  */
12584 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
12585
12586 /**
12587  * One of the two node_ids which are endpoints of this channel
12588  */
12589 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12590
12591 /**
12592  * One of the two node_ids which are endpoints of this channel
12593  */
12594 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12595
12596 /**
12597  * The other of the two node_ids which are endpoints of this channel
12598  */
12599 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12600
12601 /**
12602  * The other of the two node_ids which are endpoints of this channel
12603  */
12604 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12605
12606 /**
12607  * The funding key for the first node
12608  */
12609 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12610
12611 /**
12612  * The funding key for the first node
12613  */
12614 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12615
12616 /**
12617  * The funding key for the second node
12618  */
12619 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12620
12621 /**
12622  * The funding key for the second node
12623  */
12624 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12625
12626 /**
12627  * Creates a copy of the UnsignedChannelAnnouncement
12628  */
12629 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
12630
12631 /**
12632  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
12633  */
12634 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
12635
12636 /**
12637  * Authentication of the announcement by the first public node
12638  */
12639 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12640
12641 /**
12642  * Authentication of the announcement by the first public node
12643  */
12644 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12645
12646 /**
12647  * Authentication of the announcement by the second public node
12648  */
12649 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12650
12651 /**
12652  * Authentication of the announcement by the second public node
12653  */
12654 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12655
12656 /**
12657  * Proof of funding UTXO ownership by the first public node
12658  */
12659 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12660
12661 /**
12662  * Proof of funding UTXO ownership by the first public node
12663  */
12664 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12665
12666 /**
12667  * Proof of funding UTXO ownership by the second public node
12668  */
12669 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12670
12671 /**
12672  * Proof of funding UTXO ownership by the second public node
12673  */
12674 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12675
12676 /**
12677  * The actual announcement
12678  */
12679 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12680
12681 /**
12682  * The actual announcement
12683  */
12684 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
12685
12686 /**
12687  * Constructs a new ChannelAnnouncement given each field
12688  */
12689 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);
12690
12691 /**
12692  * Creates a copy of the ChannelAnnouncement
12693  */
12694 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
12695
12696 /**
12697  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
12698  */
12699 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
12700
12701 /**
12702  * The genesis hash of the blockchain where the channel is to be opened
12703  */
12704 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
12705
12706 /**
12707  * The genesis hash of the blockchain where the channel is to be opened
12708  */
12709 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12710
12711 /**
12712  * The short channel ID
12713  */
12714 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12715
12716 /**
12717  * The short channel ID
12718  */
12719 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
12720
12721 /**
12722  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
12723  */
12724 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12725
12726 /**
12727  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
12728  */
12729 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12730
12731 /**
12732  * Channel flags
12733  */
12734 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12735
12736 /**
12737  * Channel flags
12738  */
12739 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
12740
12741 /**
12742  * The number of blocks such that if:
12743  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
12744  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
12745  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
12746  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
12747  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
12748  * forwarding. Note that the HTLC sender is the one who originally sets this value when
12749  * constructing the route.
12750  */
12751 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12752
12753 /**
12754  * The number of blocks such that if:
12755  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
12756  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
12757  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
12758  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
12759  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
12760  * forwarding. Note that the HTLC sender is the one who originally sets this value when
12761  * constructing the route.
12762  */
12763 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
12764
12765 /**
12766  * The minimum HTLC size incoming to sender, in milli-satoshi
12767  */
12768 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12769
12770 /**
12771  * The minimum HTLC size incoming to sender, in milli-satoshi
12772  */
12773 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
12774
12775 /**
12776  * The base HTLC fee charged by sender, in milli-satoshi
12777  */
12778 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12779
12780 /**
12781  * The base HTLC fee charged by sender, in milli-satoshi
12782  */
12783 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12784
12785 /**
12786  * The amount to fee multiplier, in micro-satoshi
12787  */
12788 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12789
12790 /**
12791  * The amount to fee multiplier, in micro-satoshi
12792  */
12793 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12794
12795 /**
12796  * Creates a copy of the UnsignedChannelUpdate
12797  */
12798 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
12799
12800 /**
12801  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
12802  */
12803 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
12804
12805 /**
12806  * A signature of the channel update
12807  */
12808 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
12809
12810 /**
12811  * A signature of the channel update
12812  */
12813 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
12814
12815 /**
12816  * The actual channel update
12817  */
12818 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
12819
12820 /**
12821  * The actual channel update
12822  */
12823 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
12824
12825 /**
12826  * Constructs a new ChannelUpdate given each field
12827  */
12828 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
12829
12830 /**
12831  * Creates a copy of the ChannelUpdate
12832  */
12833 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
12834
12835 /**
12836  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
12837  */
12838 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
12839
12840 /**
12841  * The genesis hash of the blockchain being queried
12842  */
12843 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
12844
12845 /**
12846  * The genesis hash of the blockchain being queried
12847  */
12848 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12849
12850 /**
12851  * The height of the first block for the channel UTXOs being queried
12852  */
12853 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
12854
12855 /**
12856  * The height of the first block for the channel UTXOs being queried
12857  */
12858 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12859
12860 /**
12861  * The number of blocks to include in the query results
12862  */
12863 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
12864
12865 /**
12866  * The number of blocks to include in the query results
12867  */
12868 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12869
12870 /**
12871  * Constructs a new QueryChannelRange given each field
12872  */
12873 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
12874
12875 /**
12876  * Creates a copy of the QueryChannelRange
12877  */
12878 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
12879
12880 /**
12881  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
12882  */
12883 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
12884
12885 /**
12886  * The genesis hash of the blockchain being queried
12887  */
12888 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
12889
12890 /**
12891  * The genesis hash of the blockchain being queried
12892  */
12893 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12894
12895 /**
12896  * The height of the first block in the range of the reply
12897  */
12898 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12899
12900 /**
12901  * The height of the first block in the range of the reply
12902  */
12903 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12904
12905 /**
12906  * The number of blocks included in the range of the reply
12907  */
12908 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12909
12910 /**
12911  * The number of blocks included in the range of the reply
12912  */
12913 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12914
12915 /**
12916  * True when this is the final reply for a query
12917  */
12918 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12919
12920 /**
12921  * True when this is the final reply for a query
12922  */
12923 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
12924
12925 /**
12926  * The short_channel_ids in the channel range
12927  */
12928 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
12929
12930 /**
12931  * Constructs a new ReplyChannelRange given each field
12932  */
12933 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);
12934
12935 /**
12936  * Creates a copy of the ReplyChannelRange
12937  */
12938 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
12939
12940 /**
12941  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
12942  */
12943 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
12944
12945 /**
12946  * The genesis hash of the blockchain being queried
12947  */
12948 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
12949
12950 /**
12951  * The genesis hash of the blockchain being queried
12952  */
12953 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12954
12955 /**
12956  * The short_channel_ids that are being queried
12957  */
12958 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
12959
12960 /**
12961  * Constructs a new QueryShortChannelIds given each field
12962  */
12963 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
12964
12965 /**
12966  * Creates a copy of the QueryShortChannelIds
12967  */
12968 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
12969
12970 /**
12971  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
12972  */
12973 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
12974
12975 /**
12976  * The genesis hash of the blockchain that was queried
12977  */
12978 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
12979
12980 /**
12981  * The genesis hash of the blockchain that was queried
12982  */
12983 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12984
12985 /**
12986  * Indicates if the query recipient maintains up-to-date channel
12987  * information for the chain_hash
12988  */
12989 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
12990
12991 /**
12992  * Indicates if the query recipient maintains up-to-date channel
12993  * information for the chain_hash
12994  */
12995 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
12996
12997 /**
12998  * Constructs a new ReplyShortChannelIdsEnd given each field
12999  */
13000 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
13001
13002 /**
13003  * Creates a copy of the ReplyShortChannelIdsEnd
13004  */
13005 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
13006
13007 /**
13008  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
13009  */
13010 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
13011
13012 /**
13013  * The genesis hash of the blockchain for channel and node information
13014  */
13015 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
13016
13017 /**
13018  * The genesis hash of the blockchain for channel and node information
13019  */
13020 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13021
13022 /**
13023  * The starting unix timestamp
13024  */
13025 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
13026
13027 /**
13028  * The starting unix timestamp
13029  */
13030 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
13031
13032 /**
13033  * The range of information in seconds
13034  */
13035 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
13036
13037 /**
13038  * The range of information in seconds
13039  */
13040 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
13041
13042 /**
13043  * Constructs a new GossipTimestampFilter given each field
13044  */
13045 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
13046
13047 /**
13048  * Creates a copy of the GossipTimestampFilter
13049  */
13050 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
13051
13052 /**
13053  * Frees any resources used by the ErrorAction
13054  */
13055 void ErrorAction_free(struct LDKErrorAction this_ptr);
13056
13057 /**
13058  * Creates a copy of the ErrorAction
13059  */
13060 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
13061
13062 /**
13063  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
13064  */
13065 void LightningError_free(struct LDKLightningError this_obj);
13066
13067 /**
13068  * A human-readable message describing the error
13069  */
13070 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
13071
13072 /**
13073  * A human-readable message describing the error
13074  */
13075 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
13076
13077 /**
13078  * The action which should be taken against the offending peer.
13079  */
13080 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
13081
13082 /**
13083  * The action which should be taken against the offending peer.
13084  */
13085 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
13086
13087 /**
13088  * Constructs a new LightningError given each field
13089  */
13090 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKCVec_u8Z err_arg, struct LDKErrorAction action_arg);
13091
13092 /**
13093  * Creates a copy of the LightningError
13094  */
13095 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
13096
13097 /**
13098  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
13099  */
13100 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
13101
13102 /**
13103  * update_add_htlc messages which should be sent
13104  */
13105 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
13106
13107 /**
13108  * update_fulfill_htlc messages which should be sent
13109  */
13110 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
13111
13112 /**
13113  * update_fail_htlc messages which should be sent
13114  */
13115 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
13116
13117 /**
13118  * update_fail_malformed_htlc messages which should be sent
13119  */
13120 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
13121
13122 /**
13123  * An update_fee message which should be sent
13124  */
13125 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
13126
13127 /**
13128  * An update_fee message which should be sent
13129  */
13130 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
13131
13132 /**
13133  * Finally, the commitment_signed message which should be sent
13134  */
13135 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
13136
13137 /**
13138  * Finally, the commitment_signed message which should be sent
13139  */
13140 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
13141
13142 /**
13143  * Constructs a new CommitmentUpdate given each field
13144  */
13145 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);
13146
13147 /**
13148  * Creates a copy of the CommitmentUpdate
13149  */
13150 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
13151
13152 /**
13153  * Frees any resources used by the HTLCFailChannelUpdate
13154  */
13155 void HTLCFailChannelUpdate_free(struct LDKHTLCFailChannelUpdate this_ptr);
13156
13157 /**
13158  * Creates a copy of the HTLCFailChannelUpdate
13159  */
13160 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_clone(const struct LDKHTLCFailChannelUpdate *NONNULL_PTR orig);
13161
13162 /**
13163  * Calls the free function if one is set
13164  */
13165 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
13166
13167 /**
13168  * Calls the free function if one is set
13169  */
13170 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
13171
13172 /**
13173  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
13174  */
13175 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
13176
13177 /**
13178  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
13179  */
13180 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
13181
13182 /**
13183  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
13184  */
13185 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
13186
13187 /**
13188  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
13189  */
13190 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
13191
13192 /**
13193  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
13194  */
13195 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
13196
13197 /**
13198  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
13199  */
13200 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
13201
13202 /**
13203  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
13204  */
13205 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
13206
13207 /**
13208  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
13209  */
13210 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
13211
13212 /**
13213  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
13214  */
13215 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
13216
13217 /**
13218  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
13219  */
13220 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
13221
13222 /**
13223  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
13224  */
13225 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
13226
13227 /**
13228  * Read a FundingCreated from a byte array, created by FundingCreated_write
13229  */
13230 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
13231
13232 /**
13233  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
13234  */
13235 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
13236
13237 /**
13238  * Read a FundingSigned from a byte array, created by FundingSigned_write
13239  */
13240 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
13241
13242 /**
13243  * Serialize the FundingLocked object into a byte array which can be read by FundingLocked_read
13244  */
13245 struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
13246
13247 /**
13248  * Read a FundingLocked from a byte array, created by FundingLocked_write
13249  */
13250 struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser);
13251
13252 /**
13253  * Serialize the Init object into a byte array which can be read by Init_read
13254  */
13255 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
13256
13257 /**
13258  * Read a Init from a byte array, created by Init_write
13259  */
13260 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
13261
13262 /**
13263  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
13264  */
13265 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
13266
13267 /**
13268  * Read a OpenChannel from a byte array, created by OpenChannel_write
13269  */
13270 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
13271
13272 /**
13273  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
13274  */
13275 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
13276
13277 /**
13278  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
13279  */
13280 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
13281
13282 /**
13283  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
13284  */
13285 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
13286
13287 /**
13288  * Read a Shutdown from a byte array, created by Shutdown_write
13289  */
13290 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
13291
13292 /**
13293  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
13294  */
13295 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
13296
13297 /**
13298  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
13299  */
13300 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
13301
13302 /**
13303  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
13304  */
13305 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
13306
13307 /**
13308  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
13309  */
13310 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
13311
13312 /**
13313  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
13314  */
13315 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
13316
13317 /**
13318  * Read a UpdateFee from a byte array, created by UpdateFee_write
13319  */
13320 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
13321
13322 /**
13323  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
13324  */
13325 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
13326
13327 /**
13328  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
13329  */
13330 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
13331
13332 /**
13333  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
13334  */
13335 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
13336
13337 /**
13338  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
13339  */
13340 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
13341
13342 /**
13343  * Serialize the Ping object into a byte array which can be read by Ping_read
13344  */
13345 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
13346
13347 /**
13348  * Read a Ping from a byte array, created by Ping_write
13349  */
13350 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
13351
13352 /**
13353  * Serialize the Pong object into a byte array which can be read by Pong_read
13354  */
13355 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
13356
13357 /**
13358  * Read a Pong from a byte array, created by Pong_write
13359  */
13360 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
13361
13362 /**
13363  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
13364  */
13365 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
13366
13367 /**
13368  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
13369  */
13370 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
13371
13372 /**
13373  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
13374  */
13375 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
13376
13377 /**
13378  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
13379  */
13380 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
13381
13382 /**
13383  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
13384  */
13385 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
13386
13387 /**
13388  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
13389  */
13390 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
13391
13392 /**
13393  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
13394  */
13395 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
13396
13397 /**
13398  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
13399  */
13400 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
13401
13402 /**
13403  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
13404  */
13405 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
13406
13407 /**
13408  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
13409  */
13410 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
13411
13412 /**
13413  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
13414  */
13415 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
13416
13417 /**
13418  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
13419  */
13420 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
13421
13422 /**
13423  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
13424  */
13425 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
13426
13427 /**
13428  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
13429  */
13430 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
13431
13432 /**
13433  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
13434  */
13435 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
13436
13437 /**
13438  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
13439  */
13440 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
13441
13442 /**
13443  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
13444  */
13445 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
13446
13447 /**
13448  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
13449  */
13450 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
13451
13452 /**
13453  *\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
13454  */
13455 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
13456
13457 /**
13458  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
13459  */
13460 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
13461
13462 /**
13463  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
13464  */
13465 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
13466
13467 /**
13468  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
13469  */
13470 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
13471
13472 /**
13473  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
13474  */
13475 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
13476
13477 /**
13478  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
13479  */
13480 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
13481
13482 /**
13483  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
13484  */
13485 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
13486
13487 /**
13488  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
13489  */
13490 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
13491
13492 /**
13493  * Constructs a new IgnoringMessageHandler given each field
13494  */
13495 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
13496
13497 /**
13498  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
13499  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
13500  */
13501 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
13502
13503 /**
13504  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
13505  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
13506  */
13507 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
13508
13509 /**
13510  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
13511  */
13512 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
13513
13514 /**
13515  * Constructs a new ErroringMessageHandler
13516  */
13517 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
13518
13519 /**
13520  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
13521  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
13522  */
13523 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
13524
13525 /**
13526  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
13527  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
13528  */
13529 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
13530
13531 /**
13532  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
13533  */
13534 void MessageHandler_free(struct LDKMessageHandler this_obj);
13535
13536 /**
13537  * A message handler which handles messages specific to channels. Usually this is just a
13538  * ChannelManager object or a ErroringMessageHandler.
13539  */
13540 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
13541
13542 /**
13543  * A message handler which handles messages specific to channels. Usually this is just a
13544  * ChannelManager object or a ErroringMessageHandler.
13545  */
13546 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
13547
13548 /**
13549  * A message handler which handles messages updating our knowledge of the network channel
13550  * graph. Usually this is just a NetGraphMsgHandlerMonitor object or an IgnoringMessageHandler.
13551  */
13552 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
13553
13554 /**
13555  * A message handler which handles messages updating our knowledge of the network channel
13556  * graph. Usually this is just a NetGraphMsgHandlerMonitor object or an IgnoringMessageHandler.
13557  */
13558 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
13559
13560 /**
13561  * Constructs a new MessageHandler given each field
13562  */
13563 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
13564
13565 /**
13566  * Creates a copy of a SocketDescriptor
13567  */
13568 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
13569
13570 /**
13571  * Calls the free function if one is set
13572  */
13573 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
13574
13575 /**
13576  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
13577  */
13578 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
13579
13580 /**
13581  * Used to indicate that we probably can't make any future connections to this peer, implying
13582  * we should go ahead and force-close any channels we have with it.
13583  */
13584 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
13585
13586 /**
13587  * Used to indicate that we probably can't make any future connections to this peer, implying
13588  * we should go ahead and force-close any channels we have with it.
13589  */
13590 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
13591
13592 /**
13593  * Constructs a new PeerHandleError given each field
13594  */
13595 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
13596
13597 /**
13598  * Creates a copy of the PeerHandleError
13599  */
13600 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
13601
13602 /**
13603  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
13604  */
13605 void PeerManager_free(struct LDKPeerManager this_obj);
13606
13607 /**
13608  * Constructs a new PeerManager with the given message handlers and node_id secret key
13609  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
13610  * cryptographically secure random bytes.
13611  */
13612 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);
13613
13614 /**
13615  * Get the list of node ids for peers which have completed the initial handshake.
13616  *
13617  * For outbound connections, this will be the same as the their_node_id parameter passed in to
13618  * new_outbound_connection, however entries will only appear once the initial handshake has
13619  * completed and we are sure the remote peer has the private key for the given node_id.
13620  */
13621 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
13622
13623 /**
13624  * Indicates a new outbound connection has been established to a node with the given node_id.
13625  * Note that if an Err is returned here you MUST NOT call socket_disconnected for the new
13626  * descriptor but must disconnect the connection immediately.
13627  *
13628  * Returns a small number of bytes to send to the remote node (currently always 50).
13629  *
13630  * Panics if descriptor is duplicative with some other descriptor which has not yet had a
13631  * socket_disconnected().
13632  */
13633 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);
13634
13635 /**
13636  * Indicates a new inbound connection has been established.
13637  *
13638  * May refuse the connection by returning an Err, but will never write bytes to the remote end
13639  * (outbound connector always speaks first). Note that if an Err is returned here you MUST NOT
13640  * call socket_disconnected for the new descriptor but must disconnect the connection
13641  * immediately.
13642  *
13643  * Panics if descriptor is duplicative with some other descriptor which has not yet had
13644  * socket_disconnected called.
13645  */
13646 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
13647
13648 /**
13649  * Indicates that there is room to write data to the given socket descriptor.
13650  *
13651  * May return an Err to indicate that the connection should be closed.
13652  *
13653  * Will most likely call send_data on the descriptor passed in (or the descriptor handed into
13654  * new_*\\_connection) before returning. Thus, be very careful with reentrancy issues! The
13655  * invariants around calling write_buffer_space_avail in case a write did not fully complete
13656  * must still hold - be ready to call write_buffer_space_avail again if a write call generated
13657  * here isn't sufficient! Panics if the descriptor was not previously registered in a
13658  * new_\\*_connection event.
13659  */
13660 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
13661
13662 /**
13663  * Indicates that data was read from the given socket descriptor.
13664  *
13665  * May return an Err to indicate that the connection should be closed.
13666  *
13667  * Will *not* call back into send_data on any descriptors to avoid reentrancy complexity.
13668  * Thus, however, you almost certainly want to call process_events() after any read_event to
13669  * generate send_data calls to handle responses.
13670  *
13671  * If Ok(true) is returned, further read_events should not be triggered until a send_data call
13672  * on this file descriptor has resume_read set (preventing DoS issues in the send buffer).
13673  *
13674  * Panics if the descriptor was not previously registered in a new_*_connection event.
13675  */
13676 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);
13677
13678 /**
13679  * Checks for any events generated by our handlers and processes them. Includes sending most
13680  * response messages as well as messages generated by calls to handler functions directly (eg
13681  * functions like ChannelManager::process_pending_htlc_forward or send_payment).
13682  */
13683 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
13684
13685 /**
13686  * Indicates that the given socket descriptor's connection is now closed.
13687  *
13688  * This must only be called if the socket has been disconnected by the peer or your own
13689  * decision to disconnect it and must NOT be called in any case where other parts of this
13690  * library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect
13691  * the peer.
13692  *
13693  * Panics if the descriptor was not previously registered in a successful new_*_connection event.
13694  */
13695 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
13696
13697 /**
13698  * Disconnect a peer given its node id.
13699  *
13700  * Set no_connection_possible to true to prevent any further connection with this peer,
13701  * force-closing any channels we have with it.
13702  *
13703  * If a peer is connected, this will call `disconnect_socket` on the descriptor for the peer,
13704  * so be careful about reentrancy issues.
13705  */
13706 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
13707
13708 /**
13709  * This function should be called roughly once every 30 seconds.
13710  * It will send pings to each peer and disconnect those which did not respond to the last round of pings.
13711  * Will most likely call send_data on all of the registered descriptors, thus, be very careful with reentrancy issues!
13712  */
13713 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
13714
13715 /**
13716  * Build the commitment secret from the seed and the commitment number
13717  */
13718 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
13719
13720 /**
13721  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
13722  * from the base secret and the per_commitment_point.
13723  *
13724  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13725  * generated (ie our own).
13726  */
13727 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
13728
13729 /**
13730  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
13731  * from the base point and the per_commitment_key. This is the public equivalent of
13732  * derive_private_key - using only public keys to derive a public key instead of private keys.
13733  *
13734  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13735  * generated (ie our own).
13736  */
13737 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
13738
13739 /**
13740  * Derives a per-commitment-transaction revocation key from its constituent parts.
13741  *
13742  * Only the cheating participant owns a valid witness to propagate a revoked
13743  * commitment transaction, thus per_commitment_secret always come from cheater
13744  * and revocation_base_secret always come from punisher, which is the broadcaster
13745  * of the transaction spending with this key knowledge.
13746  *
13747  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13748  * generated (ie our own).
13749  */
13750 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
13751
13752 /**
13753  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
13754  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
13755  * public key instead of private keys.
13756  *
13757  * Only the cheating participant owns a valid witness to propagate a revoked
13758  * commitment transaction, thus per_commitment_point always come from cheater
13759  * and revocation_base_point always come from punisher, which is the broadcaster
13760  * of the transaction spending with this key knowledge.
13761  *
13762  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13763  * generated (ie our own).
13764  */
13765 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
13766
13767 /**
13768  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
13769  */
13770 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
13771
13772 /**
13773  * The broadcaster's per-commitment public key which was used to derive the other keys.
13774  */
13775 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13776
13777 /**
13778  * The broadcaster's per-commitment public key which was used to derive the other keys.
13779  */
13780 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13781
13782 /**
13783  * The revocation key which is used to allow the broadcaster of the commitment
13784  * transaction to provide their counterparty the ability to punish them if they broadcast
13785  * an old state.
13786  */
13787 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13788
13789 /**
13790  * The revocation key which is used to allow the broadcaster of the commitment
13791  * transaction to provide their counterparty the ability to punish them if they broadcast
13792  * an old state.
13793  */
13794 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13795
13796 /**
13797  * Broadcaster's HTLC Key
13798  */
13799 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13800
13801 /**
13802  * Broadcaster's HTLC Key
13803  */
13804 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13805
13806 /**
13807  * Countersignatory's HTLC Key
13808  */
13809 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13810
13811 /**
13812  * Countersignatory's HTLC Key
13813  */
13814 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13815
13816 /**
13817  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
13818  */
13819 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13820
13821 /**
13822  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
13823  */
13824 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13825
13826 /**
13827  * Constructs a new TxCreationKeys given each field
13828  */
13829 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);
13830
13831 /**
13832  * Creates a copy of the TxCreationKeys
13833  */
13834 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
13835
13836 /**
13837  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
13838  */
13839 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
13840
13841 /**
13842  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
13843  */
13844 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
13845
13846 /**
13847  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
13848  */
13849 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
13850
13851 /**
13852  * The public key which is used to sign all commitment transactions, as it appears in the
13853  * on-chain channel lock-in 2-of-2 multisig output.
13854  */
13855 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13856
13857 /**
13858  * The public key which is used to sign all commitment transactions, as it appears in the
13859  * on-chain channel lock-in 2-of-2 multisig output.
13860  */
13861 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13862
13863 /**
13864  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
13865  * revocation keys. This is combined with the per-commitment-secret generated by the
13866  * counterparty to create a secret which the counterparty can reveal to revoke previous
13867  * states.
13868  */
13869 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13870
13871 /**
13872  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
13873  * revocation keys. This is combined with the per-commitment-secret generated by the
13874  * counterparty to create a secret which the counterparty can reveal to revoke previous
13875  * states.
13876  */
13877 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13878
13879 /**
13880  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
13881  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
13882  * static across every commitment transaction.
13883  */
13884 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13885
13886 /**
13887  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
13888  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
13889  * static across every commitment transaction.
13890  */
13891 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13892
13893 /**
13894  * The base point which is used (with derive_public_key) to derive a per-commitment payment
13895  * public key which receives non-HTLC-encumbered funds which are only available for spending
13896  * after some delay (or can be claimed via the revocation path).
13897  */
13898 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13899
13900 /**
13901  * The base point which is used (with derive_public_key) to derive a per-commitment payment
13902  * public key which receives non-HTLC-encumbered funds which are only available for spending
13903  * after some delay (or can be claimed via the revocation path).
13904  */
13905 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13906
13907 /**
13908  * The base point which is used (with derive_public_key) to derive a per-commitment public key
13909  * which is used to encumber HTLC-in-flight outputs.
13910  */
13911 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13912
13913 /**
13914  * The base point which is used (with derive_public_key) to derive a per-commitment public key
13915  * which is used to encumber HTLC-in-flight outputs.
13916  */
13917 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13918
13919 /**
13920  * Constructs a new ChannelPublicKeys given each field
13921  */
13922 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);
13923
13924 /**
13925  * Creates a copy of the ChannelPublicKeys
13926  */
13927 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
13928
13929 /**
13930  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
13931  */
13932 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
13933
13934 /**
13935  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
13936  */
13937 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
13938
13939 /**
13940  * Create per-state keys from channel base points and the per-commitment point.
13941  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
13942  */
13943 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);
13944
13945 /**
13946  * Generate per-state keys from channel static keys.
13947  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
13948  */
13949 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);
13950
13951 /**
13952  * A script either spendable by the revocation
13953  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
13954  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
13955  */
13956 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
13957
13958 /**
13959  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
13960  */
13961 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
13962
13963 /**
13964  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
13965  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
13966  * need to compare this value to whether the commitment transaction in question is that of
13967  * the counterparty or our own.
13968  */
13969 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
13970
13971 /**
13972  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
13973  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
13974  * need to compare this value to whether the commitment transaction in question is that of
13975  * the counterparty or our own.
13976  */
13977 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
13978
13979 /**
13980  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
13981  * this divided by 1000.
13982  */
13983 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
13984
13985 /**
13986  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
13987  * this divided by 1000.
13988  */
13989 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
13990
13991 /**
13992  * The CLTV lock-time at which this HTLC expires.
13993  */
13994 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
13995
13996 /**
13997  * The CLTV lock-time at which this HTLC expires.
13998  */
13999 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
14000
14001 /**
14002  * The hash of the preimage which unlocks this HTLC.
14003  */
14004 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
14005
14006 /**
14007  * The hash of the preimage which unlocks this HTLC.
14008  */
14009 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14010
14011 /**
14012  * The position within the commitment transactions' outputs. This may be None if the value is
14013  * below the dust limit (in which case no output appears in the commitment transaction and the
14014  * value is spent to additional transaction fees).
14015  */
14016 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14017
14018 /**
14019  * The position within the commitment transactions' outputs. This may be None if the value is
14020  * below the dust limit (in which case no output appears in the commitment transaction and the
14021  * value is spent to additional transaction fees).
14022  */
14023 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
14024
14025 /**
14026  * Constructs a new HTLCOutputInCommitment given each field
14027  */
14028 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);
14029
14030 /**
14031  * Creates a copy of the HTLCOutputInCommitment
14032  */
14033 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
14034
14035 /**
14036  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
14037  */
14038 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
14039
14040 /**
14041  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
14042  */
14043 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
14044
14045 /**
14046  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
14047  * does not need to have its previous_output_index filled.
14048  */
14049 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, const struct LDKTxCreationKeys *NONNULL_PTR keys);
14050
14051 /**
14052  * Gets the redeemscript for a funding output from the two funding public keys.
14053  * Note that the order of funding public keys does not matter.
14054  */
14055 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
14056
14057 /**
14058  * panics if htlc.transaction_output_index.is_none()!
14059  */
14060 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);
14061
14062 /**
14063  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14064  */
14065 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
14066
14067 /**
14068  * Holder public keys
14069  */
14070 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14071
14072 /**
14073  * Holder public keys
14074  */
14075 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
14076
14077 /**
14078  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
14079  */
14080 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14081
14082 /**
14083  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
14084  */
14085 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
14086
14087 /**
14088  * Whether the holder is the initiator of this channel.
14089  * This is an input to the commitment number obscure factor computation.
14090  */
14091 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14092
14093 /**
14094  * Whether the holder is the initiator of this channel.
14095  * This is an input to the commitment number obscure factor computation.
14096  */
14097 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
14098
14099 /**
14100  * The late-bound counterparty channel transaction parameters.
14101  * These parameters are populated at the point in the protocol where the counterparty provides them.
14102  */
14103 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14104
14105 /**
14106  * The late-bound counterparty channel transaction parameters.
14107  * These parameters are populated at the point in the protocol where the counterparty provides them.
14108  */
14109 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
14110
14111 /**
14112  * The late-bound funding outpoint
14113  */
14114 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14115
14116 /**
14117  * The late-bound funding outpoint
14118  */
14119 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
14120
14121 /**
14122  * Constructs a new ChannelTransactionParameters given each field
14123  */
14124 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);
14125
14126 /**
14127  * Creates a copy of the ChannelTransactionParameters
14128  */
14129 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
14130
14131 /**
14132  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14133  */
14134 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
14135
14136 /**
14137  * Counter-party public keys
14138  */
14139 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
14140
14141 /**
14142  * Counter-party public keys
14143  */
14144 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
14145
14146 /**
14147  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
14148  */
14149 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
14150
14151 /**
14152  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
14153  */
14154 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
14155
14156 /**
14157  * Constructs a new CounterpartyChannelTransactionParameters given each field
14158  */
14159 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
14160
14161 /**
14162  * Creates a copy of the CounterpartyChannelTransactionParameters
14163  */
14164 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
14165
14166 /**
14167  * Whether the late bound parameters are populated.
14168  */
14169 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14170
14171 /**
14172  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
14173  * given that the holder is the broadcaster.
14174  *
14175  * self.is_populated() must be true before calling this function.
14176  */
14177 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14178
14179 /**
14180  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
14181  * given that the counterparty is the broadcaster.
14182  *
14183  * self.is_populated() must be true before calling this function.
14184  */
14185 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14186
14187 /**
14188  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
14189  */
14190 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
14191
14192 /**
14193  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
14194  */
14195 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
14196
14197 /**
14198  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
14199  */
14200 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
14201
14202 /**
14203  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
14204  */
14205 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
14206
14207 /**
14208  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14209  */
14210 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
14211
14212 /**
14213  * Get the channel pubkeys for the broadcaster
14214  */
14215 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14216
14217 /**
14218  * Get the channel pubkeys for the countersignatory
14219  */
14220 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14221
14222 /**
14223  * Get the contest delay applicable to the transactions.
14224  * Note that the contest delay was selected by the countersignatory.
14225  */
14226 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14227
14228 /**
14229  * Whether the channel is outbound from the broadcaster.
14230  *
14231  * The boolean representing the side that initiated the channel is
14232  * an input to the commitment number obscure factor computation.
14233  */
14234 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14235
14236 /**
14237  * The funding outpoint
14238  */
14239 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14240
14241 /**
14242  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
14243  */
14244 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
14245
14246 /**
14247  * Our counterparty's signature for the transaction
14248  */
14249 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
14250
14251 /**
14252  * Our counterparty's signature for the transaction
14253  */
14254 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
14255
14256 /**
14257  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
14258  */
14259 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
14260
14261 /**
14262  * Creates a copy of the HolderCommitmentTransaction
14263  */
14264 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
14265
14266 /**
14267  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
14268  */
14269 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
14270
14271 /**
14272  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
14273  */
14274 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
14275
14276 /**
14277  * Create a new holder transaction with the given counterparty signatures.
14278  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
14279  */
14280 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);
14281
14282 /**
14283  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
14284  */
14285 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
14286
14287 /**
14288  * The commitment transaction
14289  */
14290 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
14291
14292 /**
14293  * The commitment transaction
14294  */
14295 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
14296
14297 /**
14298  * The txid for the commitment transaction.
14299  *
14300  * This is provided as a performance optimization, instead of calling transaction.txid()
14301  * multiple times.
14302  */
14303 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
14304
14305 /**
14306  * The txid for the commitment transaction.
14307  *
14308  * This is provided as a performance optimization, instead of calling transaction.txid()
14309  * multiple times.
14310  */
14311 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14312
14313 /**
14314  * Constructs a new BuiltCommitmentTransaction given each field
14315  */
14316 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
14317
14318 /**
14319  * Creates a copy of the BuiltCommitmentTransaction
14320  */
14321 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
14322
14323 /**
14324  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
14325  */
14326 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
14327
14328 /**
14329  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
14330  */
14331 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
14332
14333 /**
14334  * Get the SIGHASH_ALL sighash value of the transaction.
14335  *
14336  * This can be used to verify a signature.
14337  */
14338 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);
14339
14340 /**
14341  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
14342  * because we are about to broadcast a holder transaction.
14343  */
14344 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);
14345
14346 /**
14347  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
14348  */
14349 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
14350
14351 /**
14352  * Creates a copy of the CommitmentTransaction
14353  */
14354 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
14355
14356 /**
14357  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
14358  */
14359 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
14360
14361 /**
14362  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
14363  */
14364 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
14365
14366 /**
14367  * The backwards-counting commitment number
14368  */
14369 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14370
14371 /**
14372  * The value to be sent to the broadcaster
14373  */
14374 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14375
14376 /**
14377  * The value to be sent to the counterparty
14378  */
14379 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14380
14381 /**
14382  * The feerate paid per 1000-weight-unit in this commitment transaction.
14383  */
14384 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14385
14386 /**
14387  * Trust our pre-built transaction and derived transaction creation public keys.
14388  *
14389  * Applies a wrapper which allows access to these fields.
14390  *
14391  * This should only be used if you fully trust the builder of this object.  It should not
14392  *\tbe used by an external signer - instead use the verify function.
14393  */
14394 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14395
14396 /**
14397  * Verify our pre-built transaction and derived transaction creation public keys.
14398  *
14399  * Applies a wrapper which allows access to these fields.
14400  *
14401  * An external validating signer must call this method before signing
14402  * or using the built transaction.
14403  */
14404 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);
14405
14406 /**
14407  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
14408  */
14409 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
14410
14411 /**
14412  * The transaction ID of the built Bitcoin transaction
14413  */
14414 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14415
14416 /**
14417  * The pre-built Bitcoin commitment transaction
14418  */
14419 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14420
14421 /**
14422  * The pre-calculated transaction creation public keys.
14423  */
14424 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14425
14426 /**
14427  * Get a signature for each HTLC which was included in the commitment transaction (ie for
14428  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
14429  *
14430  * The returned Vec has one entry for each HTLC, and in the same order.
14431  */
14432 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);
14433
14434 /**
14435  * Get the transaction number obscure factor
14436  */
14437 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
14438
14439 /**
14440  * Creates a copy of the InitFeatures
14441  */
14442 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
14443
14444 /**
14445  * Creates a copy of the NodeFeatures
14446  */
14447 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
14448
14449 /**
14450  * Creates a copy of the ChannelFeatures
14451  */
14452 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
14453
14454 /**
14455  * Creates a copy of the InvoiceFeatures
14456  */
14457 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
14458
14459 /**
14460  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
14461  */
14462 void InitFeatures_free(struct LDKInitFeatures this_obj);
14463
14464 /**
14465  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
14466  */
14467 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
14468
14469 /**
14470  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
14471  */
14472 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
14473
14474 /**
14475  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
14476  */
14477 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
14478
14479 /**
14480  * Create a blank Features with no features set
14481  */
14482 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
14483
14484 /**
14485  * Creates a Features with the bits set which are known by the implementation
14486  */
14487 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
14488
14489 /**
14490  * Create a blank Features with no features set
14491  */
14492 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
14493
14494 /**
14495  * Creates a Features with the bits set which are known by the implementation
14496  */
14497 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
14498
14499 /**
14500  * Create a blank Features with no features set
14501  */
14502 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
14503
14504 /**
14505  * Creates a Features with the bits set which are known by the implementation
14506  */
14507 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
14508
14509 /**
14510  * Create a blank Features with no features set
14511  */
14512 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
14513
14514 /**
14515  * Creates a Features with the bits set which are known by the implementation
14516  */
14517 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
14518
14519 /**
14520  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
14521  */
14522 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
14523
14524 /**
14525  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
14526  */
14527 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
14528
14529 /**
14530  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
14531  */
14532 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
14533
14534 /**
14535  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
14536  */
14537 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
14538
14539 /**
14540  * Read a InitFeatures from a byte array, created by InitFeatures_write
14541  */
14542 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
14543
14544 /**
14545  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
14546  */
14547 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
14548
14549 /**
14550  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
14551  */
14552 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
14553
14554 /**
14555  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
14556  */
14557 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
14558
14559 /**
14560  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
14561  */
14562 void RouteHop_free(struct LDKRouteHop this_obj);
14563
14564 /**
14565  * The node_id of the node at this hop.
14566  */
14567 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14568
14569 /**
14570  * The node_id of the node at this hop.
14571  */
14572 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14573
14574 /**
14575  * The node_announcement features of the node at this hop. For the last hop, these may be
14576  * amended to match the features present in the invoice this node generated.
14577  */
14578 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14579
14580 /**
14581  * The node_announcement features of the node at this hop. For the last hop, these may be
14582  * amended to match the features present in the invoice this node generated.
14583  */
14584 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
14585
14586 /**
14587  * The channel that should be used from the previous hop to reach this node.
14588  */
14589 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14590
14591 /**
14592  * The channel that should be used from the previous hop to reach this node.
14593  */
14594 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
14595
14596 /**
14597  * The channel_announcement features of the channel that should be used from the previous hop
14598  * to reach this node.
14599  */
14600 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14601
14602 /**
14603  * The channel_announcement features of the channel that should be used from the previous hop
14604  * to reach this node.
14605  */
14606 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
14607
14608 /**
14609  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
14610  * For the last hop, this should be the full value of the payment (might be more than
14611  * requested if we had to match htlc_minimum_msat).
14612  */
14613 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14614
14615 /**
14616  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
14617  * For the last hop, this should be the full value of the payment (might be more than
14618  * requested if we had to match htlc_minimum_msat).
14619  */
14620 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
14621
14622 /**
14623  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
14624  * expected at the destination, in excess of the current block height.
14625  */
14626 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14627
14628 /**
14629  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
14630  * expected at the destination, in excess of the current block height.
14631  */
14632 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
14633
14634 /**
14635  * Constructs a new RouteHop given each field
14636  */
14637 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);
14638
14639 /**
14640  * Creates a copy of the RouteHop
14641  */
14642 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
14643
14644 /**
14645  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
14646  */
14647 void Route_free(struct LDKRoute this_obj);
14648
14649 /**
14650  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
14651  * last RouteHop in each path must be the same.
14652  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
14653  * destination. Thus, this must always be at least length one. While the maximum length of any
14654  * given path is variable, keeping the length of any path to less than 20 should currently
14655  * ensure it is viable.
14656  */
14657 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
14658
14659 /**
14660  * Constructs a new Route given each field
14661  */
14662 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg);
14663
14664 /**
14665  * Creates a copy of the Route
14666  */
14667 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
14668
14669 /**
14670  * Serialize the Route object into a byte array which can be read by Route_read
14671  */
14672 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
14673
14674 /**
14675  * Read a Route from a byte array, created by Route_write
14676  */
14677 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
14678
14679 /**
14680  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
14681  */
14682 void RouteHint_free(struct LDKRouteHint this_obj);
14683
14684 /**
14685  * The node_id of the non-target end of the route
14686  */
14687 struct LDKPublicKey RouteHint_get_src_node_id(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14688
14689 /**
14690  * The node_id of the non-target end of the route
14691  */
14692 void RouteHint_set_src_node_id(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14693
14694 /**
14695  * The short_channel_id of this channel
14696  */
14697 uint64_t RouteHint_get_short_channel_id(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14698
14699 /**
14700  * The short_channel_id of this channel
14701  */
14702 void RouteHint_set_short_channel_id(struct LDKRouteHint *NONNULL_PTR this_ptr, uint64_t val);
14703
14704 /**
14705  * The fees which must be paid to use this channel
14706  */
14707 struct LDKRoutingFees RouteHint_get_fees(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14708
14709 /**
14710  * The fees which must be paid to use this channel
14711  */
14712 void RouteHint_set_fees(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
14713
14714 /**
14715  * The difference in CLTV values between this node and the next node.
14716  */
14717 uint16_t RouteHint_get_cltv_expiry_delta(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14718
14719 /**
14720  * The difference in CLTV values between this node and the next node.
14721  */
14722 void RouteHint_set_cltv_expiry_delta(struct LDKRouteHint *NONNULL_PTR this_ptr, uint16_t val);
14723
14724 /**
14725  * The minimum value, in msat, which must be relayed to the next hop.
14726  */
14727 struct LDKCOption_u64Z RouteHint_get_htlc_minimum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14728
14729 /**
14730  * The minimum value, in msat, which must be relayed to the next hop.
14731  */
14732 void RouteHint_set_htlc_minimum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14733
14734 /**
14735  * The maximum value in msat available for routing with a single HTLC.
14736  */
14737 struct LDKCOption_u64Z RouteHint_get_htlc_maximum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14738
14739 /**
14740  * The maximum value in msat available for routing with a single HTLC.
14741  */
14742 void RouteHint_set_htlc_maximum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14743
14744 /**
14745  * Constructs a new RouteHint given each field
14746  */
14747 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);
14748
14749 /**
14750  * Creates a copy of the RouteHint
14751  */
14752 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
14753
14754 /**
14755  * Gets a route from us (payer) to the given target node (payee).
14756  *
14757  * If the payee provided features in their invoice, they should be provided via payee_features.
14758  * Without this, MPP will only be used if the payee's features are available in the network graph.
14759  *
14760  * Extra routing hops between known nodes and the target will be used if they are included in
14761  * last_hops.
14762  *
14763  * If some channels aren't announced, it may be useful to fill in a first_hops with the
14764  * results from a local ChannelManager::list_usable_channels() call. If it is filled in, our
14765  * view of our local channels (from net_graph_msg_handler) will be ignored, and only those
14766  * in first_hops will be used.
14767  *
14768  * Panics if first_hops contains channels without short_channel_ids
14769  * (ChannelManager::list_usable_channels will never include such channels).
14770  *
14771  * The fees on channels from us to next-hops are ignored (as they are assumed to all be
14772  * equal), however the enabled/disabled bit on such channels as well as the
14773  * htlc_minimum_msat/htlc_maximum_msat *are* checked as they may change based on the receiving node.
14774  */
14775 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);
14776
14777 /**
14778  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
14779  */
14780 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
14781
14782 /**
14783  * Creates a copy of the NetworkGraph
14784  */
14785 struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
14786
14787 /**
14788  * Frees any resources used by the LockedNetworkGraph, if is_owned is set and inner is non-NULL.
14789  */
14790 void LockedNetworkGraph_free(struct LDKLockedNetworkGraph this_obj);
14791
14792 /**
14793  * Frees any resources used by the NetGraphMsgHandler, if is_owned is set and inner is non-NULL.
14794  */
14795 void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
14796
14797 /**
14798  * Creates a new tracker of the actual state of the network of channels and nodes,
14799  * assuming a fresh network graph.
14800  * Chain monitor is used to make sure announced channels exist on-chain,
14801  * channel data is correct, and that the announcement is signed with
14802  * channel owners' keys.
14803  */
14804 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(struct LDKThirtyTwoBytes genesis_hash, struct LDKAccess *chain_access, struct LDKLogger logger);
14805
14806 /**
14807  * Creates a new tracker of the actual state of the network of channels and nodes,
14808  * assuming an existing Network Graph.
14809  */
14810 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(struct LDKAccess *chain_access, struct LDKLogger logger, struct LDKNetworkGraph network_graph);
14811
14812 /**
14813  * Adds a provider used to check new announcements. Does not affect
14814  * existing announcements unless they are updated.
14815  * Add, update or remove the provider would replace the current one.
14816  */
14817 void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKAccess *chain_access);
14818
14819 /**
14820  * Take a read lock on the network_graph and return it in the C-bindings
14821  * newtype helper. This is likely only useful when called via the C
14822  * bindings as you can call `self.network_graph.read().unwrap()` in Rust
14823  * yourself.
14824  */
14825 MUST_USE_RES struct LDKLockedNetworkGraph NetGraphMsgHandler_read_locked_graph(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14826
14827 /**
14828  * Get a reference to the NetworkGraph which this read-lock contains.
14829  */
14830 MUST_USE_RES struct LDKNetworkGraph LockedNetworkGraph_graph(const struct LDKLockedNetworkGraph *NONNULL_PTR this_arg);
14831
14832 /**
14833  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
14834  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
14835  */
14836 struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14837
14838 /**
14839  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
14840  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
14841  */
14842 struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14843
14844 /**
14845  * Frees any resources used by the DirectionalChannelInfo, if is_owned is set and inner is non-NULL.
14846  */
14847 void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
14848
14849 /**
14850  * When the last update to the channel direction was issued.
14851  * Value is opaque, as set in the announcement.
14852  */
14853 uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14854
14855 /**
14856  * When the last update to the channel direction was issued.
14857  * Value is opaque, as set in the announcement.
14858  */
14859 void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
14860
14861 /**
14862  * Whether the channel can be currently used for payments (in this one direction).
14863  */
14864 bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14865
14866 /**
14867  * Whether the channel can be currently used for payments (in this one direction).
14868  */
14869 void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
14870
14871 /**
14872  * The difference in CLTV values that you must have when routing through this channel.
14873  */
14874 uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14875
14876 /**
14877  * The difference in CLTV values that you must have when routing through this channel.
14878  */
14879 void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
14880
14881 /**
14882  * The minimum value, which must be relayed to the next hop via the channel
14883  */
14884 uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14885
14886 /**
14887  * The minimum value, which must be relayed to the next hop via the channel
14888  */
14889 void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
14890
14891 /**
14892  * The maximum value which may be relayed to the next hop via the channel.
14893  */
14894 struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14895
14896 /**
14897  * The maximum value which may be relayed to the next hop via the channel.
14898  */
14899 void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14900
14901 /**
14902  * Fees charged when the channel is used for routing
14903  */
14904 struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14905
14906 /**
14907  * Fees charged when the channel is used for routing
14908  */
14909 void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
14910
14911 /**
14912  * Most recent update for the channel received from the network
14913  * Mostly redundant with the data we store in fields explicitly.
14914  * Everything else is useful only for sending out for initial routing sync.
14915  * Not stored if contains excess data to prevent DoS.
14916  */
14917 struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14918
14919 /**
14920  * Most recent update for the channel received from the network
14921  * Mostly redundant with the data we store in fields explicitly.
14922  * Everything else is useful only for sending out for initial routing sync.
14923  * Not stored if contains excess data to prevent DoS.
14924  */
14925 void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
14926
14927 /**
14928  * Constructs a new DirectionalChannelInfo given each field
14929  */
14930 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);
14931
14932 /**
14933  * Creates a copy of the DirectionalChannelInfo
14934  */
14935 struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig);
14936
14937 /**
14938  * Serialize the DirectionalChannelInfo object into a byte array which can be read by DirectionalChannelInfo_read
14939  */
14940 struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj);
14941
14942 /**
14943  * Read a DirectionalChannelInfo from a byte array, created by DirectionalChannelInfo_write
14944  */
14945 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser);
14946
14947 /**
14948  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
14949  */
14950 void ChannelInfo_free(struct LDKChannelInfo this_obj);
14951
14952 /**
14953  * Protocol features of a channel communicated during its announcement
14954  */
14955 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
14956
14957 /**
14958  * Protocol features of a channel communicated during its announcement
14959  */
14960 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
14961
14962 /**
14963  * Source node of the first direction of a channel
14964  */
14965 struct LDKPublicKey ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
14966
14967 /**
14968  * Source node of the first direction of a channel
14969  */
14970 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14971
14972 /**
14973  * Details about the first direction of a channel
14974  */
14975 struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
14976
14977 /**
14978  * Details about the first direction of a channel
14979  */
14980 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
14981
14982 /**
14983  * Source node of the second direction of a channel
14984  */
14985 struct LDKPublicKey ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
14986
14987 /**
14988  * Source node of the second direction of a channel
14989  */
14990 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14991
14992 /**
14993  * Details about the second direction of a channel
14994  */
14995 struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
14996
14997 /**
14998  * Details about the second direction of a channel
14999  */
15000 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
15001
15002 /**
15003  * The channel capacity as seen on-chain, if chain lookup is available.
15004  */
15005 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15006
15007 /**
15008  * The channel capacity as seen on-chain, if chain lookup is available.
15009  */
15010 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
15011
15012 /**
15013  * An initial announcement of the channel
15014  * Mostly redundant with the data we store in fields explicitly.
15015  * Everything else is useful only for sending out for initial routing sync.
15016  * Not stored if contains excess data to prevent DoS.
15017  */
15018 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15019
15020 /**
15021  * An initial announcement of the channel
15022  * Mostly redundant with the data we store in fields explicitly.
15023  * Everything else is useful only for sending out for initial routing sync.
15024  * Not stored if contains excess data to prevent DoS.
15025  */
15026 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
15027
15028 /**
15029  * Constructs a new ChannelInfo given each field
15030  */
15031 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);
15032
15033 /**
15034  * Creates a copy of the ChannelInfo
15035  */
15036 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
15037
15038 /**
15039  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
15040  */
15041 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
15042
15043 /**
15044  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
15045  */
15046 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
15047
15048 /**
15049  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
15050  */
15051 void RoutingFees_free(struct LDKRoutingFees this_obj);
15052
15053 /**
15054  * Flat routing fee in satoshis
15055  */
15056 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
15057
15058 /**
15059  * Flat routing fee in satoshis
15060  */
15061 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
15062
15063 /**
15064  * Liquidity-based routing fee in millionths of a routed amount.
15065  * In other words, 10000 is 1%.
15066  */
15067 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
15068
15069 /**
15070  * Liquidity-based routing fee in millionths of a routed amount.
15071  * In other words, 10000 is 1%.
15072  */
15073 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
15074
15075 /**
15076  * Constructs a new RoutingFees given each field
15077  */
15078 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
15079
15080 /**
15081  * Creates a copy of the RoutingFees
15082  */
15083 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
15084
15085 /**
15086  * Read a RoutingFees from a byte array, created by RoutingFees_write
15087  */
15088 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
15089
15090 /**
15091  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
15092  */
15093 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
15094
15095 /**
15096  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
15097  */
15098 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
15099
15100 /**
15101  * Protocol features the node announced support for
15102  */
15103 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15104
15105 /**
15106  * Protocol features the node announced support for
15107  */
15108 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
15109
15110 /**
15111  * When the last known update to the node state was issued.
15112  * Value is opaque, as set in the announcement.
15113  */
15114 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15115
15116 /**
15117  * When the last known update to the node state was issued.
15118  * Value is opaque, as set in the announcement.
15119  */
15120 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
15121
15122 /**
15123  * Color assigned to the node
15124  */
15125 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
15126
15127 /**
15128  * Color assigned to the node
15129  */
15130 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
15131
15132 /**
15133  * Moniker assigned to the node.
15134  * May be invalid or malicious (eg control chars),
15135  * should not be exposed to the user.
15136  */
15137 const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
15138
15139 /**
15140  * Moniker assigned to the node.
15141  * May be invalid or malicious (eg control chars),
15142  * should not be exposed to the user.
15143  */
15144 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15145
15146 /**
15147  * Internet-level addresses via which one can connect to the node
15148  */
15149 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
15150
15151 /**
15152  * An initial announcement of the node
15153  * Mostly redundant with the data we store in fields explicitly.
15154  * Everything else is useful only for sending out for initial routing sync.
15155  * Not stored if contains excess data to prevent DoS.
15156  */
15157 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15158
15159 /**
15160  * An initial announcement of the node
15161  * Mostly redundant with the data we store in fields explicitly.
15162  * Everything else is useful only for sending out for initial routing sync.
15163  * Not stored if contains excess data to prevent DoS.
15164  */
15165 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
15166
15167 /**
15168  * Constructs a new NodeAnnouncementInfo given each field
15169  */
15170 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);
15171
15172 /**
15173  * Creates a copy of the NodeAnnouncementInfo
15174  */
15175 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
15176
15177 /**
15178  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
15179  */
15180 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
15181
15182 /**
15183  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
15184  */
15185 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
15186
15187 /**
15188  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
15189  */
15190 void NodeInfo_free(struct LDKNodeInfo this_obj);
15191
15192 /**
15193  * All valid channels a node has announced
15194  */
15195 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
15196
15197 /**
15198  * Lowest fees enabling routing via any of the enabled, known channels to a node.
15199  * The two fields (flat and proportional fee) are independent,
15200  * meaning they don't have to refer to the same channel.
15201  */
15202 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
15203
15204 /**
15205  * Lowest fees enabling routing via any of the enabled, known channels to a node.
15206  * The two fields (flat and proportional fee) are independent,
15207  * meaning they don't have to refer to the same channel.
15208  */
15209 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
15210
15211 /**
15212  * More information about a node from node_announcement.
15213  * Optional because we store a Node entry after learning about it from
15214  * a channel announcement, but before receiving a node announcement.
15215  */
15216 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
15217
15218 /**
15219  * More information about a node from node_announcement.
15220  * Optional because we store a Node entry after learning about it from
15221  * a channel announcement, but before receiving a node announcement.
15222  */
15223 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
15224
15225 /**
15226  * Constructs a new NodeInfo given each field
15227  */
15228 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
15229
15230 /**
15231  * Creates a copy of the NodeInfo
15232  */
15233 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
15234
15235 /**
15236  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
15237  */
15238 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
15239
15240 /**
15241  * Read a NodeInfo from a byte array, created by NodeInfo_write
15242  */
15243 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
15244
15245 /**
15246  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
15247  */
15248 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
15249
15250 /**
15251  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
15252  */
15253 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
15254
15255 /**
15256  * Creates a new, empty, network graph.
15257  */
15258 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
15259
15260 /**
15261  * For an already known node (from channel announcements), update its stored properties from a
15262  * given node announcement.
15263  *
15264  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15265  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15266  * routing messages from a source using a protocol other than the lightning P2P protocol.
15267  */
15268 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
15269
15270 /**
15271  * For an already known node (from channel announcements), update its stored properties from a
15272  * given node announcement without verifying the associated signatures. Because we aren't
15273  * given the associated signatures here we cannot relay the node announcement to any of our
15274  * peers.
15275  */
15276 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
15277
15278 /**
15279  * Store or update channel info from a channel announcement.
15280  *
15281  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15282  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15283  * routing messages from a source using a protocol other than the lightning P2P protocol.
15284  *
15285  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
15286  * the corresponding UTXO exists on chain and is correctly-formatted.
15287  */
15288 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);
15289
15290 /**
15291  * Store or update channel info from a channel announcement without verifying the associated
15292  * signatures. Because we aren't given the associated signatures here we cannot relay the
15293  * channel announcement to any of our peers.
15294  *
15295  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
15296  * the corresponding UTXO exists on chain and is correctly-formatted.
15297  */
15298 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);
15299
15300 /**
15301  * Close a channel if a corresponding HTLC fail was sent.
15302  * If permanent, removes a channel from the local storage.
15303  * May cause the removal of nodes too, if this was their last channel.
15304  * If not permanent, makes channels unavailable for routing.
15305  */
15306 void NetworkGraph_close_channel_from_update(struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
15307
15308 /**
15309  * For an already known (from announcement) channel, update info about one of the directions
15310  * of the channel.
15311  *
15312  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15313  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15314  * routing messages from a source using a protocol other than the lightning P2P protocol.
15315  */
15316 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
15317
15318 /**
15319  * For an already known (from announcement) channel, update info about one of the directions
15320  * of the channel without verifying the associated signatures. Because we aren't given the
15321  * associated signatures here we cannot relay the channel update to any of our peers.
15322  */
15323 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
15324
15325 /* Text to put at the end of the generated file */