b6c0cee8b6026b6a5f0bff487bb5fa88517b377c
[ldk-c-bindings] / lightning-c-bindings / include / lightning.h
1 /* Text to put at the beginning of the generated file. Probably a license. */
2
3 /* Generated with cbindgen:0.16.0 */
4
5 /* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
6
7 #include <stdarg.h>
8 #include <stdbool.h>
9 #include <stdint.h>
10
11
12 /**
13  * An error when accessing the chain via [`Access`].
14  */
15 typedef enum LDKAccessError {
16    /**
17     * The requested chain is unknown.
18     */
19    LDKAccessError_UnknownChain,
20    /**
21     * The requested transaction doesn't exist or hasn't confirmed.
22     */
23    LDKAccessError_UnknownTx,
24    /**
25     * Must be last for serialization purposes
26     */
27    LDKAccessError_Sentinel,
28 } LDKAccessError;
29
30 /**
31  * An error enum representing a failure to persist a channel monitor update.
32  */
33 typedef enum LDKChannelMonitorUpdateErr {
34    /**
35     * Used to indicate a temporary failure (eg connection to a watchtower or remote backup of
36     * our state failed, but is expected to succeed at some point in the future).
37     *
38     * Such a failure will \"freeze\" a channel, preventing us from revoking old states or
39     * submitting new commitment transactions to the counterparty. Once the update(s) which failed
40     * have been successfully applied, ChannelManager::channel_monitor_updated can be used to
41     * restore the channel to an operational state.
42     *
43     * Note that a given ChannelManager will *never* re-generate a given ChannelMonitorUpdate. If
44     * you return a TemporaryFailure you must ensure that it is written to disk safely before
45     * writing out the latest ChannelManager state.
46     *
47     * Even when a channel has been \"frozen\" updates to the ChannelMonitor can continue to occur
48     * (eg if an inbound HTLC which we forwarded was claimed upstream resulting in us attempting
49     * to claim it on this channel) and those updates must be applied wherever they can be. At
50     * least one such updated ChannelMonitor must be persisted otherwise PermanentFailure should
51     * be returned to get things on-chain ASAP using only the in-memory copy. Obviously updates to
52     * the channel which would invalidate previous ChannelMonitors are not made when a channel has
53     * been \"frozen\".
54     *
55     * Note that even if updates made after TemporaryFailure succeed you must still call
56     * channel_monitor_updated to ensure you have the latest monitor and re-enable normal channel
57     * operation.
58     *
59     * Note that the update being processed here will not be replayed for you when you call
60     * ChannelManager::channel_monitor_updated, so you must store the update itself along
61     * with the persisted ChannelMonitor on your own local disk prior to returning a
62     * TemporaryFailure. You may, of course, employ a journaling approach, storing only the
63     * ChannelMonitorUpdate on disk without updating the monitor itself, replaying the journal at
64     * reload-time.
65     *
66     * For deployments where a copy of ChannelMonitors and other local state are backed up in a
67     * remote location (with local copies persisted immediately), it is anticipated that all
68     * updates will return TemporaryFailure until the remote copies could be updated.
69     */
70    LDKChannelMonitorUpdateErr_TemporaryFailure,
71    /**
72     * Used to indicate no further channel monitor updates will be allowed (eg we've moved on to a
73     * different watchtower and cannot update with all watchtowers that were previously informed
74     * of this channel).
75     *
76     * At reception of this error, ChannelManager will force-close the channel and return at
77     * least a final ChannelMonitorUpdate::ChannelForceClosed which must be delivered to at
78     * least one ChannelMonitor copy. Revocation secret MUST NOT be released and offchain channel
79     * update must be rejected.
80     *
81     * This failure may also signal a failure to update the local persisted copy of one of
82     * the channel monitor instance.
83     *
84     * Note that even when you fail a holder commitment transaction update, you must store the
85     * update to ensure you can claim from it in case of a duplicate copy of this ChannelMonitor
86     * broadcasts it (e.g distributed channel-monitor deployment)
87     *
88     * In case of distributed watchtowers deployment, the new version must be written to disk, as
89     * state may have been stored but rejected due to a block forcing a commitment broadcast. This
90     * storage is used to claim outputs of rejected state confirmed onchain by another watchtower,
91     * lagging behind on block processing.
92     */
93    LDKChannelMonitorUpdateErr_PermanentFailure,
94    /**
95     * Must be last for serialization purposes
96     */
97    LDKChannelMonitorUpdateErr_Sentinel,
98 } LDKChannelMonitorUpdateErr;
99
100 /**
101  * An enum that represents the speed at which we want a transaction to confirm used for feerate
102  * estimation.
103  */
104 typedef enum LDKConfirmationTarget {
105    /**
106     * We are happy with this transaction confirming slowly when feerate drops some.
107     */
108    LDKConfirmationTarget_Background,
109    /**
110     * We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
111     */
112    LDKConfirmationTarget_Normal,
113    /**
114     * We'd like this transaction to confirm in the next few blocks.
115     */
116    LDKConfirmationTarget_HighPriority,
117    /**
118     * Must be last for serialization purposes
119     */
120    LDKConfirmationTarget_Sentinel,
121 } LDKConfirmationTarget;
122
123 /**
124  * An enum representing the available verbosity levels of the logger.
125  */
126 typedef enum LDKLevel {
127    /**
128     *Designates logger being silent
129     */
130    LDKLevel_Off,
131    /**
132     * Designates very serious errors
133     */
134    LDKLevel_Error,
135    /**
136     * Designates hazardous situations
137     */
138    LDKLevel_Warn,
139    /**
140     * Designates useful information
141     */
142    LDKLevel_Info,
143    /**
144     * Designates lower priority information
145     */
146    LDKLevel_Debug,
147    /**
148     * Designates very low priority, often extremely verbose, information
149     */
150    LDKLevel_Trace,
151    /**
152     * Must be last for serialization purposes
153     */
154    LDKLevel_Sentinel,
155 } LDKLevel;
156
157 /**
158  * An enum representing the possible Bitcoin or test networks which we can run on
159  */
160 typedef enum LDKNetwork {
161    /**
162     * The main Bitcoin blockchain.
163     */
164    LDKNetwork_Bitcoin,
165    /**
166     * The testnet3 blockchain.
167     */
168    LDKNetwork_Testnet,
169    /**
170     * A local test blockchain.
171     */
172    LDKNetwork_Regtest,
173    /**
174     * A blockchain on which blocks are signed instead of mined.
175     */
176    LDKNetwork_Signet,
177    /**
178     * Must be last for serialization purposes
179     */
180    LDKNetwork_Sentinel,
181 } LDKNetwork;
182
183 /**
184  * Represents an error returned from libsecp256k1 during validation of some secp256k1 data
185  */
186 typedef enum LDKSecp256k1Error {
187    /**
188     * Signature failed verification
189     */
190    LDKSecp256k1Error_IncorrectSignature,
191    /**
192     * Badly sized message ("messages" are actually fixed-sized digests; see the MESSAGE_SIZE constant)
193     */
194    LDKSecp256k1Error_InvalidMessage,
195    /**
196     * Bad public key
197     */
198    LDKSecp256k1Error_InvalidPublicKey,
199    /**
200     * Bad signature
201     */
202    LDKSecp256k1Error_InvalidSignature,
203    /**
204     * Bad secret key
205     */
206    LDKSecp256k1Error_InvalidSecretKey,
207    /**
208     * Bad recovery id
209     */
210    LDKSecp256k1Error_InvalidRecoveryId,
211    /**
212     * Invalid tweak for add_assign or mul_assign
213     */
214    LDKSecp256k1Error_InvalidTweak,
215    /**
216     * tweak_add_check failed on an xonly public key
217     */
218    LDKSecp256k1Error_TweakCheckFailed,
219    /**
220     * Didn't pass enough memory to context creation with preallocated memory
221     */
222    LDKSecp256k1Error_NotEnoughMemory,
223    /**
224     * Must be last for serialization purposes
225     */
226    LDKSecp256k1Error_Sentinel,
227 } LDKSecp256k1Error;
228
229 /**
230  * A serialized transaction, in (pointer, length) form.
231  *
232  * This type optionally owns its own memory, and thus the semantics around access change based on
233  * the `data_is_owned` flag. If `data_is_owned` is set, you must call `Transaction_free` to free
234  * the underlying buffer before the object goes out of scope. If `data_is_owned` is not set, any
235  * access to the buffer after the scope in which the object was provided to you is invalid. eg,
236  * access after you return from the call in which a `!data_is_owned` `Transaction` is provided to
237  * you would be invalid.
238  *
239  * Note that, while it may change in the future, because transactions on the Rust side are stored
240  * in a deserialized form, all `Transaction`s generated on the Rust side will have `data_is_owned`
241  * set. Similarly, while it may change in the future, all `Transaction`s you pass to Rust may have
242  * `data_is_owned` either set or unset at your discretion.
243  */
244 typedef struct LDKTransaction {
245    /**
246     * The serialized transaction data.
247     *
248     * This is non-const for your convenience, an object passed to Rust is never written to.
249     */
250    uint8_t *data;
251    /**
252     * The length of the serialized transaction
253     */
254    uintptr_t datalen;
255    /**
256     * Whether the data pointed to by `data` should be freed or not.
257     */
258    bool data_is_owned;
259 } LDKTransaction;
260
261 /**
262  * A dynamically-allocated array of u8s of arbitrary size.
263  * This corresponds to std::vector in C++
264  */
265 typedef struct LDKCVec_u8Z {
266    /**
267     * The elements in the array.
268     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
269     */
270    uint8_t *data;
271    /**
272     * The number of elements pointed to by `data`.
273     */
274    uintptr_t datalen;
275 } LDKCVec_u8Z;
276
277 /**
278  * A transaction output including a scriptPubKey and value.
279  * This type *does* own its own memory, so must be free'd appropriately.
280  */
281 typedef struct LDKTxOut {
282    /**
283     * The script_pubkey in this output
284     */
285    struct LDKCVec_u8Z script_pubkey;
286    /**
287     * The value, in satoshis, of this output
288     */
289    uint64_t value;
290 } LDKTxOut;
291
292 /**
293  * Represents a valid secp256k1 secret key serialized as a 32 byte array.
294  */
295 typedef struct LDKSecretKey {
296    /**
297     * The bytes of the secret key
298     */
299    uint8_t bytes[32];
300 } LDKSecretKey;
301
302 /**
303  * The contents of CResult_SecretKeyErrorZ
304  */
305 typedef union LDKCResult_SecretKeyErrorZPtr {
306    /**
307     * A pointer to the contents in the success state.
308     * Reading from this pointer when `result_ok` is not set is undefined.
309     */
310    struct LDKSecretKey *result;
311    /**
312     * A pointer to the contents in the error state.
313     * Reading from this pointer when `result_ok` is set is undefined.
314     */
315    enum LDKSecp256k1Error *err;
316 } LDKCResult_SecretKeyErrorZPtr;
317
318 /**
319  * A CResult_SecretKeyErrorZ represents the result of a fallible operation,
320  * containing a crate::c_types::SecretKey on success and a crate::c_types::Secp256k1Error on failure.
321  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
322  */
323 typedef struct LDKCResult_SecretKeyErrorZ {
324    /**
325     * The contents of this CResult_SecretKeyErrorZ, accessible via either
326     * `err` or `result` depending on the state of `result_ok`.
327     */
328    union LDKCResult_SecretKeyErrorZPtr contents;
329    /**
330     * Whether this CResult_SecretKeyErrorZ represents a success state.
331     */
332    bool result_ok;
333 } LDKCResult_SecretKeyErrorZ;
334
335 /**
336  * Represents a valid secp256k1 public key serialized in "compressed form" as a 33 byte array.
337  */
338 typedef struct LDKPublicKey {
339    /**
340     * The bytes of the public key
341     */
342    uint8_t compressed_form[33];
343 } LDKPublicKey;
344
345 /**
346  * The contents of CResult_PublicKeyErrorZ
347  */
348 typedef union LDKCResult_PublicKeyErrorZPtr {
349    /**
350     * A pointer to the contents in the success state.
351     * Reading from this pointer when `result_ok` is not set is undefined.
352     */
353    struct LDKPublicKey *result;
354    /**
355     * A pointer to the contents in the error state.
356     * Reading from this pointer when `result_ok` is set is undefined.
357     */
358    enum LDKSecp256k1Error *err;
359 } LDKCResult_PublicKeyErrorZPtr;
360
361 /**
362  * A CResult_PublicKeyErrorZ represents the result of a fallible operation,
363  * containing a crate::c_types::PublicKey on success and a crate::c_types::Secp256k1Error on failure.
364  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
365  */
366 typedef struct LDKCResult_PublicKeyErrorZ {
367    /**
368     * The contents of this CResult_PublicKeyErrorZ, accessible via either
369     * `err` or `result` depending on the state of `result_ok`.
370     */
371    union LDKCResult_PublicKeyErrorZPtr contents;
372    /**
373     * Whether this CResult_PublicKeyErrorZ represents a success state.
374     */
375    bool result_ok;
376 } LDKCResult_PublicKeyErrorZ;
377
378
379
380 /**
381  * The set of public keys which are used in the creation of one commitment transaction.
382  * These are derived from the channel base keys and per-commitment data.
383  *
384  * A broadcaster key is provided from potential broadcaster of the computed transaction.
385  * A countersignatory key is coming from a protocol participant unable to broadcast the
386  * transaction.
387  *
388  * These keys are assumed to be good, either because the code derived them from
389  * channel basepoints via the new function, or they were obtained via
390  * CommitmentTransaction.trust().keys() because we trusted the source of the
391  * pre-calculated keys.
392  */
393 typedef struct MUST_USE_STRUCT LDKTxCreationKeys {
394    /**
395     * A pointer to the opaque Rust object.
396     * Nearly everywhere, inner must be non-null, however in places where
397     * the Rust equivalent takes an Option, it may be set to null to indicate None.
398     */
399    LDKnativeTxCreationKeys *inner;
400    /**
401     * Indicates that this is the only struct which contains the same pointer.
402     * Rust functions which take ownership of an object provided via an argument require
403     * this to be true and invalidate the object pointed to by inner.
404     */
405    bool is_owned;
406 } LDKTxCreationKeys;
407
408
409
410 /**
411  * An error in decoding a message or struct.
412  */
413 typedef struct MUST_USE_STRUCT LDKDecodeError {
414    /**
415     * A pointer to the opaque Rust object.
416     * Nearly everywhere, inner must be non-null, however in places where
417     * the Rust equivalent takes an Option, it may be set to null to indicate None.
418     */
419    LDKnativeDecodeError *inner;
420    /**
421     * Indicates that this is the only struct which contains the same pointer.
422     * Rust functions which take ownership of an object provided via an argument require
423     * this to be true and invalidate the object pointed to by inner.
424     */
425    bool is_owned;
426 } LDKDecodeError;
427
428 /**
429  * The contents of CResult_TxCreationKeysDecodeErrorZ
430  */
431 typedef union LDKCResult_TxCreationKeysDecodeErrorZPtr {
432    /**
433     * A pointer to the contents in the success state.
434     * Reading from this pointer when `result_ok` is not set is undefined.
435     */
436    struct LDKTxCreationKeys *result;
437    /**
438     * A pointer to the contents in the error state.
439     * Reading from this pointer when `result_ok` is set is undefined.
440     */
441    struct LDKDecodeError *err;
442 } LDKCResult_TxCreationKeysDecodeErrorZPtr;
443
444 /**
445  * A CResult_TxCreationKeysDecodeErrorZ represents the result of a fallible operation,
446  * containing a crate::ln::chan_utils::TxCreationKeys on success and a crate::ln::msgs::DecodeError on failure.
447  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
448  */
449 typedef struct LDKCResult_TxCreationKeysDecodeErrorZ {
450    /**
451     * The contents of this CResult_TxCreationKeysDecodeErrorZ, accessible via either
452     * `err` or `result` depending on the state of `result_ok`.
453     */
454    union LDKCResult_TxCreationKeysDecodeErrorZPtr contents;
455    /**
456     * Whether this CResult_TxCreationKeysDecodeErrorZ represents a success state.
457     */
458    bool result_ok;
459 } LDKCResult_TxCreationKeysDecodeErrorZ;
460
461
462
463 /**
464  * One counterparty's public keys which do not change over the life of a channel.
465  */
466 typedef struct MUST_USE_STRUCT LDKChannelPublicKeys {
467    /**
468     * A pointer to the opaque Rust object.
469     * Nearly everywhere, inner must be non-null, however in places where
470     * the Rust equivalent takes an Option, it may be set to null to indicate None.
471     */
472    LDKnativeChannelPublicKeys *inner;
473    /**
474     * Indicates that this is the only struct which contains the same pointer.
475     * Rust functions which take ownership of an object provided via an argument require
476     * this to be true and invalidate the object pointed to by inner.
477     */
478    bool is_owned;
479 } LDKChannelPublicKeys;
480
481 /**
482  * The contents of CResult_ChannelPublicKeysDecodeErrorZ
483  */
484 typedef union LDKCResult_ChannelPublicKeysDecodeErrorZPtr {
485    /**
486     * A pointer to the contents in the success state.
487     * Reading from this pointer when `result_ok` is not set is undefined.
488     */
489    struct LDKChannelPublicKeys *result;
490    /**
491     * A pointer to the contents in the error state.
492     * Reading from this pointer when `result_ok` is set is undefined.
493     */
494    struct LDKDecodeError *err;
495 } LDKCResult_ChannelPublicKeysDecodeErrorZPtr;
496
497 /**
498  * A CResult_ChannelPublicKeysDecodeErrorZ represents the result of a fallible operation,
499  * containing a crate::ln::chan_utils::ChannelPublicKeys on success and a crate::ln::msgs::DecodeError on failure.
500  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
501  */
502 typedef struct LDKCResult_ChannelPublicKeysDecodeErrorZ {
503    /**
504     * The contents of this CResult_ChannelPublicKeysDecodeErrorZ, accessible via either
505     * `err` or `result` depending on the state of `result_ok`.
506     */
507    union LDKCResult_ChannelPublicKeysDecodeErrorZPtr contents;
508    /**
509     * Whether this CResult_ChannelPublicKeysDecodeErrorZ represents a success state.
510     */
511    bool result_ok;
512 } LDKCResult_ChannelPublicKeysDecodeErrorZ;
513
514 /**
515  * The contents of CResult_TxCreationKeysErrorZ
516  */
517 typedef union LDKCResult_TxCreationKeysErrorZPtr {
518    /**
519     * A pointer to the contents in the success state.
520     * Reading from this pointer when `result_ok` is not set is undefined.
521     */
522    struct LDKTxCreationKeys *result;
523    /**
524     * A pointer to the contents in the error state.
525     * Reading from this pointer when `result_ok` is set is undefined.
526     */
527    enum LDKSecp256k1Error *err;
528 } LDKCResult_TxCreationKeysErrorZPtr;
529
530 /**
531  * A CResult_TxCreationKeysErrorZ represents the result of a fallible operation,
532  * containing a crate::ln::chan_utils::TxCreationKeys on success and a crate::c_types::Secp256k1Error on failure.
533  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
534  */
535 typedef struct LDKCResult_TxCreationKeysErrorZ {
536    /**
537     * The contents of this CResult_TxCreationKeysErrorZ, accessible via either
538     * `err` or `result` depending on the state of `result_ok`.
539     */
540    union LDKCResult_TxCreationKeysErrorZPtr contents;
541    /**
542     * Whether this CResult_TxCreationKeysErrorZ represents a success state.
543     */
544    bool result_ok;
545 } LDKCResult_TxCreationKeysErrorZ;
546
547 /**
548  * An enum which can either contain a u32 or not
549  */
550 typedef enum LDKCOption_u32Z_Tag {
551    /**
552     * When we're in this state, this COption_u32Z contains a u32
553     */
554    LDKCOption_u32Z_Some,
555    /**
556     * When we're in this state, this COption_u32Z contains nothing
557     */
558    LDKCOption_u32Z_None,
559    /**
560     * Must be last for serialization purposes
561     */
562    LDKCOption_u32Z_Sentinel,
563 } LDKCOption_u32Z_Tag;
564
565 typedef struct LDKCOption_u32Z {
566    LDKCOption_u32Z_Tag tag;
567    union {
568       struct {
569          uint32_t some;
570       };
571    };
572 } LDKCOption_u32Z;
573
574
575
576 /**
577  * Information about an HTLC as it appears in a commitment transaction
578  */
579 typedef struct MUST_USE_STRUCT LDKHTLCOutputInCommitment {
580    /**
581     * A pointer to the opaque Rust object.
582     * Nearly everywhere, inner must be non-null, however in places where
583     * the Rust equivalent takes an Option, it may be set to null to indicate None.
584     */
585    LDKnativeHTLCOutputInCommitment *inner;
586    /**
587     * Indicates that this is the only struct which contains the same pointer.
588     * Rust functions which take ownership of an object provided via an argument require
589     * this to be true and invalidate the object pointed to by inner.
590     */
591    bool is_owned;
592 } LDKHTLCOutputInCommitment;
593
594 /**
595  * The contents of CResult_HTLCOutputInCommitmentDecodeErrorZ
596  */
597 typedef union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr {
598    /**
599     * A pointer to the contents in the success state.
600     * Reading from this pointer when `result_ok` is not set is undefined.
601     */
602    struct LDKHTLCOutputInCommitment *result;
603    /**
604     * A pointer to the contents in the error state.
605     * Reading from this pointer when `result_ok` is set is undefined.
606     */
607    struct LDKDecodeError *err;
608 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr;
609
610 /**
611  * A CResult_HTLCOutputInCommitmentDecodeErrorZ represents the result of a fallible operation,
612  * containing a crate::ln::chan_utils::HTLCOutputInCommitment on success and a crate::ln::msgs::DecodeError on failure.
613  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
614  */
615 typedef struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ {
616    /**
617     * The contents of this CResult_HTLCOutputInCommitmentDecodeErrorZ, accessible via either
618     * `err` or `result` depending on the state of `result_ok`.
619     */
620    union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr contents;
621    /**
622     * Whether this CResult_HTLCOutputInCommitmentDecodeErrorZ represents a success state.
623     */
624    bool result_ok;
625 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZ;
626
627
628
629 /**
630  * Late-bound per-channel counterparty data used to build transactions.
631  */
632 typedef struct MUST_USE_STRUCT LDKCounterpartyChannelTransactionParameters {
633    /**
634     * A pointer to the opaque Rust object.
635     * Nearly everywhere, inner must be non-null, however in places where
636     * the Rust equivalent takes an Option, it may be set to null to indicate None.
637     */
638    LDKnativeCounterpartyChannelTransactionParameters *inner;
639    /**
640     * Indicates that this is the only struct which contains the same pointer.
641     * Rust functions which take ownership of an object provided via an argument require
642     * this to be true and invalidate the object pointed to by inner.
643     */
644    bool is_owned;
645 } LDKCounterpartyChannelTransactionParameters;
646
647 /**
648  * The contents of CResult_CounterpartyChannelTransactionParametersDecodeErrorZ
649  */
650 typedef union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr {
651    /**
652     * A pointer to the contents in the success state.
653     * Reading from this pointer when `result_ok` is not set is undefined.
654     */
655    struct LDKCounterpartyChannelTransactionParameters *result;
656    /**
657     * A pointer to the contents in the error state.
658     * Reading from this pointer when `result_ok` is set is undefined.
659     */
660    struct LDKDecodeError *err;
661 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr;
662
663 /**
664  * A CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
665  * containing a crate::ln::chan_utils::CounterpartyChannelTransactionParameters on success and a crate::ln::msgs::DecodeError on failure.
666  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
667  */
668 typedef struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
669    /**
670     * The contents of this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ, accessible via either
671     * `err` or `result` depending on the state of `result_ok`.
672     */
673    union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr contents;
674    /**
675     * Whether this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents a success state.
676     */
677    bool result_ok;
678 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
679
680
681
682 /**
683  * Per-channel data used to build transactions in conjunction with the per-commitment data (CommitmentTransaction).
684  * The fields are organized by holder/counterparty.
685  *
686  * Normally, this is converted to the broadcaster/countersignatory-organized DirectedChannelTransactionParameters
687  * before use, via the as_holder_broadcastable and as_counterparty_broadcastable functions.
688  */
689 typedef struct MUST_USE_STRUCT LDKChannelTransactionParameters {
690    /**
691     * A pointer to the opaque Rust object.
692     * Nearly everywhere, inner must be non-null, however in places where
693     * the Rust equivalent takes an Option, it may be set to null to indicate None.
694     */
695    LDKnativeChannelTransactionParameters *inner;
696    /**
697     * Indicates that this is the only struct which contains the same pointer.
698     * Rust functions which take ownership of an object provided via an argument require
699     * this to be true and invalidate the object pointed to by inner.
700     */
701    bool is_owned;
702 } LDKChannelTransactionParameters;
703
704 /**
705  * The contents of CResult_ChannelTransactionParametersDecodeErrorZ
706  */
707 typedef union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr {
708    /**
709     * A pointer to the contents in the success state.
710     * Reading from this pointer when `result_ok` is not set is undefined.
711     */
712    struct LDKChannelTransactionParameters *result;
713    /**
714     * A pointer to the contents in the error state.
715     * Reading from this pointer when `result_ok` is set is undefined.
716     */
717    struct LDKDecodeError *err;
718 } LDKCResult_ChannelTransactionParametersDecodeErrorZPtr;
719
720 /**
721  * A CResult_ChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
722  * containing a crate::ln::chan_utils::ChannelTransactionParameters on success and a crate::ln::msgs::DecodeError on failure.
723  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
724  */
725 typedef struct LDKCResult_ChannelTransactionParametersDecodeErrorZ {
726    /**
727     * The contents of this CResult_ChannelTransactionParametersDecodeErrorZ, accessible via either
728     * `err` or `result` depending on the state of `result_ok`.
729     */
730    union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr contents;
731    /**
732     * Whether this CResult_ChannelTransactionParametersDecodeErrorZ represents a success state.
733     */
734    bool result_ok;
735 } LDKCResult_ChannelTransactionParametersDecodeErrorZ;
736
737 /**
738  * Represents a secp256k1 signature serialized as two 32-byte numbers
739  */
740 typedef struct LDKSignature {
741    /**
742     * The bytes of the signature in "compact" form
743     */
744    uint8_t compact_form[64];
745 } LDKSignature;
746
747 /**
748  * A dynamically-allocated array of crate::c_types::Signatures of arbitrary size.
749  * This corresponds to std::vector in C++
750  */
751 typedef struct LDKCVec_SignatureZ {
752    /**
753     * The elements in the array.
754     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
755     */
756    struct LDKSignature *data;
757    /**
758     * The number of elements pointed to by `data`.
759     */
760    uintptr_t datalen;
761 } LDKCVec_SignatureZ;
762
763
764
765 /**
766  * Information needed to build and sign a holder's commitment transaction.
767  *
768  * The transaction is only signed once we are ready to broadcast.
769  */
770 typedef struct MUST_USE_STRUCT LDKHolderCommitmentTransaction {
771    /**
772     * A pointer to the opaque Rust object.
773     * Nearly everywhere, inner must be non-null, however in places where
774     * the Rust equivalent takes an Option, it may be set to null to indicate None.
775     */
776    LDKnativeHolderCommitmentTransaction *inner;
777    /**
778     * Indicates that this is the only struct which contains the same pointer.
779     * Rust functions which take ownership of an object provided via an argument require
780     * this to be true and invalidate the object pointed to by inner.
781     */
782    bool is_owned;
783 } LDKHolderCommitmentTransaction;
784
785 /**
786  * The contents of CResult_HolderCommitmentTransactionDecodeErrorZ
787  */
788 typedef union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr {
789    /**
790     * A pointer to the contents in the success state.
791     * Reading from this pointer when `result_ok` is not set is undefined.
792     */
793    struct LDKHolderCommitmentTransaction *result;
794    /**
795     * A pointer to the contents in the error state.
796     * Reading from this pointer when `result_ok` is set is undefined.
797     */
798    struct LDKDecodeError *err;
799 } LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr;
800
801 /**
802  * A CResult_HolderCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
803  * containing a crate::ln::chan_utils::HolderCommitmentTransaction on success and a crate::ln::msgs::DecodeError on failure.
804  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
805  */
806 typedef struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ {
807    /**
808     * The contents of this CResult_HolderCommitmentTransactionDecodeErrorZ, accessible via either
809     * `err` or `result` depending on the state of `result_ok`.
810     */
811    union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr contents;
812    /**
813     * Whether this CResult_HolderCommitmentTransactionDecodeErrorZ represents a success state.
814     */
815    bool result_ok;
816 } LDKCResult_HolderCommitmentTransactionDecodeErrorZ;
817
818
819
820 /**
821  * A pre-built Bitcoin commitment transaction and its txid.
822  */
823 typedef struct MUST_USE_STRUCT LDKBuiltCommitmentTransaction {
824    /**
825     * A pointer to the opaque Rust object.
826     * Nearly everywhere, inner must be non-null, however in places where
827     * the Rust equivalent takes an Option, it may be set to null to indicate None.
828     */
829    LDKnativeBuiltCommitmentTransaction *inner;
830    /**
831     * Indicates that this is the only struct which contains the same pointer.
832     * Rust functions which take ownership of an object provided via an argument require
833     * this to be true and invalidate the object pointed to by inner.
834     */
835    bool is_owned;
836 } LDKBuiltCommitmentTransaction;
837
838 /**
839  * The contents of CResult_BuiltCommitmentTransactionDecodeErrorZ
840  */
841 typedef union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr {
842    /**
843     * A pointer to the contents in the success state.
844     * Reading from this pointer when `result_ok` is not set is undefined.
845     */
846    struct LDKBuiltCommitmentTransaction *result;
847    /**
848     * A pointer to the contents in the error state.
849     * Reading from this pointer when `result_ok` is set is undefined.
850     */
851    struct LDKDecodeError *err;
852 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr;
853
854 /**
855  * A CResult_BuiltCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
856  * containing a crate::ln::chan_utils::BuiltCommitmentTransaction on success and a crate::ln::msgs::DecodeError on failure.
857  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
858  */
859 typedef struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ {
860    /**
861     * The contents of this CResult_BuiltCommitmentTransactionDecodeErrorZ, accessible via either
862     * `err` or `result` depending on the state of `result_ok`.
863     */
864    union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr contents;
865    /**
866     * Whether this CResult_BuiltCommitmentTransactionDecodeErrorZ represents a success state.
867     */
868    bool result_ok;
869 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZ;
870
871
872
873 /**
874  * This class tracks the per-transaction information needed to build a commitment transaction and to
875  * actually build it and sign.  It is used for holder transactions that we sign only when needed
876  * and for transactions we sign for the counterparty.
877  *
878  * This class can be used inside a signer implementation to generate a signature given the relevant
879  * secret key.
880  */
881 typedef struct MUST_USE_STRUCT LDKCommitmentTransaction {
882    /**
883     * A pointer to the opaque Rust object.
884     * Nearly everywhere, inner must be non-null, however in places where
885     * the Rust equivalent takes an Option, it may be set to null to indicate None.
886     */
887    LDKnativeCommitmentTransaction *inner;
888    /**
889     * Indicates that this is the only struct which contains the same pointer.
890     * Rust functions which take ownership of an object provided via an argument require
891     * this to be true and invalidate the object pointed to by inner.
892     */
893    bool is_owned;
894 } LDKCommitmentTransaction;
895
896 /**
897  * The contents of CResult_CommitmentTransactionDecodeErrorZ
898  */
899 typedef union LDKCResult_CommitmentTransactionDecodeErrorZPtr {
900    /**
901     * A pointer to the contents in the success state.
902     * Reading from this pointer when `result_ok` is not set is undefined.
903     */
904    struct LDKCommitmentTransaction *result;
905    /**
906     * A pointer to the contents in the error state.
907     * Reading from this pointer when `result_ok` is set is undefined.
908     */
909    struct LDKDecodeError *err;
910 } LDKCResult_CommitmentTransactionDecodeErrorZPtr;
911
912 /**
913  * A CResult_CommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
914  * containing a crate::ln::chan_utils::CommitmentTransaction on success and a crate::ln::msgs::DecodeError on failure.
915  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
916  */
917 typedef struct LDKCResult_CommitmentTransactionDecodeErrorZ {
918    /**
919     * The contents of this CResult_CommitmentTransactionDecodeErrorZ, accessible via either
920     * `err` or `result` depending on the state of `result_ok`.
921     */
922    union LDKCResult_CommitmentTransactionDecodeErrorZPtr contents;
923    /**
924     * Whether this CResult_CommitmentTransactionDecodeErrorZ represents a success state.
925     */
926    bool result_ok;
927 } LDKCResult_CommitmentTransactionDecodeErrorZ;
928
929
930
931 /**
932  * A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin
933  * transaction and the transaction creation keys) are trusted.
934  *
935  * See trust() and verify() functions on CommitmentTransaction.
936  *
937  * This structure implements Deref.
938  */
939 typedef struct MUST_USE_STRUCT LDKTrustedCommitmentTransaction {
940    /**
941     * A pointer to the opaque Rust object.
942     * Nearly everywhere, inner must be non-null, however in places where
943     * the Rust equivalent takes an Option, it may be set to null to indicate None.
944     */
945    LDKnativeTrustedCommitmentTransaction *inner;
946    /**
947     * Indicates that this is the only struct which contains the same pointer.
948     * Rust functions which take ownership of an object provided via an argument require
949     * this to be true and invalidate the object pointed to by inner.
950     */
951    bool is_owned;
952 } LDKTrustedCommitmentTransaction;
953
954 /**
955  * The contents of CResult_TrustedCommitmentTransactionNoneZ
956  */
957 typedef union LDKCResult_TrustedCommitmentTransactionNoneZPtr {
958    /**
959     * A pointer to the contents in the success state.
960     * Reading from this pointer when `result_ok` is not set is undefined.
961     */
962    struct LDKTrustedCommitmentTransaction *result;
963    /**
964     * Note that this value is always NULL, as there are no contents in the Err variant
965     */
966    void *err;
967 } LDKCResult_TrustedCommitmentTransactionNoneZPtr;
968
969 /**
970  * A CResult_TrustedCommitmentTransactionNoneZ represents the result of a fallible operation,
971  * containing a crate::ln::chan_utils::TrustedCommitmentTransaction on success and a () on failure.
972  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
973  */
974 typedef struct LDKCResult_TrustedCommitmentTransactionNoneZ {
975    /**
976     * The contents of this CResult_TrustedCommitmentTransactionNoneZ, accessible via either
977     * `err` or `result` depending on the state of `result_ok`.
978     */
979    union LDKCResult_TrustedCommitmentTransactionNoneZPtr contents;
980    /**
981     * Whether this CResult_TrustedCommitmentTransactionNoneZ represents a success state.
982     */
983    bool result_ok;
984 } LDKCResult_TrustedCommitmentTransactionNoneZ;
985
986 /**
987  * The contents of CResult_CVec_SignatureZNoneZ
988  */
989 typedef union LDKCResult_CVec_SignatureZNoneZPtr {
990    /**
991     * A pointer to the contents in the success state.
992     * Reading from this pointer when `result_ok` is not set is undefined.
993     */
994    struct LDKCVec_SignatureZ *result;
995    /**
996     * Note that this value is always NULL, as there are no contents in the Err variant
997     */
998    void *err;
999 } LDKCResult_CVec_SignatureZNoneZPtr;
1000
1001 /**
1002  * A CResult_CVec_SignatureZNoneZ represents the result of a fallible operation,
1003  * containing a crate::c_types::derived::CVec_SignatureZ on success and a () on failure.
1004  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1005  */
1006 typedef struct LDKCResult_CVec_SignatureZNoneZ {
1007    /**
1008     * The contents of this CResult_CVec_SignatureZNoneZ, accessible via either
1009     * `err` or `result` depending on the state of `result_ok`.
1010     */
1011    union LDKCResult_CVec_SignatureZNoneZPtr contents;
1012    /**
1013     * Whether this CResult_CVec_SignatureZNoneZ represents a success state.
1014     */
1015    bool result_ok;
1016 } LDKCResult_CVec_SignatureZNoneZ;
1017
1018
1019
1020 /**
1021  * An accept_channel message to be sent or received from a peer
1022  */
1023 typedef struct MUST_USE_STRUCT LDKAcceptChannel {
1024    /**
1025     * A pointer to the opaque Rust object.
1026     * Nearly everywhere, inner must be non-null, however in places where
1027     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1028     */
1029    LDKnativeAcceptChannel *inner;
1030    /**
1031     * Indicates that this is the only struct which contains the same pointer.
1032     * Rust functions which take ownership of an object provided via an argument require
1033     * this to be true and invalidate the object pointed to by inner.
1034     */
1035    bool is_owned;
1036 } LDKAcceptChannel;
1037
1038
1039
1040 /**
1041  * An open_channel message to be sent or received from a peer
1042  */
1043 typedef struct MUST_USE_STRUCT LDKOpenChannel {
1044    /**
1045     * A pointer to the opaque Rust object.
1046     * Nearly everywhere, inner must be non-null, however in places where
1047     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1048     */
1049    LDKnativeOpenChannel *inner;
1050    /**
1051     * Indicates that this is the only struct which contains the same pointer.
1052     * Rust functions which take ownership of an object provided via an argument require
1053     * this to be true and invalidate the object pointed to by inner.
1054     */
1055    bool is_owned;
1056 } LDKOpenChannel;
1057
1058
1059
1060 /**
1061  * A funding_created message to be sent or received from a peer
1062  */
1063 typedef struct MUST_USE_STRUCT LDKFundingCreated {
1064    /**
1065     * A pointer to the opaque Rust object.
1066     * Nearly everywhere, inner must be non-null, however in places where
1067     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1068     */
1069    LDKnativeFundingCreated *inner;
1070    /**
1071     * Indicates that this is the only struct which contains the same pointer.
1072     * Rust functions which take ownership of an object provided via an argument require
1073     * this to be true and invalidate the object pointed to by inner.
1074     */
1075    bool is_owned;
1076 } LDKFundingCreated;
1077
1078
1079
1080 /**
1081  * A funding_signed message to be sent or received from a peer
1082  */
1083 typedef struct MUST_USE_STRUCT LDKFundingSigned {
1084    /**
1085     * A pointer to the opaque Rust object.
1086     * Nearly everywhere, inner must be non-null, however in places where
1087     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1088     */
1089    LDKnativeFundingSigned *inner;
1090    /**
1091     * Indicates that this is the only struct which contains the same pointer.
1092     * Rust functions which take ownership of an object provided via an argument require
1093     * this to be true and invalidate the object pointed to by inner.
1094     */
1095    bool is_owned;
1096 } LDKFundingSigned;
1097
1098
1099
1100 /**
1101  * A funding_locked message to be sent or received from a peer
1102  */
1103 typedef struct MUST_USE_STRUCT LDKFundingLocked {
1104    /**
1105     * A pointer to the opaque Rust object.
1106     * Nearly everywhere, inner must be non-null, however in places where
1107     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1108     */
1109    LDKnativeFundingLocked *inner;
1110    /**
1111     * Indicates that this is the only struct which contains the same pointer.
1112     * Rust functions which take ownership of an object provided via an argument require
1113     * this to be true and invalidate the object pointed to by inner.
1114     */
1115    bool is_owned;
1116 } LDKFundingLocked;
1117
1118
1119
1120 /**
1121  * An announcement_signatures message to be sent or received from a peer
1122  */
1123 typedef struct MUST_USE_STRUCT LDKAnnouncementSignatures {
1124    /**
1125     * A pointer to the opaque Rust object.
1126     * Nearly everywhere, inner must be non-null, however in places where
1127     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1128     */
1129    LDKnativeAnnouncementSignatures *inner;
1130    /**
1131     * Indicates that this is the only struct which contains the same pointer.
1132     * Rust functions which take ownership of an object provided via an argument require
1133     * this to be true and invalidate the object pointed to by inner.
1134     */
1135    bool is_owned;
1136 } LDKAnnouncementSignatures;
1137
1138
1139
1140 /**
1141  * Struct used to return values from revoke_and_ack messages, containing a bunch of commitment
1142  * transaction updates if they were pending.
1143  */
1144 typedef struct MUST_USE_STRUCT LDKCommitmentUpdate {
1145    /**
1146     * A pointer to the opaque Rust object.
1147     * Nearly everywhere, inner must be non-null, however in places where
1148     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1149     */
1150    LDKnativeCommitmentUpdate *inner;
1151    /**
1152     * Indicates that this is the only struct which contains the same pointer.
1153     * Rust functions which take ownership of an object provided via an argument require
1154     * this to be true and invalidate the object pointed to by inner.
1155     */
1156    bool is_owned;
1157 } LDKCommitmentUpdate;
1158
1159
1160
1161 /**
1162  * A revoke_and_ack message to be sent or received from a peer
1163  */
1164 typedef struct MUST_USE_STRUCT LDKRevokeAndACK {
1165    /**
1166     * A pointer to the opaque Rust object.
1167     * Nearly everywhere, inner must be non-null, however in places where
1168     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1169     */
1170    LDKnativeRevokeAndACK *inner;
1171    /**
1172     * Indicates that this is the only struct which contains the same pointer.
1173     * Rust functions which take ownership of an object provided via an argument require
1174     * this to be true and invalidate the object pointed to by inner.
1175     */
1176    bool is_owned;
1177 } LDKRevokeAndACK;
1178
1179
1180
1181 /**
1182  * A closing_signed message to be sent or received from a peer
1183  */
1184 typedef struct MUST_USE_STRUCT LDKClosingSigned {
1185    /**
1186     * A pointer to the opaque Rust object.
1187     * Nearly everywhere, inner must be non-null, however in places where
1188     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1189     */
1190    LDKnativeClosingSigned *inner;
1191    /**
1192     * Indicates that this is the only struct which contains the same pointer.
1193     * Rust functions which take ownership of an object provided via an argument require
1194     * this to be true and invalidate the object pointed to by inner.
1195     */
1196    bool is_owned;
1197 } LDKClosingSigned;
1198
1199
1200
1201 /**
1202  * A shutdown message to be sent or received from a peer
1203  */
1204 typedef struct MUST_USE_STRUCT LDKShutdown {
1205    /**
1206     * A pointer to the opaque Rust object.
1207     * Nearly everywhere, inner must be non-null, however in places where
1208     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1209     */
1210    LDKnativeShutdown *inner;
1211    /**
1212     * Indicates that this is the only struct which contains the same pointer.
1213     * Rust functions which take ownership of an object provided via an argument require
1214     * this to be true and invalidate the object pointed to by inner.
1215     */
1216    bool is_owned;
1217 } LDKShutdown;
1218
1219
1220
1221 /**
1222  * A channel_reestablish message to be sent or received from a peer
1223  */
1224 typedef struct MUST_USE_STRUCT LDKChannelReestablish {
1225    /**
1226     * A pointer to the opaque Rust object.
1227     * Nearly everywhere, inner must be non-null, however in places where
1228     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1229     */
1230    LDKnativeChannelReestablish *inner;
1231    /**
1232     * Indicates that this is the only struct which contains the same pointer.
1233     * Rust functions which take ownership of an object provided via an argument require
1234     * this to be true and invalidate the object pointed to by inner.
1235     */
1236    bool is_owned;
1237 } LDKChannelReestablish;
1238
1239
1240
1241 /**
1242  * A channel_announcement message to be sent or received from a peer
1243  */
1244 typedef struct MUST_USE_STRUCT LDKChannelAnnouncement {
1245    /**
1246     * A pointer to the opaque Rust object.
1247     * Nearly everywhere, inner must be non-null, however in places where
1248     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1249     */
1250    LDKnativeChannelAnnouncement *inner;
1251    /**
1252     * Indicates that this is the only struct which contains the same pointer.
1253     * Rust functions which take ownership of an object provided via an argument require
1254     * this to be true and invalidate the object pointed to by inner.
1255     */
1256    bool is_owned;
1257 } LDKChannelAnnouncement;
1258
1259
1260
1261 /**
1262  * A channel_update message to be sent or received from a peer
1263  */
1264 typedef struct MUST_USE_STRUCT LDKChannelUpdate {
1265    /**
1266     * A pointer to the opaque Rust object.
1267     * Nearly everywhere, inner must be non-null, however in places where
1268     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1269     */
1270    LDKnativeChannelUpdate *inner;
1271    /**
1272     * Indicates that this is the only struct which contains the same pointer.
1273     * Rust functions which take ownership of an object provided via an argument require
1274     * this to be true and invalidate the object pointed to by inner.
1275     */
1276    bool is_owned;
1277 } LDKChannelUpdate;
1278
1279
1280
1281 /**
1282  * A node_announcement message to be sent or received from a peer
1283  */
1284 typedef struct MUST_USE_STRUCT LDKNodeAnnouncement {
1285    /**
1286     * A pointer to the opaque Rust object.
1287     * Nearly everywhere, inner must be non-null, however in places where
1288     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1289     */
1290    LDKnativeNodeAnnouncement *inner;
1291    /**
1292     * Indicates that this is the only struct which contains the same pointer.
1293     * Rust functions which take ownership of an object provided via an argument require
1294     * this to be true and invalidate the object pointed to by inner.
1295     */
1296    bool is_owned;
1297 } LDKNodeAnnouncement;
1298
1299
1300
1301 /**
1302  * An error message to be sent or received from a peer
1303  */
1304 typedef struct MUST_USE_STRUCT LDKErrorMessage {
1305    /**
1306     * A pointer to the opaque Rust object.
1307     * Nearly everywhere, inner must be non-null, however in places where
1308     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1309     */
1310    LDKnativeErrorMessage *inner;
1311    /**
1312     * Indicates that this is the only struct which contains the same pointer.
1313     * Rust functions which take ownership of an object provided via an argument require
1314     * this to be true and invalidate the object pointed to by inner.
1315     */
1316    bool is_owned;
1317 } LDKErrorMessage;
1318
1319 /**
1320  * Used to put an error message in a LightningError
1321  */
1322 typedef enum LDKErrorAction_Tag {
1323    /**
1324     * The peer took some action which made us think they were useless. Disconnect them.
1325     */
1326    LDKErrorAction_DisconnectPeer,
1327    /**
1328     * The peer did something harmless that we weren't able to process, just log and ignore
1329     */
1330    LDKErrorAction_IgnoreError,
1331    /**
1332     * The peer did something incorrect. Tell them.
1333     */
1334    LDKErrorAction_SendErrorMessage,
1335    /**
1336     * Must be last for serialization purposes
1337     */
1338    LDKErrorAction_Sentinel,
1339 } LDKErrorAction_Tag;
1340
1341 typedef struct LDKErrorAction_LDKDisconnectPeer_Body {
1342    /**
1343     * An error message which we should make an effort to send before we disconnect.
1344     */
1345    struct LDKErrorMessage msg;
1346 } LDKErrorAction_LDKDisconnectPeer_Body;
1347
1348 typedef struct LDKErrorAction_LDKSendErrorMessage_Body {
1349    /**
1350     * The message to send.
1351     */
1352    struct LDKErrorMessage msg;
1353 } LDKErrorAction_LDKSendErrorMessage_Body;
1354
1355 typedef struct MUST_USE_STRUCT LDKErrorAction {
1356    LDKErrorAction_Tag tag;
1357    union {
1358       LDKErrorAction_LDKDisconnectPeer_Body disconnect_peer;
1359       LDKErrorAction_LDKSendErrorMessage_Body send_error_message;
1360    };
1361 } LDKErrorAction;
1362
1363 /**
1364  * The information we received from a peer along the route of a payment we originated. This is
1365  * returned by ChannelMessageHandler::handle_update_fail_htlc to be passed into
1366  * RoutingMessageHandler::handle_htlc_fail_channel_update to update our network map.
1367  */
1368 typedef enum LDKHTLCFailChannelUpdate_Tag {
1369    /**
1370     * We received an error which included a full ChannelUpdate message.
1371     */
1372    LDKHTLCFailChannelUpdate_ChannelUpdateMessage,
1373    /**
1374     * We received an error which indicated only that a channel has been closed
1375     */
1376    LDKHTLCFailChannelUpdate_ChannelClosed,
1377    /**
1378     * We received an error which indicated only that a node has failed
1379     */
1380    LDKHTLCFailChannelUpdate_NodeFailure,
1381    /**
1382     * Must be last for serialization purposes
1383     */
1384    LDKHTLCFailChannelUpdate_Sentinel,
1385 } LDKHTLCFailChannelUpdate_Tag;
1386
1387 typedef struct LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body {
1388    /**
1389     * The unwrapped message we received
1390     */
1391    struct LDKChannelUpdate msg;
1392 } LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body;
1393
1394 typedef struct LDKHTLCFailChannelUpdate_LDKChannelClosed_Body {
1395    /**
1396     * The short_channel_id which has now closed.
1397     */
1398    uint64_t short_channel_id;
1399    /**
1400     * when this true, this channel should be permanently removed from the
1401     * consideration. Otherwise, this channel can be restored as new channel_update is received
1402     */
1403    bool is_permanent;
1404 } LDKHTLCFailChannelUpdate_LDKChannelClosed_Body;
1405
1406 typedef struct LDKHTLCFailChannelUpdate_LDKNodeFailure_Body {
1407    /**
1408     * The node_id that has failed.
1409     */
1410    struct LDKPublicKey node_id;
1411    /**
1412     * when this true, node should be permanently removed from the
1413     * consideration. Otherwise, the channels connected to this node can be
1414     * restored as new channel_update is received
1415     */
1416    bool is_permanent;
1417 } LDKHTLCFailChannelUpdate_LDKNodeFailure_Body;
1418
1419 typedef struct MUST_USE_STRUCT LDKHTLCFailChannelUpdate {
1420    LDKHTLCFailChannelUpdate_Tag tag;
1421    union {
1422       LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body channel_update_message;
1423       LDKHTLCFailChannelUpdate_LDKChannelClosed_Body channel_closed;
1424       LDKHTLCFailChannelUpdate_LDKNodeFailure_Body node_failure;
1425    };
1426 } LDKHTLCFailChannelUpdate;
1427
1428
1429
1430 /**
1431  * A query_channel_range message is used to query a peer for channel
1432  * UTXOs in a range of blocks. The recipient of a query makes a best
1433  * effort to reply to the query using one or more reply_channel_range
1434  * messages.
1435  */
1436 typedef struct MUST_USE_STRUCT LDKQueryChannelRange {
1437    /**
1438     * A pointer to the opaque Rust object.
1439     * Nearly everywhere, inner must be non-null, however in places where
1440     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1441     */
1442    LDKnativeQueryChannelRange *inner;
1443    /**
1444     * Indicates that this is the only struct which contains the same pointer.
1445     * Rust functions which take ownership of an object provided via an argument require
1446     * this to be true and invalidate the object pointed to by inner.
1447     */
1448    bool is_owned;
1449 } LDKQueryChannelRange;
1450
1451
1452
1453 /**
1454  * A query_short_channel_ids message is used to query a peer for
1455  * routing gossip messages related to one or more short_channel_ids.
1456  * The query recipient will reply with the latest, if available,
1457  * channel_announcement, channel_update and node_announcement messages
1458  * it maintains for the requested short_channel_ids followed by a
1459  * reply_short_channel_ids_end message. The short_channel_ids sent in
1460  * this query are encoded. We only support encoding_type=0 uncompressed
1461  * serialization and do not support encoding_type=1 zlib serialization.
1462  */
1463 typedef struct MUST_USE_STRUCT LDKQueryShortChannelIds {
1464    /**
1465     * A pointer to the opaque Rust object.
1466     * Nearly everywhere, inner must be non-null, however in places where
1467     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1468     */
1469    LDKnativeQueryShortChannelIds *inner;
1470    /**
1471     * Indicates that this is the only struct which contains the same pointer.
1472     * Rust functions which take ownership of an object provided via an argument require
1473     * this to be true and invalidate the object pointed to by inner.
1474     */
1475    bool is_owned;
1476 } LDKQueryShortChannelIds;
1477
1478
1479
1480 /**
1481  * A reply_channel_range message is a reply to a query_channel_range
1482  * message. Multiple reply_channel_range messages can be sent in reply
1483  * to a single query_channel_range message. The query recipient makes a
1484  * best effort to respond based on their local network view which may
1485  * not be a perfect view of the network. The short_channel_ids in the
1486  * reply are encoded. We only support encoding_type=0 uncompressed
1487  * serialization and do not support encoding_type=1 zlib serialization.
1488  */
1489 typedef struct MUST_USE_STRUCT LDKReplyChannelRange {
1490    /**
1491     * A pointer to the opaque Rust object.
1492     * Nearly everywhere, inner must be non-null, however in places where
1493     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1494     */
1495    LDKnativeReplyChannelRange *inner;
1496    /**
1497     * Indicates that this is the only struct which contains the same pointer.
1498     * Rust functions which take ownership of an object provided via an argument require
1499     * this to be true and invalidate the object pointed to by inner.
1500     */
1501    bool is_owned;
1502 } LDKReplyChannelRange;
1503
1504 /**
1505  * An event generated by ChannelManager which indicates a message should be sent to a peer (or
1506  * broadcast to most peers).
1507  * These events are handled by PeerManager::process_events if you are using a PeerManager.
1508  */
1509 typedef enum LDKMessageSendEvent_Tag {
1510    /**
1511     * Used to indicate that we've accepted a channel open and should send the accept_channel
1512     * message provided to the given peer.
1513     */
1514    LDKMessageSendEvent_SendAcceptChannel,
1515    /**
1516     * Used to indicate that we've initiated a channel open and should send the open_channel
1517     * message provided to the given peer.
1518     */
1519    LDKMessageSendEvent_SendOpenChannel,
1520    /**
1521     * Used to indicate that a funding_created message should be sent to the peer with the given node_id.
1522     */
1523    LDKMessageSendEvent_SendFundingCreated,
1524    /**
1525     * Used to indicate that a funding_signed message should be sent to the peer with the given node_id.
1526     */
1527    LDKMessageSendEvent_SendFundingSigned,
1528    /**
1529     * Used to indicate that a funding_locked message should be sent to the peer with the given node_id.
1530     */
1531    LDKMessageSendEvent_SendFundingLocked,
1532    /**
1533     * Used to indicate that an announcement_signatures message should be sent to the peer with the given node_id.
1534     */
1535    LDKMessageSendEvent_SendAnnouncementSignatures,
1536    /**
1537     * Used to indicate that a series of HTLC update messages, as well as a commitment_signed
1538     * message should be sent to the peer with the given node_id.
1539     */
1540    LDKMessageSendEvent_UpdateHTLCs,
1541    /**
1542     * Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
1543     */
1544    LDKMessageSendEvent_SendRevokeAndACK,
1545    /**
1546     * Used to indicate that a closing_signed message should be sent to the peer with the given node_id.
1547     */
1548    LDKMessageSendEvent_SendClosingSigned,
1549    /**
1550     * Used to indicate that a shutdown message should be sent to the peer with the given node_id.
1551     */
1552    LDKMessageSendEvent_SendShutdown,
1553    /**
1554     * Used to indicate that a channel_reestablish message should be sent to the peer with the given node_id.
1555     */
1556    LDKMessageSendEvent_SendChannelReestablish,
1557    /**
1558     * Used to indicate that a channel_announcement and channel_update should be broadcast to all
1559     * peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
1560     *
1561     * Note that after doing so, you very likely (unless you did so very recently) want to call
1562     * ChannelManager::broadcast_node_announcement to trigger a BroadcastNodeAnnouncement event.
1563     * This ensures that any nodes which see our channel_announcement also have a relevant
1564     * node_announcement, including relevant feature flags which may be important for routing
1565     * through or to us.
1566     */
1567    LDKMessageSendEvent_BroadcastChannelAnnouncement,
1568    /**
1569     * Used to indicate that a node_announcement should be broadcast to all peers.
1570     */
1571    LDKMessageSendEvent_BroadcastNodeAnnouncement,
1572    /**
1573     * Used to indicate that a channel_update should be broadcast to all peers.
1574     */
1575    LDKMessageSendEvent_BroadcastChannelUpdate,
1576    /**
1577     * Broadcast an error downstream to be handled
1578     */
1579    LDKMessageSendEvent_HandleError,
1580    /**
1581     * When a payment fails we may receive updates back from the hop where it failed. In such
1582     * cases this event is generated so that we can inform the network graph of this information.
1583     */
1584    LDKMessageSendEvent_PaymentFailureNetworkUpdate,
1585    /**
1586     * Query a peer for channels with funding transaction UTXOs in a block range.
1587     */
1588    LDKMessageSendEvent_SendChannelRangeQuery,
1589    /**
1590     * Request routing gossip messages from a peer for a list of channels identified by
1591     * their short_channel_ids.
1592     */
1593    LDKMessageSendEvent_SendShortIdsQuery,
1594    /**
1595     * Sends a reply to a channel range query. This may be one of several SendReplyChannelRange events
1596     * emitted during processing of the query.
1597     */
1598    LDKMessageSendEvent_SendReplyChannelRange,
1599    /**
1600     * Must be last for serialization purposes
1601     */
1602    LDKMessageSendEvent_Sentinel,
1603 } LDKMessageSendEvent_Tag;
1604
1605 typedef struct LDKMessageSendEvent_LDKSendAcceptChannel_Body {
1606    /**
1607     * The node_id of the node which should receive this message
1608     */
1609    struct LDKPublicKey node_id;
1610    /**
1611     * The message which should be sent.
1612     */
1613    struct LDKAcceptChannel msg;
1614 } LDKMessageSendEvent_LDKSendAcceptChannel_Body;
1615
1616 typedef struct LDKMessageSendEvent_LDKSendOpenChannel_Body {
1617    /**
1618     * The node_id of the node which should receive this message
1619     */
1620    struct LDKPublicKey node_id;
1621    /**
1622     * The message which should be sent.
1623     */
1624    struct LDKOpenChannel msg;
1625 } LDKMessageSendEvent_LDKSendOpenChannel_Body;
1626
1627 typedef struct LDKMessageSendEvent_LDKSendFundingCreated_Body {
1628    /**
1629     * The node_id of the node which should receive this message
1630     */
1631    struct LDKPublicKey node_id;
1632    /**
1633     * The message which should be sent.
1634     */
1635    struct LDKFundingCreated msg;
1636 } LDKMessageSendEvent_LDKSendFundingCreated_Body;
1637
1638 typedef struct LDKMessageSendEvent_LDKSendFundingSigned_Body {
1639    /**
1640     * The node_id of the node which should receive this message
1641     */
1642    struct LDKPublicKey node_id;
1643    /**
1644     * The message which should be sent.
1645     */
1646    struct LDKFundingSigned msg;
1647 } LDKMessageSendEvent_LDKSendFundingSigned_Body;
1648
1649 typedef struct LDKMessageSendEvent_LDKSendFundingLocked_Body {
1650    /**
1651     * The node_id of the node which should receive these message(s)
1652     */
1653    struct LDKPublicKey node_id;
1654    /**
1655     * The funding_locked message which should be sent.
1656     */
1657    struct LDKFundingLocked msg;
1658 } LDKMessageSendEvent_LDKSendFundingLocked_Body;
1659
1660 typedef struct LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body {
1661    /**
1662     * The node_id of the node which should receive these message(s)
1663     */
1664    struct LDKPublicKey node_id;
1665    /**
1666     * The announcement_signatures message which should be sent.
1667     */
1668    struct LDKAnnouncementSignatures msg;
1669 } LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body;
1670
1671 typedef struct LDKMessageSendEvent_LDKUpdateHTLCs_Body {
1672    /**
1673     * The node_id of the node which should receive these message(s)
1674     */
1675    struct LDKPublicKey node_id;
1676    /**
1677     * The update messages which should be sent. ALL messages in the struct should be sent!
1678     */
1679    struct LDKCommitmentUpdate updates;
1680 } LDKMessageSendEvent_LDKUpdateHTLCs_Body;
1681
1682 typedef struct LDKMessageSendEvent_LDKSendRevokeAndACK_Body {
1683    /**
1684     * The node_id of the node which should receive this message
1685     */
1686    struct LDKPublicKey node_id;
1687    /**
1688     * The message which should be sent.
1689     */
1690    struct LDKRevokeAndACK msg;
1691 } LDKMessageSendEvent_LDKSendRevokeAndACK_Body;
1692
1693 typedef struct LDKMessageSendEvent_LDKSendClosingSigned_Body {
1694    /**
1695     * The node_id of the node which should receive this message
1696     */
1697    struct LDKPublicKey node_id;
1698    /**
1699     * The message which should be sent.
1700     */
1701    struct LDKClosingSigned msg;
1702 } LDKMessageSendEvent_LDKSendClosingSigned_Body;
1703
1704 typedef struct LDKMessageSendEvent_LDKSendShutdown_Body {
1705    /**
1706     * The node_id of the node which should receive this message
1707     */
1708    struct LDKPublicKey node_id;
1709    /**
1710     * The message which should be sent.
1711     */
1712    struct LDKShutdown msg;
1713 } LDKMessageSendEvent_LDKSendShutdown_Body;
1714
1715 typedef struct LDKMessageSendEvent_LDKSendChannelReestablish_Body {
1716    /**
1717     * The node_id of the node which should receive this message
1718     */
1719    struct LDKPublicKey node_id;
1720    /**
1721     * The message which should be sent.
1722     */
1723    struct LDKChannelReestablish msg;
1724 } LDKMessageSendEvent_LDKSendChannelReestablish_Body;
1725
1726 typedef struct LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body {
1727    /**
1728     * The channel_announcement which should be sent.
1729     */
1730    struct LDKChannelAnnouncement msg;
1731    /**
1732     * The followup channel_update which should be sent.
1733     */
1734    struct LDKChannelUpdate update_msg;
1735 } LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body;
1736
1737 typedef struct LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body {
1738    /**
1739     * The node_announcement which should be sent.
1740     */
1741    struct LDKNodeAnnouncement msg;
1742 } LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body;
1743
1744 typedef struct LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body {
1745    /**
1746     * The channel_update which should be sent.
1747     */
1748    struct LDKChannelUpdate msg;
1749 } LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body;
1750
1751 typedef struct LDKMessageSendEvent_LDKHandleError_Body {
1752    /**
1753     * The node_id of the node which should receive this message
1754     */
1755    struct LDKPublicKey node_id;
1756    /**
1757     * The action which should be taken.
1758     */
1759    struct LDKErrorAction action;
1760 } LDKMessageSendEvent_LDKHandleError_Body;
1761
1762 typedef struct LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body {
1763    /**
1764     * The channel/node update which should be sent to NetGraphMsgHandler
1765     */
1766    struct LDKHTLCFailChannelUpdate update;
1767 } LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body;
1768
1769 typedef struct LDKMessageSendEvent_LDKSendChannelRangeQuery_Body {
1770    /**
1771     * The node_id of this message recipient
1772     */
1773    struct LDKPublicKey node_id;
1774    /**
1775     * The query_channel_range which should be sent.
1776     */
1777    struct LDKQueryChannelRange msg;
1778 } LDKMessageSendEvent_LDKSendChannelRangeQuery_Body;
1779
1780 typedef struct LDKMessageSendEvent_LDKSendShortIdsQuery_Body {
1781    /**
1782     * The node_id of this message recipient
1783     */
1784    struct LDKPublicKey node_id;
1785    /**
1786     * The query_short_channel_ids which should be sent.
1787     */
1788    struct LDKQueryShortChannelIds msg;
1789 } LDKMessageSendEvent_LDKSendShortIdsQuery_Body;
1790
1791 typedef struct LDKMessageSendEvent_LDKSendReplyChannelRange_Body {
1792    /**
1793     * The node_id of this message recipient
1794     */
1795    struct LDKPublicKey node_id;
1796    /**
1797     * The reply_channel_range which should be sent.
1798     */
1799    struct LDKReplyChannelRange msg;
1800 } LDKMessageSendEvent_LDKSendReplyChannelRange_Body;
1801
1802 typedef struct MUST_USE_STRUCT LDKMessageSendEvent {
1803    LDKMessageSendEvent_Tag tag;
1804    union {
1805       LDKMessageSendEvent_LDKSendAcceptChannel_Body send_accept_channel;
1806       LDKMessageSendEvent_LDKSendOpenChannel_Body send_open_channel;
1807       LDKMessageSendEvent_LDKSendFundingCreated_Body send_funding_created;
1808       LDKMessageSendEvent_LDKSendFundingSigned_Body send_funding_signed;
1809       LDKMessageSendEvent_LDKSendFundingLocked_Body send_funding_locked;
1810       LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body send_announcement_signatures;
1811       LDKMessageSendEvent_LDKUpdateHTLCs_Body update_htl_cs;
1812       LDKMessageSendEvent_LDKSendRevokeAndACK_Body send_revoke_and_ack;
1813       LDKMessageSendEvent_LDKSendClosingSigned_Body send_closing_signed;
1814       LDKMessageSendEvent_LDKSendShutdown_Body send_shutdown;
1815       LDKMessageSendEvent_LDKSendChannelReestablish_Body send_channel_reestablish;
1816       LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body broadcast_channel_announcement;
1817       LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body broadcast_node_announcement;
1818       LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body broadcast_channel_update;
1819       LDKMessageSendEvent_LDKHandleError_Body handle_error;
1820       LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body payment_failure_network_update;
1821       LDKMessageSendEvent_LDKSendChannelRangeQuery_Body send_channel_range_query;
1822       LDKMessageSendEvent_LDKSendShortIdsQuery_Body send_short_ids_query;
1823       LDKMessageSendEvent_LDKSendReplyChannelRange_Body send_reply_channel_range;
1824    };
1825 } LDKMessageSendEvent;
1826
1827 /**
1828  * A dynamically-allocated array of crate::util::events::MessageSendEvents of arbitrary size.
1829  * This corresponds to std::vector in C++
1830  */
1831 typedef struct LDKCVec_MessageSendEventZ {
1832    /**
1833     * The elements in the array.
1834     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1835     */
1836    struct LDKMessageSendEvent *data;
1837    /**
1838     * The number of elements pointed to by `data`.
1839     */
1840    uintptr_t datalen;
1841 } LDKCVec_MessageSendEventZ;
1842
1843
1844
1845 /**
1846  * An Err type for failure to process messages.
1847  */
1848 typedef struct MUST_USE_STRUCT LDKLightningError {
1849    /**
1850     * A pointer to the opaque Rust object.
1851     * Nearly everywhere, inner must be non-null, however in places where
1852     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1853     */
1854    LDKnativeLightningError *inner;
1855    /**
1856     * Indicates that this is the only struct which contains the same pointer.
1857     * Rust functions which take ownership of an object provided via an argument require
1858     * this to be true and invalidate the object pointed to by inner.
1859     */
1860    bool is_owned;
1861 } LDKLightningError;
1862
1863 /**
1864  * The contents of CResult_boolLightningErrorZ
1865  */
1866 typedef union LDKCResult_boolLightningErrorZPtr {
1867    /**
1868     * A pointer to the contents in the success state.
1869     * Reading from this pointer when `result_ok` is not set is undefined.
1870     */
1871    bool *result;
1872    /**
1873     * A pointer to the contents in the error state.
1874     * Reading from this pointer when `result_ok` is set is undefined.
1875     */
1876    struct LDKLightningError *err;
1877 } LDKCResult_boolLightningErrorZPtr;
1878
1879 /**
1880  * A CResult_boolLightningErrorZ represents the result of a fallible operation,
1881  * containing a bool on success and a crate::ln::msgs::LightningError on failure.
1882  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1883  */
1884 typedef struct LDKCResult_boolLightningErrorZ {
1885    /**
1886     * The contents of this CResult_boolLightningErrorZ, accessible via either
1887     * `err` or `result` depending on the state of `result_ok`.
1888     */
1889    union LDKCResult_boolLightningErrorZPtr contents;
1890    /**
1891     * Whether this CResult_boolLightningErrorZ represents a success state.
1892     */
1893    bool result_ok;
1894 } LDKCResult_boolLightningErrorZ;
1895
1896 /**
1897  * A tuple of 3 elements. See the individual fields for the types contained.
1898  */
1899 typedef struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
1900    /**
1901     * The element at position 0
1902     */
1903    struct LDKChannelAnnouncement a;
1904    /**
1905     * The element at position 1
1906     */
1907    struct LDKChannelUpdate b;
1908    /**
1909     * The element at position 2
1910     */
1911    struct LDKChannelUpdate c;
1912 } LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
1913
1914 /**
1915  * A dynamically-allocated array of crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZs of arbitrary size.
1916  * This corresponds to std::vector in C++
1917  */
1918 typedef struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
1919    /**
1920     * The elements in the array.
1921     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1922     */
1923    struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *data;
1924    /**
1925     * The number of elements pointed to by `data`.
1926     */
1927    uintptr_t datalen;
1928 } LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
1929
1930 /**
1931  * A dynamically-allocated array of crate::ln::msgs::NodeAnnouncements of arbitrary size.
1932  * This corresponds to std::vector in C++
1933  */
1934 typedef struct LDKCVec_NodeAnnouncementZ {
1935    /**
1936     * The elements in the array.
1937     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1938     */
1939    struct LDKNodeAnnouncement *data;
1940    /**
1941     * The number of elements pointed to by `data`.
1942     */
1943    uintptr_t datalen;
1944 } LDKCVec_NodeAnnouncementZ;
1945
1946 /**
1947  * The contents of CResult_NoneLightningErrorZ
1948  */
1949 typedef union LDKCResult_NoneLightningErrorZPtr {
1950    /**
1951     * Note that this value is always NULL, as there are no contents in the OK variant
1952     */
1953    void *result;
1954    /**
1955     * A pointer to the contents in the error state.
1956     * Reading from this pointer when `result_ok` is set is undefined.
1957     */
1958    struct LDKLightningError *err;
1959 } LDKCResult_NoneLightningErrorZPtr;
1960
1961 /**
1962  * A CResult_NoneLightningErrorZ represents the result of a fallible operation,
1963  * containing a () on success and a crate::ln::msgs::LightningError on failure.
1964  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1965  */
1966 typedef struct LDKCResult_NoneLightningErrorZ {
1967    /**
1968     * The contents of this CResult_NoneLightningErrorZ, accessible via either
1969     * `err` or `result` depending on the state of `result_ok`.
1970     */
1971    union LDKCResult_NoneLightningErrorZPtr contents;
1972    /**
1973     * Whether this CResult_NoneLightningErrorZ represents a success state.
1974     */
1975    bool result_ok;
1976 } LDKCResult_NoneLightningErrorZ;
1977
1978 /**
1979  * A dynamically-allocated array of crate::c_types::PublicKeys of arbitrary size.
1980  * This corresponds to std::vector in C++
1981  */
1982 typedef struct LDKCVec_PublicKeyZ {
1983    /**
1984     * The elements in the array.
1985     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1986     */
1987    struct LDKPublicKey *data;
1988    /**
1989     * The number of elements pointed to by `data`.
1990     */
1991    uintptr_t datalen;
1992 } LDKCVec_PublicKeyZ;
1993
1994
1995
1996 /**
1997  * Error for PeerManager errors. If you get one of these, you must disconnect the socket and
1998  * generate no further read_event/write_buffer_space_avail/socket_disconnected calls for the
1999  * descriptor.
2000  */
2001 typedef struct MUST_USE_STRUCT LDKPeerHandleError {
2002    /**
2003     * A pointer to the opaque Rust object.
2004     * Nearly everywhere, inner must be non-null, however in places where
2005     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2006     */
2007    LDKnativePeerHandleError *inner;
2008    /**
2009     * Indicates that this is the only struct which contains the same pointer.
2010     * Rust functions which take ownership of an object provided via an argument require
2011     * this to be true and invalidate the object pointed to by inner.
2012     */
2013    bool is_owned;
2014 } LDKPeerHandleError;
2015
2016 /**
2017  * The contents of CResult_CVec_u8ZPeerHandleErrorZ
2018  */
2019 typedef union LDKCResult_CVec_u8ZPeerHandleErrorZPtr {
2020    /**
2021     * A pointer to the contents in the success state.
2022     * Reading from this pointer when `result_ok` is not set is undefined.
2023     */
2024    struct LDKCVec_u8Z *result;
2025    /**
2026     * A pointer to the contents in the error state.
2027     * Reading from this pointer when `result_ok` is set is undefined.
2028     */
2029    struct LDKPeerHandleError *err;
2030 } LDKCResult_CVec_u8ZPeerHandleErrorZPtr;
2031
2032 /**
2033  * A CResult_CVec_u8ZPeerHandleErrorZ represents the result of a fallible operation,
2034  * containing a crate::c_types::derived::CVec_u8Z on success and a crate::ln::peer_handler::PeerHandleError on failure.
2035  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2036  */
2037 typedef struct LDKCResult_CVec_u8ZPeerHandleErrorZ {
2038    /**
2039     * The contents of this CResult_CVec_u8ZPeerHandleErrorZ, accessible via either
2040     * `err` or `result` depending on the state of `result_ok`.
2041     */
2042    union LDKCResult_CVec_u8ZPeerHandleErrorZPtr contents;
2043    /**
2044     * Whether this CResult_CVec_u8ZPeerHandleErrorZ represents a success state.
2045     */
2046    bool result_ok;
2047 } LDKCResult_CVec_u8ZPeerHandleErrorZ;
2048
2049 /**
2050  * The contents of CResult_NonePeerHandleErrorZ
2051  */
2052 typedef union LDKCResult_NonePeerHandleErrorZPtr {
2053    /**
2054     * Note that this value is always NULL, as there are no contents in the OK variant
2055     */
2056    void *result;
2057    /**
2058     * A pointer to the contents in the error state.
2059     * Reading from this pointer when `result_ok` is set is undefined.
2060     */
2061    struct LDKPeerHandleError *err;
2062 } LDKCResult_NonePeerHandleErrorZPtr;
2063
2064 /**
2065  * A CResult_NonePeerHandleErrorZ represents the result of a fallible operation,
2066  * containing a () on success and a crate::ln::peer_handler::PeerHandleError on failure.
2067  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2068  */
2069 typedef struct LDKCResult_NonePeerHandleErrorZ {
2070    /**
2071     * The contents of this CResult_NonePeerHandleErrorZ, accessible via either
2072     * `err` or `result` depending on the state of `result_ok`.
2073     */
2074    union LDKCResult_NonePeerHandleErrorZPtr contents;
2075    /**
2076     * Whether this CResult_NonePeerHandleErrorZ represents a success state.
2077     */
2078    bool result_ok;
2079 } LDKCResult_NonePeerHandleErrorZ;
2080
2081 /**
2082  * The contents of CResult_boolPeerHandleErrorZ
2083  */
2084 typedef union LDKCResult_boolPeerHandleErrorZPtr {
2085    /**
2086     * A pointer to the contents in the success state.
2087     * Reading from this pointer when `result_ok` is not set is undefined.
2088     */
2089    bool *result;
2090    /**
2091     * A pointer to the contents in the error state.
2092     * Reading from this pointer when `result_ok` is set is undefined.
2093     */
2094    struct LDKPeerHandleError *err;
2095 } LDKCResult_boolPeerHandleErrorZPtr;
2096
2097 /**
2098  * A CResult_boolPeerHandleErrorZ represents the result of a fallible operation,
2099  * containing a bool on success and a crate::ln::peer_handler::PeerHandleError on failure.
2100  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2101  */
2102 typedef struct LDKCResult_boolPeerHandleErrorZ {
2103    /**
2104     * The contents of this CResult_boolPeerHandleErrorZ, accessible via either
2105     * `err` or `result` depending on the state of `result_ok`.
2106     */
2107    union LDKCResult_boolPeerHandleErrorZPtr contents;
2108    /**
2109     * Whether this CResult_boolPeerHandleErrorZ represents a success state.
2110     */
2111    bool result_ok;
2112 } LDKCResult_boolPeerHandleErrorZ;
2113
2114
2115
2116 /**
2117  * Features used within an `init` message.
2118  */
2119 typedef struct MUST_USE_STRUCT LDKInitFeatures {
2120    /**
2121     * A pointer to the opaque Rust object.
2122     * Nearly everywhere, inner must be non-null, however in places where
2123     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2124     */
2125    LDKnativeInitFeatures *inner;
2126    /**
2127     * Indicates that this is the only struct which contains the same pointer.
2128     * Rust functions which take ownership of an object provided via an argument require
2129     * this to be true and invalidate the object pointed to by inner.
2130     */
2131    bool is_owned;
2132 } LDKInitFeatures;
2133
2134 /**
2135  * The contents of CResult_InitFeaturesDecodeErrorZ
2136  */
2137 typedef union LDKCResult_InitFeaturesDecodeErrorZPtr {
2138    /**
2139     * A pointer to the contents in the success state.
2140     * Reading from this pointer when `result_ok` is not set is undefined.
2141     */
2142    struct LDKInitFeatures *result;
2143    /**
2144     * A pointer to the contents in the error state.
2145     * Reading from this pointer when `result_ok` is set is undefined.
2146     */
2147    struct LDKDecodeError *err;
2148 } LDKCResult_InitFeaturesDecodeErrorZPtr;
2149
2150 /**
2151  * A CResult_InitFeaturesDecodeErrorZ represents the result of a fallible operation,
2152  * containing a crate::ln::features::InitFeatures on success and a crate::ln::msgs::DecodeError on failure.
2153  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2154  */
2155 typedef struct LDKCResult_InitFeaturesDecodeErrorZ {
2156    /**
2157     * The contents of this CResult_InitFeaturesDecodeErrorZ, accessible via either
2158     * `err` or `result` depending on the state of `result_ok`.
2159     */
2160    union LDKCResult_InitFeaturesDecodeErrorZPtr contents;
2161    /**
2162     * Whether this CResult_InitFeaturesDecodeErrorZ represents a success state.
2163     */
2164    bool result_ok;
2165 } LDKCResult_InitFeaturesDecodeErrorZ;
2166
2167
2168
2169 /**
2170  * Features used within a `node_announcement` message.
2171  */
2172 typedef struct MUST_USE_STRUCT LDKNodeFeatures {
2173    /**
2174     * A pointer to the opaque Rust object.
2175     * Nearly everywhere, inner must be non-null, however in places where
2176     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2177     */
2178    LDKnativeNodeFeatures *inner;
2179    /**
2180     * Indicates that this is the only struct which contains the same pointer.
2181     * Rust functions which take ownership of an object provided via an argument require
2182     * this to be true and invalidate the object pointed to by inner.
2183     */
2184    bool is_owned;
2185 } LDKNodeFeatures;
2186
2187 /**
2188  * The contents of CResult_NodeFeaturesDecodeErrorZ
2189  */
2190 typedef union LDKCResult_NodeFeaturesDecodeErrorZPtr {
2191    /**
2192     * A pointer to the contents in the success state.
2193     * Reading from this pointer when `result_ok` is not set is undefined.
2194     */
2195    struct LDKNodeFeatures *result;
2196    /**
2197     * A pointer to the contents in the error state.
2198     * Reading from this pointer when `result_ok` is set is undefined.
2199     */
2200    struct LDKDecodeError *err;
2201 } LDKCResult_NodeFeaturesDecodeErrorZPtr;
2202
2203 /**
2204  * A CResult_NodeFeaturesDecodeErrorZ represents the result of a fallible operation,
2205  * containing a crate::ln::features::NodeFeatures on success and a crate::ln::msgs::DecodeError on failure.
2206  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2207  */
2208 typedef struct LDKCResult_NodeFeaturesDecodeErrorZ {
2209    /**
2210     * The contents of this CResult_NodeFeaturesDecodeErrorZ, accessible via either
2211     * `err` or `result` depending on the state of `result_ok`.
2212     */
2213    union LDKCResult_NodeFeaturesDecodeErrorZPtr contents;
2214    /**
2215     * Whether this CResult_NodeFeaturesDecodeErrorZ represents a success state.
2216     */
2217    bool result_ok;
2218 } LDKCResult_NodeFeaturesDecodeErrorZ;
2219
2220
2221
2222 /**
2223  * Features used within a `channel_announcement` message.
2224  */
2225 typedef struct MUST_USE_STRUCT LDKChannelFeatures {
2226    /**
2227     * A pointer to the opaque Rust object.
2228     * Nearly everywhere, inner must be non-null, however in places where
2229     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2230     */
2231    LDKnativeChannelFeatures *inner;
2232    /**
2233     * Indicates that this is the only struct which contains the same pointer.
2234     * Rust functions which take ownership of an object provided via an argument require
2235     * this to be true and invalidate the object pointed to by inner.
2236     */
2237    bool is_owned;
2238 } LDKChannelFeatures;
2239
2240 /**
2241  * The contents of CResult_ChannelFeaturesDecodeErrorZ
2242  */
2243 typedef union LDKCResult_ChannelFeaturesDecodeErrorZPtr {
2244    /**
2245     * A pointer to the contents in the success state.
2246     * Reading from this pointer when `result_ok` is not set is undefined.
2247     */
2248    struct LDKChannelFeatures *result;
2249    /**
2250     * A pointer to the contents in the error state.
2251     * Reading from this pointer when `result_ok` is set is undefined.
2252     */
2253    struct LDKDecodeError *err;
2254 } LDKCResult_ChannelFeaturesDecodeErrorZPtr;
2255
2256 /**
2257  * A CResult_ChannelFeaturesDecodeErrorZ represents the result of a fallible operation,
2258  * containing a crate::ln::features::ChannelFeatures on success and a crate::ln::msgs::DecodeError on failure.
2259  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2260  */
2261 typedef struct LDKCResult_ChannelFeaturesDecodeErrorZ {
2262    /**
2263     * The contents of this CResult_ChannelFeaturesDecodeErrorZ, accessible via either
2264     * `err` or `result` depending on the state of `result_ok`.
2265     */
2266    union LDKCResult_ChannelFeaturesDecodeErrorZPtr contents;
2267    /**
2268     * Whether this CResult_ChannelFeaturesDecodeErrorZ represents a success state.
2269     */
2270    bool result_ok;
2271 } LDKCResult_ChannelFeaturesDecodeErrorZ;
2272
2273
2274
2275 /**
2276  * Features used within an invoice.
2277  */
2278 typedef struct MUST_USE_STRUCT LDKInvoiceFeatures {
2279    /**
2280     * A pointer to the opaque Rust object.
2281     * Nearly everywhere, inner must be non-null, however in places where
2282     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2283     */
2284    LDKnativeInvoiceFeatures *inner;
2285    /**
2286     * Indicates that this is the only struct which contains the same pointer.
2287     * Rust functions which take ownership of an object provided via an argument require
2288     * this to be true and invalidate the object pointed to by inner.
2289     */
2290    bool is_owned;
2291 } LDKInvoiceFeatures;
2292
2293 /**
2294  * The contents of CResult_InvoiceFeaturesDecodeErrorZ
2295  */
2296 typedef union LDKCResult_InvoiceFeaturesDecodeErrorZPtr {
2297    /**
2298     * A pointer to the contents in the success state.
2299     * Reading from this pointer when `result_ok` is not set is undefined.
2300     */
2301    struct LDKInvoiceFeatures *result;
2302    /**
2303     * A pointer to the contents in the error state.
2304     * Reading from this pointer when `result_ok` is set is undefined.
2305     */
2306    struct LDKDecodeError *err;
2307 } LDKCResult_InvoiceFeaturesDecodeErrorZPtr;
2308
2309 /**
2310  * A CResult_InvoiceFeaturesDecodeErrorZ represents the result of a fallible operation,
2311  * containing a crate::ln::features::InvoiceFeatures on success and a crate::ln::msgs::DecodeError on failure.
2312  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2313  */
2314 typedef struct LDKCResult_InvoiceFeaturesDecodeErrorZ {
2315    /**
2316     * The contents of this CResult_InvoiceFeaturesDecodeErrorZ, accessible via either
2317     * `err` or `result` depending on the state of `result_ok`.
2318     */
2319    union LDKCResult_InvoiceFeaturesDecodeErrorZPtr contents;
2320    /**
2321     * Whether this CResult_InvoiceFeaturesDecodeErrorZ represents a success state.
2322     */
2323    bool result_ok;
2324 } LDKCResult_InvoiceFeaturesDecodeErrorZ;
2325
2326
2327
2328 /**
2329  * Options which apply on a per-channel basis and may change at runtime or based on negotiation
2330  * with our counterparty.
2331  */
2332 typedef struct MUST_USE_STRUCT LDKChannelConfig {
2333    /**
2334     * A pointer to the opaque Rust object.
2335     * Nearly everywhere, inner must be non-null, however in places where
2336     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2337     */
2338    LDKnativeChannelConfig *inner;
2339    /**
2340     * Indicates that this is the only struct which contains the same pointer.
2341     * Rust functions which take ownership of an object provided via an argument require
2342     * this to be true and invalidate the object pointed to by inner.
2343     */
2344    bool is_owned;
2345 } LDKChannelConfig;
2346
2347 /**
2348  * The contents of CResult_ChannelConfigDecodeErrorZ
2349  */
2350 typedef union LDKCResult_ChannelConfigDecodeErrorZPtr {
2351    /**
2352     * A pointer to the contents in the success state.
2353     * Reading from this pointer when `result_ok` is not set is undefined.
2354     */
2355    struct LDKChannelConfig *result;
2356    /**
2357     * A pointer to the contents in the error state.
2358     * Reading from this pointer when `result_ok` is set is undefined.
2359     */
2360    struct LDKDecodeError *err;
2361 } LDKCResult_ChannelConfigDecodeErrorZPtr;
2362
2363 /**
2364  * A CResult_ChannelConfigDecodeErrorZ represents the result of a fallible operation,
2365  * containing a crate::util::config::ChannelConfig on success and a crate::ln::msgs::DecodeError on failure.
2366  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2367  */
2368 typedef struct LDKCResult_ChannelConfigDecodeErrorZ {
2369    /**
2370     * The contents of this CResult_ChannelConfigDecodeErrorZ, accessible via either
2371     * `err` or `result` depending on the state of `result_ok`.
2372     */
2373    union LDKCResult_ChannelConfigDecodeErrorZPtr contents;
2374    /**
2375     * Whether this CResult_ChannelConfigDecodeErrorZ represents a success state.
2376     */
2377    bool result_ok;
2378 } LDKCResult_ChannelConfigDecodeErrorZ;
2379
2380 /**
2381  * An enum which can either contain a u64 or not
2382  */
2383 typedef enum LDKCOption_u64Z_Tag {
2384    /**
2385     * When we're in this state, this COption_u64Z contains a u64
2386     */
2387    LDKCOption_u64Z_Some,
2388    /**
2389     * When we're in this state, this COption_u64Z contains nothing
2390     */
2391    LDKCOption_u64Z_None,
2392    /**
2393     * Must be last for serialization purposes
2394     */
2395    LDKCOption_u64Z_Sentinel,
2396 } LDKCOption_u64Z_Tag;
2397
2398 typedef struct LDKCOption_u64Z {
2399    LDKCOption_u64Z_Tag tag;
2400    union {
2401       struct {
2402          uint64_t some;
2403       };
2404    };
2405 } LDKCOption_u64Z;
2406
2407
2408
2409 /**
2410  * Details about one direction of a channel. Received
2411  * within a channel update.
2412  */
2413 typedef struct MUST_USE_STRUCT LDKDirectionalChannelInfo {
2414    /**
2415     * A pointer to the opaque Rust object.
2416     * Nearly everywhere, inner must be non-null, however in places where
2417     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2418     */
2419    LDKnativeDirectionalChannelInfo *inner;
2420    /**
2421     * Indicates that this is the only struct which contains the same pointer.
2422     * Rust functions which take ownership of an object provided via an argument require
2423     * this to be true and invalidate the object pointed to by inner.
2424     */
2425    bool is_owned;
2426 } LDKDirectionalChannelInfo;
2427
2428 /**
2429  * The contents of CResult_DirectionalChannelInfoDecodeErrorZ
2430  */
2431 typedef union LDKCResult_DirectionalChannelInfoDecodeErrorZPtr {
2432    /**
2433     * A pointer to the contents in the success state.
2434     * Reading from this pointer when `result_ok` is not set is undefined.
2435     */
2436    struct LDKDirectionalChannelInfo *result;
2437    /**
2438     * A pointer to the contents in the error state.
2439     * Reading from this pointer when `result_ok` is set is undefined.
2440     */
2441    struct LDKDecodeError *err;
2442 } LDKCResult_DirectionalChannelInfoDecodeErrorZPtr;
2443
2444 /**
2445  * A CResult_DirectionalChannelInfoDecodeErrorZ represents the result of a fallible operation,
2446  * containing a crate::routing::network_graph::DirectionalChannelInfo on success and a crate::ln::msgs::DecodeError on failure.
2447  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2448  */
2449 typedef struct LDKCResult_DirectionalChannelInfoDecodeErrorZ {
2450    /**
2451     * The contents of this CResult_DirectionalChannelInfoDecodeErrorZ, accessible via either
2452     * `err` or `result` depending on the state of `result_ok`.
2453     */
2454    union LDKCResult_DirectionalChannelInfoDecodeErrorZPtr contents;
2455    /**
2456     * Whether this CResult_DirectionalChannelInfoDecodeErrorZ represents a success state.
2457     */
2458    bool result_ok;
2459 } LDKCResult_DirectionalChannelInfoDecodeErrorZ;
2460
2461
2462
2463 /**
2464  * Details about a channel (both directions).
2465  * Received within a channel announcement.
2466  */
2467 typedef struct MUST_USE_STRUCT LDKChannelInfo {
2468    /**
2469     * A pointer to the opaque Rust object.
2470     * Nearly everywhere, inner must be non-null, however in places where
2471     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2472     */
2473    LDKnativeChannelInfo *inner;
2474    /**
2475     * Indicates that this is the only struct which contains the same pointer.
2476     * Rust functions which take ownership of an object provided via an argument require
2477     * this to be true and invalidate the object pointed to by inner.
2478     */
2479    bool is_owned;
2480 } LDKChannelInfo;
2481
2482 /**
2483  * The contents of CResult_ChannelInfoDecodeErrorZ
2484  */
2485 typedef union LDKCResult_ChannelInfoDecodeErrorZPtr {
2486    /**
2487     * A pointer to the contents in the success state.
2488     * Reading from this pointer when `result_ok` is not set is undefined.
2489     */
2490    struct LDKChannelInfo *result;
2491    /**
2492     * A pointer to the contents in the error state.
2493     * Reading from this pointer when `result_ok` is set is undefined.
2494     */
2495    struct LDKDecodeError *err;
2496 } LDKCResult_ChannelInfoDecodeErrorZPtr;
2497
2498 /**
2499  * A CResult_ChannelInfoDecodeErrorZ represents the result of a fallible operation,
2500  * containing a crate::routing::network_graph::ChannelInfo on success and a crate::ln::msgs::DecodeError on failure.
2501  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2502  */
2503 typedef struct LDKCResult_ChannelInfoDecodeErrorZ {
2504    /**
2505     * The contents of this CResult_ChannelInfoDecodeErrorZ, accessible via either
2506     * `err` or `result` depending on the state of `result_ok`.
2507     */
2508    union LDKCResult_ChannelInfoDecodeErrorZPtr contents;
2509    /**
2510     * Whether this CResult_ChannelInfoDecodeErrorZ represents a success state.
2511     */
2512    bool result_ok;
2513 } LDKCResult_ChannelInfoDecodeErrorZ;
2514
2515
2516
2517 /**
2518  * Fees for routing via a given channel or a node
2519  */
2520 typedef struct MUST_USE_STRUCT LDKRoutingFees {
2521    /**
2522     * A pointer to the opaque Rust object.
2523     * Nearly everywhere, inner must be non-null, however in places where
2524     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2525     */
2526    LDKnativeRoutingFees *inner;
2527    /**
2528     * Indicates that this is the only struct which contains the same pointer.
2529     * Rust functions which take ownership of an object provided via an argument require
2530     * this to be true and invalidate the object pointed to by inner.
2531     */
2532    bool is_owned;
2533 } LDKRoutingFees;
2534
2535 /**
2536  * The contents of CResult_RoutingFeesDecodeErrorZ
2537  */
2538 typedef union LDKCResult_RoutingFeesDecodeErrorZPtr {
2539    /**
2540     * A pointer to the contents in the success state.
2541     * Reading from this pointer when `result_ok` is not set is undefined.
2542     */
2543    struct LDKRoutingFees *result;
2544    /**
2545     * A pointer to the contents in the error state.
2546     * Reading from this pointer when `result_ok` is set is undefined.
2547     */
2548    struct LDKDecodeError *err;
2549 } LDKCResult_RoutingFeesDecodeErrorZPtr;
2550
2551 /**
2552  * A CResult_RoutingFeesDecodeErrorZ represents the result of a fallible operation,
2553  * containing a crate::routing::network_graph::RoutingFees on success and a crate::ln::msgs::DecodeError on failure.
2554  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2555  */
2556 typedef struct LDKCResult_RoutingFeesDecodeErrorZ {
2557    /**
2558     * The contents of this CResult_RoutingFeesDecodeErrorZ, accessible via either
2559     * `err` or `result` depending on the state of `result_ok`.
2560     */
2561    union LDKCResult_RoutingFeesDecodeErrorZPtr contents;
2562    /**
2563     * Whether this CResult_RoutingFeesDecodeErrorZ represents a success state.
2564     */
2565    bool result_ok;
2566 } LDKCResult_RoutingFeesDecodeErrorZ;
2567
2568 /**
2569  * A 4-byte byte array.
2570  */
2571 typedef struct LDKFourBytes {
2572    /**
2573     * The four bytes
2574     */
2575    uint8_t data[4];
2576 } LDKFourBytes;
2577
2578 /**
2579  * A 16-byte byte array.
2580  */
2581 typedef struct LDKSixteenBytes {
2582    /**
2583     * The sixteen bytes
2584     */
2585    uint8_t data[16];
2586 } LDKSixteenBytes;
2587
2588 /**
2589  * A 10-byte byte array.
2590  */
2591 typedef struct LDKTenBytes {
2592    /**
2593     * The ten bytes
2594     */
2595    uint8_t data[10];
2596 } LDKTenBytes;
2597
2598 /**
2599  * Arbitrary 32 bytes, which could represent one of a few different things. You probably want to
2600  * look up the corresponding function in rust-lightning's docs.
2601  */
2602 typedef struct LDKThirtyTwoBytes {
2603    /**
2604     * The thirty-two bytes
2605     */
2606    uint8_t data[32];
2607 } LDKThirtyTwoBytes;
2608
2609 /**
2610  * An address which can be used to connect to a remote peer
2611  */
2612 typedef enum LDKNetAddress_Tag {
2613    /**
2614     * An IPv4 address/port on which the peer is listening.
2615     */
2616    LDKNetAddress_IPv4,
2617    /**
2618     * An IPv6 address/port on which the peer is listening.
2619     */
2620    LDKNetAddress_IPv6,
2621    /**
2622     * An old-style Tor onion address/port on which the peer is listening.
2623     */
2624    LDKNetAddress_OnionV2,
2625    /**
2626     * A new-style Tor onion address/port on which the peer is listening.
2627     * To create the human-readable \"hostname\", concatenate ed25519_pubkey, checksum, and version,
2628     * wrap as base32 and append \".onion\".
2629     */
2630    LDKNetAddress_OnionV3,
2631    /**
2632     * Must be last for serialization purposes
2633     */
2634    LDKNetAddress_Sentinel,
2635 } LDKNetAddress_Tag;
2636
2637 typedef struct LDKNetAddress_LDKIPv4_Body {
2638    /**
2639     * The 4-byte IPv4 address
2640     */
2641    struct LDKFourBytes addr;
2642    /**
2643     * The port on which the node is listening
2644     */
2645    uint16_t port;
2646 } LDKNetAddress_LDKIPv4_Body;
2647
2648 typedef struct LDKNetAddress_LDKIPv6_Body {
2649    /**
2650     * The 16-byte IPv6 address
2651     */
2652    struct LDKSixteenBytes addr;
2653    /**
2654     * The port on which the node is listening
2655     */
2656    uint16_t port;
2657 } LDKNetAddress_LDKIPv6_Body;
2658
2659 typedef struct LDKNetAddress_LDKOnionV2_Body {
2660    /**
2661     * The bytes (usually encoded in base32 with \".onion\" appended)
2662     */
2663    struct LDKTenBytes addr;
2664    /**
2665     * The port on which the node is listening
2666     */
2667    uint16_t port;
2668 } LDKNetAddress_LDKOnionV2_Body;
2669
2670 typedef struct LDKNetAddress_LDKOnionV3_Body {
2671    /**
2672     * The ed25519 long-term public key of the peer
2673     */
2674    struct LDKThirtyTwoBytes ed25519_pubkey;
2675    /**
2676     * The checksum of the pubkey and version, as included in the onion address
2677     */
2678    uint16_t checksum;
2679    /**
2680     * The version byte, as defined by the Tor Onion v3 spec.
2681     */
2682    uint8_t version;
2683    /**
2684     * The port on which the node is listening
2685     */
2686    uint16_t port;
2687 } LDKNetAddress_LDKOnionV3_Body;
2688
2689 typedef struct MUST_USE_STRUCT LDKNetAddress {
2690    LDKNetAddress_Tag tag;
2691    union {
2692       LDKNetAddress_LDKIPv4_Body i_pv4;
2693       LDKNetAddress_LDKIPv6_Body i_pv6;
2694       LDKNetAddress_LDKOnionV2_Body onion_v2;
2695       LDKNetAddress_LDKOnionV3_Body onion_v3;
2696    };
2697 } LDKNetAddress;
2698
2699 /**
2700  * A dynamically-allocated array of crate::ln::msgs::NetAddresss of arbitrary size.
2701  * This corresponds to std::vector in C++
2702  */
2703 typedef struct LDKCVec_NetAddressZ {
2704    /**
2705     * The elements in the array.
2706     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2707     */
2708    struct LDKNetAddress *data;
2709    /**
2710     * The number of elements pointed to by `data`.
2711     */
2712    uintptr_t datalen;
2713 } LDKCVec_NetAddressZ;
2714
2715
2716
2717 /**
2718  * Information received in the latest node_announcement from this node.
2719  */
2720 typedef struct MUST_USE_STRUCT LDKNodeAnnouncementInfo {
2721    /**
2722     * A pointer to the opaque Rust object.
2723     * Nearly everywhere, inner must be non-null, however in places where
2724     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2725     */
2726    LDKnativeNodeAnnouncementInfo *inner;
2727    /**
2728     * Indicates that this is the only struct which contains the same pointer.
2729     * Rust functions which take ownership of an object provided via an argument require
2730     * this to be true and invalidate the object pointed to by inner.
2731     */
2732    bool is_owned;
2733 } LDKNodeAnnouncementInfo;
2734
2735 /**
2736  * The contents of CResult_NodeAnnouncementInfoDecodeErrorZ
2737  */
2738 typedef union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr {
2739    /**
2740     * A pointer to the contents in the success state.
2741     * Reading from this pointer when `result_ok` is not set is undefined.
2742     */
2743    struct LDKNodeAnnouncementInfo *result;
2744    /**
2745     * A pointer to the contents in the error state.
2746     * Reading from this pointer when `result_ok` is set is undefined.
2747     */
2748    struct LDKDecodeError *err;
2749 } LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr;
2750
2751 /**
2752  * A CResult_NodeAnnouncementInfoDecodeErrorZ represents the result of a fallible operation,
2753  * containing a crate::routing::network_graph::NodeAnnouncementInfo on success and a crate::ln::msgs::DecodeError on failure.
2754  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2755  */
2756 typedef struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ {
2757    /**
2758     * The contents of this CResult_NodeAnnouncementInfoDecodeErrorZ, accessible via either
2759     * `err` or `result` depending on the state of `result_ok`.
2760     */
2761    union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr contents;
2762    /**
2763     * Whether this CResult_NodeAnnouncementInfoDecodeErrorZ represents a success state.
2764     */
2765    bool result_ok;
2766 } LDKCResult_NodeAnnouncementInfoDecodeErrorZ;
2767
2768 /**
2769  * A dynamically-allocated array of u64s of arbitrary size.
2770  * This corresponds to std::vector in C++
2771  */
2772 typedef struct LDKCVec_u64Z {
2773    /**
2774     * The elements in the array.
2775     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2776     */
2777    uint64_t *data;
2778    /**
2779     * The number of elements pointed to by `data`.
2780     */
2781    uintptr_t datalen;
2782 } LDKCVec_u64Z;
2783
2784
2785
2786 /**
2787  * Details about a node in the network, known from the network announcement.
2788  */
2789 typedef struct MUST_USE_STRUCT LDKNodeInfo {
2790    /**
2791     * A pointer to the opaque Rust object.
2792     * Nearly everywhere, inner must be non-null, however in places where
2793     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2794     */
2795    LDKnativeNodeInfo *inner;
2796    /**
2797     * Indicates that this is the only struct which contains the same pointer.
2798     * Rust functions which take ownership of an object provided via an argument require
2799     * this to be true and invalidate the object pointed to by inner.
2800     */
2801    bool is_owned;
2802 } LDKNodeInfo;
2803
2804 /**
2805  * The contents of CResult_NodeInfoDecodeErrorZ
2806  */
2807 typedef union LDKCResult_NodeInfoDecodeErrorZPtr {
2808    /**
2809     * A pointer to the contents in the success state.
2810     * Reading from this pointer when `result_ok` is not set is undefined.
2811     */
2812    struct LDKNodeInfo *result;
2813    /**
2814     * A pointer to the contents in the error state.
2815     * Reading from this pointer when `result_ok` is set is undefined.
2816     */
2817    struct LDKDecodeError *err;
2818 } LDKCResult_NodeInfoDecodeErrorZPtr;
2819
2820 /**
2821  * A CResult_NodeInfoDecodeErrorZ represents the result of a fallible operation,
2822  * containing a crate::routing::network_graph::NodeInfo on success and a crate::ln::msgs::DecodeError on failure.
2823  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2824  */
2825 typedef struct LDKCResult_NodeInfoDecodeErrorZ {
2826    /**
2827     * The contents of this CResult_NodeInfoDecodeErrorZ, accessible via either
2828     * `err` or `result` depending on the state of `result_ok`.
2829     */
2830    union LDKCResult_NodeInfoDecodeErrorZPtr contents;
2831    /**
2832     * Whether this CResult_NodeInfoDecodeErrorZ represents a success state.
2833     */
2834    bool result_ok;
2835 } LDKCResult_NodeInfoDecodeErrorZ;
2836
2837
2838
2839 /**
2840  * Represents the network as nodes and channels between them
2841  */
2842 typedef struct MUST_USE_STRUCT LDKNetworkGraph {
2843    /**
2844     * A pointer to the opaque Rust object.
2845     * Nearly everywhere, inner must be non-null, however in places where
2846     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2847     */
2848    LDKnativeNetworkGraph *inner;
2849    /**
2850     * Indicates that this is the only struct which contains the same pointer.
2851     * Rust functions which take ownership of an object provided via an argument require
2852     * this to be true and invalidate the object pointed to by inner.
2853     */
2854    bool is_owned;
2855 } LDKNetworkGraph;
2856
2857 /**
2858  * The contents of CResult_NetworkGraphDecodeErrorZ
2859  */
2860 typedef union LDKCResult_NetworkGraphDecodeErrorZPtr {
2861    /**
2862     * A pointer to the contents in the success state.
2863     * Reading from this pointer when `result_ok` is not set is undefined.
2864     */
2865    struct LDKNetworkGraph *result;
2866    /**
2867     * A pointer to the contents in the error state.
2868     * Reading from this pointer when `result_ok` is set is undefined.
2869     */
2870    struct LDKDecodeError *err;
2871 } LDKCResult_NetworkGraphDecodeErrorZPtr;
2872
2873 /**
2874  * A CResult_NetworkGraphDecodeErrorZ represents the result of a fallible operation,
2875  * containing a crate::routing::network_graph::NetworkGraph on success and a crate::ln::msgs::DecodeError on failure.
2876  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2877  */
2878 typedef struct LDKCResult_NetworkGraphDecodeErrorZ {
2879    /**
2880     * The contents of this CResult_NetworkGraphDecodeErrorZ, accessible via either
2881     * `err` or `result` depending on the state of `result_ok`.
2882     */
2883    union LDKCResult_NetworkGraphDecodeErrorZPtr contents;
2884    /**
2885     * Whether this CResult_NetworkGraphDecodeErrorZ represents a success state.
2886     */
2887    bool result_ok;
2888 } LDKCResult_NetworkGraphDecodeErrorZ;
2889
2890 /**
2891  * A tuple of 2 elements. See the individual fields for the types contained.
2892  */
2893 typedef struct LDKC2Tuple_usizeTransactionZ {
2894    /**
2895     * The element at position 0
2896     */
2897    uintptr_t a;
2898    /**
2899     * The element at position 1
2900     */
2901    struct LDKTransaction b;
2902 } LDKC2Tuple_usizeTransactionZ;
2903
2904 /**
2905  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_usizeTransactionZs of arbitrary size.
2906  * This corresponds to std::vector in C++
2907  */
2908 typedef struct LDKCVec_C2Tuple_usizeTransactionZZ {
2909    /**
2910     * The elements in the array.
2911     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2912     */
2913    struct LDKC2Tuple_usizeTransactionZ *data;
2914    /**
2915     * The number of elements pointed to by `data`.
2916     */
2917    uintptr_t datalen;
2918 } LDKCVec_C2Tuple_usizeTransactionZZ;
2919
2920 /**
2921  * The contents of CResult_NoneChannelMonitorUpdateErrZ
2922  */
2923 typedef union LDKCResult_NoneChannelMonitorUpdateErrZPtr {
2924    /**
2925     * Note that this value is always NULL, as there are no contents in the OK variant
2926     */
2927    void *result;
2928    /**
2929     * A pointer to the contents in the error state.
2930     * Reading from this pointer when `result_ok` is set is undefined.
2931     */
2932    enum LDKChannelMonitorUpdateErr *err;
2933 } LDKCResult_NoneChannelMonitorUpdateErrZPtr;
2934
2935 /**
2936  * A CResult_NoneChannelMonitorUpdateErrZ represents the result of a fallible operation,
2937  * containing a () on success and a crate::chain::channelmonitor::ChannelMonitorUpdateErr on failure.
2938  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2939  */
2940 typedef struct LDKCResult_NoneChannelMonitorUpdateErrZ {
2941    /**
2942     * The contents of this CResult_NoneChannelMonitorUpdateErrZ, accessible via either
2943     * `err` or `result` depending on the state of `result_ok`.
2944     */
2945    union LDKCResult_NoneChannelMonitorUpdateErrZPtr contents;
2946    /**
2947     * Whether this CResult_NoneChannelMonitorUpdateErrZ represents a success state.
2948     */
2949    bool result_ok;
2950 } LDKCResult_NoneChannelMonitorUpdateErrZ;
2951
2952
2953
2954 /**
2955  * Simple structure sent back by `chain::Watch` when an HTLC from a forward channel is detected on
2956  * chain. Used to update the corresponding HTLC in the backward channel. Failing to pass the
2957  * preimage claim backward will lead to loss of funds.
2958  */
2959 typedef struct MUST_USE_STRUCT LDKHTLCUpdate {
2960    /**
2961     * A pointer to the opaque Rust object.
2962     * Nearly everywhere, inner must be non-null, however in places where
2963     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2964     */
2965    LDKnativeHTLCUpdate *inner;
2966    /**
2967     * Indicates that this is the only struct which contains the same pointer.
2968     * Rust functions which take ownership of an object provided via an argument require
2969     * this to be true and invalidate the object pointed to by inner.
2970     */
2971    bool is_owned;
2972 } LDKHTLCUpdate;
2973
2974
2975
2976 /**
2977  * A reference to a transaction output.
2978  *
2979  * Differs from bitcoin::blockdata::transaction::OutPoint as the index is a u16 instead of u32
2980  * due to LN's restrictions on index values. Should reduce (possibly) unsafe conversions this way.
2981  */
2982 typedef struct MUST_USE_STRUCT LDKOutPoint {
2983    /**
2984     * A pointer to the opaque Rust object.
2985     * Nearly everywhere, inner must be non-null, however in places where
2986     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2987     */
2988    LDKnativeOutPoint *inner;
2989    /**
2990     * Indicates that this is the only struct which contains the same pointer.
2991     * Rust functions which take ownership of an object provided via an argument require
2992     * this to be true and invalidate the object pointed to by inner.
2993     */
2994    bool is_owned;
2995 } LDKOutPoint;
2996
2997 /**
2998  * An event to be processed by the ChannelManager.
2999  */
3000 typedef enum LDKMonitorEvent_Tag {
3001    /**
3002     * A monitor event containing an HTLCUpdate.
3003     */
3004    LDKMonitorEvent_HTLCEvent,
3005    /**
3006     * A monitor event that the Channel's commitment transaction was broadcasted.
3007     */
3008    LDKMonitorEvent_CommitmentTxBroadcasted,
3009    /**
3010     * Must be last for serialization purposes
3011     */
3012    LDKMonitorEvent_Sentinel,
3013 } LDKMonitorEvent_Tag;
3014
3015 typedef struct MUST_USE_STRUCT LDKMonitorEvent {
3016    LDKMonitorEvent_Tag tag;
3017    union {
3018       struct {
3019          struct LDKHTLCUpdate htlc_event;
3020       };
3021       struct {
3022          struct LDKOutPoint commitment_tx_broadcasted;
3023       };
3024    };
3025 } LDKMonitorEvent;
3026
3027 /**
3028  * A dynamically-allocated array of crate::chain::channelmonitor::MonitorEvents of arbitrary size.
3029  * This corresponds to std::vector in C++
3030  */
3031 typedef struct LDKCVec_MonitorEventZ {
3032    /**
3033     * The elements in the array.
3034     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3035     */
3036    struct LDKMonitorEvent *data;
3037    /**
3038     * The number of elements pointed to by `data`.
3039     */
3040    uintptr_t datalen;
3041 } LDKCVec_MonitorEventZ;
3042
3043
3044
3045 /**
3046  * Information about a spendable output to a P2WSH script. See
3047  * SpendableOutputDescriptor::DelayedPaymentOutput for more details on how to spend this.
3048  */
3049 typedef struct MUST_USE_STRUCT LDKDelayedPaymentOutputDescriptor {
3050    /**
3051     * A pointer to the opaque Rust object.
3052     * Nearly everywhere, inner must be non-null, however in places where
3053     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3054     */
3055    LDKnativeDelayedPaymentOutputDescriptor *inner;
3056    /**
3057     * Indicates that this is the only struct which contains the same pointer.
3058     * Rust functions which take ownership of an object provided via an argument require
3059     * this to be true and invalidate the object pointed to by inner.
3060     */
3061    bool is_owned;
3062 } LDKDelayedPaymentOutputDescriptor;
3063
3064
3065
3066 /**
3067  * Information about a spendable output to our \"payment key\". See
3068  * SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this.
3069  */
3070 typedef struct MUST_USE_STRUCT LDKStaticPaymentOutputDescriptor {
3071    /**
3072     * A pointer to the opaque Rust object.
3073     * Nearly everywhere, inner must be non-null, however in places where
3074     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3075     */
3076    LDKnativeStaticPaymentOutputDescriptor *inner;
3077    /**
3078     * Indicates that this is the only struct which contains the same pointer.
3079     * Rust functions which take ownership of an object provided via an argument require
3080     * this to be true and invalidate the object pointed to by inner.
3081     */
3082    bool is_owned;
3083 } LDKStaticPaymentOutputDescriptor;
3084
3085 /**
3086  * When on-chain outputs are created by rust-lightning (which our counterparty is not able to
3087  * claim at any point in the future) an event is generated which you must track and be able to
3088  * spend on-chain. The information needed to do this is provided in this enum, including the
3089  * outpoint describing which txid and output index is available, the full output which exists at
3090  * that txid/index, and any keys or other information required to sign.
3091  */
3092 typedef enum LDKSpendableOutputDescriptor_Tag {
3093    /**
3094     * An output to a script which was provided via KeysInterface directly, either from
3095     * `get_destination_script()` or `get_shutdown_pubkey()`, thus you should already know how to
3096     * spend it. No secret keys are provided as rust-lightning was never given any key.
3097     * These may include outputs from a transaction punishing our counterparty or claiming an HTLC
3098     * on-chain using the payment preimage or after it has timed out.
3099     */
3100    LDKSpendableOutputDescriptor_StaticOutput,
3101    /**
3102     * An output to a P2WSH script which can be spent with a single signature after a CSV delay.
3103     *
3104     * The witness in the spending input should be:
3105     * <BIP 143 signature> <empty vector> (MINIMALIF standard rule) <provided witnessScript>
3106     *
3107     * Note that the nSequence field in the spending input must be set to to_self_delay
3108     * (which means the transaction is not broadcastable until at least to_self_delay
3109     * blocks after the outpoint confirms).
3110     *
3111     * These are generally the result of a \"revocable\" output to us, spendable only by us unless
3112     * it is an output from an old state which we broadcast (which should never happen).
3113     *
3114     * To derive the delayed_payment key which is used to sign for this input, you must pass the
3115     * holder delayed_payment_base_key (ie the private key which corresponds to the pubkey in
3116     * Sign::pubkeys().delayed_payment_basepoint) and the provided per_commitment_point to
3117     * chan_utils::derive_private_key. The public key can be generated without the secret key
3118     * using chan_utils::derive_public_key and only the delayed_payment_basepoint which appears in
3119     * Sign::pubkeys().
3120     *
3121     * To derive the revocation_pubkey provided here (which is used in the witness
3122     * script generation), you must pass the counterparty revocation_basepoint (which appears in the
3123     * call to Sign::ready_channel) and the provided per_commitment point
3124     * to chan_utils::derive_public_revocation_key.
3125     *
3126     * The witness script which is hashed and included in the output script_pubkey may be
3127     * regenerated by passing the revocation_pubkey (derived as above), our delayed_payment pubkey
3128     * (derived as above), and the to_self_delay contained here to
3129     * chan_utils::get_revokeable_redeemscript.
3130     */
3131    LDKSpendableOutputDescriptor_DelayedPaymentOutput,
3132    /**
3133     * An output to a P2WPKH, spendable exclusively by our payment key (ie the private key which
3134     * corresponds to the public key in Sign::pubkeys().payment_point).
3135     * The witness in the spending input, is, thus, simply:
3136     * <BIP 143 signature> <payment key>
3137     *
3138     * These are generally the result of our counterparty having broadcast the current state,
3139     * allowing us to claim the non-HTLC-encumbered outputs immediately.
3140     */
3141    LDKSpendableOutputDescriptor_StaticPaymentOutput,
3142    /**
3143     * Must be last for serialization purposes
3144     */
3145    LDKSpendableOutputDescriptor_Sentinel,
3146 } LDKSpendableOutputDescriptor_Tag;
3147
3148 typedef struct LDKSpendableOutputDescriptor_LDKStaticOutput_Body {
3149    /**
3150     * The outpoint which is spendable
3151     */
3152    struct LDKOutPoint outpoint;
3153    /**
3154     * The output which is referenced by the given outpoint.
3155     */
3156    struct LDKTxOut output;
3157 } LDKSpendableOutputDescriptor_LDKStaticOutput_Body;
3158
3159 typedef struct MUST_USE_STRUCT LDKSpendableOutputDescriptor {
3160    LDKSpendableOutputDescriptor_Tag tag;
3161    union {
3162       LDKSpendableOutputDescriptor_LDKStaticOutput_Body static_output;
3163       struct {
3164          struct LDKDelayedPaymentOutputDescriptor delayed_payment_output;
3165       };
3166       struct {
3167          struct LDKStaticPaymentOutputDescriptor static_payment_output;
3168       };
3169    };
3170 } LDKSpendableOutputDescriptor;
3171
3172 /**
3173  * A dynamically-allocated array of crate::chain::keysinterface::SpendableOutputDescriptors of arbitrary size.
3174  * This corresponds to std::vector in C++
3175  */
3176 typedef struct LDKCVec_SpendableOutputDescriptorZ {
3177    /**
3178     * The elements in the array.
3179     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3180     */
3181    struct LDKSpendableOutputDescriptor *data;
3182    /**
3183     * The number of elements pointed to by `data`.
3184     */
3185    uintptr_t datalen;
3186 } LDKCVec_SpendableOutputDescriptorZ;
3187
3188 /**
3189  * An Event which you should probably take some action in response to.
3190  *
3191  * Note that while Writeable and Readable are implemented for Event, you probably shouldn't use
3192  * them directly as they don't round-trip exactly (for example FundingGenerationReady is never
3193  * written as it makes no sense to respond to it after reconnecting to peers).
3194  */
3195 typedef enum LDKEvent_Tag {
3196    /**
3197     * Used to indicate that the client should generate a funding transaction with the given
3198     * parameters and then call ChannelManager::funding_transaction_generated.
3199     * Generated in ChannelManager message handling.
3200     * Note that *all inputs* in the funding transaction must spend SegWit outputs or your
3201     * counterparty can steal your funds!
3202     */
3203    LDKEvent_FundingGenerationReady,
3204    /**
3205     * Indicates we've received money! Just gotta dig out that payment preimage and feed it to
3206     * ChannelManager::claim_funds to get it....
3207     * Note that if the preimage is not known or the amount paid is incorrect, you should call
3208     * ChannelManager::fail_htlc_backwards to free up resources for this HTLC and avoid
3209     * network congestion.
3210     * The amount paid should be considered 'incorrect' when it is less than or more than twice
3211     * the amount expected.
3212     * If you fail to call either ChannelManager::claim_funds or
3213     * ChannelManager::fail_htlc_backwards within the HTLC's timeout, the HTLC will be
3214     * automatically failed.
3215     */
3216    LDKEvent_PaymentReceived,
3217    /**
3218     * Indicates an outbound payment we made succeeded (ie it made it all the way to its target
3219     * and we got back the payment preimage for it).
3220     * Note that duplicative PaymentSent Events may be generated - it is your responsibility to
3221     * deduplicate them by payment_preimage (which MUST be unique)!
3222     */
3223    LDKEvent_PaymentSent,
3224    /**
3225     * Indicates an outbound payment we made failed. Probably some intermediary node dropped
3226     * something. You may wish to retry with a different route.
3227     * Note that duplicative PaymentFailed Events may be generated - it is your responsibility to
3228     * deduplicate them by payment_hash (which MUST be unique)!
3229     */
3230    LDKEvent_PaymentFailed,
3231    /**
3232     * Used to indicate that ChannelManager::process_pending_htlc_forwards should be called at a
3233     * time in the future.
3234     */
3235    LDKEvent_PendingHTLCsForwardable,
3236    /**
3237     * Used to indicate that an output was generated on-chain which you should know how to spend.
3238     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
3239     * counterparty spending them due to some kind of timeout. Thus, you need to store them
3240     * somewhere and spend them when you create on-chain transactions.
3241     */
3242    LDKEvent_SpendableOutputs,
3243    /**
3244     * Must be last for serialization purposes
3245     */
3246    LDKEvent_Sentinel,
3247 } LDKEvent_Tag;
3248
3249 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
3250    /**
3251     * The random channel_id we picked which you'll need to pass into
3252     * ChannelManager::funding_transaction_generated.
3253     */
3254    struct LDKThirtyTwoBytes temporary_channel_id;
3255    /**
3256     * The value, in satoshis, that the output should have.
3257     */
3258    uint64_t channel_value_satoshis;
3259    /**
3260     * The script which should be used in the transaction output.
3261     */
3262    struct LDKCVec_u8Z output_script;
3263    /**
3264     * The value passed in to ChannelManager::create_channel
3265     */
3266    uint64_t user_channel_id;
3267 } LDKEvent_LDKFundingGenerationReady_Body;
3268
3269 typedef struct LDKEvent_LDKPaymentReceived_Body {
3270    /**
3271     * The hash for which the preimage should be handed to the ChannelManager.
3272     */
3273    struct LDKThirtyTwoBytes payment_hash;
3274    /**
3275     * The \"payment secret\". This authenticates the sender to the recipient, preventing a
3276     * number of deanonymization attacks during the routing process.
3277     * As nodes upgrade, the invoices you provide should likely migrate to setting the
3278     * payment_secret feature to required, at which point you should fail_backwards any HTLCs
3279     * which have a None here.
3280     * Until then, however, values of None should be ignored, and only incorrect Some values
3281     * should result in an HTLC fail_backwards.
3282     * Note that, in any case, this value must be passed as-is to any fail or claim calls as
3283     * the HTLC index includes this value.
3284     */
3285    struct LDKThirtyTwoBytes payment_secret;
3286    /**
3287     * The value, in thousandths of a satoshi, that this payment is for. Note that you must
3288     * compare this to the expected value before accepting the payment (as otherwise you are
3289     * providing proof-of-payment for less than the value you expected!).
3290     */
3291    uint64_t amt;
3292 } LDKEvent_LDKPaymentReceived_Body;
3293
3294 typedef struct LDKEvent_LDKPaymentSent_Body {
3295    /**
3296     * The preimage to the hash given to ChannelManager::send_payment.
3297     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
3298     * store it somehow!
3299     */
3300    struct LDKThirtyTwoBytes payment_preimage;
3301 } LDKEvent_LDKPaymentSent_Body;
3302
3303 typedef struct LDKEvent_LDKPaymentFailed_Body {
3304    /**
3305     * The hash which was given to ChannelManager::send_payment.
3306     */
3307    struct LDKThirtyTwoBytes payment_hash;
3308    /**
3309     * Indicates the payment was rejected for some reason by the recipient. This implies that
3310     * the payment has failed, not just the route in question. If this is not set, you may
3311     * retry the payment via a different route.
3312     */
3313    bool rejected_by_dest;
3314 } LDKEvent_LDKPaymentFailed_Body;
3315
3316 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
3317    /**
3318     * The minimum amount of time that should be waited prior to calling
3319     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
3320     * you should wait a random amount of time in roughly the range (now + time_forwardable,
3321     * now + 5*time_forwardable).
3322     */
3323    uint64_t time_forwardable;
3324 } LDKEvent_LDKPendingHTLCsForwardable_Body;
3325
3326 typedef struct LDKEvent_LDKSpendableOutputs_Body {
3327    /**
3328     * The outputs which you should store as spendable by you.
3329     */
3330    struct LDKCVec_SpendableOutputDescriptorZ outputs;
3331 } LDKEvent_LDKSpendableOutputs_Body;
3332
3333 typedef struct MUST_USE_STRUCT LDKEvent {
3334    LDKEvent_Tag tag;
3335    union {
3336       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
3337       LDKEvent_LDKPaymentReceived_Body payment_received;
3338       LDKEvent_LDKPaymentSent_Body payment_sent;
3339       LDKEvent_LDKPaymentFailed_Body payment_failed;
3340       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
3341       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
3342    };
3343 } LDKEvent;
3344
3345 /**
3346  * A dynamically-allocated array of crate::util::events::Events of arbitrary size.
3347  * This corresponds to std::vector in C++
3348  */
3349 typedef struct LDKCVec_EventZ {
3350    /**
3351     * The elements in the array.
3352     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3353     */
3354    struct LDKEvent *data;
3355    /**
3356     * The number of elements pointed to by `data`.
3357     */
3358    uintptr_t datalen;
3359 } LDKCVec_EventZ;
3360
3361 /**
3362  * The contents of CResult_OutPointDecodeErrorZ
3363  */
3364 typedef union LDKCResult_OutPointDecodeErrorZPtr {
3365    /**
3366     * A pointer to the contents in the success state.
3367     * Reading from this pointer when `result_ok` is not set is undefined.
3368     */
3369    struct LDKOutPoint *result;
3370    /**
3371     * A pointer to the contents in the error state.
3372     * Reading from this pointer when `result_ok` is set is undefined.
3373     */
3374    struct LDKDecodeError *err;
3375 } LDKCResult_OutPointDecodeErrorZPtr;
3376
3377 /**
3378  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
3379  * containing a crate::chain::transaction::OutPoint on success and a crate::ln::msgs::DecodeError on failure.
3380  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3381  */
3382 typedef struct LDKCResult_OutPointDecodeErrorZ {
3383    /**
3384     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
3385     * `err` or `result` depending on the state of `result_ok`.
3386     */
3387    union LDKCResult_OutPointDecodeErrorZPtr contents;
3388    /**
3389     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
3390     */
3391    bool result_ok;
3392 } LDKCResult_OutPointDecodeErrorZ;
3393
3394
3395
3396 /**
3397  * An update generated by the underlying Channel itself which contains some new information the
3398  * ChannelMonitor should be made aware of.
3399  */
3400 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
3401    /**
3402     * A pointer to the opaque Rust object.
3403     * Nearly everywhere, inner must be non-null, however in places where
3404     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3405     */
3406    LDKnativeChannelMonitorUpdate *inner;
3407    /**
3408     * Indicates that this is the only struct which contains the same pointer.
3409     * Rust functions which take ownership of an object provided via an argument require
3410     * this to be true and invalidate the object pointed to by inner.
3411     */
3412    bool is_owned;
3413 } LDKChannelMonitorUpdate;
3414
3415 /**
3416  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
3417  */
3418 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
3419    /**
3420     * A pointer to the contents in the success state.
3421     * Reading from this pointer when `result_ok` is not set is undefined.
3422     */
3423    struct LDKChannelMonitorUpdate *result;
3424    /**
3425     * A pointer to the contents in the error state.
3426     * Reading from this pointer when `result_ok` is set is undefined.
3427     */
3428    struct LDKDecodeError *err;
3429 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
3430
3431 /**
3432  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
3433  * containing a crate::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::ln::msgs::DecodeError on failure.
3434  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3435  */
3436 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
3437    /**
3438     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
3439     * `err` or `result` depending on the state of `result_ok`.
3440     */
3441    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
3442    /**
3443     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
3444     */
3445    bool result_ok;
3446 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
3447
3448 /**
3449  * The contents of CResult_HTLCUpdateDecodeErrorZ
3450  */
3451 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
3452    /**
3453     * A pointer to the contents in the success state.
3454     * Reading from this pointer when `result_ok` is not set is undefined.
3455     */
3456    struct LDKHTLCUpdate *result;
3457    /**
3458     * A pointer to the contents in the error state.
3459     * Reading from this pointer when `result_ok` is set is undefined.
3460     */
3461    struct LDKDecodeError *err;
3462 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
3463
3464 /**
3465  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
3466  * containing a crate::chain::channelmonitor::HTLCUpdate on success and a crate::ln::msgs::DecodeError on failure.
3467  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3468  */
3469 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
3470    /**
3471     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
3472     * `err` or `result` depending on the state of `result_ok`.
3473     */
3474    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
3475    /**
3476     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
3477     */
3478    bool result_ok;
3479 } LDKCResult_HTLCUpdateDecodeErrorZ;
3480
3481
3482
3483 /**
3484  * General Err type for ChannelMonitor actions. Generally, this implies that the data provided is
3485  * inconsistent with the ChannelMonitor being called. eg for ChannelMonitor::update_monitor this
3486  * means you tried to update a monitor for a different channel or the ChannelMonitorUpdate was
3487  * corrupted.
3488  * Contains a developer-readable error message.
3489  */
3490 typedef struct MUST_USE_STRUCT LDKMonitorUpdateError {
3491    /**
3492     * A pointer to the opaque Rust object.
3493     * Nearly everywhere, inner must be non-null, however in places where
3494     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3495     */
3496    LDKnativeMonitorUpdateError *inner;
3497    /**
3498     * Indicates that this is the only struct which contains the same pointer.
3499     * Rust functions which take ownership of an object provided via an argument require
3500     * this to be true and invalidate the object pointed to by inner.
3501     */
3502    bool is_owned;
3503 } LDKMonitorUpdateError;
3504
3505 /**
3506  * The contents of CResult_NoneMonitorUpdateErrorZ
3507  */
3508 typedef union LDKCResult_NoneMonitorUpdateErrorZPtr {
3509    /**
3510     * Note that this value is always NULL, as there are no contents in the OK variant
3511     */
3512    void *result;
3513    /**
3514     * A pointer to the contents in the error state.
3515     * Reading from this pointer when `result_ok` is set is undefined.
3516     */
3517    struct LDKMonitorUpdateError *err;
3518 } LDKCResult_NoneMonitorUpdateErrorZPtr;
3519
3520 /**
3521  * A CResult_NoneMonitorUpdateErrorZ represents the result of a fallible operation,
3522  * containing a () on success and a crate::chain::channelmonitor::MonitorUpdateError on failure.
3523  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3524  */
3525 typedef struct LDKCResult_NoneMonitorUpdateErrorZ {
3526    /**
3527     * The contents of this CResult_NoneMonitorUpdateErrorZ, accessible via either
3528     * `err` or `result` depending on the state of `result_ok`.
3529     */
3530    union LDKCResult_NoneMonitorUpdateErrorZPtr contents;
3531    /**
3532     * Whether this CResult_NoneMonitorUpdateErrorZ represents a success state.
3533     */
3534    bool result_ok;
3535 } LDKCResult_NoneMonitorUpdateErrorZ;
3536
3537 /**
3538  * A tuple of 2 elements. See the individual fields for the types contained.
3539  */
3540 typedef struct LDKC2Tuple_OutPointScriptZ {
3541    /**
3542     * The element at position 0
3543     */
3544    struct LDKOutPoint a;
3545    /**
3546     * The element at position 1
3547     */
3548    struct LDKCVec_u8Z b;
3549 } LDKC2Tuple_OutPointScriptZ;
3550
3551 /**
3552  * A tuple of 2 elements. See the individual fields for the types contained.
3553  */
3554 typedef struct LDKC2Tuple_u32ScriptZ {
3555    /**
3556     * The element at position 0
3557     */
3558    uint32_t a;
3559    /**
3560     * The element at position 1
3561     */
3562    struct LDKCVec_u8Z b;
3563 } LDKC2Tuple_u32ScriptZ;
3564
3565 /**
3566  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
3567  * This corresponds to std::vector in C++
3568  */
3569 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
3570    /**
3571     * The elements in the array.
3572     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3573     */
3574    struct LDKC2Tuple_u32ScriptZ *data;
3575    /**
3576     * The number of elements pointed to by `data`.
3577     */
3578    uintptr_t datalen;
3579 } LDKCVec_C2Tuple_u32ScriptZZ;
3580
3581 /**
3582  * A tuple of 2 elements. See the individual fields for the types contained.
3583  */
3584 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
3585    /**
3586     * The element at position 0
3587     */
3588    struct LDKThirtyTwoBytes a;
3589    /**
3590     * The element at position 1
3591     */
3592    struct LDKCVec_C2Tuple_u32ScriptZZ b;
3593 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
3594
3595 /**
3596  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
3597  * This corresponds to std::vector in C++
3598  */
3599 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
3600    /**
3601     * The elements in the array.
3602     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3603     */
3604    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
3605    /**
3606     * The number of elements pointed to by `data`.
3607     */
3608    uintptr_t datalen;
3609 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
3610
3611 /**
3612  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
3613  * This corresponds to std::vector in C++
3614  */
3615 typedef struct LDKCVec_TransactionZ {
3616    /**
3617     * The elements in the array.
3618     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3619     */
3620    struct LDKTransaction *data;
3621    /**
3622     * The number of elements pointed to by `data`.
3623     */
3624    uintptr_t datalen;
3625 } LDKCVec_TransactionZ;
3626
3627 /**
3628  * A tuple of 2 elements. See the individual fields for the types contained.
3629  */
3630 typedef struct LDKC2Tuple_u32TxOutZ {
3631    /**
3632     * The element at position 0
3633     */
3634    uint32_t a;
3635    /**
3636     * The element at position 1
3637     */
3638    struct LDKTxOut b;
3639 } LDKC2Tuple_u32TxOutZ;
3640
3641 /**
3642  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
3643  * This corresponds to std::vector in C++
3644  */
3645 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
3646    /**
3647     * The elements in the array.
3648     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3649     */
3650    struct LDKC2Tuple_u32TxOutZ *data;
3651    /**
3652     * The number of elements pointed to by `data`.
3653     */
3654    uintptr_t datalen;
3655 } LDKCVec_C2Tuple_u32TxOutZZ;
3656
3657 /**
3658  * A tuple of 2 elements. See the individual fields for the types contained.
3659  */
3660 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
3661    /**
3662     * The element at position 0
3663     */
3664    struct LDKThirtyTwoBytes a;
3665    /**
3666     * The element at position 1
3667     */
3668    struct LDKCVec_C2Tuple_u32TxOutZZ b;
3669 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
3670
3671 /**
3672  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
3673  * This corresponds to std::vector in C++
3674  */
3675 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ {
3676    /**
3677     * The elements in the array.
3678     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3679     */
3680    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
3681    /**
3682     * The number of elements pointed to by `data`.
3683     */
3684    uintptr_t datalen;
3685 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ;
3686
3687 /**
3688  * A tuple of 2 elements. See the individual fields for the types contained.
3689  */
3690 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
3691    /**
3692     * The element at position 0
3693     */
3694    struct LDKSignature a;
3695    /**
3696     * The element at position 1
3697     */
3698    struct LDKCVec_SignatureZ b;
3699 } LDKC2Tuple_SignatureCVec_SignatureZZ;
3700
3701 /**
3702  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
3703  */
3704 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
3705    /**
3706     * A pointer to the contents in the success state.
3707     * Reading from this pointer when `result_ok` is not set is undefined.
3708     */
3709    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
3710    /**
3711     * Note that this value is always NULL, as there are no contents in the Err variant
3712     */
3713    void *err;
3714 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
3715
3716 /**
3717  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
3718  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
3719  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3720  */
3721 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
3722    /**
3723     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
3724     * `err` or `result` depending on the state of `result_ok`.
3725     */
3726    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
3727    /**
3728     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
3729     */
3730    bool result_ok;
3731 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
3732
3733 /**
3734  * The contents of CResult_SignatureNoneZ
3735  */
3736 typedef union LDKCResult_SignatureNoneZPtr {
3737    /**
3738     * A pointer to the contents in the success state.
3739     * Reading from this pointer when `result_ok` is not set is undefined.
3740     */
3741    struct LDKSignature *result;
3742    /**
3743     * Note that this value is always NULL, as there are no contents in the Err variant
3744     */
3745    void *err;
3746 } LDKCResult_SignatureNoneZPtr;
3747
3748 /**
3749  * A CResult_SignatureNoneZ represents the result of a fallible operation,
3750  * containing a crate::c_types::Signature on success and a () on failure.
3751  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3752  */
3753 typedef struct LDKCResult_SignatureNoneZ {
3754    /**
3755     * The contents of this CResult_SignatureNoneZ, accessible via either
3756     * `err` or `result` depending on the state of `result_ok`.
3757     */
3758    union LDKCResult_SignatureNoneZPtr contents;
3759    /**
3760     * Whether this CResult_SignatureNoneZ represents a success state.
3761     */
3762    bool result_ok;
3763 } LDKCResult_SignatureNoneZ;
3764
3765
3766
3767 /**
3768  * The unsigned part of a channel_announcement
3769  */
3770 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
3771    /**
3772     * A pointer to the opaque Rust object.
3773     * Nearly everywhere, inner must be non-null, however in places where
3774     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3775     */
3776    LDKnativeUnsignedChannelAnnouncement *inner;
3777    /**
3778     * Indicates that this is the only struct which contains the same pointer.
3779     * Rust functions which take ownership of an object provided via an argument require
3780     * this to be true and invalidate the object pointed to by inner.
3781     */
3782    bool is_owned;
3783 } LDKUnsignedChannelAnnouncement;
3784
3785 /**
3786  * A trait to sign lightning channel transactions as described in BOLT 3.
3787  *
3788  * Signing services could be implemented on a hardware wallet. In this case,
3789  * the current Sign would be a front-end on top of a communication
3790  * channel connected to your secure device and lightning key material wouldn't
3791  * reside on a hot server. Nevertheless, a this deployment would still need
3792  * to trust the ChannelManager to avoid loss of funds as this latest component
3793  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
3794  *
3795  * A more secure iteration would be to use hashlock (or payment points) to pair
3796  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
3797  * at the price of more state and computation on the hardware wallet side. In the future,
3798  * we are looking forward to design such interface.
3799  *
3800  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
3801  * to act, as liveness and breach reply correctness are always going to be hard requirements
3802  * of LN security model, orthogonal of key management issues.
3803  */
3804 typedef struct LDKSign {
3805    /**
3806     * An opaque pointer which is passed to your function implementations as an argument.
3807     * This has no meaning in the LDK, and can be NULL or any other value.
3808     */
3809    void *this_arg;
3810    /**
3811     * Gets the per-commitment point for a specific commitment number
3812     *
3813     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3814     */
3815    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
3816    /**
3817     * Gets the commitment secret for a specific commitment number as part of the revocation process
3818     *
3819     * An external signer implementation should error here if the commitment was already signed
3820     * and should refuse to sign it in the future.
3821     *
3822     * May be called more than once for the same index.
3823     *
3824     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3825     */
3826    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
3827    /**
3828     * Gets the holder's channel public keys and basepoints
3829     */
3830    struct LDKChannelPublicKeys pubkeys;
3831    /**
3832     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
3833     * Note that this takes a pointer to this object, not the this_ptr like other methods do
3834     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
3835     */
3836    void (*set_pubkeys)(const struct LDKSign*NONNULL_PTR );
3837    /**
3838     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
3839     * some SpendableOutputDescriptor types. This should be sufficient to identify this
3840     * Sign object uniquely and lookup or re-derive its keys.
3841     */
3842    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
3843    /**
3844     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
3845     *
3846     * Note that if signing fails or is rejected, the channel will be force-closed.
3847     */
3848    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx);
3849    /**
3850     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
3851     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
3852     * latest commitment_tx when we initiate a force-close.
3853     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
3854     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
3855     * the latest.
3856     * This may be called multiple times for the same transaction.
3857     *
3858     * An external signer implementation should check that the commitment has not been revoked.
3859     *
3860     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
3861     */
3862    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
3863    /**
3864     * Create a signature for the given input in a transaction spending an HTLC or commitment
3865     * transaction output when our counterparty broadcasts an old state.
3866     *
3867     * A justice transaction may claim multiples outputs at the same time if timelocks are
3868     * similar, but only a signature for the input at index `input` should be signed for here.
3869     * It may be called multiples time for same output(s) if a fee-bump is needed with regards
3870     * to an upcoming timelock expiration.
3871     *
3872     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3873     *
3874     * per_commitment_key is revocation secret which was provided by our counterparty when they
3875     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3876     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
3877     * so).
3878     *
3879     * htlc holds HTLC elements (hash, timelock) if the output being spent is a HTLC output, thus
3880     * changing the format of the witness script (which is committed to in the BIP 143
3881     * signatures).
3882     */
3883    struct LDKCResult_SignatureNoneZ (*sign_justice_transaction)(const void *this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32], const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
3884    /**
3885     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
3886     * transaction, either offered or received.
3887     *
3888     * Such a transaction may claim multiples offered outputs at same time if we know the
3889     * preimage for each when we create it, but only the input at index `input` should be
3890     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
3891     * needed with regards to an upcoming timelock expiration.
3892     *
3893     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
3894     * outputs.
3895     *
3896     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3897     *
3898     * Per_commitment_point is the dynamic point corresponding to the channel state
3899     * detected onchain. It has been generated by our counterparty and is used to derive
3900     * channel state keys, which are then included in the witness script and committed to in the
3901     * BIP 143 signature.
3902     */
3903    struct LDKCResult_SignatureNoneZ (*sign_counterparty_htlc_transaction)(const void *this_arg, struct LDKTransaction htlc_tx, uintptr_t input, uint64_t amount, struct LDKPublicKey per_commitment_point, const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc);
3904    /**
3905     * Create a signature for a (proposed) closing transaction.
3906     *
3907     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
3908     * chosen to forgo their output as dust.
3909     */
3910    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, struct LDKTransaction closing_tx);
3911    /**
3912     * Signs a channel announcement message with our funding key, proving it comes from one
3913     * of the channel participants.
3914     *
3915     * Note that if this fails or is rejected, the channel will not be publicly announced and
3916     * our counterparty may (though likely will not) close the channel on us for violating the
3917     * protocol.
3918     */
3919    struct LDKCResult_SignatureNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
3920    /**
3921     * Set the counterparty static channel data, including basepoints,
3922     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
3923     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
3924     * they MUST NOT be allowed to change to different values once set.
3925     *
3926     * channel_parameters.is_populated() MUST be true.
3927     *
3928     * We bind holder_selected_contest_delay late here for API convenience.
3929     *
3930     * Will be called before any signatures are applied.
3931     */
3932    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
3933    /**
3934     * Creates a copy of the object pointed to by this_arg, for a copy of this Sign.
3935     * Note that the ultimate copy of the Sign will have all function pointers the same as the original.
3936     * May be NULL if no action needs to be taken, the this_arg pointer will be copied into the new Sign.
3937     */
3938    void *(*clone)(const void *this_arg);
3939    /**
3940     * Serialize the object into a byte array
3941     */
3942    struct LDKCVec_u8Z (*write)(const void *this_arg);
3943    /**
3944     * Frees any resources associated with this object given its this_arg pointer.
3945     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
3946     */
3947    void (*free)(void *this_arg);
3948 } LDKSign;
3949
3950
3951
3952 /**
3953  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
3954  * on-chain transactions to ensure no loss of funds occurs.
3955  *
3956  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
3957  * information and are actively monitoring the chain.
3958  *
3959  * Pending Events or updated HTLCs which have not yet been read out by
3960  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
3961  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
3962  * gotten are fully handled before re-serializing the new state.
3963  *
3964  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
3965  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
3966  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
3967  * returned block hash and the the current chain and then reconnecting blocks to get to the
3968  * best chain) upon deserializing the object!
3969  */
3970 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
3971    /**
3972     * A pointer to the opaque Rust object.
3973     * Nearly everywhere, inner must be non-null, however in places where
3974     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3975     */
3976    LDKnativeChannelMonitor *inner;
3977    /**
3978     * Indicates that this is the only struct which contains the same pointer.
3979     * Rust functions which take ownership of an object provided via an argument require
3980     * this to be true and invalidate the object pointed to by inner.
3981     */
3982    bool is_owned;
3983 } LDKChannelMonitor;
3984
3985 /**
3986  * A tuple of 2 elements. See the individual fields for the types contained.
3987  */
3988 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
3989    /**
3990     * The element at position 0
3991     */
3992    struct LDKThirtyTwoBytes a;
3993    /**
3994     * The element at position 1
3995     */
3996    struct LDKChannelMonitor b;
3997 } LDKC2Tuple_BlockHashChannelMonitorZ;
3998
3999 /**
4000  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
4001  */
4002 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
4003    /**
4004     * A pointer to the contents in the success state.
4005     * Reading from this pointer when `result_ok` is not set is undefined.
4006     */
4007    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
4008    /**
4009     * A pointer to the contents in the error state.
4010     * Reading from this pointer when `result_ok` is set is undefined.
4011     */
4012    struct LDKDecodeError *err;
4013 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
4014
4015 /**
4016  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
4017  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::ln::msgs::DecodeError on failure.
4018  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4019  */
4020 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
4021    /**
4022     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
4023     * `err` or `result` depending on the state of `result_ok`.
4024     */
4025    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
4026    /**
4027     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
4028     */
4029    bool result_ok;
4030 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
4031
4032 /**
4033  * The contents of CResult_TxOutAccessErrorZ
4034  */
4035 typedef union LDKCResult_TxOutAccessErrorZPtr {
4036    /**
4037     * A pointer to the contents in the success state.
4038     * Reading from this pointer when `result_ok` is not set is undefined.
4039     */
4040    struct LDKTxOut *result;
4041    /**
4042     * A pointer to the contents in the error state.
4043     * Reading from this pointer when `result_ok` is set is undefined.
4044     */
4045    enum LDKAccessError *err;
4046 } LDKCResult_TxOutAccessErrorZPtr;
4047
4048 /**
4049  * A CResult_TxOutAccessErrorZ represents the result of a fallible operation,
4050  * containing a crate::c_types::TxOut on success and a crate::chain::AccessError on failure.
4051  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4052  */
4053 typedef struct LDKCResult_TxOutAccessErrorZ {
4054    /**
4055     * The contents of this CResult_TxOutAccessErrorZ, accessible via either
4056     * `err` or `result` depending on the state of `result_ok`.
4057     */
4058    union LDKCResult_TxOutAccessErrorZPtr contents;
4059    /**
4060     * Whether this CResult_TxOutAccessErrorZ represents a success state.
4061     */
4062    bool result_ok;
4063 } LDKCResult_TxOutAccessErrorZ;
4064
4065 /**
4066  * An enum which can either contain a crate::c_types::derived::C2Tuple_usizeTransactionZ or not
4067  */
4068 typedef enum LDKCOption_C2Tuple_usizeTransactionZZ_Tag {
4069    /**
4070     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains a crate::c_types::derived::C2Tuple_usizeTransactionZ
4071     */
4072    LDKCOption_C2Tuple_usizeTransactionZZ_Some,
4073    /**
4074     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains nothing
4075     */
4076    LDKCOption_C2Tuple_usizeTransactionZZ_None,
4077    /**
4078     * Must be last for serialization purposes
4079     */
4080    LDKCOption_C2Tuple_usizeTransactionZZ_Sentinel,
4081 } LDKCOption_C2Tuple_usizeTransactionZZ_Tag;
4082
4083 typedef struct LDKCOption_C2Tuple_usizeTransactionZZ {
4084    LDKCOption_C2Tuple_usizeTransactionZZ_Tag tag;
4085    union {
4086       struct {
4087          struct LDKC2Tuple_usizeTransactionZ some;
4088       };
4089    };
4090 } LDKCOption_C2Tuple_usizeTransactionZZ;
4091
4092 /**
4093  * A Rust str object, ie a reference to a UTF8-valid string.
4094  * This is *not* null-terminated so cannot be used directly as a C string!
4095  */
4096 typedef struct LDKStr {
4097    /**
4098     * A pointer to the string's bytes, in UTF8 encoding
4099     */
4100    const uint8_t *chars;
4101    /**
4102     * The number of bytes (not characters!) pointed to by `chars`
4103     */
4104    uintptr_t len;
4105 } LDKStr;
4106
4107 /**
4108  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
4109  * too-high values)
4110  */
4111 typedef enum LDKAPIError_Tag {
4112    /**
4113     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
4114     * are documented, but generally indicates some precondition of a function was violated.
4115     */
4116    LDKAPIError_APIMisuseError,
4117    /**
4118     * Due to a high feerate, we were unable to complete the request.
4119     * For example, this may be returned if the feerate implies we cannot open a channel at the
4120     * requested value, but opening a larger channel would succeed.
4121     */
4122    LDKAPIError_FeeRateTooHigh,
4123    /**
4124     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
4125     * too-many-hops, etc).
4126     */
4127    LDKAPIError_RouteError,
4128    /**
4129     * We were unable to complete the request as the Channel required to do so is unable to
4130     * complete the request (or was not found). This can take many forms, including disconnected
4131     * peer, channel at capacity, channel shutting down, etc.
4132     */
4133    LDKAPIError_ChannelUnavailable,
4134    /**
4135     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
4136     * attempted action to fail.
4137     */
4138    LDKAPIError_MonitorUpdateFailed,
4139    /**
4140     * Must be last for serialization purposes
4141     */
4142    LDKAPIError_Sentinel,
4143 } LDKAPIError_Tag;
4144
4145 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
4146    /**
4147     * A human-readable error message
4148     */
4149    struct LDKCVec_u8Z err;
4150 } LDKAPIError_LDKAPIMisuseError_Body;
4151
4152 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
4153    /**
4154     * A human-readable error message
4155     */
4156    struct LDKCVec_u8Z err;
4157    /**
4158     * The feerate which was too high.
4159     */
4160    uint32_t feerate;
4161 } LDKAPIError_LDKFeeRateTooHigh_Body;
4162
4163 typedef struct LDKAPIError_LDKRouteError_Body {
4164    /**
4165     * A human-readable error message
4166     */
4167    struct LDKStr err;
4168 } LDKAPIError_LDKRouteError_Body;
4169
4170 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
4171    /**
4172     * A human-readable error message
4173     */
4174    struct LDKCVec_u8Z err;
4175 } LDKAPIError_LDKChannelUnavailable_Body;
4176
4177 typedef struct MUST_USE_STRUCT LDKAPIError {
4178    LDKAPIError_Tag tag;
4179    union {
4180       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
4181       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
4182       LDKAPIError_LDKRouteError_Body route_error;
4183       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
4184    };
4185 } LDKAPIError;
4186
4187 /**
4188  * The contents of CResult_NoneAPIErrorZ
4189  */
4190 typedef union LDKCResult_NoneAPIErrorZPtr {
4191    /**
4192     * Note that this value is always NULL, as there are no contents in the OK variant
4193     */
4194    void *result;
4195    /**
4196     * A pointer to the contents in the error state.
4197     * Reading from this pointer when `result_ok` is set is undefined.
4198     */
4199    struct LDKAPIError *err;
4200 } LDKCResult_NoneAPIErrorZPtr;
4201
4202 /**
4203  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
4204  * containing a () on success and a crate::util::errors::APIError on failure.
4205  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4206  */
4207 typedef struct LDKCResult_NoneAPIErrorZ {
4208    /**
4209     * The contents of this CResult_NoneAPIErrorZ, accessible via either
4210     * `err` or `result` depending on the state of `result_ok`.
4211     */
4212    union LDKCResult_NoneAPIErrorZPtr contents;
4213    /**
4214     * Whether this CResult_NoneAPIErrorZ represents a success state.
4215     */
4216    bool result_ok;
4217 } LDKCResult_NoneAPIErrorZ;
4218
4219 /**
4220  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
4221  * This corresponds to std::vector in C++
4222  */
4223 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
4224    /**
4225     * The elements in the array.
4226     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4227     */
4228    struct LDKCResult_NoneAPIErrorZ *data;
4229    /**
4230     * The number of elements pointed to by `data`.
4231     */
4232    uintptr_t datalen;
4233 } LDKCVec_CResult_NoneAPIErrorZZ;
4234
4235 /**
4236  * A dynamically-allocated array of crate::util::errors::APIErrors of arbitrary size.
4237  * This corresponds to std::vector in C++
4238  */
4239 typedef struct LDKCVec_APIErrorZ {
4240    /**
4241     * The elements in the array.
4242     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4243     */
4244    struct LDKAPIError *data;
4245    /**
4246     * The number of elements pointed to by `data`.
4247     */
4248    uintptr_t datalen;
4249 } LDKCVec_APIErrorZ;
4250
4251
4252
4253 /**
4254  * Details of a channel, as returned by ChannelManager::list_channels and ChannelManager::list_usable_channels
4255  */
4256 typedef struct MUST_USE_STRUCT LDKChannelDetails {
4257    /**
4258     * A pointer to the opaque Rust object.
4259     * Nearly everywhere, inner must be non-null, however in places where
4260     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4261     */
4262    LDKnativeChannelDetails *inner;
4263    /**
4264     * Indicates that this is the only struct which contains the same pointer.
4265     * Rust functions which take ownership of an object provided via an argument require
4266     * this to be true and invalidate the object pointed to by inner.
4267     */
4268    bool is_owned;
4269 } LDKChannelDetails;
4270
4271 /**
4272  * A dynamically-allocated array of crate::ln::channelmanager::ChannelDetailss of arbitrary size.
4273  * This corresponds to std::vector in C++
4274  */
4275 typedef struct LDKCVec_ChannelDetailsZ {
4276    /**
4277     * The elements in the array.
4278     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4279     */
4280    struct LDKChannelDetails *data;
4281    /**
4282     * The number of elements pointed to by `data`.
4283     */
4284    uintptr_t datalen;
4285 } LDKCVec_ChannelDetailsZ;
4286
4287 /**
4288  * If a payment fails to send, it can be in one of several states. This enum is returned as the
4289  * Err() type describing which state the payment is in, see the description of individual enum
4290  * states for more.
4291  */
4292 typedef enum LDKPaymentSendFailure_Tag {
4293    /**
4294     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
4295     * send the payment at all. No channel state has been changed or messages sent to peers, and
4296     * once you've changed the parameter at error, you can freely retry the payment in full.
4297     */
4298    LDKPaymentSendFailure_ParameterError,
4299    /**
4300     * A parameter in a single path which was passed to send_payment was invalid, preventing us
4301     * from attempting to send the payment at all. No channel state has been changed or messages
4302     * sent to peers, and once you've changed the parameter at error, you can freely retry the
4303     * payment in full.
4304     *
4305     * The results here are ordered the same as the paths in the route object which was passed to
4306     * send_payment.
4307     */
4308    LDKPaymentSendFailure_PathParameterError,
4309    /**
4310     * All paths which were attempted failed to send, with no channel state change taking place.
4311     * You can freely retry the payment in full (though you probably want to do so over different
4312     * paths than the ones selected).
4313     */
4314    LDKPaymentSendFailure_AllFailedRetrySafe,
4315    /**
4316     * Some paths which were attempted failed to send, though possibly not all. At least some
4317     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
4318     * in over-/re-payment.
4319     *
4320     * The results here are ordered the same as the paths in the route object which was passed to
4321     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
4322     * retried (though there is currently no API with which to do so).
4323     *
4324     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
4325     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
4326     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
4327     * with the latest update_id.
4328     */
4329    LDKPaymentSendFailure_PartialFailure,
4330    /**
4331     * Must be last for serialization purposes
4332     */
4333    LDKPaymentSendFailure_Sentinel,
4334 } LDKPaymentSendFailure_Tag;
4335
4336 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
4337    LDKPaymentSendFailure_Tag tag;
4338    union {
4339       struct {
4340          struct LDKAPIError parameter_error;
4341       };
4342       struct {
4343          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
4344       };
4345       struct {
4346          struct LDKCVec_APIErrorZ all_failed_retry_safe;
4347       };
4348       struct {
4349          struct LDKCVec_CResult_NoneAPIErrorZZ partial_failure;
4350       };
4351    };
4352 } LDKPaymentSendFailure;
4353
4354 /**
4355  * The contents of CResult_NonePaymentSendFailureZ
4356  */
4357 typedef union LDKCResult_NonePaymentSendFailureZPtr {
4358    /**
4359     * Note that this value is always NULL, as there are no contents in the OK variant
4360     */
4361    void *result;
4362    /**
4363     * A pointer to the contents in the error state.
4364     * Reading from this pointer when `result_ok` is set is undefined.
4365     */
4366    struct LDKPaymentSendFailure *err;
4367 } LDKCResult_NonePaymentSendFailureZPtr;
4368
4369 /**
4370  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
4371  * containing a () on success and a crate::ln::channelmanager::PaymentSendFailure on failure.
4372  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4373  */
4374 typedef struct LDKCResult_NonePaymentSendFailureZ {
4375    /**
4376     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
4377     * `err` or `result` depending on the state of `result_ok`.
4378     */
4379    union LDKCResult_NonePaymentSendFailureZPtr contents;
4380    /**
4381     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
4382     */
4383    bool result_ok;
4384 } LDKCResult_NonePaymentSendFailureZ;
4385
4386 /**
4387  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
4388  * This corresponds to std::vector in C++
4389  */
4390 typedef struct LDKCVec_TxidZ {
4391    /**
4392     * The elements in the array.
4393     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4394     */
4395    struct LDKThirtyTwoBytes *data;
4396    /**
4397     * The number of elements pointed to by `data`.
4398     */
4399    uintptr_t datalen;
4400 } LDKCVec_TxidZ;
4401
4402 /**
4403  * A dynamically-allocated array of crate::chain::channelmonitor::ChannelMonitors of arbitrary size.
4404  * This corresponds to std::vector in C++
4405  */
4406 typedef struct LDKCVec_ChannelMonitorZ {
4407    /**
4408     * The elements in the array.
4409     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4410     */
4411    struct LDKChannelMonitor *data;
4412    /**
4413     * The number of elements pointed to by `data`.
4414     */
4415    uintptr_t datalen;
4416 } LDKCVec_ChannelMonitorZ;
4417
4418 /**
4419  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
4420  * blocks are connected and disconnected.
4421  *
4422  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
4423  * responsible for maintaining a set of monitors such that they can be updated accordingly as
4424  * channel state changes and HTLCs are resolved. See method documentation for specific
4425  * requirements.
4426  *
4427  * Implementations **must** ensure that updates are successfully applied and persisted upon method
4428  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
4429  * without taking any further action such as persisting the current state.
4430  *
4431  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
4432  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
4433  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
4434  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
4435  * multiple instances.
4436  *
4437  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
4438  * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4439  * [`PermanentFailure`]: channelmonitor::ChannelMonitorUpdateErr::PermanentFailure
4440  */
4441 typedef struct LDKWatch {
4442    /**
4443     * An opaque pointer which is passed to your function implementations as an argument.
4444     * This has no meaning in the LDK, and can be NULL or any other value.
4445     */
4446    void *this_arg;
4447    /**
4448     * Watches a channel identified by `funding_txo` using `monitor`.
4449     *
4450     * Implementations are responsible for watching the chain for the funding transaction along
4451     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
4452     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
4453     *
4454     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
4455     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
4456     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
4457     */
4458    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
4459    /**
4460     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
4461     *
4462     * Implementations must call [`update_monitor`] with the given update. See
4463     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
4464     *
4465     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
4466     * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4467     */
4468    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
4469    /**
4470     * Returns any monitor events since the last call. Subsequent calls must only return new
4471     * events.
4472     */
4473    struct LDKCVec_MonitorEventZ (*release_pending_monitor_events)(const void *this_arg);
4474    /**
4475     * Frees any resources associated with this object given its this_arg pointer.
4476     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4477     */
4478    void (*free)(void *this_arg);
4479 } LDKWatch;
4480
4481 /**
4482  * An interface to send a transaction to the Bitcoin network.
4483  */
4484 typedef struct LDKBroadcasterInterface {
4485    /**
4486     * An opaque pointer which is passed to your function implementations as an argument.
4487     * This has no meaning in the LDK, and can be NULL or any other value.
4488     */
4489    void *this_arg;
4490    /**
4491     * Sends a transaction out to (hopefully) be mined.
4492     */
4493    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
4494    /**
4495     * Frees any resources associated with this object given its this_arg pointer.
4496     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4497     */
4498    void (*free)(void *this_arg);
4499 } LDKBroadcasterInterface;
4500
4501 /**
4502  * The contents of CResult_SignDecodeErrorZ
4503  */
4504 typedef union LDKCResult_SignDecodeErrorZPtr {
4505    /**
4506     * A pointer to the contents in the success state.
4507     * Reading from this pointer when `result_ok` is not set is undefined.
4508     */
4509    struct LDKSign *result;
4510    /**
4511     * A pointer to the contents in the error state.
4512     * Reading from this pointer when `result_ok` is set is undefined.
4513     */
4514    struct LDKDecodeError *err;
4515 } LDKCResult_SignDecodeErrorZPtr;
4516
4517 /**
4518  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
4519  * containing a crate::chain::keysinterface::Sign on success and a crate::ln::msgs::DecodeError on failure.
4520  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4521  */
4522 typedef struct LDKCResult_SignDecodeErrorZ {
4523    /**
4524     * The contents of this CResult_SignDecodeErrorZ, accessible via either
4525     * `err` or `result` depending on the state of `result_ok`.
4526     */
4527    union LDKCResult_SignDecodeErrorZPtr contents;
4528    /**
4529     * Whether this CResult_SignDecodeErrorZ represents a success state.
4530     */
4531    bool result_ok;
4532 } LDKCResult_SignDecodeErrorZ;
4533
4534 /**
4535  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
4536  * own the memory pointed to by data.
4537  */
4538 typedef struct LDKu8slice {
4539    /**
4540     * A pointer to the byte buffer
4541     */
4542    const uint8_t *data;
4543    /**
4544     * The number of bytes pointed to by `data`.
4545     */
4546    uintptr_t datalen;
4547 } LDKu8slice;
4548
4549 /**
4550  * A trait to describe an object which can get user secrets and key material.
4551  */
4552 typedef struct LDKKeysInterface {
4553    /**
4554     * An opaque pointer which is passed to your function implementations as an argument.
4555     * This has no meaning in the LDK, and can be NULL or any other value.
4556     */
4557    void *this_arg;
4558    /**
4559     * Get node secret key (aka node_id or network_key).
4560     *
4561     * This method must return the same value each time it is called.
4562     */
4563    struct LDKSecretKey (*get_node_secret)(const void *this_arg);
4564    /**
4565     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
4566     *
4567     * This method should return a different value each time it is called, to avoid linking
4568     * on-chain funds across channels as controlled to the same user.
4569     */
4570    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
4571    /**
4572     * Get a public key which we will send funds to (in the form of a P2WPKH output) when closing
4573     * a channel.
4574     *
4575     * This method should return a different value each time it is called, to avoid linking
4576     * on-chain funds across channels as controlled to the same user.
4577     */
4578    struct LDKPublicKey (*get_shutdown_pubkey)(const void *this_arg);
4579    /**
4580     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
4581     * restarted with some stale data!
4582     *
4583     * This method must return a different value each time it is called.
4584     */
4585    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
4586    /**
4587     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
4588     * onion packets and for temporary channel IDs. There is no requirement that these be
4589     * persisted anywhere, though they must be unique across restarts.
4590     *
4591     * This method must return a different value each time it is called.
4592     */
4593    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
4594    /**
4595     * Reads a `Signer` for this `KeysInterface` from the given input stream.
4596     * This is only called during deserialization of other objects which contain
4597     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
4598     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
4599     * contain no versioning scheme. You may wish to include your own version prefix and ensure
4600     * you've read all of the provided bytes to ensure no corruption occurred.
4601     */
4602    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
4603    /**
4604     * Frees any resources associated with this object given its this_arg pointer.
4605     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4606     */
4607    void (*free)(void *this_arg);
4608 } LDKKeysInterface;
4609
4610 /**
4611  * A trait which should be implemented to provide feerate information on a number of time
4612  * horizons.
4613  *
4614  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
4615  * called from inside the library in response to chain events, P2P events, or timer events).
4616  */
4617 typedef struct LDKFeeEstimator {
4618    /**
4619     * An opaque pointer which is passed to your function implementations as an argument.
4620     * This has no meaning in the LDK, and can be NULL or any other value.
4621     */
4622    void *this_arg;
4623    /**
4624     * Gets estimated satoshis of fee required per 1000 Weight-Units.
4625     *
4626     * Must be no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later round-downs
4627     * don't put us below 1 satoshi-per-byte).
4628     *
4629     * This translates to:
4630     *  * satoshis-per-byte * 250
4631     *  * ceil(satoshis-per-kbyte / 4)
4632     */
4633    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
4634    /**
4635     * Frees any resources associated with this object given its this_arg pointer.
4636     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4637     */
4638    void (*free)(void *this_arg);
4639 } LDKFeeEstimator;
4640
4641 /**
4642  * A trait encapsulating the operations required of a logger
4643  */
4644 typedef struct LDKLogger {
4645    /**
4646     * An opaque pointer which is passed to your function implementations as an argument.
4647     * This has no meaning in the LDK, and can be NULL or any other value.
4648     */
4649    void *this_arg;
4650    /**
4651     * Logs the `Record`
4652     */
4653    void (*log)(const void *this_arg, const char *record);
4654    /**
4655     * Frees any resources associated with this object given its this_arg pointer.
4656     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4657     */
4658    void (*free)(void *this_arg);
4659 } LDKLogger;
4660
4661
4662
4663 /**
4664  * Manager which keeps track of a number of channels and sends messages to the appropriate
4665  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
4666  *
4667  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
4668  * to individual Channels.
4669  *
4670  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
4671  * all peers during write/read (though does not modify this instance, only the instance being
4672  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
4673  * called funding_transaction_generated for outbound channels).
4674  *
4675  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
4676  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
4677  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
4678  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
4679  * the serialization process). If the deserialized version is out-of-date compared to the
4680  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
4681  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
4682  *
4683  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
4684  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
4685  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
4686  * block_connected() to step towards your best block) upon deserialization before using the
4687  * object!
4688  *
4689  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
4690  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
4691  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
4692  * offline for a full minute. In order to track this, you must call
4693  * timer_chan_freshness_every_min roughly once per minute, though it doesn't have to be perfect.
4694  *
4695  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
4696  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
4697  * essentially you should default to using a SimpleRefChannelManager, and use a
4698  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
4699  * you're using lightning-net-tokio.
4700  */
4701 typedef struct MUST_USE_STRUCT LDKChannelManager {
4702    /**
4703     * A pointer to the opaque Rust object.
4704     * Nearly everywhere, inner must be non-null, however in places where
4705     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4706     */
4707    LDKnativeChannelManager *inner;
4708    /**
4709     * Indicates that this is the only struct which contains the same pointer.
4710     * Rust functions which take ownership of an object provided via an argument require
4711     * this to be true and invalidate the object pointed to by inner.
4712     */
4713    bool is_owned;
4714 } LDKChannelManager;
4715
4716 /**
4717  * A tuple of 2 elements. See the individual fields for the types contained.
4718  */
4719 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
4720    /**
4721     * The element at position 0
4722     */
4723    struct LDKThirtyTwoBytes a;
4724    /**
4725     * The element at position 1
4726     */
4727    struct LDKChannelManager b;
4728 } LDKC2Tuple_BlockHashChannelManagerZ;
4729
4730 /**
4731  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
4732  */
4733 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
4734    /**
4735     * A pointer to the contents in the success state.
4736     * Reading from this pointer when `result_ok` is not set is undefined.
4737     */
4738    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
4739    /**
4740     * A pointer to the contents in the error state.
4741     * Reading from this pointer when `result_ok` is set is undefined.
4742     */
4743    struct LDKDecodeError *err;
4744 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
4745
4746 /**
4747  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
4748  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::ln::msgs::DecodeError on failure.
4749  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4750  */
4751 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
4752    /**
4753     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
4754     * `err` or `result` depending on the state of `result_ok`.
4755     */
4756    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
4757    /**
4758     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
4759     */
4760    bool result_ok;
4761 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
4762
4763 /**
4764  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
4765  */
4766 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
4767    /**
4768     * A pointer to the contents in the success state.
4769     * Reading from this pointer when `result_ok` is not set is undefined.
4770     */
4771    struct LDKSpendableOutputDescriptor *result;
4772    /**
4773     * A pointer to the contents in the error state.
4774     * Reading from this pointer when `result_ok` is set is undefined.
4775     */
4776    struct LDKDecodeError *err;
4777 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
4778
4779 /**
4780  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4781  * containing a crate::chain::keysinterface::SpendableOutputDescriptor on success and a crate::ln::msgs::DecodeError on failure.
4782  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4783  */
4784 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
4785    /**
4786     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
4787     * `err` or `result` depending on the state of `result_ok`.
4788     */
4789    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
4790    /**
4791     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
4792     */
4793    bool result_ok;
4794 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
4795
4796 /**
4797  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
4798  * This corresponds to std::vector in C++
4799  */
4800 typedef struct LDKCVec_CVec_u8ZZ {
4801    /**
4802     * The elements in the array.
4803     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4804     */
4805    struct LDKCVec_u8Z *data;
4806    /**
4807     * The number of elements pointed to by `data`.
4808     */
4809    uintptr_t datalen;
4810 } LDKCVec_CVec_u8ZZ;
4811
4812 /**
4813  * The contents of CResult_CVec_CVec_u8ZZNoneZ
4814  */
4815 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
4816    /**
4817     * A pointer to the contents in the success state.
4818     * Reading from this pointer when `result_ok` is not set is undefined.
4819     */
4820    struct LDKCVec_CVec_u8ZZ *result;
4821    /**
4822     * Note that this value is always NULL, as there are no contents in the Err variant
4823     */
4824    void *err;
4825 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
4826
4827 /**
4828  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
4829  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
4830  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4831  */
4832 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
4833    /**
4834     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
4835     * `err` or `result` depending on the state of `result_ok`.
4836     */
4837    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
4838    /**
4839     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
4840     */
4841    bool result_ok;
4842 } LDKCResult_CVec_CVec_u8ZZNoneZ;
4843
4844
4845
4846 /**
4847  * A simple implementation of Sign that just keeps the private keys in memory.
4848  *
4849  * This implementation performs no policy checks and is insufficient by itself as
4850  * a secure external signer.
4851  */
4852 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
4853    /**
4854     * A pointer to the opaque Rust object.
4855     * Nearly everywhere, inner must be non-null, however in places where
4856     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4857     */
4858    LDKnativeInMemorySigner *inner;
4859    /**
4860     * Indicates that this is the only struct which contains the same pointer.
4861     * Rust functions which take ownership of an object provided via an argument require
4862     * this to be true and invalidate the object pointed to by inner.
4863     */
4864    bool is_owned;
4865 } LDKInMemorySigner;
4866
4867 /**
4868  * The contents of CResult_InMemorySignerDecodeErrorZ
4869  */
4870 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
4871    /**
4872     * A pointer to the contents in the success state.
4873     * Reading from this pointer when `result_ok` is not set is undefined.
4874     */
4875    struct LDKInMemorySigner *result;
4876    /**
4877     * A pointer to the contents in the error state.
4878     * Reading from this pointer when `result_ok` is set is undefined.
4879     */
4880    struct LDKDecodeError *err;
4881 } LDKCResult_InMemorySignerDecodeErrorZPtr;
4882
4883 /**
4884  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
4885  * containing a crate::chain::keysinterface::InMemorySigner on success and a crate::ln::msgs::DecodeError on failure.
4886  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4887  */
4888 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
4889    /**
4890     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
4891     * `err` or `result` depending on the state of `result_ok`.
4892     */
4893    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
4894    /**
4895     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
4896     */
4897    bool result_ok;
4898 } LDKCResult_InMemorySignerDecodeErrorZ;
4899
4900 /**
4901  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
4902  * This corresponds to std::vector in C++
4903  */
4904 typedef struct LDKCVec_TxOutZ {
4905    /**
4906     * The elements in the array.
4907     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4908     */
4909    struct LDKTxOut *data;
4910    /**
4911     * The number of elements pointed to by `data`.
4912     */
4913    uintptr_t datalen;
4914 } LDKCVec_TxOutZ;
4915
4916 /**
4917  * The contents of CResult_TransactionNoneZ
4918  */
4919 typedef union LDKCResult_TransactionNoneZPtr {
4920    /**
4921     * A pointer to the contents in the success state.
4922     * Reading from this pointer when `result_ok` is not set is undefined.
4923     */
4924    struct LDKTransaction *result;
4925    /**
4926     * Note that this value is always NULL, as there are no contents in the Err variant
4927     */
4928    void *err;
4929 } LDKCResult_TransactionNoneZPtr;
4930
4931 /**
4932  * A CResult_TransactionNoneZ represents the result of a fallible operation,
4933  * containing a crate::c_types::Transaction on success and a () on failure.
4934  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4935  */
4936 typedef struct LDKCResult_TransactionNoneZ {
4937    /**
4938     * The contents of this CResult_TransactionNoneZ, accessible via either
4939     * `err` or `result` depending on the state of `result_ok`.
4940     */
4941    union LDKCResult_TransactionNoneZPtr contents;
4942    /**
4943     * Whether this CResult_TransactionNoneZ represents a success state.
4944     */
4945    bool result_ok;
4946 } LDKCResult_TransactionNoneZ;
4947
4948
4949
4950 /**
4951  * A hop in a route
4952  */
4953 typedef struct MUST_USE_STRUCT LDKRouteHop {
4954    /**
4955     * A pointer to the opaque Rust object.
4956     * Nearly everywhere, inner must be non-null, however in places where
4957     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4958     */
4959    LDKnativeRouteHop *inner;
4960    /**
4961     * Indicates that this is the only struct which contains the same pointer.
4962     * Rust functions which take ownership of an object provided via an argument require
4963     * this to be true and invalidate the object pointed to by inner.
4964     */
4965    bool is_owned;
4966 } LDKRouteHop;
4967
4968 /**
4969  * A dynamically-allocated array of crate::routing::router::RouteHops of arbitrary size.
4970  * This corresponds to std::vector in C++
4971  */
4972 typedef struct LDKCVec_RouteHopZ {
4973    /**
4974     * The elements in the array.
4975     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4976     */
4977    struct LDKRouteHop *data;
4978    /**
4979     * The number of elements pointed to by `data`.
4980     */
4981    uintptr_t datalen;
4982 } LDKCVec_RouteHopZ;
4983
4984 /**
4985  * A dynamically-allocated array of crate::c_types::derived::CVec_RouteHopZs of arbitrary size.
4986  * This corresponds to std::vector in C++
4987  */
4988 typedef struct LDKCVec_CVec_RouteHopZZ {
4989    /**
4990     * The elements in the array.
4991     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4992     */
4993    struct LDKCVec_RouteHopZ *data;
4994    /**
4995     * The number of elements pointed to by `data`.
4996     */
4997    uintptr_t datalen;
4998 } LDKCVec_CVec_RouteHopZZ;
4999
5000
5001
5002 /**
5003  * A route directs a payment from the sender (us) to the recipient. If the recipient supports MPP,
5004  * it can take multiple paths. Each path is composed of one or more hops through the network.
5005  */
5006 typedef struct MUST_USE_STRUCT LDKRoute {
5007    /**
5008     * A pointer to the opaque Rust object.
5009     * Nearly everywhere, inner must be non-null, however in places where
5010     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5011     */
5012    LDKnativeRoute *inner;
5013    /**
5014     * Indicates that this is the only struct which contains the same pointer.
5015     * Rust functions which take ownership of an object provided via an argument require
5016     * this to be true and invalidate the object pointed to by inner.
5017     */
5018    bool is_owned;
5019 } LDKRoute;
5020
5021 /**
5022  * The contents of CResult_RouteDecodeErrorZ
5023  */
5024 typedef union LDKCResult_RouteDecodeErrorZPtr {
5025    /**
5026     * A pointer to the contents in the success state.
5027     * Reading from this pointer when `result_ok` is not set is undefined.
5028     */
5029    struct LDKRoute *result;
5030    /**
5031     * A pointer to the contents in the error state.
5032     * Reading from this pointer when `result_ok` is set is undefined.
5033     */
5034    struct LDKDecodeError *err;
5035 } LDKCResult_RouteDecodeErrorZPtr;
5036
5037 /**
5038  * A CResult_RouteDecodeErrorZ represents the result of a fallible operation,
5039  * containing a crate::routing::router::Route on success and a crate::ln::msgs::DecodeError on failure.
5040  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5041  */
5042 typedef struct LDKCResult_RouteDecodeErrorZ {
5043    /**
5044     * The contents of this CResult_RouteDecodeErrorZ, accessible via either
5045     * `err` or `result` depending on the state of `result_ok`.
5046     */
5047    union LDKCResult_RouteDecodeErrorZPtr contents;
5048    /**
5049     * Whether this CResult_RouteDecodeErrorZ represents a success state.
5050     */
5051    bool result_ok;
5052 } LDKCResult_RouteDecodeErrorZ;
5053
5054
5055
5056 /**
5057  * A channel descriptor which provides a last-hop route to get_route
5058  */
5059 typedef struct MUST_USE_STRUCT LDKRouteHint {
5060    /**
5061     * A pointer to the opaque Rust object.
5062     * Nearly everywhere, inner must be non-null, however in places where
5063     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5064     */
5065    LDKnativeRouteHint *inner;
5066    /**
5067     * Indicates that this is the only struct which contains the same pointer.
5068     * Rust functions which take ownership of an object provided via an argument require
5069     * this to be true and invalidate the object pointed to by inner.
5070     */
5071    bool is_owned;
5072 } LDKRouteHint;
5073
5074 /**
5075  * A dynamically-allocated array of crate::routing::router::RouteHints of arbitrary size.
5076  * This corresponds to std::vector in C++
5077  */
5078 typedef struct LDKCVec_RouteHintZ {
5079    /**
5080     * The elements in the array.
5081     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5082     */
5083    struct LDKRouteHint *data;
5084    /**
5085     * The number of elements pointed to by `data`.
5086     */
5087    uintptr_t datalen;
5088 } LDKCVec_RouteHintZ;
5089
5090 /**
5091  * The contents of CResult_RouteLightningErrorZ
5092  */
5093 typedef union LDKCResult_RouteLightningErrorZPtr {
5094    /**
5095     * A pointer to the contents in the success state.
5096     * Reading from this pointer when `result_ok` is not set is undefined.
5097     */
5098    struct LDKRoute *result;
5099    /**
5100     * A pointer to the contents in the error state.
5101     * Reading from this pointer when `result_ok` is set is undefined.
5102     */
5103    struct LDKLightningError *err;
5104 } LDKCResult_RouteLightningErrorZPtr;
5105
5106 /**
5107  * A CResult_RouteLightningErrorZ represents the result of a fallible operation,
5108  * containing a crate::routing::router::Route on success and a crate::ln::msgs::LightningError on failure.
5109  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5110  */
5111 typedef struct LDKCResult_RouteLightningErrorZ {
5112    /**
5113     * The contents of this CResult_RouteLightningErrorZ, accessible via either
5114     * `err` or `result` depending on the state of `result_ok`.
5115     */
5116    union LDKCResult_RouteLightningErrorZPtr contents;
5117    /**
5118     * Whether this CResult_RouteLightningErrorZ represents a success state.
5119     */
5120    bool result_ok;
5121 } LDKCResult_RouteLightningErrorZ;
5122
5123 /**
5124  * The contents of CResult_NetAddressu8Z
5125  */
5126 typedef union LDKCResult_NetAddressu8ZPtr {
5127    /**
5128     * A pointer to the contents in the success state.
5129     * Reading from this pointer when `result_ok` is not set is undefined.
5130     */
5131    struct LDKNetAddress *result;
5132    /**
5133     * A pointer to the contents in the error state.
5134     * Reading from this pointer when `result_ok` is set is undefined.
5135     */
5136    uint8_t *err;
5137 } LDKCResult_NetAddressu8ZPtr;
5138
5139 /**
5140  * A CResult_NetAddressu8Z represents the result of a fallible operation,
5141  * containing a crate::ln::msgs::NetAddress on success and a u8 on failure.
5142  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5143  */
5144 typedef struct LDKCResult_NetAddressu8Z {
5145    /**
5146     * The contents of this CResult_NetAddressu8Z, accessible via either
5147     * `err` or `result` depending on the state of `result_ok`.
5148     */
5149    union LDKCResult_NetAddressu8ZPtr contents;
5150    /**
5151     * Whether this CResult_NetAddressu8Z represents a success state.
5152     */
5153    bool result_ok;
5154 } LDKCResult_NetAddressu8Z;
5155
5156 /**
5157  * The contents of CResult_CResult_NetAddressu8ZDecodeErrorZ
5158  */
5159 typedef union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr {
5160    /**
5161     * A pointer to the contents in the success state.
5162     * Reading from this pointer when `result_ok` is not set is undefined.
5163     */
5164    struct LDKCResult_NetAddressu8Z *result;
5165    /**
5166     * A pointer to the contents in the error state.
5167     * Reading from this pointer when `result_ok` is set is undefined.
5168     */
5169    struct LDKDecodeError *err;
5170 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr;
5171
5172 /**
5173  * A CResult_CResult_NetAddressu8ZDecodeErrorZ represents the result of a fallible operation,
5174  * containing a crate::c_types::derived::CResult_NetAddressu8Z on success and a crate::ln::msgs::DecodeError on failure.
5175  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5176  */
5177 typedef struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ {
5178    /**
5179     * The contents of this CResult_CResult_NetAddressu8ZDecodeErrorZ, accessible via either
5180     * `err` or `result` depending on the state of `result_ok`.
5181     */
5182    union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr contents;
5183    /**
5184     * Whether this CResult_CResult_NetAddressu8ZDecodeErrorZ represents a success state.
5185     */
5186    bool result_ok;
5187 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZ;
5188
5189
5190
5191 /**
5192  * An update_add_htlc message to be sent or received from a peer
5193  */
5194 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
5195    /**
5196     * A pointer to the opaque Rust object.
5197     * Nearly everywhere, inner must be non-null, however in places where
5198     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5199     */
5200    LDKnativeUpdateAddHTLC *inner;
5201    /**
5202     * Indicates that this is the only struct which contains the same pointer.
5203     * Rust functions which take ownership of an object provided via an argument require
5204     * this to be true and invalidate the object pointed to by inner.
5205     */
5206    bool is_owned;
5207 } LDKUpdateAddHTLC;
5208
5209 /**
5210  * A dynamically-allocated array of crate::ln::msgs::UpdateAddHTLCs of arbitrary size.
5211  * This corresponds to std::vector in C++
5212  */
5213 typedef struct LDKCVec_UpdateAddHTLCZ {
5214    /**
5215     * The elements in the array.
5216     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5217     */
5218    struct LDKUpdateAddHTLC *data;
5219    /**
5220     * The number of elements pointed to by `data`.
5221     */
5222    uintptr_t datalen;
5223 } LDKCVec_UpdateAddHTLCZ;
5224
5225
5226
5227 /**
5228  * An update_fulfill_htlc message to be sent or received from a peer
5229  */
5230 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
5231    /**
5232     * A pointer to the opaque Rust object.
5233     * Nearly everywhere, inner must be non-null, however in places where
5234     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5235     */
5236    LDKnativeUpdateFulfillHTLC *inner;
5237    /**
5238     * Indicates that this is the only struct which contains the same pointer.
5239     * Rust functions which take ownership of an object provided via an argument require
5240     * this to be true and invalidate the object pointed to by inner.
5241     */
5242    bool is_owned;
5243 } LDKUpdateFulfillHTLC;
5244
5245 /**
5246  * A dynamically-allocated array of crate::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
5247  * This corresponds to std::vector in C++
5248  */
5249 typedef struct LDKCVec_UpdateFulfillHTLCZ {
5250    /**
5251     * The elements in the array.
5252     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5253     */
5254    struct LDKUpdateFulfillHTLC *data;
5255    /**
5256     * The number of elements pointed to by `data`.
5257     */
5258    uintptr_t datalen;
5259 } LDKCVec_UpdateFulfillHTLCZ;
5260
5261
5262
5263 /**
5264  * An update_fail_htlc message to be sent or received from a peer
5265  */
5266 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
5267    /**
5268     * A pointer to the opaque Rust object.
5269     * Nearly everywhere, inner must be non-null, however in places where
5270     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5271     */
5272    LDKnativeUpdateFailHTLC *inner;
5273    /**
5274     * Indicates that this is the only struct which contains the same pointer.
5275     * Rust functions which take ownership of an object provided via an argument require
5276     * this to be true and invalidate the object pointed to by inner.
5277     */
5278    bool is_owned;
5279 } LDKUpdateFailHTLC;
5280
5281 /**
5282  * A dynamically-allocated array of crate::ln::msgs::UpdateFailHTLCs of arbitrary size.
5283  * This corresponds to std::vector in C++
5284  */
5285 typedef struct LDKCVec_UpdateFailHTLCZ {
5286    /**
5287     * The elements in the array.
5288     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5289     */
5290    struct LDKUpdateFailHTLC *data;
5291    /**
5292     * The number of elements pointed to by `data`.
5293     */
5294    uintptr_t datalen;
5295 } LDKCVec_UpdateFailHTLCZ;
5296
5297
5298
5299 /**
5300  * An update_fail_malformed_htlc message to be sent or received from a peer
5301  */
5302 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
5303    /**
5304     * A pointer to the opaque Rust object.
5305     * Nearly everywhere, inner must be non-null, however in places where
5306     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5307     */
5308    LDKnativeUpdateFailMalformedHTLC *inner;
5309    /**
5310     * Indicates that this is the only struct which contains the same pointer.
5311     * Rust functions which take ownership of an object provided via an argument require
5312     * this to be true and invalidate the object pointed to by inner.
5313     */
5314    bool is_owned;
5315 } LDKUpdateFailMalformedHTLC;
5316
5317 /**
5318  * A dynamically-allocated array of crate::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
5319  * This corresponds to std::vector in C++
5320  */
5321 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
5322    /**
5323     * The elements in the array.
5324     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5325     */
5326    struct LDKUpdateFailMalformedHTLC *data;
5327    /**
5328     * The number of elements pointed to by `data`.
5329     */
5330    uintptr_t datalen;
5331 } LDKCVec_UpdateFailMalformedHTLCZ;
5332
5333 /**
5334  * The contents of CResult_AcceptChannelDecodeErrorZ
5335  */
5336 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
5337    /**
5338     * A pointer to the contents in the success state.
5339     * Reading from this pointer when `result_ok` is not set is undefined.
5340     */
5341    struct LDKAcceptChannel *result;
5342    /**
5343     * A pointer to the contents in the error state.
5344     * Reading from this pointer when `result_ok` is set is undefined.
5345     */
5346    struct LDKDecodeError *err;
5347 } LDKCResult_AcceptChannelDecodeErrorZPtr;
5348
5349 /**
5350  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
5351  * containing a crate::ln::msgs::AcceptChannel on success and a crate::ln::msgs::DecodeError on failure.
5352  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5353  */
5354 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
5355    /**
5356     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
5357     * `err` or `result` depending on the state of `result_ok`.
5358     */
5359    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
5360    /**
5361     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
5362     */
5363    bool result_ok;
5364 } LDKCResult_AcceptChannelDecodeErrorZ;
5365
5366 /**
5367  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
5368  */
5369 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
5370    /**
5371     * A pointer to the contents in the success state.
5372     * Reading from this pointer when `result_ok` is not set is undefined.
5373     */
5374    struct LDKAnnouncementSignatures *result;
5375    /**
5376     * A pointer to the contents in the error state.
5377     * Reading from this pointer when `result_ok` is set is undefined.
5378     */
5379    struct LDKDecodeError *err;
5380 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
5381
5382 /**
5383  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
5384  * containing a crate::ln::msgs::AnnouncementSignatures on success and a crate::ln::msgs::DecodeError on failure.
5385  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5386  */
5387 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
5388    /**
5389     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
5390     * `err` or `result` depending on the state of `result_ok`.
5391     */
5392    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
5393    /**
5394     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
5395     */
5396    bool result_ok;
5397 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
5398
5399 /**
5400  * The contents of CResult_ChannelReestablishDecodeErrorZ
5401  */
5402 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
5403    /**
5404     * A pointer to the contents in the success state.
5405     * Reading from this pointer when `result_ok` is not set is undefined.
5406     */
5407    struct LDKChannelReestablish *result;
5408    /**
5409     * A pointer to the contents in the error state.
5410     * Reading from this pointer when `result_ok` is set is undefined.
5411     */
5412    struct LDKDecodeError *err;
5413 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
5414
5415 /**
5416  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
5417  * containing a crate::ln::msgs::ChannelReestablish on success and a crate::ln::msgs::DecodeError on failure.
5418  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5419  */
5420 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
5421    /**
5422     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
5423     * `err` or `result` depending on the state of `result_ok`.
5424     */
5425    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
5426    /**
5427     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
5428     */
5429    bool result_ok;
5430 } LDKCResult_ChannelReestablishDecodeErrorZ;
5431
5432 /**
5433  * The contents of CResult_ClosingSignedDecodeErrorZ
5434  */
5435 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
5436    /**
5437     * A pointer to the contents in the success state.
5438     * Reading from this pointer when `result_ok` is not set is undefined.
5439     */
5440    struct LDKClosingSigned *result;
5441    /**
5442     * A pointer to the contents in the error state.
5443     * Reading from this pointer when `result_ok` is set is undefined.
5444     */
5445    struct LDKDecodeError *err;
5446 } LDKCResult_ClosingSignedDecodeErrorZPtr;
5447
5448 /**
5449  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
5450  * containing a crate::ln::msgs::ClosingSigned on success and a crate::ln::msgs::DecodeError on failure.
5451  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5452  */
5453 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
5454    /**
5455     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
5456     * `err` or `result` depending on the state of `result_ok`.
5457     */
5458    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
5459    /**
5460     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
5461     */
5462    bool result_ok;
5463 } LDKCResult_ClosingSignedDecodeErrorZ;
5464
5465
5466
5467 /**
5468  * A commitment_signed message to be sent or received from a peer
5469  */
5470 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
5471    /**
5472     * A pointer to the opaque Rust object.
5473     * Nearly everywhere, inner must be non-null, however in places where
5474     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5475     */
5476    LDKnativeCommitmentSigned *inner;
5477    /**
5478     * Indicates that this is the only struct which contains the same pointer.
5479     * Rust functions which take ownership of an object provided via an argument require
5480     * this to be true and invalidate the object pointed to by inner.
5481     */
5482    bool is_owned;
5483 } LDKCommitmentSigned;
5484
5485 /**
5486  * The contents of CResult_CommitmentSignedDecodeErrorZ
5487  */
5488 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
5489    /**
5490     * A pointer to the contents in the success state.
5491     * Reading from this pointer when `result_ok` is not set is undefined.
5492     */
5493    struct LDKCommitmentSigned *result;
5494    /**
5495     * A pointer to the contents in the error state.
5496     * Reading from this pointer when `result_ok` is set is undefined.
5497     */
5498    struct LDKDecodeError *err;
5499 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
5500
5501 /**
5502  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
5503  * containing a crate::ln::msgs::CommitmentSigned on success and a crate::ln::msgs::DecodeError on failure.
5504  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5505  */
5506 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
5507    /**
5508     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
5509     * `err` or `result` depending on the state of `result_ok`.
5510     */
5511    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
5512    /**
5513     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
5514     */
5515    bool result_ok;
5516 } LDKCResult_CommitmentSignedDecodeErrorZ;
5517
5518 /**
5519  * The contents of CResult_FundingCreatedDecodeErrorZ
5520  */
5521 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
5522    /**
5523     * A pointer to the contents in the success state.
5524     * Reading from this pointer when `result_ok` is not set is undefined.
5525     */
5526    struct LDKFundingCreated *result;
5527    /**
5528     * A pointer to the contents in the error state.
5529     * Reading from this pointer when `result_ok` is set is undefined.
5530     */
5531    struct LDKDecodeError *err;
5532 } LDKCResult_FundingCreatedDecodeErrorZPtr;
5533
5534 /**
5535  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
5536  * containing a crate::ln::msgs::FundingCreated on success and a crate::ln::msgs::DecodeError on failure.
5537  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5538  */
5539 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
5540    /**
5541     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
5542     * `err` or `result` depending on the state of `result_ok`.
5543     */
5544    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
5545    /**
5546     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
5547     */
5548    bool result_ok;
5549 } LDKCResult_FundingCreatedDecodeErrorZ;
5550
5551 /**
5552  * The contents of CResult_FundingSignedDecodeErrorZ
5553  */
5554 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
5555    /**
5556     * A pointer to the contents in the success state.
5557     * Reading from this pointer when `result_ok` is not set is undefined.
5558     */
5559    struct LDKFundingSigned *result;
5560    /**
5561     * A pointer to the contents in the error state.
5562     * Reading from this pointer when `result_ok` is set is undefined.
5563     */
5564    struct LDKDecodeError *err;
5565 } LDKCResult_FundingSignedDecodeErrorZPtr;
5566
5567 /**
5568  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
5569  * containing a crate::ln::msgs::FundingSigned on success and a crate::ln::msgs::DecodeError on failure.
5570  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5571  */
5572 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
5573    /**
5574     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
5575     * `err` or `result` depending on the state of `result_ok`.
5576     */
5577    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
5578    /**
5579     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
5580     */
5581    bool result_ok;
5582 } LDKCResult_FundingSignedDecodeErrorZ;
5583
5584 /**
5585  * The contents of CResult_FundingLockedDecodeErrorZ
5586  */
5587 typedef union LDKCResult_FundingLockedDecodeErrorZPtr {
5588    /**
5589     * A pointer to the contents in the success state.
5590     * Reading from this pointer when `result_ok` is not set is undefined.
5591     */
5592    struct LDKFundingLocked *result;
5593    /**
5594     * A pointer to the contents in the error state.
5595     * Reading from this pointer when `result_ok` is set is undefined.
5596     */
5597    struct LDKDecodeError *err;
5598 } LDKCResult_FundingLockedDecodeErrorZPtr;
5599
5600 /**
5601  * A CResult_FundingLockedDecodeErrorZ represents the result of a fallible operation,
5602  * containing a crate::ln::msgs::FundingLocked on success and a crate::ln::msgs::DecodeError on failure.
5603  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5604  */
5605 typedef struct LDKCResult_FundingLockedDecodeErrorZ {
5606    /**
5607     * The contents of this CResult_FundingLockedDecodeErrorZ, accessible via either
5608     * `err` or `result` depending on the state of `result_ok`.
5609     */
5610    union LDKCResult_FundingLockedDecodeErrorZPtr contents;
5611    /**
5612     * Whether this CResult_FundingLockedDecodeErrorZ represents a success state.
5613     */
5614    bool result_ok;
5615 } LDKCResult_FundingLockedDecodeErrorZ;
5616
5617
5618
5619 /**
5620  * An init message to be sent or received from a peer
5621  */
5622 typedef struct MUST_USE_STRUCT LDKInit {
5623    /**
5624     * A pointer to the opaque Rust object.
5625     * Nearly everywhere, inner must be non-null, however in places where
5626     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5627     */
5628    LDKnativeInit *inner;
5629    /**
5630     * Indicates that this is the only struct which contains the same pointer.
5631     * Rust functions which take ownership of an object provided via an argument require
5632     * this to be true and invalidate the object pointed to by inner.
5633     */
5634    bool is_owned;
5635 } LDKInit;
5636
5637 /**
5638  * The contents of CResult_InitDecodeErrorZ
5639  */
5640 typedef union LDKCResult_InitDecodeErrorZPtr {
5641    /**
5642     * A pointer to the contents in the success state.
5643     * Reading from this pointer when `result_ok` is not set is undefined.
5644     */
5645    struct LDKInit *result;
5646    /**
5647     * A pointer to the contents in the error state.
5648     * Reading from this pointer when `result_ok` is set is undefined.
5649     */
5650    struct LDKDecodeError *err;
5651 } LDKCResult_InitDecodeErrorZPtr;
5652
5653 /**
5654  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
5655  * containing a crate::ln::msgs::Init on success and a crate::ln::msgs::DecodeError on failure.
5656  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5657  */
5658 typedef struct LDKCResult_InitDecodeErrorZ {
5659    /**
5660     * The contents of this CResult_InitDecodeErrorZ, accessible via either
5661     * `err` or `result` depending on the state of `result_ok`.
5662     */
5663    union LDKCResult_InitDecodeErrorZPtr contents;
5664    /**
5665     * Whether this CResult_InitDecodeErrorZ represents a success state.
5666     */
5667    bool result_ok;
5668 } LDKCResult_InitDecodeErrorZ;
5669
5670 /**
5671  * The contents of CResult_OpenChannelDecodeErrorZ
5672  */
5673 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
5674    /**
5675     * A pointer to the contents in the success state.
5676     * Reading from this pointer when `result_ok` is not set is undefined.
5677     */
5678    struct LDKOpenChannel *result;
5679    /**
5680     * A pointer to the contents in the error state.
5681     * Reading from this pointer when `result_ok` is set is undefined.
5682     */
5683    struct LDKDecodeError *err;
5684 } LDKCResult_OpenChannelDecodeErrorZPtr;
5685
5686 /**
5687  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
5688  * containing a crate::ln::msgs::OpenChannel on success and a crate::ln::msgs::DecodeError on failure.
5689  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5690  */
5691 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
5692    /**
5693     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
5694     * `err` or `result` depending on the state of `result_ok`.
5695     */
5696    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
5697    /**
5698     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
5699     */
5700    bool result_ok;
5701 } LDKCResult_OpenChannelDecodeErrorZ;
5702
5703 /**
5704  * The contents of CResult_RevokeAndACKDecodeErrorZ
5705  */
5706 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
5707    /**
5708     * A pointer to the contents in the success state.
5709     * Reading from this pointer when `result_ok` is not set is undefined.
5710     */
5711    struct LDKRevokeAndACK *result;
5712    /**
5713     * A pointer to the contents in the error state.
5714     * Reading from this pointer when `result_ok` is set is undefined.
5715     */
5716    struct LDKDecodeError *err;
5717 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
5718
5719 /**
5720  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
5721  * containing a crate::ln::msgs::RevokeAndACK on success and a crate::ln::msgs::DecodeError on failure.
5722  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5723  */
5724 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
5725    /**
5726     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
5727     * `err` or `result` depending on the state of `result_ok`.
5728     */
5729    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
5730    /**
5731     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
5732     */
5733    bool result_ok;
5734 } LDKCResult_RevokeAndACKDecodeErrorZ;
5735
5736 /**
5737  * The contents of CResult_ShutdownDecodeErrorZ
5738  */
5739 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
5740    /**
5741     * A pointer to the contents in the success state.
5742     * Reading from this pointer when `result_ok` is not set is undefined.
5743     */
5744    struct LDKShutdown *result;
5745    /**
5746     * A pointer to the contents in the error state.
5747     * Reading from this pointer when `result_ok` is set is undefined.
5748     */
5749    struct LDKDecodeError *err;
5750 } LDKCResult_ShutdownDecodeErrorZPtr;
5751
5752 /**
5753  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
5754  * containing a crate::ln::msgs::Shutdown on success and a crate::ln::msgs::DecodeError on failure.
5755  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5756  */
5757 typedef struct LDKCResult_ShutdownDecodeErrorZ {
5758    /**
5759     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
5760     * `err` or `result` depending on the state of `result_ok`.
5761     */
5762    union LDKCResult_ShutdownDecodeErrorZPtr contents;
5763    /**
5764     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
5765     */
5766    bool result_ok;
5767 } LDKCResult_ShutdownDecodeErrorZ;
5768
5769 /**
5770  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
5771  */
5772 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
5773    /**
5774     * A pointer to the contents in the success state.
5775     * Reading from this pointer when `result_ok` is not set is undefined.
5776     */
5777    struct LDKUpdateFailHTLC *result;
5778    /**
5779     * A pointer to the contents in the error state.
5780     * Reading from this pointer when `result_ok` is set is undefined.
5781     */
5782    struct LDKDecodeError *err;
5783 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
5784
5785 /**
5786  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
5787  * containing a crate::ln::msgs::UpdateFailHTLC on success and a crate::ln::msgs::DecodeError on failure.
5788  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5789  */
5790 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
5791    /**
5792     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
5793     * `err` or `result` depending on the state of `result_ok`.
5794     */
5795    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
5796    /**
5797     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
5798     */
5799    bool result_ok;
5800 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
5801
5802 /**
5803  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
5804  */
5805 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
5806    /**
5807     * A pointer to the contents in the success state.
5808     * Reading from this pointer when `result_ok` is not set is undefined.
5809     */
5810    struct LDKUpdateFailMalformedHTLC *result;
5811    /**
5812     * A pointer to the contents in the error state.
5813     * Reading from this pointer when `result_ok` is set is undefined.
5814     */
5815    struct LDKDecodeError *err;
5816 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
5817
5818 /**
5819  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
5820  * containing a crate::ln::msgs::UpdateFailMalformedHTLC on success and a crate::ln::msgs::DecodeError on failure.
5821  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5822  */
5823 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
5824    /**
5825     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
5826     * `err` or `result` depending on the state of `result_ok`.
5827     */
5828    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
5829    /**
5830     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
5831     */
5832    bool result_ok;
5833 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
5834
5835
5836
5837 /**
5838  * An update_fee message to be sent or received from a peer
5839  */
5840 typedef struct MUST_USE_STRUCT LDKUpdateFee {
5841    /**
5842     * A pointer to the opaque Rust object.
5843     * Nearly everywhere, inner must be non-null, however in places where
5844     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5845     */
5846    LDKnativeUpdateFee *inner;
5847    /**
5848     * Indicates that this is the only struct which contains the same pointer.
5849     * Rust functions which take ownership of an object provided via an argument require
5850     * this to be true and invalidate the object pointed to by inner.
5851     */
5852    bool is_owned;
5853 } LDKUpdateFee;
5854
5855 /**
5856  * The contents of CResult_UpdateFeeDecodeErrorZ
5857  */
5858 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
5859    /**
5860     * A pointer to the contents in the success state.
5861     * Reading from this pointer when `result_ok` is not set is undefined.
5862     */
5863    struct LDKUpdateFee *result;
5864    /**
5865     * A pointer to the contents in the error state.
5866     * Reading from this pointer when `result_ok` is set is undefined.
5867     */
5868    struct LDKDecodeError *err;
5869 } LDKCResult_UpdateFeeDecodeErrorZPtr;
5870
5871 /**
5872  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
5873  * containing a crate::ln::msgs::UpdateFee on success and a crate::ln::msgs::DecodeError on failure.
5874  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5875  */
5876 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
5877    /**
5878     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
5879     * `err` or `result` depending on the state of `result_ok`.
5880     */
5881    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
5882    /**
5883     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
5884     */
5885    bool result_ok;
5886 } LDKCResult_UpdateFeeDecodeErrorZ;
5887
5888 /**
5889  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
5890  */
5891 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
5892    /**
5893     * A pointer to the contents in the success state.
5894     * Reading from this pointer when `result_ok` is not set is undefined.
5895     */
5896    struct LDKUpdateFulfillHTLC *result;
5897    /**
5898     * A pointer to the contents in the error state.
5899     * Reading from this pointer when `result_ok` is set is undefined.
5900     */
5901    struct LDKDecodeError *err;
5902 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
5903
5904 /**
5905  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
5906  * containing a crate::ln::msgs::UpdateFulfillHTLC on success and a crate::ln::msgs::DecodeError on failure.
5907  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5908  */
5909 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
5910    /**
5911     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
5912     * `err` or `result` depending on the state of `result_ok`.
5913     */
5914    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
5915    /**
5916     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
5917     */
5918    bool result_ok;
5919 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
5920
5921 /**
5922  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
5923  */
5924 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
5925    /**
5926     * A pointer to the contents in the success state.
5927     * Reading from this pointer when `result_ok` is not set is undefined.
5928     */
5929    struct LDKUpdateAddHTLC *result;
5930    /**
5931     * A pointer to the contents in the error state.
5932     * Reading from this pointer when `result_ok` is set is undefined.
5933     */
5934    struct LDKDecodeError *err;
5935 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
5936
5937 /**
5938  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
5939  * containing a crate::ln::msgs::UpdateAddHTLC on success and a crate::ln::msgs::DecodeError on failure.
5940  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5941  */
5942 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
5943    /**
5944     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
5945     * `err` or `result` depending on the state of `result_ok`.
5946     */
5947    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
5948    /**
5949     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
5950     */
5951    bool result_ok;
5952 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
5953
5954
5955
5956 /**
5957  * A ping message to be sent or received from a peer
5958  */
5959 typedef struct MUST_USE_STRUCT LDKPing {
5960    /**
5961     * A pointer to the opaque Rust object.
5962     * Nearly everywhere, inner must be non-null, however in places where
5963     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5964     */
5965    LDKnativePing *inner;
5966    /**
5967     * Indicates that this is the only struct which contains the same pointer.
5968     * Rust functions which take ownership of an object provided via an argument require
5969     * this to be true and invalidate the object pointed to by inner.
5970     */
5971    bool is_owned;
5972 } LDKPing;
5973
5974 /**
5975  * The contents of CResult_PingDecodeErrorZ
5976  */
5977 typedef union LDKCResult_PingDecodeErrorZPtr {
5978    /**
5979     * A pointer to the contents in the success state.
5980     * Reading from this pointer when `result_ok` is not set is undefined.
5981     */
5982    struct LDKPing *result;
5983    /**
5984     * A pointer to the contents in the error state.
5985     * Reading from this pointer when `result_ok` is set is undefined.
5986     */
5987    struct LDKDecodeError *err;
5988 } LDKCResult_PingDecodeErrorZPtr;
5989
5990 /**
5991  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
5992  * containing a crate::ln::msgs::Ping on success and a crate::ln::msgs::DecodeError on failure.
5993  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5994  */
5995 typedef struct LDKCResult_PingDecodeErrorZ {
5996    /**
5997     * The contents of this CResult_PingDecodeErrorZ, accessible via either
5998     * `err` or `result` depending on the state of `result_ok`.
5999     */
6000    union LDKCResult_PingDecodeErrorZPtr contents;
6001    /**
6002     * Whether this CResult_PingDecodeErrorZ represents a success state.
6003     */
6004    bool result_ok;
6005 } LDKCResult_PingDecodeErrorZ;
6006
6007
6008
6009 /**
6010  * A pong message to be sent or received from a peer
6011  */
6012 typedef struct MUST_USE_STRUCT LDKPong {
6013    /**
6014     * A pointer to the opaque Rust object.
6015     * Nearly everywhere, inner must be non-null, however in places where
6016     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6017     */
6018    LDKnativePong *inner;
6019    /**
6020     * Indicates that this is the only struct which contains the same pointer.
6021     * Rust functions which take ownership of an object provided via an argument require
6022     * this to be true and invalidate the object pointed to by inner.
6023     */
6024    bool is_owned;
6025 } LDKPong;
6026
6027 /**
6028  * The contents of CResult_PongDecodeErrorZ
6029  */
6030 typedef union LDKCResult_PongDecodeErrorZPtr {
6031    /**
6032     * A pointer to the contents in the success state.
6033     * Reading from this pointer when `result_ok` is not set is undefined.
6034     */
6035    struct LDKPong *result;
6036    /**
6037     * A pointer to the contents in the error state.
6038     * Reading from this pointer when `result_ok` is set is undefined.
6039     */
6040    struct LDKDecodeError *err;
6041 } LDKCResult_PongDecodeErrorZPtr;
6042
6043 /**
6044  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
6045  * containing a crate::ln::msgs::Pong on success and a crate::ln::msgs::DecodeError on failure.
6046  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6047  */
6048 typedef struct LDKCResult_PongDecodeErrorZ {
6049    /**
6050     * The contents of this CResult_PongDecodeErrorZ, accessible via either
6051     * `err` or `result` depending on the state of `result_ok`.
6052     */
6053    union LDKCResult_PongDecodeErrorZPtr contents;
6054    /**
6055     * Whether this CResult_PongDecodeErrorZ represents a success state.
6056     */
6057    bool result_ok;
6058 } LDKCResult_PongDecodeErrorZ;
6059
6060 /**
6061  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
6062  */
6063 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
6064    /**
6065     * A pointer to the contents in the success state.
6066     * Reading from this pointer when `result_ok` is not set is undefined.
6067     */
6068    struct LDKUnsignedChannelAnnouncement *result;
6069    /**
6070     * A pointer to the contents in the error state.
6071     * Reading from this pointer when `result_ok` is set is undefined.
6072     */
6073    struct LDKDecodeError *err;
6074 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
6075
6076 /**
6077  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
6078  * containing a crate::ln::msgs::UnsignedChannelAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6079  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6080  */
6081 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
6082    /**
6083     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
6084     * `err` or `result` depending on the state of `result_ok`.
6085     */
6086    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
6087    /**
6088     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
6089     */
6090    bool result_ok;
6091 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
6092
6093 /**
6094  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
6095  */
6096 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
6097    /**
6098     * A pointer to the contents in the success state.
6099     * Reading from this pointer when `result_ok` is not set is undefined.
6100     */
6101    struct LDKChannelAnnouncement *result;
6102    /**
6103     * A pointer to the contents in the error state.
6104     * Reading from this pointer when `result_ok` is set is undefined.
6105     */
6106    struct LDKDecodeError *err;
6107 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
6108
6109 /**
6110  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
6111  * containing a crate::ln::msgs::ChannelAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6112  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6113  */
6114 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
6115    /**
6116     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
6117     * `err` or `result` depending on the state of `result_ok`.
6118     */
6119    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
6120    /**
6121     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
6122     */
6123    bool result_ok;
6124 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
6125
6126
6127
6128 /**
6129  * The unsigned part of a channel_update
6130  */
6131 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
6132    /**
6133     * A pointer to the opaque Rust object.
6134     * Nearly everywhere, inner must be non-null, however in places where
6135     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6136     */
6137    LDKnativeUnsignedChannelUpdate *inner;
6138    /**
6139     * Indicates that this is the only struct which contains the same pointer.
6140     * Rust functions which take ownership of an object provided via an argument require
6141     * this to be true and invalidate the object pointed to by inner.
6142     */
6143    bool is_owned;
6144 } LDKUnsignedChannelUpdate;
6145
6146 /**
6147  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
6148  */
6149 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
6150    /**
6151     * A pointer to the contents in the success state.
6152     * Reading from this pointer when `result_ok` is not set is undefined.
6153     */
6154    struct LDKUnsignedChannelUpdate *result;
6155    /**
6156     * A pointer to the contents in the error state.
6157     * Reading from this pointer when `result_ok` is set is undefined.
6158     */
6159    struct LDKDecodeError *err;
6160 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
6161
6162 /**
6163  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
6164  * containing a crate::ln::msgs::UnsignedChannelUpdate on success and a crate::ln::msgs::DecodeError on failure.
6165  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6166  */
6167 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
6168    /**
6169     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
6170     * `err` or `result` depending on the state of `result_ok`.
6171     */
6172    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
6173    /**
6174     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
6175     */
6176    bool result_ok;
6177 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
6178
6179 /**
6180  * The contents of CResult_ChannelUpdateDecodeErrorZ
6181  */
6182 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
6183    /**
6184     * A pointer to the contents in the success state.
6185     * Reading from this pointer when `result_ok` is not set is undefined.
6186     */
6187    struct LDKChannelUpdate *result;
6188    /**
6189     * A pointer to the contents in the error state.
6190     * Reading from this pointer when `result_ok` is set is undefined.
6191     */
6192    struct LDKDecodeError *err;
6193 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
6194
6195 /**
6196  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
6197  * containing a crate::ln::msgs::ChannelUpdate on success and a crate::ln::msgs::DecodeError on failure.
6198  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6199  */
6200 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
6201    /**
6202     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
6203     * `err` or `result` depending on the state of `result_ok`.
6204     */
6205    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
6206    /**
6207     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
6208     */
6209    bool result_ok;
6210 } LDKCResult_ChannelUpdateDecodeErrorZ;
6211
6212 /**
6213  * The contents of CResult_ErrorMessageDecodeErrorZ
6214  */
6215 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
6216    /**
6217     * A pointer to the contents in the success state.
6218     * Reading from this pointer when `result_ok` is not set is undefined.
6219     */
6220    struct LDKErrorMessage *result;
6221    /**
6222     * A pointer to the contents in the error state.
6223     * Reading from this pointer when `result_ok` is set is undefined.
6224     */
6225    struct LDKDecodeError *err;
6226 } LDKCResult_ErrorMessageDecodeErrorZPtr;
6227
6228 /**
6229  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
6230  * containing a crate::ln::msgs::ErrorMessage on success and a crate::ln::msgs::DecodeError on failure.
6231  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6232  */
6233 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
6234    /**
6235     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
6236     * `err` or `result` depending on the state of `result_ok`.
6237     */
6238    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
6239    /**
6240     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
6241     */
6242    bool result_ok;
6243 } LDKCResult_ErrorMessageDecodeErrorZ;
6244
6245
6246
6247 /**
6248  * The unsigned part of a node_announcement
6249  */
6250 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
6251    /**
6252     * A pointer to the opaque Rust object.
6253     * Nearly everywhere, inner must be non-null, however in places where
6254     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6255     */
6256    LDKnativeUnsignedNodeAnnouncement *inner;
6257    /**
6258     * Indicates that this is the only struct which contains the same pointer.
6259     * Rust functions which take ownership of an object provided via an argument require
6260     * this to be true and invalidate the object pointed to by inner.
6261     */
6262    bool is_owned;
6263 } LDKUnsignedNodeAnnouncement;
6264
6265 /**
6266  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
6267  */
6268 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
6269    /**
6270     * A pointer to the contents in the success state.
6271     * Reading from this pointer when `result_ok` is not set is undefined.
6272     */
6273    struct LDKUnsignedNodeAnnouncement *result;
6274    /**
6275     * A pointer to the contents in the error state.
6276     * Reading from this pointer when `result_ok` is set is undefined.
6277     */
6278    struct LDKDecodeError *err;
6279 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
6280
6281 /**
6282  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
6283  * containing a crate::ln::msgs::UnsignedNodeAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6284  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6285  */
6286 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
6287    /**
6288     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
6289     * `err` or `result` depending on the state of `result_ok`.
6290     */
6291    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
6292    /**
6293     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
6294     */
6295    bool result_ok;
6296 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
6297
6298 /**
6299  * The contents of CResult_NodeAnnouncementDecodeErrorZ
6300  */
6301 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
6302    /**
6303     * A pointer to the contents in the success state.
6304     * Reading from this pointer when `result_ok` is not set is undefined.
6305     */
6306    struct LDKNodeAnnouncement *result;
6307    /**
6308     * A pointer to the contents in the error state.
6309     * Reading from this pointer when `result_ok` is set is undefined.
6310     */
6311    struct LDKDecodeError *err;
6312 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
6313
6314 /**
6315  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
6316  * containing a crate::ln::msgs::NodeAnnouncement on success and a crate::ln::msgs::DecodeError on failure.
6317  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6318  */
6319 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
6320    /**
6321     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
6322     * `err` or `result` depending on the state of `result_ok`.
6323     */
6324    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
6325    /**
6326     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
6327     */
6328    bool result_ok;
6329 } LDKCResult_NodeAnnouncementDecodeErrorZ;
6330
6331 /**
6332  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
6333  */
6334 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
6335    /**
6336     * A pointer to the contents in the success state.
6337     * Reading from this pointer when `result_ok` is not set is undefined.
6338     */
6339    struct LDKQueryShortChannelIds *result;
6340    /**
6341     * A pointer to the contents in the error state.
6342     * Reading from this pointer when `result_ok` is set is undefined.
6343     */
6344    struct LDKDecodeError *err;
6345 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
6346
6347 /**
6348  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
6349  * containing a crate::ln::msgs::QueryShortChannelIds on success and a crate::ln::msgs::DecodeError on failure.
6350  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6351  */
6352 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
6353    /**
6354     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
6355     * `err` or `result` depending on the state of `result_ok`.
6356     */
6357    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
6358    /**
6359     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
6360     */
6361    bool result_ok;
6362 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
6363
6364
6365
6366 /**
6367  * A reply_short_channel_ids_end message is sent as a reply to a
6368  * query_short_channel_ids message. The query recipient makes a best
6369  * effort to respond based on their local network view which may not be
6370  * a perfect view of the network.
6371  */
6372 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
6373    /**
6374     * A pointer to the opaque Rust object.
6375     * Nearly everywhere, inner must be non-null, however in places where
6376     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6377     */
6378    LDKnativeReplyShortChannelIdsEnd *inner;
6379    /**
6380     * Indicates that this is the only struct which contains the same pointer.
6381     * Rust functions which take ownership of an object provided via an argument require
6382     * this to be true and invalidate the object pointed to by inner.
6383     */
6384    bool is_owned;
6385 } LDKReplyShortChannelIdsEnd;
6386
6387 /**
6388  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
6389  */
6390 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
6391    /**
6392     * A pointer to the contents in the success state.
6393     * Reading from this pointer when `result_ok` is not set is undefined.
6394     */
6395    struct LDKReplyShortChannelIdsEnd *result;
6396    /**
6397     * A pointer to the contents in the error state.
6398     * Reading from this pointer when `result_ok` is set is undefined.
6399     */
6400    struct LDKDecodeError *err;
6401 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
6402
6403 /**
6404  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
6405  * containing a crate::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::ln::msgs::DecodeError on failure.
6406  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6407  */
6408 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
6409    /**
6410     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
6411     * `err` or `result` depending on the state of `result_ok`.
6412     */
6413    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
6414    /**
6415     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
6416     */
6417    bool result_ok;
6418 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
6419
6420 /**
6421  * The contents of CResult_QueryChannelRangeDecodeErrorZ
6422  */
6423 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
6424    /**
6425     * A pointer to the contents in the success state.
6426     * Reading from this pointer when `result_ok` is not set is undefined.
6427     */
6428    struct LDKQueryChannelRange *result;
6429    /**
6430     * A pointer to the contents in the error state.
6431     * Reading from this pointer when `result_ok` is set is undefined.
6432     */
6433    struct LDKDecodeError *err;
6434 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
6435
6436 /**
6437  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
6438  * containing a crate::ln::msgs::QueryChannelRange on success and a crate::ln::msgs::DecodeError on failure.
6439  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6440  */
6441 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
6442    /**
6443     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
6444     * `err` or `result` depending on the state of `result_ok`.
6445     */
6446    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
6447    /**
6448     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
6449     */
6450    bool result_ok;
6451 } LDKCResult_QueryChannelRangeDecodeErrorZ;
6452
6453 /**
6454  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
6455  */
6456 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
6457    /**
6458     * A pointer to the contents in the success state.
6459     * Reading from this pointer when `result_ok` is not set is undefined.
6460     */
6461    struct LDKReplyChannelRange *result;
6462    /**
6463     * A pointer to the contents in the error state.
6464     * Reading from this pointer when `result_ok` is set is undefined.
6465     */
6466    struct LDKDecodeError *err;
6467 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
6468
6469 /**
6470  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
6471  * containing a crate::ln::msgs::ReplyChannelRange on success and a crate::ln::msgs::DecodeError on failure.
6472  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6473  */
6474 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
6475    /**
6476     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
6477     * `err` or `result` depending on the state of `result_ok`.
6478     */
6479    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
6480    /**
6481     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
6482     */
6483    bool result_ok;
6484 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
6485
6486
6487
6488 /**
6489  * A gossip_timestamp_filter message is used by a node to request
6490  * gossip relay for messages in the requested time range when the
6491  * gossip_queries feature has been negotiated.
6492  */
6493 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
6494    /**
6495     * A pointer to the opaque Rust object.
6496     * Nearly everywhere, inner must be non-null, however in places where
6497     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6498     */
6499    LDKnativeGossipTimestampFilter *inner;
6500    /**
6501     * Indicates that this is the only struct which contains the same pointer.
6502     * Rust functions which take ownership of an object provided via an argument require
6503     * this to be true and invalidate the object pointed to by inner.
6504     */
6505    bool is_owned;
6506 } LDKGossipTimestampFilter;
6507
6508 /**
6509  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
6510  */
6511 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
6512    /**
6513     * A pointer to the contents in the success state.
6514     * Reading from this pointer when `result_ok` is not set is undefined.
6515     */
6516    struct LDKGossipTimestampFilter *result;
6517    /**
6518     * A pointer to the contents in the error state.
6519     * Reading from this pointer when `result_ok` is set is undefined.
6520     */
6521    struct LDKDecodeError *err;
6522 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
6523
6524 /**
6525  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
6526  * containing a crate::ln::msgs::GossipTimestampFilter on success and a crate::ln::msgs::DecodeError on failure.
6527  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6528  */
6529 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
6530    /**
6531     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
6532     * `err` or `result` depending on the state of `result_ok`.
6533     */
6534    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
6535    /**
6536     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
6537     */
6538    bool result_ok;
6539 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
6540
6541 /**
6542  * A trait indicating an object may generate message send events
6543  */
6544 typedef struct LDKMessageSendEventsProvider {
6545    /**
6546     * An opaque pointer which is passed to your function implementations as an argument.
6547     * This has no meaning in the LDK, and can be NULL or any other value.
6548     */
6549    void *this_arg;
6550    /**
6551     * Gets the list of pending events which were generated by previous actions, clearing the list
6552     * in the process.
6553     */
6554    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
6555    /**
6556     * Frees any resources associated with this object given its this_arg pointer.
6557     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6558     */
6559    void (*free)(void *this_arg);
6560 } LDKMessageSendEventsProvider;
6561
6562 /**
6563  * A trait indicating an object may generate events
6564  */
6565 typedef struct LDKEventsProvider {
6566    /**
6567     * An opaque pointer which is passed to your function implementations as an argument.
6568     * This has no meaning in the LDK, and can be NULL or any other value.
6569     */
6570    void *this_arg;
6571    /**
6572     * Gets the list of pending events which were generated by previous actions, clearing the list
6573     * in the process.
6574     */
6575    struct LDKCVec_EventZ (*get_and_clear_pending_events)(const void *this_arg);
6576    /**
6577     * Frees any resources associated with this object given its this_arg pointer.
6578     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6579     */
6580    void (*free)(void *this_arg);
6581 } LDKEventsProvider;
6582
6583
6584
6585 /**
6586  * Configuration we set when applicable.
6587  *
6588  * Default::default() provides sane defaults.
6589  */
6590 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
6591    /**
6592     * A pointer to the opaque Rust object.
6593     * Nearly everywhere, inner must be non-null, however in places where
6594     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6595     */
6596    LDKnativeChannelHandshakeConfig *inner;
6597    /**
6598     * Indicates that this is the only struct which contains the same pointer.
6599     * Rust functions which take ownership of an object provided via an argument require
6600     * this to be true and invalidate the object pointed to by inner.
6601     */
6602    bool is_owned;
6603 } LDKChannelHandshakeConfig;
6604
6605
6606
6607 /**
6608  * Optional channel limits which are applied during channel creation.
6609  *
6610  * These limits are only applied to our counterparty's limits, not our own.
6611  *
6612  * Use 0/<type>::max_value() as appropriate to skip checking.
6613  *
6614  * Provides sane defaults for most configurations.
6615  *
6616  * Most additional limits are disabled except those with which specify a default in individual
6617  * field documentation. Note that this may result in barely-usable channels, but since they
6618  * are applied mostly only to incoming channels that's not much of a problem.
6619  */
6620 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
6621    /**
6622     * A pointer to the opaque Rust object.
6623     * Nearly everywhere, inner must be non-null, however in places where
6624     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6625     */
6626    LDKnativeChannelHandshakeLimits *inner;
6627    /**
6628     * Indicates that this is the only struct which contains the same pointer.
6629     * Rust functions which take ownership of an object provided via an argument require
6630     * this to be true and invalidate the object pointed to by inner.
6631     */
6632    bool is_owned;
6633 } LDKChannelHandshakeLimits;
6634
6635
6636
6637 /**
6638  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
6639  *
6640  * Default::default() provides sane defaults for most configurations
6641  * (but currently with 0 relay fees!)
6642  */
6643 typedef struct MUST_USE_STRUCT LDKUserConfig {
6644    /**
6645     * A pointer to the opaque Rust object.
6646     * Nearly everywhere, inner must be non-null, however in places where
6647     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6648     */
6649    LDKnativeUserConfig *inner;
6650    /**
6651     * Indicates that this is the only struct which contains the same pointer.
6652     * Rust functions which take ownership of an object provided via an argument require
6653     * this to be true and invalidate the object pointed to by inner.
6654     */
6655    bool is_owned;
6656 } LDKUserConfig;
6657
6658 /**
6659  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
6660  * UTXOs.
6661  */
6662 typedef struct LDKAccess {
6663    /**
6664     * An opaque pointer which is passed to your function implementations as an argument.
6665     * This has no meaning in the LDK, and can be NULL or any other value.
6666     */
6667    void *this_arg;
6668    /**
6669     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
6670     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
6671     * is unknown.
6672     *
6673     * [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
6674     */
6675    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
6676    /**
6677     * Frees any resources associated with this object given its this_arg pointer.
6678     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6679     */
6680    void (*free)(void *this_arg);
6681 } LDKAccess;
6682
6683 /**
6684  * The `Listen` trait is used to be notified of when blocks have been connected or disconnected
6685  * from the chain.
6686  *
6687  * Useful when needing to replay chain data upon startup or as new chain events occur.
6688  */
6689 typedef struct LDKListen {
6690    /**
6691     * An opaque pointer which is passed to your function implementations as an argument.
6692     * This has no meaning in the LDK, and can be NULL or any other value.
6693     */
6694    void *this_arg;
6695    /**
6696     * Notifies the listener that a block was added at the given height.
6697     */
6698    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
6699    /**
6700     * Notifies the listener that a block was removed at the given height.
6701     */
6702    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
6703    /**
6704     * Frees any resources associated with this object given its this_arg pointer.
6705     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6706     */
6707    void (*free)(void *this_arg);
6708 } LDKListen;
6709
6710
6711
6712 /**
6713  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
6714  *
6715  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
6716  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
6717  * the return value of [`Filter::register_output`].
6718  *
6719  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
6720  * may have been spent there. See [`Filter::register_output`] for details.
6721  *
6722  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
6723  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
6724  */
6725 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
6726    /**
6727     * A pointer to the opaque Rust object.
6728     * Nearly everywhere, inner must be non-null, however in places where
6729     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6730     */
6731    LDKnativeWatchedOutput *inner;
6732    /**
6733     * Indicates that this is the only struct which contains the same pointer.
6734     * Rust functions which take ownership of an object provided via an argument require
6735     * this to be true and invalidate the object pointed to by inner.
6736     */
6737    bool is_owned;
6738 } LDKWatchedOutput;
6739
6740 /**
6741  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
6742  * channels.
6743  *
6744  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
6745  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
6746  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
6747  * receiving full blocks from a chain source, any further filtering is unnecessary.
6748  *
6749  * After an output has been registered, subsequent block retrievals from the chain source must not
6750  * exclude any transactions matching the new criteria nor any in-block descendants of such
6751  * transactions.
6752  *
6753  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
6754  * should not block on I/O. Implementations should instead queue the newly monitored data to be
6755  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
6756  * invocation that has called the `Filter` must return [`TemporaryFailure`].
6757  *
6758  * [`TemporaryFailure`]: channelmonitor::ChannelMonitorUpdateErr::TemporaryFailure
6759  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
6760  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
6761  */
6762 typedef struct LDKFilter {
6763    /**
6764     * An opaque pointer which is passed to your function implementations as an argument.
6765     * This has no meaning in the LDK, and can be NULL or any other value.
6766     */
6767    void *this_arg;
6768    /**
6769     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
6770     * a spending condition.
6771     */
6772    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
6773    /**
6774     * Registers interest in spends of a transaction output.
6775     *
6776     * Optionally, when `output.block_hash` is set, should return any transaction spending the
6777     * output that is found in the corresponding block along with its index.
6778     *
6779     * This return value is useful for Electrum clients in order to supply in-block descendant
6780     * transactions which otherwise were not included. This is not necessary for other clients if
6781     * such descendant transactions were already included (e.g., when a BIP 157 client provides the
6782     * full block).
6783     */
6784    struct LDKCOption_C2Tuple_usizeTransactionZZ (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
6785    /**
6786     * Frees any resources associated with this object given its this_arg pointer.
6787     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6788     */
6789    void (*free)(void *this_arg);
6790 } LDKFilter;
6791
6792 /**
6793  * `Persist` defines behavior for persisting channel monitors: this could mean
6794  * writing once to disk, and/or uploading to one or more backup services.
6795  *
6796  * Note that for every new monitor, you **must** persist the new `ChannelMonitor`
6797  * to disk/backups. And, on every update, you **must** persist either the
6798  * `ChannelMonitorUpdate` or the updated monitor itself. Otherwise, there is risk
6799  * of situations such as revoking a transaction, then crashing before this
6800  * revocation can be persisted, then unintentionally broadcasting a revoked
6801  * transaction and losing money. This is a risk because previous channel states
6802  * are toxic, so it's important that whatever channel state is persisted is
6803  * kept up-to-date.
6804  */
6805 typedef struct LDKPersist {
6806    /**
6807     * An opaque pointer which is passed to your function implementations as an argument.
6808     * This has no meaning in the LDK, and can be NULL or any other value.
6809     */
6810    void *this_arg;
6811    /**
6812     * Persist a new channel's data. The data can be stored any way you want, but
6813     * the identifier provided by Rust-Lightning is the channel's outpoint (and
6814     * it is up to you to maintain a correct mapping between the outpoint and the
6815     * stored channel data). Note that you **must** persist every new monitor to
6816     * disk. See the `Persist` trait documentation for more details.
6817     *
6818     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
6819     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
6820     */
6821    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint id, const struct LDKChannelMonitor *NONNULL_PTR data);
6822    /**
6823     * Update one channel's data. The provided `ChannelMonitor` has already
6824     * applied the given update.
6825     *
6826     * Note that on every update, you **must** persist either the
6827     * `ChannelMonitorUpdate` or the updated monitor itself to disk/backups. See
6828     * the `Persist` trait documentation for more details.
6829     *
6830     * If an implementer chooses to persist the updates only, they need to make
6831     * sure that all the updates are applied to the `ChannelMonitors` *before*
6832     * the set of channel monitors is given to the `ChannelManager`
6833     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
6834     * applying a monitor update to a monitor. If full `ChannelMonitors` are
6835     * persisted, then there is no need to persist individual updates.
6836     *
6837     * Note that there could be a performance tradeoff between persisting complete
6838     * channel monitors on every update vs. persisting only updates and applying
6839     * them in batches. The size of each monitor grows `O(number of state updates)`
6840     * whereas updates are small and `O(1)`.
6841     *
6842     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
6843     * [`ChannelMonitorUpdate::write`] for writing out an update, and
6844     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
6845     */
6846    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);
6847    /**
6848     * Frees any resources associated with this object given its this_arg pointer.
6849     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6850     */
6851    void (*free)(void *this_arg);
6852 } LDKPersist;
6853
6854
6855
6856 /**
6857  * An implementation of [`chain::Watch`] for monitoring channels.
6858  *
6859  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
6860  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
6861  * or used independently to monitor channels remotely. See the [module-level documentation] for
6862  * details.
6863  *
6864  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
6865  * [module-level documentation]: crate::chain::chainmonitor
6866  */
6867 typedef struct MUST_USE_STRUCT LDKChainMonitor {
6868    /**
6869     * A pointer to the opaque Rust object.
6870     * Nearly everywhere, inner must be non-null, however in places where
6871     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6872     */
6873    LDKnativeChainMonitor *inner;
6874    /**
6875     * Indicates that this is the only struct which contains the same pointer.
6876     * Rust functions which take ownership of an object provided via an argument require
6877     * this to be true and invalidate the object pointed to by inner.
6878     */
6879    bool is_owned;
6880 } LDKChainMonitor;
6881
6882
6883
6884 /**
6885  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
6886  * and derives keys from that.
6887  *
6888  * Your node_id is seed/0'
6889  * ChannelMonitor closes may use seed/1'
6890  * Cooperative closes may use seed/2'
6891  * The two close keys may be needed to claim on-chain funds!
6892  */
6893 typedef struct MUST_USE_STRUCT LDKKeysManager {
6894    /**
6895     * A pointer to the opaque Rust object.
6896     * Nearly everywhere, inner must be non-null, however in places where
6897     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6898     */
6899    LDKnativeKeysManager *inner;
6900    /**
6901     * Indicates that this is the only struct which contains the same pointer.
6902     * Rust functions which take ownership of an object provided via an argument require
6903     * this to be true and invalidate the object pointed to by inner.
6904     */
6905    bool is_owned;
6906 } LDKKeysManager;
6907
6908
6909
6910 /**
6911  * Chain-related parameters used to construct a new `ChannelManager`.
6912  *
6913  * Typically, the block-specific parameters are derived from the best block hash for the network,
6914  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
6915  * are not needed when deserializing a previously constructed `ChannelManager`.
6916  */
6917 typedef struct MUST_USE_STRUCT LDKChainParameters {
6918    /**
6919     * A pointer to the opaque Rust object.
6920     * Nearly everywhere, inner must be non-null, however in places where
6921     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6922     */
6923    LDKnativeChainParameters *inner;
6924    /**
6925     * Indicates that this is the only struct which contains the same pointer.
6926     * Rust functions which take ownership of an object provided via an argument require
6927     * this to be true and invalidate the object pointed to by inner.
6928     */
6929    bool is_owned;
6930 } LDKChainParameters;
6931
6932 /**
6933  * A 3-byte byte array.
6934  */
6935 typedef struct LDKThreeBytes {
6936    /**
6937     * The three bytes
6938     */
6939    uint8_t data[3];
6940 } LDKThreeBytes;
6941
6942 /**
6943  * A trait to describe an object which can receive channel messages.
6944  *
6945  * Messages MAY be called in parallel when they originate from different their_node_ids, however
6946  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
6947  */
6948 typedef struct LDKChannelMessageHandler {
6949    /**
6950     * An opaque pointer which is passed to your function implementations as an argument.
6951     * This has no meaning in the LDK, and can be NULL or any other value.
6952     */
6953    void *this_arg;
6954    /**
6955     * Handle an incoming open_channel message from the given peer.
6956     */
6957    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
6958    /**
6959     * Handle an incoming accept_channel message from the given peer.
6960     */
6961    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
6962    /**
6963     * Handle an incoming funding_created message from the given peer.
6964     */
6965    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
6966    /**
6967     * Handle an incoming funding_signed message from the given peer.
6968     */
6969    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
6970    /**
6971     * Handle an incoming funding_locked message from the given peer.
6972     */
6973    void (*handle_funding_locked)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
6974    /**
6975     * Handle an incoming shutdown message from the given peer.
6976     */
6977    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);
6978    /**
6979     * Handle an incoming closing_signed message from the given peer.
6980     */
6981    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
6982    /**
6983     * Handle an incoming update_add_htlc message from the given peer.
6984     */
6985    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
6986    /**
6987     * Handle an incoming update_fulfill_htlc message from the given peer.
6988     */
6989    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
6990    /**
6991     * Handle an incoming update_fail_htlc message from the given peer.
6992     */
6993    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
6994    /**
6995     * Handle an incoming update_fail_malformed_htlc message from the given peer.
6996     */
6997    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
6998    /**
6999     * Handle an incoming commitment_signed message from the given peer.
7000     */
7001    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
7002    /**
7003     * Handle an incoming revoke_and_ack message from the given peer.
7004     */
7005    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
7006    /**
7007     * Handle an incoming update_fee message from the given peer.
7008     */
7009    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
7010    /**
7011     * Handle an incoming announcement_signatures message from the given peer.
7012     */
7013    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
7014    /**
7015     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
7016     * is believed to be possible in the future (eg they're sending us messages we don't
7017     * understand or indicate they require unknown feature bits), no_connection_possible is set
7018     * and any outstanding channels should be failed.
7019     */
7020    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
7021    /**
7022     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
7023     */
7024    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
7025    /**
7026     * Handle an incoming channel_reestablish message from the given peer.
7027     */
7028    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
7029    /**
7030     * Handle an incoming channel update from the given peer.
7031     */
7032    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
7033    /**
7034     * Handle an incoming error message from the given peer.
7035     */
7036    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
7037    /**
7038     * Implementation of MessageSendEventsProvider for this object.
7039     */
7040    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
7041    /**
7042     * Frees any resources associated with this object given its this_arg pointer.
7043     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7044     */
7045    void (*free)(void *this_arg);
7046 } LDKChannelMessageHandler;
7047
7048
7049
7050 /**
7051  * Arguments for the creation of a ChannelManager that are not deserialized.
7052  *
7053  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
7054  * is:
7055  * 1) Deserialize all stored ChannelMonitors.
7056  * 2) Deserialize the ChannelManager by filling in this struct and calling:
7057  *    <(BlockHash, ChannelManager)>::read(reader, args)
7058  *    This may result in closing some Channels if the ChannelMonitor is newer than the stored
7059  *    ChannelManager state to ensure no loss of funds. Thus, transactions may be broadcasted.
7060  * 3) If you are not fetching full blocks, register all relevant ChannelMonitor outpoints the same
7061  *    way you would handle a `chain::Filter` call using ChannelMonitor::get_outputs_to_watch() and
7062  *    ChannelMonitor::get_funding_txo().
7063  * 4) Reconnect blocks on your ChannelMonitors.
7064  * 5) Disconnect/connect blocks on the ChannelManager.
7065  * 6) Move the ChannelMonitors into your local chain::Watch.
7066  *
7067  * Note that the ordering of #4-6 is not of importance, however all three must occur before you
7068  * call any other methods on the newly-deserialized ChannelManager.
7069  *
7070  * Note that because some channels may be closed during deserialization, it is critical that you
7071  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
7072  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
7073  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
7074  * not force-close the same channels but consider them live), you may end up revoking a state for
7075  * which you've already broadcasted the transaction.
7076  */
7077 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
7078    /**
7079     * A pointer to the opaque Rust object.
7080     * Nearly everywhere, inner must be non-null, however in places where
7081     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7082     */
7083    LDKnativeChannelManagerReadArgs *inner;
7084    /**
7085     * Indicates that this is the only struct which contains the same pointer.
7086     * Rust functions which take ownership of an object provided via an argument require
7087     * this to be true and invalidate the object pointed to by inner.
7088     */
7089    bool is_owned;
7090 } LDKChannelManagerReadArgs;
7091
7092
7093
7094 /**
7095  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
7096  * This is used to convince the recipient that the channel is at a certain commitment
7097  * number even if they lost that data due to a local failure.  Of course, the peer may lie
7098  * and even later commitments may have been revoked.
7099  */
7100 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
7101    /**
7102     * A pointer to the opaque Rust object.
7103     * Nearly everywhere, inner must be non-null, however in places where
7104     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7105     */
7106    LDKnativeDataLossProtect *inner;
7107    /**
7108     * Indicates that this is the only struct which contains the same pointer.
7109     * Rust functions which take ownership of an object provided via an argument require
7110     * this to be true and invalidate the object pointed to by inner.
7111     */
7112    bool is_owned;
7113 } LDKDataLossProtect;
7114
7115 /**
7116  * A trait to describe an object which can receive routing messages.
7117  *
7118  * # Implementor DoS Warnings
7119  *
7120  * For `gossip_queries` messages there are potential DoS vectors when handling
7121  * inbound queries. Implementors using an on-disk network graph should be aware of
7122  * repeated disk I/O for queries accessing different parts of the network graph.
7123  */
7124 typedef struct LDKRoutingMessageHandler {
7125    /**
7126     * An opaque pointer which is passed to your function implementations as an argument.
7127     * This has no meaning in the LDK, and can be NULL or any other value.
7128     */
7129    void *this_arg;
7130    /**
7131     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
7132     * false or returning an Err otherwise.
7133     */
7134    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
7135    /**
7136     * Handle a channel_announcement message, returning true if it should be forwarded on, false
7137     * or returning an Err otherwise.
7138     */
7139    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
7140    /**
7141     * Handle an incoming channel_update message, returning true if it should be forwarded on,
7142     * false or returning an Err otherwise.
7143     */
7144    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
7145    /**
7146     * Handle some updates to the route graph that we learned due to an outbound failed payment.
7147     */
7148    void (*handle_htlc_fail_channel_update)(const void *this_arg, const struct LDKHTLCFailChannelUpdate *NONNULL_PTR update);
7149    /**
7150     * Gets a subset of the channel announcements and updates required to dump our routing table
7151     * to a remote node, starting at the short_channel_id indicated by starting_point and
7152     * including the batch_amount entries immediately higher in numerical value than starting_point.
7153     */
7154    struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcements)(const void *this_arg, uint64_t starting_point, uint8_t batch_amount);
7155    /**
7156     * Gets a subset of the node announcements required to dump our routing table to a remote node,
7157     * starting at the node *after* the provided publickey and including batch_amount entries
7158     * immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
7159     * If None is provided for starting_point, we start at the first node.
7160     */
7161    struct LDKCVec_NodeAnnouncementZ (*get_next_node_announcements)(const void *this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount);
7162    /**
7163     * Called when a connection is established with a peer. This can be used to
7164     * perform routing table synchronization using a strategy defined by the
7165     * implementor.
7166     */
7167    void (*sync_routing_table)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
7168    /**
7169     * Handles the reply of a query we initiated to learn about channels
7170     * for a given range of blocks. We can expect to receive one or more
7171     * replies to a single query.
7172     */
7173    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
7174    /**
7175     * Handles the reply of a query we initiated asking for routing gossip
7176     * messages for a list of channels. We should receive this message when
7177     * a node has completed its best effort to send us the pertaining routing
7178     * gossip messages.
7179     */
7180    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
7181    /**
7182     * Handles when a peer asks us to send a list of short_channel_ids
7183     * for the requested range of blocks.
7184     */
7185    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
7186    /**
7187     * Handles when a peer asks us to send routing gossip messages for a
7188     * list of short_channel_ids.
7189     */
7190    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
7191    /**
7192     * Implementation of MessageSendEventsProvider for this object.
7193     */
7194    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
7195    /**
7196     * Frees any resources associated with this object given its this_arg pointer.
7197     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7198     */
7199    void (*free)(void *this_arg);
7200 } LDKRoutingMessageHandler;
7201
7202
7203
7204 /**
7205  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
7206  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
7207  */
7208 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
7209    /**
7210     * A pointer to the opaque Rust object.
7211     * Nearly everywhere, inner must be non-null, however in places where
7212     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7213     */
7214    LDKnativeIgnoringMessageHandler *inner;
7215    /**
7216     * Indicates that this is the only struct which contains the same pointer.
7217     * Rust functions which take ownership of an object provided via an argument require
7218     * this to be true and invalidate the object pointed to by inner.
7219     */
7220    bool is_owned;
7221 } LDKIgnoringMessageHandler;
7222
7223
7224
7225 /**
7226  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
7227  * You can provide one of these as the route_handler in a MessageHandler.
7228  */
7229 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
7230    /**
7231     * A pointer to the opaque Rust object.
7232     * Nearly everywhere, inner must be non-null, however in places where
7233     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7234     */
7235    LDKnativeErroringMessageHandler *inner;
7236    /**
7237     * Indicates that this is the only struct which contains the same pointer.
7238     * Rust functions which take ownership of an object provided via an argument require
7239     * this to be true and invalidate the object pointed to by inner.
7240     */
7241    bool is_owned;
7242 } LDKErroringMessageHandler;
7243
7244
7245
7246 /**
7247  * Provides references to trait impls which handle different types of messages.
7248  */
7249 typedef struct MUST_USE_STRUCT LDKMessageHandler {
7250    /**
7251     * A pointer to the opaque Rust object.
7252     * Nearly everywhere, inner must be non-null, however in places where
7253     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7254     */
7255    LDKnativeMessageHandler *inner;
7256    /**
7257     * Indicates that this is the only struct which contains the same pointer.
7258     * Rust functions which take ownership of an object provided via an argument require
7259     * this to be true and invalidate the object pointed to by inner.
7260     */
7261    bool is_owned;
7262 } LDKMessageHandler;
7263
7264 /**
7265  * Provides an object which can be used to send data to and which uniquely identifies a connection
7266  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
7267  * implement Hash to meet the PeerManager API.
7268  *
7269  * For efficiency, Clone should be relatively cheap for this type.
7270  *
7271  * You probably want to just extend an int and put a file descriptor in a struct and implement
7272  * send_data. Note that if you are using a higher-level net library that may call close() itself,
7273  * be careful to ensure you don't have races whereby you might register a new connection with an
7274  * fd which is the same as a previous one which has yet to be removed via
7275  * PeerManager::socket_disconnected().
7276  */
7277 typedef struct LDKSocketDescriptor {
7278    /**
7279     * An opaque pointer which is passed to your function implementations as an argument.
7280     * This has no meaning in the LDK, and can be NULL or any other value.
7281     */
7282    void *this_arg;
7283    /**
7284     * Attempts to send some data from the given slice to the peer.
7285     *
7286     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
7287     * Note that in the disconnected case, socket_disconnected must still fire and further write
7288     * attempts may occur until that time.
7289     *
7290     * If the returned size is smaller than data.len(), a write_available event must
7291     * trigger the next time more data can be written. Additionally, until the a send_data event
7292     * completes fully, no further read_events should trigger on the same peer!
7293     *
7294     * If a read_event on this descriptor had previously returned true (indicating that read
7295     * events should be paused to prevent DoS in the send buffer), resume_read may be set
7296     * indicating that read events on this descriptor should resume. A resume_read of false does
7297     * *not* imply that further read events should be paused.
7298     */
7299    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
7300    /**
7301     * Disconnect the socket pointed to by this SocketDescriptor. Once this function returns, no
7302     * more calls to write_buffer_space_avail, read_event or socket_disconnected may be made with
7303     * this descriptor. No socket_disconnected call should be generated as a result of this call,
7304     * though races may occur whereby disconnect_socket is called after a call to
7305     * socket_disconnected but prior to socket_disconnected returning.
7306     */
7307    void (*disconnect_socket)(void *this_arg);
7308    /**
7309     * Checks if two objects are equal given this object's this_arg pointer and another object.
7310     */
7311    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
7312    /**
7313     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
7314     * This is used, for example, for inclusion of this object in a hash map.
7315     */
7316    uint64_t (*hash)(const void *this_arg);
7317    /**
7318     * Creates a copy of the object pointed to by this_arg, for a copy of this SocketDescriptor.
7319     * Note that the ultimate copy of the SocketDescriptor will have all function pointers the same as the original.
7320     * May be NULL if no action needs to be taken, the this_arg pointer will be copied into the new SocketDescriptor.
7321     */
7322    void *(*clone)(const void *this_arg);
7323    /**
7324     * Frees any resources associated with this object given its this_arg pointer.
7325     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7326     */
7327    void (*free)(void *this_arg);
7328 } LDKSocketDescriptor;
7329
7330
7331
7332 /**
7333  * A PeerManager manages a set of peers, described by their SocketDescriptor and marshalls socket
7334  * events into messages which it passes on to its MessageHandlers.
7335  *
7336  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
7337  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
7338  * essentially you should default to using a SimpleRefPeerManager, and use a
7339  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
7340  * you're using lightning-net-tokio.
7341  */
7342 typedef struct MUST_USE_STRUCT LDKPeerManager {
7343    /**
7344     * A pointer to the opaque Rust object.
7345     * Nearly everywhere, inner must be non-null, however in places where
7346     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7347     */
7348    LDKnativePeerManager *inner;
7349    /**
7350     * Indicates that this is the only struct which contains the same pointer.
7351     * Rust functions which take ownership of an object provided via an argument require
7352     * this to be true and invalidate the object pointed to by inner.
7353     */
7354    bool is_owned;
7355 } LDKPeerManager;
7356
7357
7358
7359 /**
7360  * Static channel fields used to build transactions given per-commitment fields, organized by
7361  * broadcaster/countersignatory.
7362  *
7363  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
7364  * as_holder_broadcastable and as_counterparty_broadcastable functions.
7365  */
7366 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
7367    /**
7368     * A pointer to the opaque Rust object.
7369     * Nearly everywhere, inner must be non-null, however in places where
7370     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7371     */
7372    LDKnativeDirectedChannelTransactionParameters *inner;
7373    /**
7374     * Indicates that this is the only struct which contains the same pointer.
7375     * Rust functions which take ownership of an object provided via an argument require
7376     * this to be true and invalidate the object pointed to by inner.
7377     */
7378    bool is_owned;
7379 } LDKDirectedChannelTransactionParameters;
7380
7381
7382
7383 /**
7384  * A simple newtype for RwLockReadGuard<'a, NetworkGraph>.
7385  * This exists only to make accessing a RwLock<NetworkGraph> possible from
7386  * the C bindings, as it can be done directly in Rust code.
7387  */
7388 typedef struct MUST_USE_STRUCT LDKLockedNetworkGraph {
7389    /**
7390     * A pointer to the opaque Rust object.
7391     * Nearly everywhere, inner must be non-null, however in places where
7392     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7393     */
7394    LDKnativeLockedNetworkGraph *inner;
7395    /**
7396     * Indicates that this is the only struct which contains the same pointer.
7397     * Rust functions which take ownership of an object provided via an argument require
7398     * this to be true and invalidate the object pointed to by inner.
7399     */
7400    bool is_owned;
7401 } LDKLockedNetworkGraph;
7402
7403
7404
7405 /**
7406  * Receives and validates network updates from peers,
7407  * stores authentic and relevant data as a network graph.
7408  * This network graph is then used for routing payments.
7409  * Provides interface to help with initial routing sync by
7410  * serving historical announcements.
7411  */
7412 typedef struct MUST_USE_STRUCT LDKNetGraphMsgHandler {
7413    /**
7414     * A pointer to the opaque Rust object.
7415     * Nearly everywhere, inner must be non-null, however in places where
7416     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7417     */
7418    LDKnativeNetGraphMsgHandler *inner;
7419    /**
7420     * Indicates that this is the only struct which contains the same pointer.
7421     * Rust functions which take ownership of an object provided via an argument require
7422     * this to be true and invalidate the object pointed to by inner.
7423     */
7424    bool is_owned;
7425 } LDKNetGraphMsgHandler;
7426
7427 extern const uintptr_t MAX_BUF_SIZE;
7428
7429 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
7430
7431 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
7432
7433 extern const uint16_t BREAKDOWN_TIMEOUT;
7434
7435 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
7436
7437 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
7438
7439 /**
7440  * Frees the data buffer, if data_is_owned is set and datalen > 0.
7441  */
7442 void Transaction_free(struct LDKTransaction _res);
7443
7444 /**
7445  * Frees the data pointed to by script_pubkey.
7446  */
7447 void TxOut_free(struct LDKTxOut _res);
7448
7449 /**
7450  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
7451  */
7452 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
7453
7454 /**
7455  * Creates a new CResult_SecretKeyErrorZ in the success state.
7456  */
7457 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
7458
7459 /**
7460  * Creates a new CResult_SecretKeyErrorZ in the error state.
7461  */
7462 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
7463
7464 /**
7465  * Frees any resources used by the CResult_SecretKeyErrorZ.
7466  */
7467 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
7468
7469 /**
7470  * Creates a new CResult_PublicKeyErrorZ in the success state.
7471  */
7472 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
7473
7474 /**
7475  * Creates a new CResult_PublicKeyErrorZ in the error state.
7476  */
7477 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
7478
7479 /**
7480  * Frees any resources used by the CResult_PublicKeyErrorZ.
7481  */
7482 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
7483
7484 /**
7485  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
7486  */
7487 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
7488
7489 /**
7490  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
7491  */
7492 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
7493
7494 /**
7495  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
7496  */
7497 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
7498
7499 /**
7500  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
7501  * but with all dynamically-allocated buffers duplicated in new buffers.
7502  */
7503 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
7504
7505 /**
7506  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
7507  */
7508 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
7509
7510 /**
7511  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
7512  */
7513 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
7514
7515 /**
7516  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
7517  */
7518 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
7519
7520 /**
7521  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
7522  * but with all dynamically-allocated buffers duplicated in new buffers.
7523  */
7524 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
7525
7526 /**
7527  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
7528  */
7529 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
7530
7531 /**
7532  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
7533  */
7534 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
7535
7536 /**
7537  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
7538  */
7539 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
7540
7541 /**
7542  * Constructs a new COption_u32Z containing a u32
7543  */
7544 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
7545
7546 /**
7547  * Constructs a new COption_u32Z containing nothing
7548  */
7549 struct LDKCOption_u32Z COption_u32Z_none(void);
7550
7551 /**
7552  * Frees any resources associated with the u32, if we are in the Some state
7553  */
7554 void COption_u32Z_free(struct LDKCOption_u32Z _res);
7555
7556 /**
7557  * Creates a new COption_u32Z which has the same data as `orig`
7558  * but with all dynamically-allocated buffers duplicated in new buffers.
7559  */
7560 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
7561
7562 /**
7563  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
7564  */
7565 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
7566
7567 /**
7568  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
7569  */
7570 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
7571
7572 /**
7573  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
7574  */
7575 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
7576
7577 /**
7578  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
7579  * but with all dynamically-allocated buffers duplicated in new buffers.
7580  */
7581 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
7582
7583 /**
7584  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
7585  */
7586 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
7587
7588 /**
7589  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
7590  */
7591 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
7592
7593 /**
7594  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
7595  */
7596 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
7597
7598 /**
7599  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
7600  * but with all dynamically-allocated buffers duplicated in new buffers.
7601  */
7602 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
7603
7604 /**
7605  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
7606  */
7607 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
7608
7609 /**
7610  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
7611  */
7612 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
7613
7614 /**
7615  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
7616  */
7617 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
7618
7619 /**
7620  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
7621  * but with all dynamically-allocated buffers duplicated in new buffers.
7622  */
7623 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
7624
7625 /**
7626  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7627  */
7628 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
7629
7630 /**
7631  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
7632  */
7633 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
7634
7635 /**
7636  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
7637  */
7638 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7639
7640 /**
7641  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
7642  */
7643 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
7644
7645 /**
7646  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
7647  * but with all dynamically-allocated buffers duplicated in new buffers.
7648  */
7649 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7650
7651 /**
7652  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
7653  */
7654 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
7655
7656 /**
7657  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
7658  */
7659 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7660
7661 /**
7662  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
7663  */
7664 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
7665
7666 /**
7667  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
7668  * but with all dynamically-allocated buffers duplicated in new buffers.
7669  */
7670 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7671
7672 /**
7673  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
7674  */
7675 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
7676
7677 /**
7678  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
7679  */
7680 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
7681
7682 /**
7683  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
7684  */
7685 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
7686
7687 /**
7688  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
7689  * but with all dynamically-allocated buffers duplicated in new buffers.
7690  */
7691 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
7692
7693 /**
7694  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
7695  */
7696 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
7697
7698 /**
7699  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
7700  */
7701 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
7702
7703 /**
7704  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
7705  */
7706 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
7707
7708 /**
7709  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
7710  */
7711 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
7712
7713 /**
7714  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
7715  */
7716 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
7717
7718 /**
7719  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
7720  */
7721 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
7722
7723 /**
7724  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
7725  * but with all dynamically-allocated buffers duplicated in new buffers.
7726  */
7727 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
7728
7729 /**
7730  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7731  */
7732 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
7733
7734 /**
7735  * Creates a new CResult_boolLightningErrorZ in the success state.
7736  */
7737 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
7738
7739 /**
7740  * Creates a new CResult_boolLightningErrorZ in the error state.
7741  */
7742 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
7743
7744 /**
7745  * Frees any resources used by the CResult_boolLightningErrorZ.
7746  */
7747 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
7748
7749 /**
7750  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
7751  * but with all dynamically-allocated buffers duplicated in new buffers.
7752  */
7753 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
7754
7755 /**
7756  * Creates a new tuple which has the same data as `orig`
7757  * but with all dynamically-allocated buffers duplicated in new buffers.
7758  */
7759 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
7760
7761 /**
7762  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
7763  */
7764 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
7765
7766 /**
7767  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
7768  */
7769 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
7770
7771 /**
7772  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7773  */
7774 void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
7775
7776 /**
7777  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7778  */
7779 void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
7780
7781 /**
7782  * Creates a new CResult_NoneLightningErrorZ in the success state.
7783  */
7784 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
7785
7786 /**
7787  * Creates a new CResult_NoneLightningErrorZ in the error state.
7788  */
7789 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
7790
7791 /**
7792  * Frees any resources used by the CResult_NoneLightningErrorZ.
7793  */
7794 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
7795
7796 /**
7797  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
7798  * but with all dynamically-allocated buffers duplicated in new buffers.
7799  */
7800 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
7801
7802 /**
7803  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7804  */
7805 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
7806
7807 /**
7808  * Frees the buffer pointed to by `data` if `datalen` is non-0.
7809  */
7810 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
7811
7812 /**
7813  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
7814  */
7815 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
7816
7817 /**
7818  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
7819  */
7820 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
7821
7822 /**
7823  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
7824  */
7825 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
7826
7827 /**
7828  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
7829  * but with all dynamically-allocated buffers duplicated in new buffers.
7830  */
7831 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
7832
7833 /**
7834  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
7835  */
7836 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
7837
7838 /**
7839  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
7840  */
7841 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
7842
7843 /**
7844  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
7845  */
7846 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
7847
7848 /**
7849  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
7850  * but with all dynamically-allocated buffers duplicated in new buffers.
7851  */
7852 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
7853
7854 /**
7855  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
7856  */
7857 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
7858
7859 /**
7860  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
7861  */
7862 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
7863
7864 /**
7865  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
7866  */
7867 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
7868
7869 /**
7870  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
7871  * but with all dynamically-allocated buffers duplicated in new buffers.
7872  */
7873 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
7874
7875 /**
7876  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
7877  */
7878 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
7879
7880 /**
7881  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
7882  */
7883 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7884
7885 /**
7886  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
7887  */
7888 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
7889
7890 /**
7891  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
7892  */
7893 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
7894
7895 /**
7896  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
7897  */
7898 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7899
7900 /**
7901  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
7902  */
7903 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
7904
7905 /**
7906  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
7907  */
7908 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
7909
7910 /**
7911  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
7912  */
7913 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7914
7915 /**
7916  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
7917  */
7918 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
7919
7920 /**
7921  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
7922  */
7923 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
7924
7925 /**
7926  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
7927  */
7928 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
7929
7930 /**
7931  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
7932  */
7933 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
7934
7935 /**
7936  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
7937  */
7938 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
7939
7940 /**
7941  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
7942  */
7943 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
7944
7945 /**
7946  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
7947  */
7948 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
7949
7950 /**
7951  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
7952  * but with all dynamically-allocated buffers duplicated in new buffers.
7953  */
7954 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
7955
7956 /**
7957  * Constructs a new COption_u64Z containing a u64
7958  */
7959 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
7960
7961 /**
7962  * Constructs a new COption_u64Z containing nothing
7963  */
7964 struct LDKCOption_u64Z COption_u64Z_none(void);
7965
7966 /**
7967  * Frees any resources associated with the u64, if we are in the Some state
7968  */
7969 void COption_u64Z_free(struct LDKCOption_u64Z _res);
7970
7971 /**
7972  * Creates a new COption_u64Z which has the same data as `orig`
7973  * but with all dynamically-allocated buffers duplicated in new buffers.
7974  */
7975 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
7976
7977 /**
7978  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the success state.
7979  */
7980 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o);
7981
7982 /**
7983  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the error state.
7984  */
7985 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
7986
7987 /**
7988  * Frees any resources used by the CResult_DirectionalChannelInfoDecodeErrorZ.
7989  */
7990 void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
7991
7992 /**
7993  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ which has the same data as `orig`
7994  * but with all dynamically-allocated buffers duplicated in new buffers.
7995  */
7996 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
7997
7998 /**
7999  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
8000  */
8001 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
8002
8003 /**
8004  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
8005  */
8006 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
8007
8008 /**
8009  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
8010  */
8011 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
8012
8013 /**
8014  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
8015  * but with all dynamically-allocated buffers duplicated in new buffers.
8016  */
8017 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
8018
8019 /**
8020  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
8021  */
8022 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
8023
8024 /**
8025  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
8026  */
8027 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
8028
8029 /**
8030  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
8031  */
8032 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
8033
8034 /**
8035  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
8036  * but with all dynamically-allocated buffers duplicated in new buffers.
8037  */
8038 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
8039
8040 /**
8041  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8042  */
8043 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
8044
8045 /**
8046  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
8047  */
8048 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
8049
8050 /**
8051  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
8052  */
8053 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
8054
8055 /**
8056  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
8057  */
8058 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
8059
8060 /**
8061  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
8062  * but with all dynamically-allocated buffers duplicated in new buffers.
8063  */
8064 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
8065
8066 /**
8067  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8068  */
8069 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
8070
8071 /**
8072  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
8073  */
8074 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
8075
8076 /**
8077  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
8078  */
8079 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
8080
8081 /**
8082  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
8083  */
8084 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
8085
8086 /**
8087  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
8088  * but with all dynamically-allocated buffers duplicated in new buffers.
8089  */
8090 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
8091
8092 /**
8093  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
8094  */
8095 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
8096
8097 /**
8098  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
8099  */
8100 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
8101
8102 /**
8103  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
8104  */
8105 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
8106
8107 /**
8108  * Creates a new CResult_NetworkGraphDecodeErrorZ which has the same data as `orig`
8109  * but with all dynamically-allocated buffers duplicated in new buffers.
8110  */
8111 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
8112
8113 /**
8114  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
8115  */
8116 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
8117
8118 /**
8119  * Frees any resources used by the C2Tuple_usizeTransactionZ.
8120  */
8121 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
8122
8123 /**
8124  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8125  */
8126 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
8127
8128 /**
8129  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
8130  */
8131 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
8132
8133 /**
8134  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
8135  */
8136 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
8137
8138 /**
8139  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
8140  */
8141 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
8142
8143 /**
8144  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
8145  * but with all dynamically-allocated buffers duplicated in new buffers.
8146  */
8147 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
8148
8149 /**
8150  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8151  */
8152 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
8153
8154 /**
8155  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8156  */
8157 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
8158
8159 /**
8160  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
8161  */
8162 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
8163
8164 /**
8165  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
8166  */
8167 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
8168
8169 /**
8170  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
8171  */
8172 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
8173
8174 /**
8175  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
8176  * but with all dynamically-allocated buffers duplicated in new buffers.
8177  */
8178 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
8179
8180 /**
8181  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
8182  */
8183 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
8184
8185 /**
8186  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
8187  */
8188 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
8189
8190 /**
8191  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
8192  */
8193 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
8194
8195 /**
8196  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
8197  * but with all dynamically-allocated buffers duplicated in new buffers.
8198  */
8199 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
8200
8201 /**
8202  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
8203  */
8204 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
8205
8206 /**
8207  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
8208  */
8209 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
8210
8211 /**
8212  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
8213  */
8214 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
8215
8216 /**
8217  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
8218  * but with all dynamically-allocated buffers duplicated in new buffers.
8219  */
8220 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
8221
8222 /**
8223  * Creates a new CResult_NoneMonitorUpdateErrorZ in the success state.
8224  */
8225 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
8226
8227 /**
8228  * Creates a new CResult_NoneMonitorUpdateErrorZ in the error state.
8229  */
8230 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e);
8231
8232 /**
8233  * Frees any resources used by the CResult_NoneMonitorUpdateErrorZ.
8234  */
8235 void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res);
8236
8237 /**
8238  * Creates a new CResult_NoneMonitorUpdateErrorZ which has the same data as `orig`
8239  * but with all dynamically-allocated buffers duplicated in new buffers.
8240  */
8241 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
8242
8243 /**
8244  * Creates a new tuple which has the same data as `orig`
8245  * but with all dynamically-allocated buffers duplicated in new buffers.
8246  */
8247 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
8248
8249 /**
8250  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
8251  */
8252 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
8253
8254 /**
8255  * Frees any resources used by the C2Tuple_OutPointScriptZ.
8256  */
8257 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
8258
8259 /**
8260  * Creates a new tuple which has the same data as `orig`
8261  * but with all dynamically-allocated buffers duplicated in new buffers.
8262  */
8263 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
8264
8265 /**
8266  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
8267  */
8268 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
8269
8270 /**
8271  * Frees any resources used by the C2Tuple_u32ScriptZ.
8272  */
8273 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
8274
8275 /**
8276  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8277  */
8278 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
8279
8280 /**
8281  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
8282  */
8283 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
8284
8285 /**
8286  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
8287  */
8288 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
8289
8290 /**
8291  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8292  */
8293 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
8294
8295 /**
8296  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8297  */
8298 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
8299
8300 /**
8301  * Creates a new tuple which has the same data as `orig`
8302  * but with all dynamically-allocated buffers duplicated in new buffers.
8303  */
8304 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
8305
8306 /**
8307  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
8308  */
8309 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
8310
8311 /**
8312  * Frees any resources used by the C2Tuple_u32TxOutZ.
8313  */
8314 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
8315
8316 /**
8317  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8318  */
8319 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
8320
8321 /**
8322  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
8323  */
8324 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
8325
8326 /**
8327  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
8328  */
8329 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
8330
8331 /**
8332  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8333  */
8334 void CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ _res);
8335
8336 /**
8337  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
8338  */
8339 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
8340
8341 /**
8342  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
8343  */
8344 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
8345
8346 /**
8347  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
8348  */
8349 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
8350
8351 /**
8352  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
8353  */
8354 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
8355
8356 /**
8357  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
8358  */
8359 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
8360
8361 /**
8362  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8363  */
8364 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
8365
8366 /**
8367  * Creates a new CResult_TxOutAccessErrorZ in the success state.
8368  */
8369 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
8370
8371 /**
8372  * Creates a new CResult_TxOutAccessErrorZ in the error state.
8373  */
8374 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
8375
8376 /**
8377  * Frees any resources used by the CResult_TxOutAccessErrorZ.
8378  */
8379 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
8380
8381 /**
8382  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
8383  * but with all dynamically-allocated buffers duplicated in new buffers.
8384  */
8385 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
8386
8387 /**
8388  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing a crate::c_types::derived::C2Tuple_usizeTransactionZ
8389  */
8390 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
8391
8392 /**
8393  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing nothing
8394  */
8395 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
8396
8397 /**
8398  * Frees any resources associated with the crate::c_types::derived::C2Tuple_usizeTransactionZ, if we are in the Some state
8399  */
8400 void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
8401
8402 /**
8403  * Creates a new CResult_NoneAPIErrorZ in the success state.
8404  */
8405 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
8406
8407 /**
8408  * Creates a new CResult_NoneAPIErrorZ in the error state.
8409  */
8410 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
8411
8412 /**
8413  * Frees any resources used by the CResult_NoneAPIErrorZ.
8414  */
8415 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
8416
8417 /**
8418  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
8419  * but with all dynamically-allocated buffers duplicated in new buffers.
8420  */
8421 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
8422
8423 /**
8424  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8425  */
8426 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
8427
8428 /**
8429  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8430  */
8431 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
8432
8433 /**
8434  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8435  */
8436 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
8437
8438 /**
8439  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
8440  */
8441 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
8442
8443 /**
8444  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
8445  */
8446 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
8447
8448 /**
8449  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
8450  */
8451 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
8452
8453 /**
8454  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
8455  * but with all dynamically-allocated buffers duplicated in new buffers.
8456  */
8457 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
8458
8459 /**
8460  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8461  */
8462 void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
8463
8464 /**
8465  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8466  */
8467 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
8468
8469 /**
8470  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
8471  */
8472 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
8473
8474 /**
8475  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
8476  */
8477 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
8478
8479 /**
8480  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
8481  */
8482 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
8483
8484 /**
8485  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
8486  */
8487 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
8488
8489 /**
8490  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
8491  */
8492 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
8493
8494 /**
8495  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
8496  */
8497 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
8498
8499 /**
8500  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
8501  */
8502 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
8503
8504 /**
8505  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
8506  */
8507 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
8508
8509 /**
8510  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
8511  * but with all dynamically-allocated buffers duplicated in new buffers.
8512  */
8513 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
8514
8515 /**
8516  * Creates a new tuple which has the same data as `orig`
8517  * but with all dynamically-allocated buffers duplicated in new buffers.
8518  */
8519 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
8520
8521 /**
8522  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
8523  */
8524 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
8525
8526 /**
8527  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
8528  */
8529 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
8530
8531 /**
8532  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
8533  */
8534 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
8535
8536 /**
8537  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
8538  */
8539 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
8540
8541 /**
8542  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
8543  */
8544 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
8545
8546 /**
8547  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
8548  * but with all dynamically-allocated buffers duplicated in new buffers.
8549  */
8550 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
8551
8552 /**
8553  * Creates a new CResult_SignatureNoneZ in the success state.
8554  */
8555 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
8556
8557 /**
8558  * Creates a new CResult_SignatureNoneZ in the error state.
8559  */
8560 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
8561
8562 /**
8563  * Frees any resources used by the CResult_SignatureNoneZ.
8564  */
8565 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
8566
8567 /**
8568  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
8569  * but with all dynamically-allocated buffers duplicated in new buffers.
8570  */
8571 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
8572
8573 /**
8574  * Creates a new CResult_SignDecodeErrorZ in the success state.
8575  */
8576 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
8577
8578 /**
8579  * Creates a new CResult_SignDecodeErrorZ in the error state.
8580  */
8581 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
8582
8583 /**
8584  * Frees any resources used by the CResult_SignDecodeErrorZ.
8585  */
8586 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
8587
8588 /**
8589  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
8590  * but with all dynamically-allocated buffers duplicated in new buffers.
8591  */
8592 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
8593
8594 /**
8595  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8596  */
8597 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
8598
8599 /**
8600  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
8601  */
8602 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
8603
8604 /**
8605  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
8606  */
8607 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
8608
8609 /**
8610  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
8611  */
8612 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
8613
8614 /**
8615  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
8616  * but with all dynamically-allocated buffers duplicated in new buffers.
8617  */
8618 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
8619
8620 /**
8621  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
8622  */
8623 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
8624
8625 /**
8626  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
8627  */
8628 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
8629
8630 /**
8631  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
8632  */
8633 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
8634
8635 /**
8636  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
8637  * but with all dynamically-allocated buffers duplicated in new buffers.
8638  */
8639 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
8640
8641 /**
8642  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8643  */
8644 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
8645
8646 /**
8647  * Creates a new CResult_TransactionNoneZ in the success state.
8648  */
8649 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
8650
8651 /**
8652  * Creates a new CResult_TransactionNoneZ in the error state.
8653  */
8654 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
8655
8656 /**
8657  * Frees any resources used by the CResult_TransactionNoneZ.
8658  */
8659 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
8660
8661 /**
8662  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8663  */
8664 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
8665
8666 /**
8667  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8668  */
8669 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
8670
8671 /**
8672  * Creates a new CResult_RouteDecodeErrorZ in the success state.
8673  */
8674 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
8675
8676 /**
8677  * Creates a new CResult_RouteDecodeErrorZ in the error state.
8678  */
8679 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
8680
8681 /**
8682  * Frees any resources used by the CResult_RouteDecodeErrorZ.
8683  */
8684 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
8685
8686 /**
8687  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
8688  * but with all dynamically-allocated buffers duplicated in new buffers.
8689  */
8690 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
8691
8692 /**
8693  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8694  */
8695 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
8696
8697 /**
8698  * Creates a new CResult_RouteLightningErrorZ in the success state.
8699  */
8700 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
8701
8702 /**
8703  * Creates a new CResult_RouteLightningErrorZ in the error state.
8704  */
8705 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
8706
8707 /**
8708  * Frees any resources used by the CResult_RouteLightningErrorZ.
8709  */
8710 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
8711
8712 /**
8713  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
8714  * but with all dynamically-allocated buffers duplicated in new buffers.
8715  */
8716 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
8717
8718 /**
8719  * Creates a new CResult_NetAddressu8Z in the success state.
8720  */
8721 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o);
8722
8723 /**
8724  * Creates a new CResult_NetAddressu8Z in the error state.
8725  */
8726 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_err(uint8_t e);
8727
8728 /**
8729  * Frees any resources used by the CResult_NetAddressu8Z.
8730  */
8731 void CResult_NetAddressu8Z_free(struct LDKCResult_NetAddressu8Z _res);
8732
8733 /**
8734  * Creates a new CResult_NetAddressu8Z which has the same data as `orig`
8735  * but with all dynamically-allocated buffers duplicated in new buffers.
8736  */
8737 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_clone(const struct LDKCResult_NetAddressu8Z *NONNULL_PTR orig);
8738
8739 /**
8740  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the success state.
8741  */
8742 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_ok(struct LDKCResult_NetAddressu8Z o);
8743
8744 /**
8745  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the error state.
8746  */
8747 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_err(struct LDKDecodeError e);
8748
8749 /**
8750  * Frees any resources used by the CResult_CResult_NetAddressu8ZDecodeErrorZ.
8751  */
8752 void CResult_CResult_NetAddressu8ZDecodeErrorZ_free(struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ _res);
8753
8754 /**
8755  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ which has the same data as `orig`
8756  * but with all dynamically-allocated buffers duplicated in new buffers.
8757  */
8758 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(const struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ *NONNULL_PTR orig);
8759
8760 /**
8761  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8762  */
8763 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
8764
8765 /**
8766  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8767  */
8768 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
8769
8770 /**
8771  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8772  */
8773 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
8774
8775 /**
8776  * Frees the buffer pointed to by `data` if `datalen` is non-0.
8777  */
8778 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
8779
8780 /**
8781  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
8782  */
8783 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
8784
8785 /**
8786  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
8787  */
8788 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
8789
8790 /**
8791  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
8792  */
8793 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
8794
8795 /**
8796  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
8797  * but with all dynamically-allocated buffers duplicated in new buffers.
8798  */
8799 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
8800
8801 /**
8802  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
8803  */
8804 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
8805
8806 /**
8807  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
8808  */
8809 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
8810
8811 /**
8812  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
8813  */
8814 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
8815
8816 /**
8817  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
8818  * but with all dynamically-allocated buffers duplicated in new buffers.
8819  */
8820 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
8821
8822 /**
8823  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
8824  */
8825 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
8826
8827 /**
8828  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
8829  */
8830 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
8831
8832 /**
8833  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
8834  */
8835 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
8836
8837 /**
8838  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
8839  * but with all dynamically-allocated buffers duplicated in new buffers.
8840  */
8841 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
8842
8843 /**
8844  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
8845  */
8846 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
8847
8848 /**
8849  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
8850  */
8851 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
8852
8853 /**
8854  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
8855  */
8856 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
8857
8858 /**
8859  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
8860  * but with all dynamically-allocated buffers duplicated in new buffers.
8861  */
8862 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
8863
8864 /**
8865  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
8866  */
8867 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
8868
8869 /**
8870  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
8871  */
8872 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
8873
8874 /**
8875  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
8876  */
8877 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
8878
8879 /**
8880  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
8881  * but with all dynamically-allocated buffers duplicated in new buffers.
8882  */
8883 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
8884
8885 /**
8886  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
8887  */
8888 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
8889
8890 /**
8891  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
8892  */
8893 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
8894
8895 /**
8896  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
8897  */
8898 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
8899
8900 /**
8901  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
8902  * but with all dynamically-allocated buffers duplicated in new buffers.
8903  */
8904 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
8905
8906 /**
8907  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
8908  */
8909 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
8910
8911 /**
8912  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
8913  */
8914 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
8915
8916 /**
8917  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
8918  */
8919 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
8920
8921 /**
8922  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
8923  * but with all dynamically-allocated buffers duplicated in new buffers.
8924  */
8925 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
8926
8927 /**
8928  * Creates a new CResult_FundingLockedDecodeErrorZ in the success state.
8929  */
8930 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
8931
8932 /**
8933  * Creates a new CResult_FundingLockedDecodeErrorZ in the error state.
8934  */
8935 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
8936
8937 /**
8938  * Frees any resources used by the CResult_FundingLockedDecodeErrorZ.
8939  */
8940 void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
8941
8942 /**
8943  * Creates a new CResult_FundingLockedDecodeErrorZ which has the same data as `orig`
8944  * but with all dynamically-allocated buffers duplicated in new buffers.
8945  */
8946 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
8947
8948 /**
8949  * Creates a new CResult_InitDecodeErrorZ in the success state.
8950  */
8951 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
8952
8953 /**
8954  * Creates a new CResult_InitDecodeErrorZ in the error state.
8955  */
8956 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
8957
8958 /**
8959  * Frees any resources used by the CResult_InitDecodeErrorZ.
8960  */
8961 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
8962
8963 /**
8964  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
8965  * but with all dynamically-allocated buffers duplicated in new buffers.
8966  */
8967 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
8968
8969 /**
8970  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
8971  */
8972 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
8973
8974 /**
8975  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
8976  */
8977 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
8978
8979 /**
8980  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
8981  */
8982 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
8983
8984 /**
8985  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
8986  * but with all dynamically-allocated buffers duplicated in new buffers.
8987  */
8988 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
8989
8990 /**
8991  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
8992  */
8993 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
8994
8995 /**
8996  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
8997  */
8998 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
8999
9000 /**
9001  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
9002  */
9003 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
9004
9005 /**
9006  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
9007  * but with all dynamically-allocated buffers duplicated in new buffers.
9008  */
9009 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
9010
9011 /**
9012  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
9013  */
9014 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
9015
9016 /**
9017  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
9018  */
9019 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
9020
9021 /**
9022  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
9023  */
9024 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
9025
9026 /**
9027  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
9028  * but with all dynamically-allocated buffers duplicated in new buffers.
9029  */
9030 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
9031
9032 /**
9033  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
9034  */
9035 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
9036
9037 /**
9038  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
9039  */
9040 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9041
9042 /**
9043  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
9044  */
9045 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
9046
9047 /**
9048  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
9049  * but with all dynamically-allocated buffers duplicated in new buffers.
9050  */
9051 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
9052
9053 /**
9054  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
9055  */
9056 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
9057
9058 /**
9059  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
9060  */
9061 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9062
9063 /**
9064  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
9065  */
9066 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
9067
9068 /**
9069  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
9070  * but with all dynamically-allocated buffers duplicated in new buffers.
9071  */
9072 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
9073
9074 /**
9075  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
9076  */
9077 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
9078
9079 /**
9080  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
9081  */
9082 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
9083
9084 /**
9085  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
9086  */
9087 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
9088
9089 /**
9090  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
9091  * but with all dynamically-allocated buffers duplicated in new buffers.
9092  */
9093 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
9094
9095 /**
9096  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
9097  */
9098 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
9099
9100 /**
9101  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
9102  */
9103 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9104
9105 /**
9106  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
9107  */
9108 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
9109
9110 /**
9111  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
9112  * but with all dynamically-allocated buffers duplicated in new buffers.
9113  */
9114 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
9115
9116 /**
9117  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
9118  */
9119 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
9120
9121 /**
9122  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
9123  */
9124 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
9125
9126 /**
9127  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
9128  */
9129 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
9130
9131 /**
9132  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
9133  * but with all dynamically-allocated buffers duplicated in new buffers.
9134  */
9135 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
9136
9137 /**
9138  * Creates a new CResult_PingDecodeErrorZ in the success state.
9139  */
9140 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
9141
9142 /**
9143  * Creates a new CResult_PingDecodeErrorZ in the error state.
9144  */
9145 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
9146
9147 /**
9148  * Frees any resources used by the CResult_PingDecodeErrorZ.
9149  */
9150 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
9151
9152 /**
9153  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
9154  * but with all dynamically-allocated buffers duplicated in new buffers.
9155  */
9156 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
9157
9158 /**
9159  * Creates a new CResult_PongDecodeErrorZ in the success state.
9160  */
9161 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
9162
9163 /**
9164  * Creates a new CResult_PongDecodeErrorZ in the error state.
9165  */
9166 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
9167
9168 /**
9169  * Frees any resources used by the CResult_PongDecodeErrorZ.
9170  */
9171 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
9172
9173 /**
9174  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
9175  * but with all dynamically-allocated buffers duplicated in new buffers.
9176  */
9177 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
9178
9179 /**
9180  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
9181  */
9182 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
9183
9184 /**
9185  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
9186  */
9187 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9188
9189 /**
9190  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
9191  */
9192 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
9193
9194 /**
9195  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
9196  * but with all dynamically-allocated buffers duplicated in new buffers.
9197  */
9198 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9199
9200 /**
9201  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
9202  */
9203 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
9204
9205 /**
9206  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
9207  */
9208 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9209
9210 /**
9211  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
9212  */
9213 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
9214
9215 /**
9216  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
9217  * but with all dynamically-allocated buffers duplicated in new buffers.
9218  */
9219 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9220
9221 /**
9222  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
9223  */
9224 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
9225
9226 /**
9227  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
9228  */
9229 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
9230
9231 /**
9232  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
9233  */
9234 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
9235
9236 /**
9237  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
9238  * but with all dynamically-allocated buffers duplicated in new buffers.
9239  */
9240 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
9241
9242 /**
9243  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
9244  */
9245 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
9246
9247 /**
9248  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
9249  */
9250 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
9251
9252 /**
9253  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
9254  */
9255 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
9256
9257 /**
9258  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
9259  * but with all dynamically-allocated buffers duplicated in new buffers.
9260  */
9261 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
9262
9263 /**
9264  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
9265  */
9266 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
9267
9268 /**
9269  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
9270  */
9271 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
9272
9273 /**
9274  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
9275  */
9276 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
9277
9278 /**
9279  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
9280  * but with all dynamically-allocated buffers duplicated in new buffers.
9281  */
9282 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
9283
9284 /**
9285  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
9286  */
9287 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
9288
9289 /**
9290  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
9291  */
9292 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9293
9294 /**
9295  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
9296  */
9297 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
9298
9299 /**
9300  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
9301  * but with all dynamically-allocated buffers duplicated in new buffers.
9302  */
9303 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9304
9305 /**
9306  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
9307  */
9308 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
9309
9310 /**
9311  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
9312  */
9313 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
9314
9315 /**
9316  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
9317  */
9318 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
9319
9320 /**
9321  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
9322  * but with all dynamically-allocated buffers duplicated in new buffers.
9323  */
9324 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
9325
9326 /**
9327  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
9328  */
9329 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
9330
9331 /**
9332  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
9333  */
9334 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
9335
9336 /**
9337  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
9338  */
9339 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
9340
9341 /**
9342  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
9343  * but with all dynamically-allocated buffers duplicated in new buffers.
9344  */
9345 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
9346
9347 /**
9348  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
9349  */
9350 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
9351
9352 /**
9353  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
9354  */
9355 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
9356
9357 /**
9358  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
9359  */
9360 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
9361
9362 /**
9363  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
9364  * but with all dynamically-allocated buffers duplicated in new buffers.
9365  */
9366 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
9367
9368 /**
9369  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
9370  */
9371 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
9372
9373 /**
9374  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
9375  */
9376 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
9377
9378 /**
9379  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
9380  */
9381 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
9382
9383 /**
9384  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
9385  * but with all dynamically-allocated buffers duplicated in new buffers.
9386  */
9387 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
9388
9389 /**
9390  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
9391  */
9392 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
9393
9394 /**
9395  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
9396  */
9397 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
9398
9399 /**
9400  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
9401  */
9402 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
9403
9404 /**
9405  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
9406  * but with all dynamically-allocated buffers duplicated in new buffers.
9407  */
9408 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
9409
9410 /**
9411  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
9412  */
9413 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
9414
9415 /**
9416  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
9417  */
9418 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
9419
9420 /**
9421  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
9422  */
9423 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
9424
9425 /**
9426  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
9427  * but with all dynamically-allocated buffers duplicated in new buffers.
9428  */
9429 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
9430
9431 /**
9432  * Frees any resources used by the Event
9433  */
9434 void Event_free(struct LDKEvent this_ptr);
9435
9436 /**
9437  * Creates a copy of the Event
9438  */
9439 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
9440
9441 /**
9442  * Serialize the Event object into a byte array which can be read by Event_read
9443  */
9444 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
9445
9446 /**
9447  * Frees any resources used by the MessageSendEvent
9448  */
9449 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
9450
9451 /**
9452  * Creates a copy of the MessageSendEvent
9453  */
9454 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
9455
9456 /**
9457  * Calls the free function if one is set
9458  */
9459 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
9460
9461 /**
9462  * Calls the free function if one is set
9463  */
9464 void EventsProvider_free(struct LDKEventsProvider this_ptr);
9465
9466 /**
9467  * Frees any resources used by the APIError
9468  */
9469 void APIError_free(struct LDKAPIError this_ptr);
9470
9471 /**
9472  * Creates a copy of the APIError
9473  */
9474 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
9475
9476 /**
9477  * Creates a copy of the Level
9478  */
9479 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
9480
9481 /**
9482  * Returns the most verbose logging level.
9483  */
9484 MUST_USE_RES enum LDKLevel Level_max(void);
9485
9486 /**
9487  * Calls the free function if one is set
9488  */
9489 void Logger_free(struct LDKLogger this_ptr);
9490
9491 /**
9492  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
9493  */
9494 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
9495
9496 /**
9497  * Confirmations we will wait for before considering the channel locked in.
9498  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
9499  * equivalent limit applied to outbound channels).
9500  *
9501  * Default value: 6.
9502  */
9503 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9504
9505 /**
9506  * Confirmations we will wait for before considering the channel locked in.
9507  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
9508  * equivalent limit applied to outbound channels).
9509  *
9510  * Default value: 6.
9511  */
9512 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
9513
9514 /**
9515  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
9516  * the number of blocks we have to punish our counterparty if they broadcast a revoked
9517  * transaction).
9518  *
9519  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
9520  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
9521  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
9522  * possibly with time in between to RBF the spending transaction).
9523  *
9524  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
9525  * case of an honest unilateral channel close, which implicitly decrease the economic value of
9526  * our channel.
9527  *
9528  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
9529  * can tweak config to ask for more security, not less.
9530  */
9531 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9532
9533 /**
9534  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
9535  * the number of blocks we have to punish our counterparty if they broadcast a revoked
9536  * transaction).
9537  *
9538  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
9539  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
9540  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
9541  * possibly with time in between to RBF the spending transaction).
9542  *
9543  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
9544  * case of an honest unilateral channel close, which implicitly decrease the economic value of
9545  * our channel.
9546  *
9547  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
9548  * can tweak config to ask for more security, not less.
9549  */
9550 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
9551
9552 /**
9553  * Set to the smallest value HTLC we will accept to process.
9554  *
9555  * This value is sent to our counterparty on channel-open and we close the channel any time
9556  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
9557  *
9558  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
9559  * by the protocol.
9560  */
9561 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
9562
9563 /**
9564  * Set to the smallest value HTLC we will accept to process.
9565  *
9566  * This value is sent to our counterparty on channel-open and we close the channel any time
9567  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
9568  *
9569  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
9570  * by the protocol.
9571  */
9572 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
9573
9574 /**
9575  * Constructs a new ChannelHandshakeConfig given each field
9576  */
9577 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);
9578
9579 /**
9580  * Creates a copy of the ChannelHandshakeConfig
9581  */
9582 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
9583
9584 /**
9585  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
9586  */
9587 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
9588
9589 /**
9590  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
9591  */
9592 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
9593
9594 /**
9595  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
9596  * only applies to inbound channels.
9597  *
9598  * Default value: 0.
9599  */
9600 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9601
9602 /**
9603  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
9604  * only applies to inbound channels.
9605  *
9606  * Default value: 0.
9607  */
9608 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9609
9610 /**
9611  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
9612  * you to limit the maximum minimum-size they can require.
9613  *
9614  * Default value: u64::max_value.
9615  */
9616 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9617
9618 /**
9619  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
9620  * you to limit the maximum minimum-size they can require.
9621  *
9622  * Default value: u64::max_value.
9623  */
9624 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9625
9626 /**
9627  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
9628  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
9629  *
9630  * Default value: 0.
9631  */
9632 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9633
9634 /**
9635  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
9636  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
9637  *
9638  * Default value: 0.
9639  */
9640 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9641
9642 /**
9643  * The remote node will require we keep a certain amount in direct payment to ourselves at all
9644  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
9645  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
9646  *
9647  * Default value: u64::max_value.
9648  */
9649 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9650
9651 /**
9652  * The remote node will require we keep a certain amount in direct payment to ourselves at all
9653  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
9654  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
9655  *
9656  * Default value: u64::max_value.
9657  */
9658 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9659
9660 /**
9661  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
9662  * time. This allows you to set a minimum such value.
9663  *
9664  * Default value: 0.
9665  */
9666 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9667
9668 /**
9669  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
9670  * time. This allows you to set a minimum such value.
9671  *
9672  * Default value: 0.
9673  */
9674 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
9675
9676 /**
9677  * Outputs below a certain value will not be added to on-chain transactions. The dust value is
9678  * required to always be higher than this value so this only applies to HTLC outputs (and
9679  * potentially to-self outputs before any payments have been made).
9680  * Thus, HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9681  * This setting allows you to set a minimum dust limit for their commitment transactions,
9682  * reflecting the reality that tiny outputs are not considered standard transactions and will
9683  * not propagate through the Bitcoin network.
9684  *
9685  * Default value: 546, the current dust limit on the Bitcoin network.
9686  */
9687 uint64_t ChannelHandshakeLimits_get_min_dust_limit_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9688
9689 /**
9690  * Outputs below a certain value will not be added to on-chain transactions. The dust value is
9691  * required to always be higher than this value so this only applies to HTLC outputs (and
9692  * potentially to-self outputs before any payments have been made).
9693  * Thus, HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9694  * This setting allows you to set a minimum dust limit for their commitment transactions,
9695  * reflecting the reality that tiny outputs are not considered standard transactions and will
9696  * not propagate through the Bitcoin network.
9697  *
9698  * Default value: 546, the current dust limit on the Bitcoin network.
9699  */
9700 void ChannelHandshakeLimits_set_min_dust_limit_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9701
9702 /**
9703  * Maximum allowed threshold above which outputs will not be generated in their commitment
9704  * transactions.
9705  * HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9706  *
9707  * Default value: u64::max_value.
9708  */
9709 uint64_t ChannelHandshakeLimits_get_max_dust_limit_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9710
9711 /**
9712  * Maximum allowed threshold above which outputs will not be generated in their commitment
9713  * transactions.
9714  * HTLCs below this amount plus HTLC transaction fees are not enforceable on-chain.
9715  *
9716  * Default value: u64::max_value.
9717  */
9718 void ChannelHandshakeLimits_set_max_dust_limit_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
9719
9720 /**
9721  * Before a channel is usable the funding transaction will need to be confirmed by at least a
9722  * certain number of blocks, specified by the node which is not the funder (as the funder can
9723  * assume they aren't going to double-spend themselves).
9724  * This config allows you to set a limit on the maximum amount of time to wait.
9725  *
9726  * Default value: 144, or roughly one day and only applies to outbound channels.
9727  */
9728 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9729
9730 /**
9731  * Before a channel is usable the funding transaction will need to be confirmed by at least a
9732  * certain number of blocks, specified by the node which is not the funder (as the funder can
9733  * assume they aren't going to double-spend themselves).
9734  * This config allows you to set a limit on the maximum amount of time to wait.
9735  *
9736  * Default value: 144, or roughly one day and only applies to outbound channels.
9737  */
9738 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
9739
9740 /**
9741  * Set to force the incoming channel to match our announced channel preference in
9742  * ChannelConfig.
9743  *
9744  * Default value: true, to make the default that no announced channels are possible (which is
9745  * appropriate for any nodes which are not online very reliably).
9746  */
9747 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9748
9749 /**
9750  * Set to force the incoming channel to match our announced channel preference in
9751  * ChannelConfig.
9752  *
9753  * Default value: true, to make the default that no announced channels are possible (which is
9754  * appropriate for any nodes which are not online very reliably).
9755  */
9756 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
9757
9758 /**
9759  * Set to the amount of time we're willing to wait to claim money back to us.
9760  *
9761  * Not checking this value would be a security issue, as our peer would be able to set it to
9762  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
9763  *
9764  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
9765  * reduce the loss of having useless locked funds (if your peer accepts)
9766  */
9767 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
9768
9769 /**
9770  * Set to the amount of time we're willing to wait to claim money back to us.
9771  *
9772  * Not checking this value would be a security issue, as our peer would be able to set it to
9773  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
9774  *
9775  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
9776  * reduce the loss of having useless locked funds (if your peer accepts)
9777  */
9778 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
9779
9780 /**
9781  * Constructs a new ChannelHandshakeLimits given each field
9782  */
9783 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);
9784
9785 /**
9786  * Creates a copy of the ChannelHandshakeLimits
9787  */
9788 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
9789
9790 /**
9791  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
9792  */
9793 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
9794
9795 /**
9796  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
9797  */
9798 void ChannelConfig_free(struct LDKChannelConfig this_obj);
9799
9800 /**
9801  * Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
9802  * This may be allowed to change at runtime in a later update, however doing so must result in
9803  * update messages sent to notify all nodes of our updated relay fee.
9804  *
9805  * Default value: 0.
9806  */
9807 uint32_t ChannelConfig_get_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9808
9809 /**
9810  * Amount (in millionths of a satoshi) the channel will charge per transferred satoshi.
9811  * This may be allowed to change at runtime in a later update, however doing so must result in
9812  * update messages sent to notify all nodes of our updated relay fee.
9813  *
9814  * Default value: 0.
9815  */
9816 void ChannelConfig_set_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
9817
9818 /**
9819  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
9820  * the channel this config applies to.
9821  *
9822  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
9823  * HTLC balance when a channel appears on-chain whereas
9824  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
9825  * (non-HTLC-encumbered) balance.
9826  *
9827  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
9828  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
9829  * commitment transaction at least once per this many blocks (minus some margin to allow us
9830  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
9831  * the spending transaction).
9832  *
9833  * Default value: 72 (12 hours at an average of 6 blocks/hour).
9834  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
9835  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
9836  *
9837  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
9838  */
9839 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9840
9841 /**
9842  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
9843  * the channel this config applies to.
9844  *
9845  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
9846  * HTLC balance when a channel appears on-chain whereas
9847  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
9848  * (non-HTLC-encumbered) balance.
9849  *
9850  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
9851  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
9852  * commitment transaction at least once per this many blocks (minus some margin to allow us
9853  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
9854  * the spending transaction).
9855  *
9856  * Default value: 72 (12 hours at an average of 6 blocks/hour).
9857  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
9858  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
9859  *
9860  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
9861  */
9862 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
9863
9864 /**
9865  * Set to announce the channel publicly and notify all nodes that they can route via this
9866  * channel.
9867  *
9868  * This should only be set to true for nodes which expect to be online reliably.
9869  *
9870  * As the node which funds a channel picks this value this will only apply for new outbound
9871  * channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
9872  *
9873  * This cannot be changed after the initial channel handshake.
9874  *
9875  * Default value: false.
9876  */
9877 bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9878
9879 /**
9880  * Set to announce the channel publicly and notify all nodes that they can route via this
9881  * channel.
9882  *
9883  * This should only be set to true for nodes which expect to be online reliably.
9884  *
9885  * As the node which funds a channel picks this value this will only apply for new outbound
9886  * channels unless ChannelHandshakeLimits::force_announced_channel_preferences is set.
9887  *
9888  * This cannot be changed after the initial channel handshake.
9889  *
9890  * Default value: false.
9891  */
9892 void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
9893
9894 /**
9895  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
9896  * supports it, they will then enforce the mutual-close output to us matches what we provided
9897  * at intialization, preventing us from closing to an alternate pubkey.
9898  *
9899  * This is set to true by default to provide a slight increase in security, though ultimately
9900  * any attacker who is able to take control of a channel can just as easily send the funds via
9901  * lightning payments, so we never require that our counterparties support this option.
9902  *
9903  * This cannot be changed after a channel has been initialized.
9904  *
9905  * Default value: true.
9906  */
9907 bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
9908
9909 /**
9910  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
9911  * supports it, they will then enforce the mutual-close output to us matches what we provided
9912  * at intialization, preventing us from closing to an alternate pubkey.
9913  *
9914  * This is set to true by default to provide a slight increase in security, though ultimately
9915  * any attacker who is able to take control of a channel can just as easily send the funds via
9916  * lightning payments, so we never require that our counterparties support this option.
9917  *
9918  * This cannot be changed after a channel has been initialized.
9919  *
9920  * Default value: true.
9921  */
9922 void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
9923
9924 /**
9925  * Constructs a new ChannelConfig given each field
9926  */
9927 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);
9928
9929 /**
9930  * Creates a copy of the ChannelConfig
9931  */
9932 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
9933
9934 /**
9935  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
9936  */
9937 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
9938
9939 /**
9940  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
9941  */
9942 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
9943
9944 /**
9945  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
9946  */
9947 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
9948
9949 /**
9950  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
9951  */
9952 void UserConfig_free(struct LDKUserConfig this_obj);
9953
9954 /**
9955  * Channel config that we propose to our counterparty.
9956  */
9957 struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9958
9959 /**
9960  * Channel config that we propose to our counterparty.
9961  */
9962 void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
9963
9964 /**
9965  * Limits applied to our counterparty's proposed channel config settings.
9966  */
9967 struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9968
9969 /**
9970  * Limits applied to our counterparty's proposed channel config settings.
9971  */
9972 void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
9973
9974 /**
9975  * Channel config which affects behavior during channel lifetime.
9976  */
9977 struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
9978
9979 /**
9980  * Channel config which affects behavior during channel lifetime.
9981  */
9982 void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
9983
9984 /**
9985  * Constructs a new UserConfig given each field
9986  */
9987 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);
9988
9989 /**
9990  * Creates a copy of the UserConfig
9991  */
9992 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
9993
9994 /**
9995  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
9996  */
9997 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
9998
9999 /**
10000  * Creates a copy of the AccessError
10001  */
10002 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
10003
10004 /**
10005  * Calls the free function if one is set
10006  */
10007 void Access_free(struct LDKAccess this_ptr);
10008
10009 /**
10010  * Calls the free function if one is set
10011  */
10012 void Listen_free(struct LDKListen this_ptr);
10013
10014 /**
10015  * Calls the free function if one is set
10016  */
10017 void Watch_free(struct LDKWatch this_ptr);
10018
10019 /**
10020  * Calls the free function if one is set
10021  */
10022 void Filter_free(struct LDKFilter this_ptr);
10023
10024 /**
10025  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
10026  */
10027 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
10028
10029 /**
10030  * First block where the transaction output may have been spent.
10031  */
10032 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10033
10034 /**
10035  * First block where the transaction output may have been spent.
10036  */
10037 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10038
10039 /**
10040  * Outpoint identifying the transaction output.
10041  */
10042 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10043
10044 /**
10045  * Outpoint identifying the transaction output.
10046  */
10047 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10048
10049 /**
10050  * Spending condition of the transaction output.
10051  */
10052 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
10053
10054 /**
10055  * Spending condition of the transaction output.
10056  */
10057 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
10058
10059 /**
10060  * Constructs a new WatchedOutput given each field
10061  */
10062 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
10063
10064 /**
10065  * Calls the free function if one is set
10066  */
10067 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
10068
10069 /**
10070  * Creates a copy of the ConfirmationTarget
10071  */
10072 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
10073
10074 /**
10075  * Calls the free function if one is set
10076  */
10077 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
10078
10079 /**
10080  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
10081  */
10082 void ChainMonitor_free(struct LDKChainMonitor this_obj);
10083
10084 /**
10085  * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
10086  * of a channel and reacting accordingly based on transactions in the connected block. See
10087  * [`ChannelMonitor::block_connected`] for details. Any HTLCs that were resolved on chain will
10088  * be returned by [`chain::Watch::release_pending_monitor_events`].
10089  *
10090  * Calls back to [`chain::Filter`] if any monitor indicated new outputs to watch. Subsequent
10091  * calls must not exclude any transactions matching the new outputs nor any in-block
10092  * descendants of such transactions. It is not necessary to re-fetch the block to obtain
10093  * updated `txdata`.
10094  */
10095 void ChainMonitor_block_connected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
10096
10097 /**
10098  * Dispatches to per-channel monitors, which are responsible for updating their on-chain view
10099  * of a channel based on the disconnected block. See [`ChannelMonitor::block_disconnected`] for
10100  * details.
10101  */
10102 void ChainMonitor_block_disconnected(const struct LDKChainMonitor *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t disconnected_height);
10103
10104 /**
10105  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
10106  *
10107  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
10108  * will call back to it indicating transactions and outputs of interest. This allows clients to
10109  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
10110  * always need to fetch full blocks absent another means for determining which blocks contain
10111  * transactions relevant to the watched channels.
10112  */
10113 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKFilter *chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
10114
10115 /**
10116  * Constructs a new Watch which calls the relevant methods on this_arg.
10117  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
10118  */
10119 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
10120
10121 /**
10122  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
10123  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
10124  */
10125 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
10126
10127 /**
10128  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
10129  */
10130 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
10131
10132 /**
10133  * The sequence number of this update. Updates *must* be replayed in-order according to this
10134  * sequence number (and updates may panic if they are not). The update_id values are strictly
10135  * increasing and increase by one for each new update, with one exception specified below.
10136  *
10137  * This sequence number is also used to track up to which points updates which returned
10138  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
10139  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
10140  *
10141  * The only instance where update_id values are not strictly increasing is the case where we
10142  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
10143  * its docs for more details.
10144  */
10145 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
10146
10147 /**
10148  * The sequence number of this update. Updates *must* be replayed in-order according to this
10149  * sequence number (and updates may panic if they are not). The update_id values are strictly
10150  * increasing and increase by one for each new update, with one exception specified below.
10151  *
10152  * This sequence number is also used to track up to which points updates which returned
10153  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
10154  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
10155  *
10156  * The only instance where update_id values are not strictly increasing is the case where we
10157  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
10158  * its docs for more details.
10159  */
10160 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
10161
10162 /**
10163  * Creates a copy of the ChannelMonitorUpdate
10164  */
10165 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
10166
10167 /**
10168  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
10169  */
10170 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
10171
10172 /**
10173  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
10174  */
10175 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
10176
10177 /**
10178  * Creates a copy of the ChannelMonitorUpdateErr
10179  */
10180 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
10181
10182 /**
10183  * Frees any resources used by the MonitorUpdateError, if is_owned is set and inner is non-NULL.
10184  */
10185 void MonitorUpdateError_free(struct LDKMonitorUpdateError this_obj);
10186
10187 /**
10188  * Creates a copy of the MonitorUpdateError
10189  */
10190 struct LDKMonitorUpdateError MonitorUpdateError_clone(const struct LDKMonitorUpdateError *NONNULL_PTR orig);
10191
10192 /**
10193  * Frees any resources used by the MonitorEvent
10194  */
10195 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
10196
10197 /**
10198  * Creates a copy of the MonitorEvent
10199  */
10200 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
10201
10202 /**
10203  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
10204  */
10205 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
10206
10207 /**
10208  * Creates a copy of the HTLCUpdate
10209  */
10210 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
10211
10212 /**
10213  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
10214  */
10215 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
10216
10217 /**
10218  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
10219  */
10220 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
10221
10222 /**
10223  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
10224  */
10225 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
10226
10227 /**
10228  * Creates a copy of the ChannelMonitor
10229  */
10230 struct LDKChannelMonitor ChannelMonitor_clone(const struct LDKChannelMonitor *NONNULL_PTR orig);
10231
10232 /**
10233  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
10234  */
10235 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
10236
10237 /**
10238  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
10239  * itself.
10240  *
10241  * panics if the given update is not the next update by update_id.
10242  */
10243 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);
10244
10245 /**
10246  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
10247  * ChannelMonitor.
10248  */
10249 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10250
10251 /**
10252  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
10253  */
10254 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10255
10256 /**
10257  * Gets a list of txids, with their output scripts (in the order they appear in the
10258  * transaction), which we must learn about spends of via block_connected().
10259  */
10260 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10261
10262 /**
10263  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
10264  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
10265  * have been registered.
10266  */
10267 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
10268
10269 /**
10270  * Get the list of HTLCs who's status has been updated on chain. This should be called by
10271  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
10272  */
10273 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10274
10275 /**
10276  * Gets the list of pending events which were generated by previous actions, clearing the list
10277  * in the process.
10278  *
10279  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
10280  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
10281  * no internal locking in ChannelMonitors.
10282  */
10283 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
10284
10285 /**
10286  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
10287  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
10288  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
10289  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
10290  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
10291  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
10292  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
10293  * out-of-band the other node operator to coordinate with him if option is available to you.
10294  * In any-case, choice is up to the user.
10295  */
10296 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);
10297
10298 /**
10299  * Processes transactions in a newly connected block, which may result in any of the following:
10300  * - update the monitor's state against resolved HTLCs
10301  * - punish the counterparty in the case of seeing a revoked commitment transaction
10302  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
10303  * - detect settled outputs for later spending
10304  * - schedule and bump any in-flight claims
10305  *
10306  * Returns any new outputs to watch from `txdata`; after called, these are also included in
10307  * [`get_outputs_to_watch`].
10308  *
10309  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
10310  */
10311 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);
10312
10313 /**
10314  * Determines if the disconnected block contained any transactions of interest and updates
10315  * appropriately.
10316  */
10317 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);
10318
10319 /**
10320  * Calls the free function if one is set
10321  */
10322 void Persist_free(struct LDKPersist this_ptr);
10323
10324 /**
10325  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
10326  */
10327 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
10328
10329 /**
10330  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
10331  */
10332 void OutPoint_free(struct LDKOutPoint this_obj);
10333
10334 /**
10335  * The referenced transaction's txid.
10336  */
10337 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
10338
10339 /**
10340  * The referenced transaction's txid.
10341  */
10342 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10343
10344 /**
10345  * The index of the referenced output in its transaction's vout.
10346  */
10347 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
10348
10349 /**
10350  * The index of the referenced output in its transaction's vout.
10351  */
10352 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
10353
10354 /**
10355  * Constructs a new OutPoint given each field
10356  */
10357 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
10358
10359 /**
10360  * Creates a copy of the OutPoint
10361  */
10362 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
10363
10364 /**
10365  * Convert an `OutPoint` to a lightning channel id.
10366  */
10367 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
10368
10369 /**
10370  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
10371  */
10372 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
10373
10374 /**
10375  * Read a OutPoint from a byte array, created by OutPoint_write
10376  */
10377 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
10378
10379 /**
10380  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
10381  */
10382 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
10383
10384 /**
10385  * The outpoint which is spendable
10386  */
10387 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10388
10389 /**
10390  * The outpoint which is spendable
10391  */
10392 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10393
10394 /**
10395  * Per commitment point to derive delayed_payment_key by key holder
10396  */
10397 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10398
10399 /**
10400  * Per commitment point to derive delayed_payment_key by key holder
10401  */
10402 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
10403
10404 /**
10405  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
10406  * the witness_script.
10407  */
10408 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10409
10410 /**
10411  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
10412  * the witness_script.
10413  */
10414 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
10415
10416 /**
10417  * The output which is referenced by the given outpoint
10418  */
10419 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
10420
10421 /**
10422  * The revocation point specific to the commitment transaction which was broadcast. Used to
10423  * derive the witnessScript for this output.
10424  */
10425 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10426
10427 /**
10428  * The revocation point specific to the commitment transaction which was broadcast. Used to
10429  * derive the witnessScript for this output.
10430  */
10431 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
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 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
10439
10440 /**
10441  * Arbitrary identification information returned by a call to
10442  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10443  * the channel to spend the output.
10444  */
10445 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10446
10447 /**
10448  * The value of the channel which this output originated from, possibly indirectly.
10449  */
10450 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10451
10452 /**
10453  * The value of the channel which this output originated from, possibly indirectly.
10454  */
10455 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
10456
10457 /**
10458  * Constructs a new DelayedPaymentOutputDescriptor given each field
10459  */
10460 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);
10461
10462 /**
10463  * Creates a copy of the DelayedPaymentOutputDescriptor
10464  */
10465 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
10466
10467 /**
10468  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
10469  */
10470 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
10471
10472 /**
10473  * The outpoint which is spendable
10474  */
10475 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10476
10477 /**
10478  * The outpoint which is spendable
10479  */
10480 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
10481
10482 /**
10483  * The output which is referenced by the given outpoint
10484  */
10485 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
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 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
10493
10494 /**
10495  * Arbitrary identification information returned by a call to
10496  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
10497  * the channel to spend the output.
10498  */
10499 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10500
10501 /**
10502  * The value of the channel which this transactions spends.
10503  */
10504 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
10505
10506 /**
10507  * The value of the channel which this transactions spends.
10508  */
10509 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
10510
10511 /**
10512  * Constructs a new StaticPaymentOutputDescriptor given each field
10513  */
10514 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);
10515
10516 /**
10517  * Creates a copy of the StaticPaymentOutputDescriptor
10518  */
10519 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
10520
10521 /**
10522  * Frees any resources used by the SpendableOutputDescriptor
10523  */
10524 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
10525
10526 /**
10527  * Creates a copy of the SpendableOutputDescriptor
10528  */
10529 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
10530
10531 /**
10532  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
10533  */
10534 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
10535
10536 /**
10537  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
10538  */
10539 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
10540
10541 /**
10542  * Creates a copy of a Sign
10543  */
10544 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
10545
10546 /**
10547  * Calls the free function if one is set
10548  */
10549 void Sign_free(struct LDKSign this_ptr);
10550
10551 /**
10552  * Calls the free function if one is set
10553  */
10554 void KeysInterface_free(struct LDKKeysInterface this_ptr);
10555
10556 /**
10557  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
10558  */
10559 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
10560
10561 /**
10562  * Private key of anchor tx
10563  */
10564 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10565
10566 /**
10567  * Private key of anchor tx
10568  */
10569 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10570
10571 /**
10572  * Holder secret key for blinded revocation pubkey
10573  */
10574 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10575
10576 /**
10577  * Holder secret key for blinded revocation pubkey
10578  */
10579 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10580
10581 /**
10582  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
10583  */
10584 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10585
10586 /**
10587  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
10588  */
10589 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10590
10591 /**
10592  * Holder secret key used in HTLC tx
10593  */
10594 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10595
10596 /**
10597  * Holder secret key used in HTLC tx
10598  */
10599 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10600
10601 /**
10602  * Holder htlc secret key used in commitment tx htlc outputs
10603  */
10604 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10605
10606 /**
10607  * Holder htlc secret key used in commitment tx htlc outputs
10608  */
10609 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
10610
10611 /**
10612  * Commitment seed
10613  */
10614 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
10615
10616 /**
10617  * Commitment seed
10618  */
10619 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10620
10621 /**
10622  * Creates a copy of the InMemorySigner
10623  */
10624 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
10625
10626 /**
10627  * Create a new InMemorySigner
10628  */
10629 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);
10630
10631 /**
10632  * Counterparty pubkeys.
10633  * Will panic if ready_channel wasn't called.
10634  */
10635 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10636
10637 /**
10638  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
10639  * transactions, ie the amount of time that we have to wait to recover our funds if we
10640  * broadcast a transaction.
10641  * Will panic if ready_channel wasn't called.
10642  */
10643 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10644
10645 /**
10646  * The contest_delay value specified by us and applied on transactions broadcastable
10647  * by our counterparty, ie the amount of time that they have to wait to recover their funds
10648  * if they broadcast a transaction.
10649  * Will panic if ready_channel wasn't called.
10650  */
10651 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10652
10653 /**
10654  * Whether the holder is the initiator
10655  * Will panic if ready_channel wasn't called.
10656  */
10657 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10658
10659 /**
10660  * Funding outpoint
10661  * Will panic if ready_channel wasn't called.
10662  */
10663 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10664
10665 /**
10666  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
10667  * building transactions.
10668  *
10669  * Will panic if ready_channel wasn't called.
10670  */
10671 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10672
10673 /**
10674  * Sign the single input of spend_tx at index `input_idx` which spends the output
10675  * described by descriptor, returning the witness stack for the input.
10676  *
10677  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
10678  * or is not spending the outpoint described by `descriptor.outpoint`.
10679  */
10680 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);
10681
10682 /**
10683  * Sign the single input of spend_tx at index `input_idx` which spends the output
10684  * described by descriptor, returning the witness stack for the input.
10685  *
10686  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
10687  * is not spending the outpoint described by `descriptor.outpoint`, or does not have a
10688  * sequence set to `descriptor.to_self_delay`.
10689  */
10690 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);
10691
10692 /**
10693  * Constructs a new Sign which calls the relevant methods on this_arg.
10694  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
10695  */
10696 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
10697
10698 /**
10699  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
10700  */
10701 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
10702
10703 /**
10704  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
10705  */
10706 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
10707
10708 /**
10709  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
10710  */
10711 void KeysManager_free(struct LDKKeysManager this_obj);
10712
10713 /**
10714  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
10715  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
10716  * starting_time isn't strictly required to actually be a time, but it must absolutely,
10717  * without a doubt, be unique to this instance. ie if you start multiple times with the same
10718  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
10719  * simply use the current time (with very high precision).
10720  *
10721  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
10722  * obviously, starting_time should be unique every time you reload the library - it is only
10723  * used to generate new ephemeral key data (which will be stored by the individual channel if
10724  * necessary).
10725  *
10726  * Note that the seed is required to recover certain on-chain funds independent of
10727  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
10728  * channel, and some on-chain during-closing funds.
10729  *
10730  * Note that until the 0.1 release there is no guarantee of backward compatibility between
10731  * versions. Once the library is more fully supported, the docs will be updated to include a
10732  * detailed description of the guarantee.
10733  */
10734 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
10735
10736 /**
10737  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
10738  *
10739  * Key derivation parameters are accessible through a per-channel secrets
10740  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
10741  * onchain output detection for which a corresponding delayed_payment_key must be derived.
10742  */
10743 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]);
10744
10745 /**
10746  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
10747  * output to the given change destination (if sufficient change value remains). The
10748  * transaction will have a feerate, at least, of the given value.
10749  *
10750  * Returns `Err(())` if the output value is greater than the input value minus required fee or
10751  * if a descriptor was duplicated.
10752  *
10753  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
10754  *
10755  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
10756  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
10757  */
10758 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);
10759
10760 /**
10761  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
10762  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
10763  */
10764 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
10765
10766 /**
10767  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
10768  */
10769 void ChannelManager_free(struct LDKChannelManager this_obj);
10770
10771 /**
10772  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
10773  */
10774 void ChainParameters_free(struct LDKChainParameters this_obj);
10775
10776 /**
10777  * The network for determining the `chain_hash` in Lightning messages.
10778  */
10779 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
10780
10781 /**
10782  * The network for determining the `chain_hash` in Lightning messages.
10783  */
10784 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
10785
10786 /**
10787  * The hash of the latest block successfully connected.
10788  */
10789 const uint8_t (*ChainParameters_get_latest_hash(const struct LDKChainParameters *NONNULL_PTR this_ptr))[32];
10790
10791 /**
10792  * The hash of the latest block successfully connected.
10793  */
10794 void ChainParameters_set_latest_hash(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
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 uintptr_t ChainParameters_get_latest_height(const struct LDKChainParameters *NONNULL_PTR this_ptr);
10802
10803 /**
10804  * The height of the latest block successfully connected.
10805  *
10806  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
10807  */
10808 void ChainParameters_set_latest_height(struct LDKChainParameters *NONNULL_PTR this_ptr, uintptr_t val);
10809
10810 /**
10811  * Constructs a new ChainParameters given each field
10812  */
10813 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKThirtyTwoBytes latest_hash_arg, uintptr_t latest_height_arg);
10814
10815 /**
10816  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
10817  */
10818 void ChannelDetails_free(struct LDKChannelDetails this_obj);
10819
10820 /**
10821  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
10822  * thereafter this is the txid of the funding transaction xor the funding transaction output).
10823  * Note that this means this value is *not* persistent - it can change once during the
10824  * lifetime of the channel.
10825  */
10826 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
10827
10828 /**
10829  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
10830  * thereafter this is the txid of the funding transaction xor the funding transaction output).
10831  * Note that this means this value is *not* persistent - it can change once during the
10832  * lifetime of the channel.
10833  */
10834 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
10835
10836 /**
10837  * The position of the funding transaction in the chain. None if the funding transaction has
10838  * not yet been confirmed and the channel fully opened.
10839  */
10840 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10841
10842 /**
10843  * The position of the funding transaction in the chain. None if the funding transaction has
10844  * not yet been confirmed and the channel fully opened.
10845  */
10846 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
10847
10848 /**
10849  * The node_id of our counterparty
10850  */
10851 struct LDKPublicKey ChannelDetails_get_remote_network_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10852
10853 /**
10854  * The node_id of our counterparty
10855  */
10856 void ChannelDetails_set_remote_network_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKPublicKey val);
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 struct LDKInitFeatures ChannelDetails_get_counterparty_features(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10864
10865 /**
10866  * The Features the channel counterparty provided upon last connection.
10867  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
10868  * many routing-relevant features are present in the init context.
10869  */
10870 void ChannelDetails_set_counterparty_features(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
10871
10872 /**
10873  * The value, in satoshis, of this channel as appears in the funding output
10874  */
10875 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10876
10877 /**
10878  * The value, in satoshis, of this channel as appears in the funding output
10879  */
10880 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10881
10882 /**
10883  * The user_id passed in to create_channel, or 0 if the channel was inbound.
10884  */
10885 uint64_t ChannelDetails_get_user_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10886
10887 /**
10888  * The user_id passed in to create_channel, or 0 if the channel was inbound.
10889  */
10890 void ChannelDetails_set_user_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10891
10892 /**
10893  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
10894  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10895  * available for inclusion in new outbound HTLCs). This further does not include any pending
10896  * outgoing HTLCs which are awaiting some other resolution to be sent.
10897  */
10898 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10899
10900 /**
10901  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
10902  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10903  * available for inclusion in new outbound HTLCs). This further does not include any pending
10904  * outgoing HTLCs which are awaiting some other resolution to be sent.
10905  */
10906 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10907
10908 /**
10909  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
10910  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10911  * available for inclusion in new inbound HTLCs).
10912  * Note that there are some corner cases not fully handled here, so the actual available
10913  * inbound capacity may be slightly higher than this.
10914  */
10915 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10916
10917 /**
10918  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
10919  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
10920  * available for inclusion in new inbound HTLCs).
10921  * Note that there are some corner cases not fully handled here, so the actual available
10922  * inbound capacity may be slightly higher than this.
10923  */
10924 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
10925
10926 /**
10927  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
10928  * the peer is connected, and (c) no monitor update failure is pending resolution.
10929  */
10930 bool ChannelDetails_get_is_live(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
10931
10932 /**
10933  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
10934  * the peer is connected, and (c) no monitor update failure is pending resolution.
10935  */
10936 void ChannelDetails_set_is_live(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
10937
10938 /**
10939  * Creates a copy of the ChannelDetails
10940  */
10941 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
10942
10943 /**
10944  * Frees any resources used by the PaymentSendFailure
10945  */
10946 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
10947
10948 /**
10949  * Creates a copy of the PaymentSendFailure
10950  */
10951 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
10952
10953 /**
10954  * Constructs a new ChannelManager to hold several channels and route between them.
10955  *
10956  * This is the main \"logic hub\" for all channel-related actions, and implements
10957  * ChannelMessageHandler.
10958  *
10959  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
10960  *
10961  * panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
10962  *
10963  * Users need to notify the new ChannelManager when a new block is connected or
10964  * disconnected using its `block_connected` and `block_disconnected` methods, starting
10965  * from after `params.latest_hash`.
10966  */
10967 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);
10968
10969 /**
10970  * Gets the current configuration applied to all new channels,  as
10971  */
10972 MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
10973
10974 /**
10975  * Creates a new outbound channel to the given remote node and with the given value.
10976  *
10977  * user_id will be provided back as user_channel_id in FundingGenerationReady and
10978  * FundingBroadcastSafe events to allow tracking of which events correspond with which
10979  * create_channel call. Note that user_channel_id defaults to 0 for inbound channels, so you
10980  * may wish to avoid using 0 for user_id here.
10981  *
10982  * If successful, will generate a SendOpenChannel message event, so you should probably poll
10983  * PeerManager::process_events afterwards.
10984  *
10985  * Raises APIError::APIMisuseError when channel_value_satoshis > 2**24 or push_msat is
10986  * greater than channel_value_satoshis * 1k or channel_value_satoshis is < 1000.
10987  */
10988 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);
10989
10990 /**
10991  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
10992  * more information.
10993  */
10994 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
10995
10996 /**
10997  * Gets the list of usable channels, in random order. Useful as an argument to
10998  * get_route to ensure non-announced channels are used.
10999  *
11000  * These are guaranteed to have their is_live value set to true, see the documentation for
11001  * ChannelDetails::is_live for more info on exactly what the criteria are.
11002  */
11003 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
11004
11005 /**
11006  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
11007  * will be accepted on the given channel, and after additional timeout/the closing of all
11008  * pending HTLCs, the channel will be closed on chain.
11009  *
11010  * May generate a SendShutdown message event on success, which should be relayed.
11011  */
11012 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
11013
11014 /**
11015  * Force closes a channel, immediately broadcasting the latest local commitment transaction to
11016  * the chain and rejecting new HTLCs on the given channel. Fails if channel_id is unknown to the manager.
11017  */
11018 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
11019
11020 /**
11021  * Force close all channels, immediately broadcasting the latest local commitment transaction
11022  * for each to the chain and rejecting new HTLCs on each.
11023  */
11024 void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
11025
11026 /**
11027  * Sends a payment along a given route.
11028  *
11029  * Value parameters are provided via the last hop in route, see documentation for RouteHop
11030  * fields for more info.
11031  *
11032  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
11033  * payment), we don't do anything to stop you! We always try to ensure that if the provided
11034  * next hop knows the preimage to payment_hash they can claim an additional amount as
11035  * specified in the last hop in the route! Thus, you should probably do your own
11036  * payment_preimage tracking (which you should already be doing as they represent \"proof of
11037  * payment\") and prevent double-sends yourself.
11038  *
11039  * May generate SendHTLCs message(s) event on success, which should be relayed.
11040  *
11041  * Each path may have a different return value, and PaymentSendValue may return a Vec with
11042  * each entry matching the corresponding-index entry in the route paths, see
11043  * PaymentSendFailure for more info.
11044  *
11045  * In general, a path may raise:
11046  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
11047  *    node public key) is specified.
11048  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
11049  *    (including due to previous monitor update failure or new permanent monitor update
11050  *    failure).
11051  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
11052  *    relevant updates.
11053  *
11054  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
11055  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
11056  * different route unless you intend to pay twice!
11057  *
11058  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
11059  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
11060  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
11061  * must not contain multiple paths as multi-path payments require a recipient-provided
11062  * payment_secret.
11063  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
11064  * bit set (either as required or as available). If multiple paths are present in the Route,
11065  * we assume the invoice had the basic_mpp feature set.
11066  */
11067 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);
11068
11069 /**
11070  * Call this upon creation of a funding transaction for the given channel.
11071  *
11072  * Note that ALL inputs in the transaction pointed to by funding_txo MUST spend SegWit outputs
11073  * or your counterparty can steal your funds!
11074  *
11075  * Returns an [`APIError::APIMisuseError`] if the funding_transaction spent non-SegWit outputs
11076  * or the output didn't match the parameters in [`Event::FundingGenerationReady`].
11077  *
11078  * Panics if a funding transaction has already been provided for this channel.
11079  *
11080  * May panic if the funding_txo is duplicative with some other channel (note that this should
11081  * be trivially prevented by using unique funding transaction keys per-channel).
11082  */
11083 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_funding_transaction_generated(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKTransaction funding_transaction, uint16_t output_index);
11084
11085 /**
11086  * Generates a signed node_announcement from the given arguments and creates a
11087  * BroadcastNodeAnnouncement event. Note that such messages will be ignored unless peers have
11088  * seen a channel_announcement from us (ie unless we have public channels open).
11089  *
11090  * RGB is a node \"color\" and alias is a printable human-readable string to describe this node
11091  * to humans. They carry no in-protocol meaning.
11092  *
11093  * addresses represent the set (possibly empty) of socket addresses on which this node accepts
11094  * incoming connections. These will be broadcast to the network, publicly tying these
11095  * addresses together. If you wish to preserve user privacy, addresses should likely contain
11096  * only Tor Onion addresses.
11097  *
11098  * Panics if addresses is absurdly large (more than 500).
11099  */
11100 void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
11101
11102 /**
11103  * Processes HTLCs which are pending waiting on random forward delay.
11104  *
11105  * Should only really ever be called in response to a PendingHTLCsForwardable event.
11106  * Will likely generate further events.
11107  */
11108 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
11109
11110 /**
11111  * If a peer is disconnected we mark any channels with that peer as 'disabled'.
11112  * After some time, if channels are still disabled we need to broadcast a ChannelUpdate
11113  * to inform the network about the uselessness of these channels.
11114  *
11115  * This method handles all the details, and must be called roughly once per minute.
11116  *
11117  * Note that in some rare cases this may generate a `chain::Watch::update_channel` call.
11118  */
11119 void ChannelManager_timer_chan_freshness_every_min(const struct LDKChannelManager *NONNULL_PTR this_arg);
11120
11121 /**
11122  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
11123  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
11124  * along the path (including in our own channel on which we received it).
11125  * Returns false if no payment was found to fail backwards, true if the process of failing the
11126  * HTLC backwards has been started.
11127  */
11128 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);
11129
11130 /**
11131  * Provides a payment preimage in response to a PaymentReceived event, returning true and
11132  * generating message events for the net layer to claim the payment, if possible. Thus, you
11133  * should probably kick the net layer to go send messages if this returns true!
11134  *
11135  * You must specify the expected amounts for this HTLC, and we will only claim HTLCs
11136  * available within a few percent of the expected amount. This is critical for several
11137  * reasons : a) it avoids providing senders with `proof-of-payment` (in the form of the
11138  * payment_preimage without having provided the full value and b) it avoids certain
11139  * privacy-breaking recipient-probing attacks which may reveal payment activity to
11140  * motivated attackers.
11141  *
11142  * Note that the privacy concerns in (b) are not relevant in payments with a payment_secret
11143  * set. Thus, for such payments we will claim any payments which do not under-pay.
11144  *
11145  * May panic if called except in response to a PaymentReceived event.
11146  */
11147 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);
11148
11149 /**
11150  * Gets the node_id held by this ChannelManager
11151  */
11152 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
11153
11154 /**
11155  * Restores a single, given channel to normal operation after a
11156  * ChannelMonitorUpdateErr::TemporaryFailure was returned from a channel monitor update
11157  * operation.
11158  *
11159  * All ChannelMonitor updates up to and including highest_applied_update_id must have been
11160  * fully committed in every copy of the given channels' ChannelMonitors.
11161  *
11162  * Note that there is no effect to calling with a highest_applied_update_id other than the
11163  * current latest ChannelMonitorUpdate and one call to this function after multiple
11164  * ChannelMonitorUpdateErr::TemporaryFailures is fine. The highest_applied_update_id field
11165  * exists largely only to prevent races between this and concurrent update_monitor calls.
11166  *
11167  * Thus, the anticipated use is, at a high level:
11168  *  1) You register a chain::Watch with this ChannelManager,
11169  *  2) it stores each update to disk, and begins updating any remote (eg watchtower) copies of
11170  *     said ChannelMonitors as it can, returning ChannelMonitorUpdateErr::TemporaryFailures
11171  *     any time it cannot do so instantly,
11172  *  3) update(s) are applied to each remote copy of a ChannelMonitor,
11173  *  4) once all remote copies are updated, you call this function with the update_id that
11174  *     completed, and once it is the latest the Channel will be re-enabled.
11175  */
11176 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);
11177
11178 /**
11179  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
11180  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
11181  */
11182 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
11183
11184 /**
11185  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
11186  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
11187  */
11188 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
11189
11190 /**
11191  * Constructs a new Listen which calls the relevant methods on this_arg.
11192  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
11193  */
11194 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
11195
11196 /**
11197  * Updates channel state to take note of transactions which were confirmed in the given block
11198  * at the given height.
11199  *
11200  * Note that you must still call update_best_block with the block information which is
11201  * included here.
11202  *
11203  * This method may be called before or after update_best_block for a given block's transaction
11204  * data and may be called multiple times with additional transaction data for a given block.
11205  *
11206  * This method may be called for a previous block after an update_best_block() call has been
11207  * made for a later block, however it must *not* be called with transaction data from a block
11208  * which is no longer in the best chain (ie where update_best_block() has already been
11209  * informed about a blockchain reorganization which no longer includes the block which
11210  * corresponds to `header`).
11211  */
11212 void ChannelManager_transactions_confirmed(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height, struct LDKCVec_C2Tuple_usizeTransactionZZ txdata);
11213
11214 /**
11215  * Updates channel state with the current best blockchain tip. You should attempt to call this
11216  * quickly after a new block becomes available, however if multiple new blocks become
11217  * available at the same time, only a single `update_best_block()` call needs to be made.
11218  *
11219  * This method should also be called immediately after any block disconnections, once at the
11220  * reorganization fork point, and once with the new chain tip. Calling this method at the
11221  * blockchain reorganization fork point ensures we learn when a funding transaction which was
11222  * previously confirmed is reorganized out of the blockchain, ensuring we do not continue to
11223  * accept payments which cannot be enforced on-chain.
11224  *
11225  * In both the block-connection and block-disconnection case, this method may be called either
11226  * once per block connected or disconnected, or simply at the fork point and new tip(s),
11227  * skipping any intermediary blocks.
11228  */
11229 void ChannelManager_update_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*header)[80], uint32_t height);
11230
11231 /**
11232  * Gets the set of txids which should be monitored for their confirmation state. XXX: Docs
11233  */
11234 MUST_USE_RES struct LDKCVec_TxidZ ChannelManager_get_relevant_txids(const struct LDKChannelManager *NONNULL_PTR this_arg);
11235
11236 /**
11237  * Marks a transaction as having been reorganized out of the blockchain XXX: Docs
11238  */
11239 void ChannelManager_transaction_unconfirmed(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*txid)[32]);
11240
11241 /**
11242  * Blocks until ChannelManager needs to be persisted or a timeout is reached. It returns a bool
11243  * indicating whether persistence is necessary. Only one listener on
11244  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
11245  * up.
11246  * Note that the feature `allow_wallclock_use` must be enabled to use this function.
11247  */
11248 MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
11249
11250 /**
11251  * Blocks until ChannelManager needs to be persisted. Only one listener on
11252  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
11253  * up.
11254  */
11255 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
11256
11257 /**
11258  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
11259  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
11260  */
11261 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
11262
11263 /**
11264  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
11265  */
11266 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
11267
11268 /**
11269  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
11270  */
11271 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
11272
11273 /**
11274  * The keys provider which will give us relevant keys. Some keys will be loaded during
11275  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
11276  * signing data.
11277  */
11278 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11279
11280 /**
11281  * The keys provider which will give us relevant keys. Some keys will be loaded during
11282  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
11283  * signing data.
11284  */
11285 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
11286
11287 /**
11288  * The fee_estimator for use in the ChannelManager in the future.
11289  *
11290  * No calls to the FeeEstimator will be made during deserialization.
11291  */
11292 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11293
11294 /**
11295  * The fee_estimator for use in the ChannelManager in the future.
11296  *
11297  * No calls to the FeeEstimator will be made during deserialization.
11298  */
11299 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
11300
11301 /**
11302  * The chain::Watch for use in the ChannelManager in the future.
11303  *
11304  * No calls to the chain::Watch will be made during deserialization. It is assumed that
11305  * you have deserialized ChannelMonitors separately and will add them to your
11306  * chain::Watch after deserializing this ChannelManager.
11307  */
11308 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11309
11310 /**
11311  * The chain::Watch for use in the ChannelManager in the future.
11312  *
11313  * No calls to the chain::Watch will be made during deserialization. It is assumed that
11314  * you have deserialized ChannelMonitors separately and will add them to your
11315  * chain::Watch after deserializing this ChannelManager.
11316  */
11317 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
11318
11319 /**
11320  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
11321  * used to broadcast the latest local commitment transactions of channels which must be
11322  * force-closed during deserialization.
11323  */
11324 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11325
11326 /**
11327  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
11328  * used to broadcast the latest local commitment transactions of channels which must be
11329  * force-closed during deserialization.
11330  */
11331 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
11332
11333 /**
11334  * The Logger for use in the ChannelManager and which may be used to log information during
11335  * deserialization.
11336  */
11337 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11338
11339 /**
11340  * The Logger for use in the ChannelManager and which may be used to log information during
11341  * deserialization.
11342  */
11343 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
11344
11345 /**
11346  * Default settings used for new channels. Any existing channels will continue to use the
11347  * runtime settings which were stored when the ChannelManager was serialized.
11348  */
11349 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
11350
11351 /**
11352  * Default settings used for new channels. Any existing channels will continue to use the
11353  * runtime settings which were stored when the ChannelManager was serialized.
11354  */
11355 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
11356
11357 /**
11358  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
11359  * HashMap for you. This is primarily useful for C bindings where it is not practical to
11360  * populate a HashMap directly from C.
11361  */
11362 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);
11363
11364 /**
11365  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
11366  */
11367 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
11368
11369 /**
11370  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
11371  */
11372 void DecodeError_free(struct LDKDecodeError this_obj);
11373
11374 /**
11375  * Creates a copy of the DecodeError
11376  */
11377 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
11378
11379 /**
11380  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
11381  */
11382 void Init_free(struct LDKInit this_obj);
11383
11384 /**
11385  * The relevant features which the sender supports
11386  */
11387 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
11388
11389 /**
11390  * The relevant features which the sender supports
11391  */
11392 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
11393
11394 /**
11395  * Constructs a new Init given each field
11396  */
11397 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
11398
11399 /**
11400  * Creates a copy of the Init
11401  */
11402 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
11403
11404 /**
11405  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
11406  */
11407 void ErrorMessage_free(struct LDKErrorMessage this_obj);
11408
11409 /**
11410  * The channel ID involved in the error
11411  */
11412 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
11413
11414 /**
11415  * The channel ID involved in the error
11416  */
11417 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11418
11419 /**
11420  * A possibly human-readable error description.
11421  * The string should be sanitized before it is used (e.g. emitted to logs
11422  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
11423  * vulnerability in the terminal emulator or the logging subsystem.
11424  */
11425 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
11426
11427 /**
11428  * A possibly human-readable error description.
11429  * The string should be sanitized before it is used (e.g. emitted to logs
11430  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
11431  * vulnerability in the terminal emulator or the logging subsystem.
11432  */
11433 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
11434
11435 /**
11436  * Constructs a new ErrorMessage given each field
11437  */
11438 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z data_arg);
11439
11440 /**
11441  * Creates a copy of the ErrorMessage
11442  */
11443 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
11444
11445 /**
11446  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
11447  */
11448 void Ping_free(struct LDKPing this_obj);
11449
11450 /**
11451  * The desired response length
11452  */
11453 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
11454
11455 /**
11456  * The desired response length
11457  */
11458 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
11459
11460 /**
11461  * The ping packet size.
11462  * This field is not sent on the wire. byteslen zeros are sent.
11463  */
11464 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
11465
11466 /**
11467  * The ping packet size.
11468  * This field is not sent on the wire. byteslen zeros are sent.
11469  */
11470 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
11471
11472 /**
11473  * Constructs a new Ping given each field
11474  */
11475 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
11476
11477 /**
11478  * Creates a copy of the Ping
11479  */
11480 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
11481
11482 /**
11483  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
11484  */
11485 void Pong_free(struct LDKPong this_obj);
11486
11487 /**
11488  * The pong packet size.
11489  * This field is not sent on the wire. byteslen zeros are sent.
11490  */
11491 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
11492
11493 /**
11494  * The pong packet size.
11495  * This field is not sent on the wire. byteslen zeros are sent.
11496  */
11497 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
11498
11499 /**
11500  * Constructs a new Pong given each field
11501  */
11502 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
11503
11504 /**
11505  * Creates a copy of the Pong
11506  */
11507 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
11508
11509 /**
11510  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
11511  */
11512 void OpenChannel_free(struct LDKOpenChannel this_obj);
11513
11514 /**
11515  * The genesis hash of the blockchain where the channel is to be opened
11516  */
11517 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
11518
11519 /**
11520  * The genesis hash of the blockchain where the channel is to be opened
11521  */
11522 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11523
11524 /**
11525  * A temporary channel ID, until the funding outpoint is announced
11526  */
11527 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
11528
11529 /**
11530  * A temporary channel ID, until the funding outpoint is announced
11531  */
11532 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11533
11534 /**
11535  * The channel value
11536  */
11537 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11538
11539 /**
11540  * The channel value
11541  */
11542 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11543
11544 /**
11545  * The amount to push to the counterparty as part of the open, in milli-satoshi
11546  */
11547 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11548
11549 /**
11550  * The amount to push to the counterparty as part of the open, in milli-satoshi
11551  */
11552 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11553
11554 /**
11555  * The threshold below which outputs on transactions broadcast by sender will be omitted
11556  */
11557 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11558
11559 /**
11560  * The threshold below which outputs on transactions broadcast by sender will be omitted
11561  */
11562 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11563
11564 /**
11565  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11566  */
11567 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11568
11569 /**
11570  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11571  */
11572 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11573
11574 /**
11575  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11576  */
11577 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11578
11579 /**
11580  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11581  */
11582 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11583
11584 /**
11585  * The minimum HTLC size incoming to sender, in milli-satoshi
11586  */
11587 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11588
11589 /**
11590  * The minimum HTLC size incoming to sender, in milli-satoshi
11591  */
11592 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
11593
11594 /**
11595  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
11596  */
11597 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11598
11599 /**
11600  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
11601  */
11602 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
11603
11604 /**
11605  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11606  */
11607 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11608
11609 /**
11610  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11611  */
11612 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
11613
11614 /**
11615  * The maximum number of inbound HTLCs towards sender
11616  */
11617 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11618
11619 /**
11620  * The maximum number of inbound HTLCs towards sender
11621  */
11622 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
11623
11624 /**
11625  * The sender's key controlling the funding transaction
11626  */
11627 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11628
11629 /**
11630  * The sender's key controlling the funding transaction
11631  */
11632 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11633
11634 /**
11635  * Used to derive a revocation key for transactions broadcast by counterparty
11636  */
11637 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11638
11639 /**
11640  * Used to derive a revocation key for transactions broadcast by counterparty
11641  */
11642 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11643
11644 /**
11645  * A payment key to sender for transactions broadcast by counterparty
11646  */
11647 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11648
11649 /**
11650  * A payment key to sender for transactions broadcast by counterparty
11651  */
11652 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11653
11654 /**
11655  * Used to derive a payment key to sender for transactions broadcast by sender
11656  */
11657 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11658
11659 /**
11660  * Used to derive a payment key to sender for transactions broadcast by sender
11661  */
11662 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11663
11664 /**
11665  * Used to derive an HTLC payment key to sender
11666  */
11667 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11668
11669 /**
11670  * Used to derive an HTLC payment key to sender
11671  */
11672 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11673
11674 /**
11675  * The first to-be-broadcast-by-sender transaction's per commitment point
11676  */
11677 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11678
11679 /**
11680  * The first to-be-broadcast-by-sender transaction's per commitment point
11681  */
11682 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11683
11684 /**
11685  * Channel flags
11686  */
11687 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
11688
11689 /**
11690  * Channel flags
11691  */
11692 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
11693
11694 /**
11695  * Creates a copy of the OpenChannel
11696  */
11697 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
11698
11699 /**
11700  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
11701  */
11702 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
11703
11704 /**
11705  * A temporary channel ID, until the funding outpoint is announced
11706  */
11707 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
11708
11709 /**
11710  * A temporary channel ID, until the funding outpoint is announced
11711  */
11712 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11713
11714 /**
11715  * The threshold below which outputs on transactions broadcast by sender will be omitted
11716  */
11717 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11718
11719 /**
11720  * The threshold below which outputs on transactions broadcast by sender will be omitted
11721  */
11722 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11723
11724 /**
11725  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11726  */
11727 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11728
11729 /**
11730  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
11731  */
11732 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11733
11734 /**
11735  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11736  */
11737 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11738
11739 /**
11740  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
11741  */
11742 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11743
11744 /**
11745  * The minimum HTLC size incoming to sender, in milli-satoshi
11746  */
11747 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11748
11749 /**
11750  * The minimum HTLC size incoming to sender, in milli-satoshi
11751  */
11752 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
11753
11754 /**
11755  * Minimum depth of the funding transaction before the channel is considered open
11756  */
11757 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11758
11759 /**
11760  * Minimum depth of the funding transaction before the channel is considered open
11761  */
11762 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
11763
11764 /**
11765  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11766  */
11767 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11768
11769 /**
11770  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
11771  */
11772 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
11773
11774 /**
11775  * The maximum number of inbound HTLCs towards sender
11776  */
11777 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11778
11779 /**
11780  * The maximum number of inbound HTLCs towards sender
11781  */
11782 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
11783
11784 /**
11785  * The sender's key controlling the funding transaction
11786  */
11787 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11788
11789 /**
11790  * The sender's key controlling the funding transaction
11791  */
11792 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11793
11794 /**
11795  * Used to derive a revocation key for transactions broadcast by counterparty
11796  */
11797 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11798
11799 /**
11800  * Used to derive a revocation key for transactions broadcast by counterparty
11801  */
11802 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11803
11804 /**
11805  * A payment key to sender for transactions broadcast by counterparty
11806  */
11807 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11808
11809 /**
11810  * A payment key to sender for transactions broadcast by counterparty
11811  */
11812 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11813
11814 /**
11815  * Used to derive a payment key to sender for transactions broadcast by sender
11816  */
11817 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11818
11819 /**
11820  * Used to derive a payment key to sender for transactions broadcast by sender
11821  */
11822 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11823
11824 /**
11825  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
11826  */
11827 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11828
11829 /**
11830  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
11831  */
11832 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11833
11834 /**
11835  * The first to-be-broadcast-by-sender transaction's per commitment point
11836  */
11837 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
11838
11839 /**
11840  * The first to-be-broadcast-by-sender transaction's per commitment point
11841  */
11842 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11843
11844 /**
11845  * Creates a copy of the AcceptChannel
11846  */
11847 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
11848
11849 /**
11850  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
11851  */
11852 void FundingCreated_free(struct LDKFundingCreated this_obj);
11853
11854 /**
11855  * A temporary channel ID, until the funding is established
11856  */
11857 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
11858
11859 /**
11860  * A temporary channel ID, until the funding is established
11861  */
11862 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11863
11864 /**
11865  * The funding transaction ID
11866  */
11867 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
11868
11869 /**
11870  * The funding transaction ID
11871  */
11872 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11873
11874 /**
11875  * The specific output index funding this channel
11876  */
11877 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
11878
11879 /**
11880  * The specific output index funding this channel
11881  */
11882 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
11883
11884 /**
11885  * The signature of the channel initiator (funder) on the funding transaction
11886  */
11887 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
11888
11889 /**
11890  * The signature of the channel initiator (funder) on the funding transaction
11891  */
11892 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
11893
11894 /**
11895  * Constructs a new FundingCreated given each field
11896  */
11897 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);
11898
11899 /**
11900  * Creates a copy of the FundingCreated
11901  */
11902 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
11903
11904 /**
11905  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
11906  */
11907 void FundingSigned_free(struct LDKFundingSigned this_obj);
11908
11909 /**
11910  * The channel ID
11911  */
11912 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
11913
11914 /**
11915  * The channel ID
11916  */
11917 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11918
11919 /**
11920  * The signature of the channel acceptor (fundee) on the funding transaction
11921  */
11922 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
11923
11924 /**
11925  * The signature of the channel acceptor (fundee) on the funding transaction
11926  */
11927 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
11928
11929 /**
11930  * Constructs a new FundingSigned given each field
11931  */
11932 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
11933
11934 /**
11935  * Creates a copy of the FundingSigned
11936  */
11937 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
11938
11939 /**
11940  * Frees any resources used by the FundingLocked, if is_owned is set and inner is non-NULL.
11941  */
11942 void FundingLocked_free(struct LDKFundingLocked this_obj);
11943
11944 /**
11945  * The channel ID
11946  */
11947 const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32];
11948
11949 /**
11950  * The channel ID
11951  */
11952 void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11953
11954 /**
11955  * The per-commitment point of the second commitment transaction
11956  */
11957 struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
11958
11959 /**
11960  * The per-commitment point of the second commitment transaction
11961  */
11962 void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
11963
11964 /**
11965  * Constructs a new FundingLocked given each field
11966  */
11967 MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
11968
11969 /**
11970  * Creates a copy of the FundingLocked
11971  */
11972 struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
11973
11974 /**
11975  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
11976  */
11977 void Shutdown_free(struct LDKShutdown this_obj);
11978
11979 /**
11980  * The channel ID
11981  */
11982 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
11983
11984 /**
11985  * The channel ID
11986  */
11987 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
11988
11989 /**
11990  * The destination of this peer's funds on closing.
11991  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
11992  */
11993 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
11994
11995 /**
11996  * The destination of this peer's funds on closing.
11997  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
11998  */
11999 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
12000
12001 /**
12002  * Constructs a new Shutdown given each field
12003  */
12004 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
12005
12006 /**
12007  * Creates a copy of the Shutdown
12008  */
12009 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
12010
12011 /**
12012  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
12013  */
12014 void ClosingSigned_free(struct LDKClosingSigned this_obj);
12015
12016 /**
12017  * The channel ID
12018  */
12019 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
12020
12021 /**
12022  * The channel ID
12023  */
12024 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12025
12026 /**
12027  * The proposed total fee for the closing transaction
12028  */
12029 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
12030
12031 /**
12032  * The proposed total fee for the closing transaction
12033  */
12034 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
12035
12036 /**
12037  * A signature on the closing transaction
12038  */
12039 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
12040
12041 /**
12042  * A signature on the closing transaction
12043  */
12044 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
12045
12046 /**
12047  * Constructs a new ClosingSigned given each field
12048  */
12049 MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg);
12050
12051 /**
12052  * Creates a copy of the ClosingSigned
12053  */
12054 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
12055
12056 /**
12057  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
12058  */
12059 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
12060
12061 /**
12062  * The channel ID
12063  */
12064 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
12065
12066 /**
12067  * The channel ID
12068  */
12069 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12070
12071 /**
12072  * The HTLC ID
12073  */
12074 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12075
12076 /**
12077  * The HTLC ID
12078  */
12079 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
12080
12081 /**
12082  * The HTLC value in milli-satoshi
12083  */
12084 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12085
12086 /**
12087  * The HTLC value in milli-satoshi
12088  */
12089 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
12090
12091 /**
12092  * The payment hash, the pre-image of which controls HTLC redemption
12093  */
12094 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
12095
12096 /**
12097  * The payment hash, the pre-image of which controls HTLC redemption
12098  */
12099 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12100
12101 /**
12102  * The expiry height of the HTLC
12103  */
12104 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
12105
12106 /**
12107  * The expiry height of the HTLC
12108  */
12109 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
12110
12111 /**
12112  * Creates a copy of the UpdateAddHTLC
12113  */
12114 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
12115
12116 /**
12117  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
12118  */
12119 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
12120
12121 /**
12122  * The channel ID
12123  */
12124 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
12125
12126 /**
12127  * The channel ID
12128  */
12129 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12130
12131 /**
12132  * The HTLC ID
12133  */
12134 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
12135
12136 /**
12137  * The HTLC ID
12138  */
12139 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
12140
12141 /**
12142  * The pre-image of the payment hash, allowing HTLC redemption
12143  */
12144 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
12145
12146 /**
12147  * The pre-image of the payment hash, allowing HTLC redemption
12148  */
12149 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12150
12151 /**
12152  * Constructs a new UpdateFulfillHTLC given each field
12153  */
12154 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
12155
12156 /**
12157  * Creates a copy of the UpdateFulfillHTLC
12158  */
12159 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
12160
12161 /**
12162  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
12163  */
12164 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
12165
12166 /**
12167  * The channel ID
12168  */
12169 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
12170
12171 /**
12172  * The channel ID
12173  */
12174 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12175
12176 /**
12177  * The HTLC ID
12178  */
12179 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
12180
12181 /**
12182  * The HTLC ID
12183  */
12184 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
12185
12186 /**
12187  * Creates a copy of the UpdateFailHTLC
12188  */
12189 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
12190
12191 /**
12192  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
12193  */
12194 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
12195
12196 /**
12197  * The channel ID
12198  */
12199 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
12200
12201 /**
12202  * The channel ID
12203  */
12204 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12205
12206 /**
12207  * The HTLC ID
12208  */
12209 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
12210
12211 /**
12212  * The HTLC ID
12213  */
12214 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
12215
12216 /**
12217  * The failure code
12218  */
12219 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
12220
12221 /**
12222  * The failure code
12223  */
12224 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
12225
12226 /**
12227  * Creates a copy of the UpdateFailMalformedHTLC
12228  */
12229 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
12230
12231 /**
12232  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
12233  */
12234 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
12235
12236 /**
12237  * The channel ID
12238  */
12239 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
12240
12241 /**
12242  * The channel ID
12243  */
12244 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12245
12246 /**
12247  * A signature on the commitment transaction
12248  */
12249 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
12250
12251 /**
12252  * A signature on the commitment transaction
12253  */
12254 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
12255
12256 /**
12257  * Signatures on the HTLC transactions
12258  */
12259 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
12260
12261 /**
12262  * Constructs a new CommitmentSigned given each field
12263  */
12264 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
12265
12266 /**
12267  * Creates a copy of the CommitmentSigned
12268  */
12269 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
12270
12271 /**
12272  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
12273  */
12274 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
12275
12276 /**
12277  * The channel ID
12278  */
12279 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
12280
12281 /**
12282  * The channel ID
12283  */
12284 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12285
12286 /**
12287  * The secret corresponding to the per-commitment point
12288  */
12289 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
12290
12291 /**
12292  * The secret corresponding to the per-commitment point
12293  */
12294 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12295
12296 /**
12297  * The next sender-broadcast commitment transaction's per-commitment point
12298  */
12299 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
12300
12301 /**
12302  * The next sender-broadcast commitment transaction's per-commitment point
12303  */
12304 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12305
12306 /**
12307  * Constructs a new RevokeAndACK given each field
12308  */
12309 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);
12310
12311 /**
12312  * Creates a copy of the RevokeAndACK
12313  */
12314 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
12315
12316 /**
12317  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
12318  */
12319 void UpdateFee_free(struct LDKUpdateFee this_obj);
12320
12321 /**
12322  * The channel ID
12323  */
12324 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
12325
12326 /**
12327  * The channel ID
12328  */
12329 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12330
12331 /**
12332  * Fee rate per 1000-weight of the transaction
12333  */
12334 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
12335
12336 /**
12337  * Fee rate per 1000-weight of the transaction
12338  */
12339 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
12340
12341 /**
12342  * Constructs a new UpdateFee given each field
12343  */
12344 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
12345
12346 /**
12347  * Creates a copy of the UpdateFee
12348  */
12349 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
12350
12351 /**
12352  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
12353  */
12354 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
12355
12356 /**
12357  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
12358  * belonging to the recipient
12359  */
12360 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
12361
12362 /**
12363  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
12364  * belonging to the recipient
12365  */
12366 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12367
12368 /**
12369  * The sender's per-commitment point for their current commitment transaction
12370  */
12371 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
12372
12373 /**
12374  * The sender's per-commitment point for their current commitment transaction
12375  */
12376 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12377
12378 /**
12379  * Constructs a new DataLossProtect given each field
12380  */
12381 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
12382
12383 /**
12384  * Creates a copy of the DataLossProtect
12385  */
12386 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
12387
12388 /**
12389  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
12390  */
12391 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
12392
12393 /**
12394  * The channel ID
12395  */
12396 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
12397
12398 /**
12399  * The channel ID
12400  */
12401 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12402
12403 /**
12404  * The next commitment number for the sender
12405  */
12406 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
12407
12408 /**
12409  * The next commitment number for the sender
12410  */
12411 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
12412
12413 /**
12414  * The next commitment number for the recipient
12415  */
12416 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
12417
12418 /**
12419  * The next commitment number for the recipient
12420  */
12421 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
12422
12423 /**
12424  * Creates a copy of the ChannelReestablish
12425  */
12426 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
12427
12428 /**
12429  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
12430  */
12431 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
12432
12433 /**
12434  * The channel ID
12435  */
12436 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
12437
12438 /**
12439  * The channel ID
12440  */
12441 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12442
12443 /**
12444  * The short channel ID
12445  */
12446 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12447
12448 /**
12449  * The short channel ID
12450  */
12451 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
12452
12453 /**
12454  * A signature by the node key
12455  */
12456 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12457
12458 /**
12459  * A signature by the node key
12460  */
12461 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
12462
12463 /**
12464  * A signature by the funding key
12465  */
12466 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
12467
12468 /**
12469  * A signature by the funding key
12470  */
12471 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
12472
12473 /**
12474  * Constructs a new AnnouncementSignatures given each field
12475  */
12476 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);
12477
12478 /**
12479  * Creates a copy of the AnnouncementSignatures
12480  */
12481 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
12482
12483 /**
12484  * Frees any resources used by the NetAddress
12485  */
12486 void NetAddress_free(struct LDKNetAddress this_ptr);
12487
12488 /**
12489  * Creates a copy of the NetAddress
12490  */
12491 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
12492
12493 /**
12494  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
12495  */
12496 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
12497
12498 /**
12499  * Read a Result from a byte array, created by Result_write
12500  */
12501 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ Result_read(struct LDKu8slice ser);
12502
12503 /**
12504  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
12505  */
12506 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
12507
12508 /**
12509  * The advertised features
12510  */
12511 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12512
12513 /**
12514  * The advertised features
12515  */
12516 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
12517
12518 /**
12519  * A strictly monotonic announcement counter, with gaps allowed
12520  */
12521 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12522
12523 /**
12524  * A strictly monotonic announcement counter, with gaps allowed
12525  */
12526 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
12527
12528 /**
12529  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
12530  * to this node).
12531  */
12532 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
12533
12534 /**
12535  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
12536  * to this node).
12537  */
12538 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12539
12540 /**
12541  * An RGB color for UI purposes
12542  */
12543 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
12544
12545 /**
12546  * An RGB color for UI purposes
12547  */
12548 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
12549
12550 /**
12551  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
12552  * of uniqueness.
12553  */
12554 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
12555
12556 /**
12557  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
12558  * of uniqueness.
12559  */
12560 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12561
12562 /**
12563  * List of addresses on which this node is reachable
12564  */
12565 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
12566
12567 /**
12568  * Creates a copy of the UnsignedNodeAnnouncement
12569  */
12570 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
12571
12572 /**
12573  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
12574  */
12575 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
12576
12577 /**
12578  * The signature by the node key
12579  */
12580 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
12581
12582 /**
12583  * The signature by the node key
12584  */
12585 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12586
12587 /**
12588  * The actual content of the announcement
12589  */
12590 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
12591
12592 /**
12593  * The actual content of the announcement
12594  */
12595 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
12596
12597 /**
12598  * Constructs a new NodeAnnouncement given each field
12599  */
12600 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
12601
12602 /**
12603  * Creates a copy of the NodeAnnouncement
12604  */
12605 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
12606
12607 /**
12608  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
12609  */
12610 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
12611
12612 /**
12613  * The advertised channel features
12614  */
12615 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12616
12617 /**
12618  * The advertised channel features
12619  */
12620 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
12621
12622 /**
12623  * The genesis hash of the blockchain where the channel is to be opened
12624  */
12625 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
12626
12627 /**
12628  * The genesis hash of the blockchain where the channel is to be opened
12629  */
12630 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12631
12632 /**
12633  * The short channel ID
12634  */
12635 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12636
12637 /**
12638  * The short channel ID
12639  */
12640 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
12641
12642 /**
12643  * One of the two node_ids which are endpoints of this channel
12644  */
12645 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12646
12647 /**
12648  * One of the two node_ids which are endpoints of this channel
12649  */
12650 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12651
12652 /**
12653  * The other of the two node_ids which are endpoints of this channel
12654  */
12655 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12656
12657 /**
12658  * The other of the two node_ids which are endpoints of this channel
12659  */
12660 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12661
12662 /**
12663  * The funding key for the first node
12664  */
12665 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12666
12667 /**
12668  * The funding key for the first node
12669  */
12670 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12671
12672 /**
12673  * The funding key for the second node
12674  */
12675 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
12676
12677 /**
12678  * The funding key for the second node
12679  */
12680 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
12681
12682 /**
12683  * Creates a copy of the UnsignedChannelAnnouncement
12684  */
12685 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
12686
12687 /**
12688  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
12689  */
12690 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
12691
12692 /**
12693  * Authentication of the announcement by the first public node
12694  */
12695 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12696
12697 /**
12698  * Authentication of the announcement by the first public node
12699  */
12700 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12701
12702 /**
12703  * Authentication of the announcement by the second public node
12704  */
12705 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12706
12707 /**
12708  * Authentication of the announcement by the second public node
12709  */
12710 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12711
12712 /**
12713  * Proof of funding UTXO ownership by the first public node
12714  */
12715 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12716
12717 /**
12718  * Proof of funding UTXO ownership by the first public node
12719  */
12720 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12721
12722 /**
12723  * Proof of funding UTXO ownership by the second public node
12724  */
12725 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12726
12727 /**
12728  * Proof of funding UTXO ownership by the second public node
12729  */
12730 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
12731
12732 /**
12733  * The actual announcement
12734  */
12735 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
12736
12737 /**
12738  * The actual announcement
12739  */
12740 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
12741
12742 /**
12743  * Constructs a new ChannelAnnouncement given each field
12744  */
12745 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);
12746
12747 /**
12748  * Creates a copy of the ChannelAnnouncement
12749  */
12750 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
12751
12752 /**
12753  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
12754  */
12755 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
12756
12757 /**
12758  * The genesis hash of the blockchain where the channel is to be opened
12759  */
12760 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
12761
12762 /**
12763  * The genesis hash of the blockchain where the channel is to be opened
12764  */
12765 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12766
12767 /**
12768  * The short channel ID
12769  */
12770 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12771
12772 /**
12773  * The short channel ID
12774  */
12775 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
12776
12777 /**
12778  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
12779  */
12780 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12781
12782 /**
12783  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
12784  */
12785 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12786
12787 /**
12788  * Channel flags
12789  */
12790 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12791
12792 /**
12793  * Channel flags
12794  */
12795 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
12796
12797 /**
12798  * The number of blocks such that if:
12799  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
12800  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
12801  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
12802  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
12803  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
12804  * forwarding. Note that the HTLC sender is the one who originally sets this value when
12805  * constructing the route.
12806  */
12807 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12808
12809 /**
12810  * The number of blocks such that if:
12811  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
12812  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
12813  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
12814  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
12815  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
12816  * forwarding. Note that the HTLC sender is the one who originally sets this value when
12817  * constructing the route.
12818  */
12819 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
12820
12821 /**
12822  * The minimum HTLC size incoming to sender, in milli-satoshi
12823  */
12824 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12825
12826 /**
12827  * The minimum HTLC size incoming to sender, in milli-satoshi
12828  */
12829 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
12830
12831 /**
12832  * The base HTLC fee charged by sender, in milli-satoshi
12833  */
12834 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12835
12836 /**
12837  * The base HTLC fee charged by sender, in milli-satoshi
12838  */
12839 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12840
12841 /**
12842  * The amount to fee multiplier, in micro-satoshi
12843  */
12844 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
12845
12846 /**
12847  * The amount to fee multiplier, in micro-satoshi
12848  */
12849 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
12850
12851 /**
12852  * Creates a copy of the UnsignedChannelUpdate
12853  */
12854 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
12855
12856 /**
12857  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
12858  */
12859 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
12860
12861 /**
12862  * A signature of the channel update
12863  */
12864 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
12865
12866 /**
12867  * A signature of the channel update
12868  */
12869 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
12870
12871 /**
12872  * The actual channel update
12873  */
12874 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
12875
12876 /**
12877  * The actual channel update
12878  */
12879 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
12880
12881 /**
12882  * Constructs a new ChannelUpdate given each field
12883  */
12884 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
12885
12886 /**
12887  * Creates a copy of the ChannelUpdate
12888  */
12889 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
12890
12891 /**
12892  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
12893  */
12894 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
12895
12896 /**
12897  * The genesis hash of the blockchain being queried
12898  */
12899 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
12900
12901 /**
12902  * The genesis hash of the blockchain being queried
12903  */
12904 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12905
12906 /**
12907  * The height of the first block for the channel UTXOs being queried
12908  */
12909 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
12910
12911 /**
12912  * The height of the first block for the channel UTXOs being queried
12913  */
12914 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12915
12916 /**
12917  * The number of blocks to include in the query results
12918  */
12919 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
12920
12921 /**
12922  * The number of blocks to include in the query results
12923  */
12924 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12925
12926 /**
12927  * Constructs a new QueryChannelRange given each field
12928  */
12929 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
12930
12931 /**
12932  * Creates a copy of the QueryChannelRange
12933  */
12934 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
12935
12936 /**
12937  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
12938  */
12939 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
12940
12941 /**
12942  * The genesis hash of the blockchain being queried
12943  */
12944 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
12945
12946 /**
12947  * The genesis hash of the blockchain being queried
12948  */
12949 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12950
12951 /**
12952  * The height of the first block in the range of the reply
12953  */
12954 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12955
12956 /**
12957  * The height of the first block in the range of the reply
12958  */
12959 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12960
12961 /**
12962  * The number of blocks included in the range of the reply
12963  */
12964 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12965
12966 /**
12967  * The number of blocks included in the range of the reply
12968  */
12969 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
12970
12971 /**
12972  * True when this is the final reply for a query
12973  */
12974 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
12975
12976 /**
12977  * True when this is the final reply for a query
12978  */
12979 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
12980
12981 /**
12982  * The short_channel_ids in the channel range
12983  */
12984 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
12985
12986 /**
12987  * Constructs a new ReplyChannelRange given each field
12988  */
12989 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);
12990
12991 /**
12992  * Creates a copy of the ReplyChannelRange
12993  */
12994 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
12995
12996 /**
12997  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
12998  */
12999 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
13000
13001 /**
13002  * The genesis hash of the blockchain being queried
13003  */
13004 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
13005
13006 /**
13007  * The genesis hash of the blockchain being queried
13008  */
13009 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13010
13011 /**
13012  * The short_channel_ids that are being queried
13013  */
13014 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
13015
13016 /**
13017  * Constructs a new QueryShortChannelIds given each field
13018  */
13019 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
13020
13021 /**
13022  * Creates a copy of the QueryShortChannelIds
13023  */
13024 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
13025
13026 /**
13027  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
13028  */
13029 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
13030
13031 /**
13032  * The genesis hash of the blockchain that was queried
13033  */
13034 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
13035
13036 /**
13037  * The genesis hash of the blockchain that was queried
13038  */
13039 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13040
13041 /**
13042  * Indicates if the query recipient maintains up-to-date channel
13043  * information for the chain_hash
13044  */
13045 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
13046
13047 /**
13048  * Indicates if the query recipient maintains up-to-date channel
13049  * information for the chain_hash
13050  */
13051 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
13052
13053 /**
13054  * Constructs a new ReplyShortChannelIdsEnd given each field
13055  */
13056 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
13057
13058 /**
13059  * Creates a copy of the ReplyShortChannelIdsEnd
13060  */
13061 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
13062
13063 /**
13064  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
13065  */
13066 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
13067
13068 /**
13069  * The genesis hash of the blockchain for channel and node information
13070  */
13071 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
13072
13073 /**
13074  * The genesis hash of the blockchain for channel and node information
13075  */
13076 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13077
13078 /**
13079  * The starting unix timestamp
13080  */
13081 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
13082
13083 /**
13084  * The starting unix timestamp
13085  */
13086 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
13087
13088 /**
13089  * The range of information in seconds
13090  */
13091 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
13092
13093 /**
13094  * The range of information in seconds
13095  */
13096 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
13097
13098 /**
13099  * Constructs a new GossipTimestampFilter given each field
13100  */
13101 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
13102
13103 /**
13104  * Creates a copy of the GossipTimestampFilter
13105  */
13106 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
13107
13108 /**
13109  * Frees any resources used by the ErrorAction
13110  */
13111 void ErrorAction_free(struct LDKErrorAction this_ptr);
13112
13113 /**
13114  * Creates a copy of the ErrorAction
13115  */
13116 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
13117
13118 /**
13119  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
13120  */
13121 void LightningError_free(struct LDKLightningError this_obj);
13122
13123 /**
13124  * A human-readable message describing the error
13125  */
13126 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
13127
13128 /**
13129  * A human-readable message describing the error
13130  */
13131 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
13132
13133 /**
13134  * The action which should be taken against the offending peer.
13135  */
13136 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
13137
13138 /**
13139  * The action which should be taken against the offending peer.
13140  */
13141 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
13142
13143 /**
13144  * Constructs a new LightningError given each field
13145  */
13146 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKCVec_u8Z err_arg, struct LDKErrorAction action_arg);
13147
13148 /**
13149  * Creates a copy of the LightningError
13150  */
13151 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
13152
13153 /**
13154  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
13155  */
13156 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
13157
13158 /**
13159  * update_add_htlc messages which should be sent
13160  */
13161 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
13162
13163 /**
13164  * update_fulfill_htlc messages which should be sent
13165  */
13166 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
13167
13168 /**
13169  * update_fail_htlc messages which should be sent
13170  */
13171 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
13172
13173 /**
13174  * update_fail_malformed_htlc messages which should be sent
13175  */
13176 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
13177
13178 /**
13179  * An update_fee message which should be sent
13180  */
13181 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
13182
13183 /**
13184  * An update_fee message which should be sent
13185  */
13186 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
13187
13188 /**
13189  * Finally, the commitment_signed message which should be sent
13190  */
13191 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
13192
13193 /**
13194  * Finally, the commitment_signed message which should be sent
13195  */
13196 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
13197
13198 /**
13199  * Constructs a new CommitmentUpdate given each field
13200  */
13201 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);
13202
13203 /**
13204  * Creates a copy of the CommitmentUpdate
13205  */
13206 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
13207
13208 /**
13209  * Frees any resources used by the HTLCFailChannelUpdate
13210  */
13211 void HTLCFailChannelUpdate_free(struct LDKHTLCFailChannelUpdate this_ptr);
13212
13213 /**
13214  * Creates a copy of the HTLCFailChannelUpdate
13215  */
13216 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_clone(const struct LDKHTLCFailChannelUpdate *NONNULL_PTR orig);
13217
13218 /**
13219  * Calls the free function if one is set
13220  */
13221 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
13222
13223 /**
13224  * Calls the free function if one is set
13225  */
13226 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
13227
13228 /**
13229  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
13230  */
13231 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
13232
13233 /**
13234  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
13235  */
13236 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
13237
13238 /**
13239  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
13240  */
13241 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
13242
13243 /**
13244  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
13245  */
13246 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
13247
13248 /**
13249  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
13250  */
13251 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
13252
13253 /**
13254  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
13255  */
13256 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
13257
13258 /**
13259  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
13260  */
13261 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
13262
13263 /**
13264  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
13265  */
13266 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
13267
13268 /**
13269  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
13270  */
13271 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
13272
13273 /**
13274  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
13275  */
13276 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
13277
13278 /**
13279  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
13280  */
13281 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
13282
13283 /**
13284  * Read a FundingCreated from a byte array, created by FundingCreated_write
13285  */
13286 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
13287
13288 /**
13289  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
13290  */
13291 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
13292
13293 /**
13294  * Read a FundingSigned from a byte array, created by FundingSigned_write
13295  */
13296 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
13297
13298 /**
13299  * Serialize the FundingLocked object into a byte array which can be read by FundingLocked_read
13300  */
13301 struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
13302
13303 /**
13304  * Read a FundingLocked from a byte array, created by FundingLocked_write
13305  */
13306 struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser);
13307
13308 /**
13309  * Serialize the Init object into a byte array which can be read by Init_read
13310  */
13311 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
13312
13313 /**
13314  * Read a Init from a byte array, created by Init_write
13315  */
13316 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
13317
13318 /**
13319  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
13320  */
13321 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
13322
13323 /**
13324  * Read a OpenChannel from a byte array, created by OpenChannel_write
13325  */
13326 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
13327
13328 /**
13329  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
13330  */
13331 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
13332
13333 /**
13334  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
13335  */
13336 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
13337
13338 /**
13339  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
13340  */
13341 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
13342
13343 /**
13344  * Read a Shutdown from a byte array, created by Shutdown_write
13345  */
13346 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
13347
13348 /**
13349  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
13350  */
13351 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
13352
13353 /**
13354  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
13355  */
13356 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
13357
13358 /**
13359  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
13360  */
13361 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
13362
13363 /**
13364  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
13365  */
13366 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
13367
13368 /**
13369  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
13370  */
13371 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
13372
13373 /**
13374  * Read a UpdateFee from a byte array, created by UpdateFee_write
13375  */
13376 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
13377
13378 /**
13379  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
13380  */
13381 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
13382
13383 /**
13384  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
13385  */
13386 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
13387
13388 /**
13389  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
13390  */
13391 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
13392
13393 /**
13394  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
13395  */
13396 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
13397
13398 /**
13399  * Serialize the Ping object into a byte array which can be read by Ping_read
13400  */
13401 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
13402
13403 /**
13404  * Read a Ping from a byte array, created by Ping_write
13405  */
13406 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
13407
13408 /**
13409  * Serialize the Pong object into a byte array which can be read by Pong_read
13410  */
13411 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
13412
13413 /**
13414  * Read a Pong from a byte array, created by Pong_write
13415  */
13416 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
13417
13418 /**
13419  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
13420  */
13421 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
13422
13423 /**
13424  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
13425  */
13426 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
13427
13428 /**
13429  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
13430  */
13431 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
13432
13433 /**
13434  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
13435  */
13436 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
13437
13438 /**
13439  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
13440  */
13441 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
13442
13443 /**
13444  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
13445  */
13446 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
13447
13448 /**
13449  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
13450  */
13451 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
13452
13453 /**
13454  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
13455  */
13456 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
13457
13458 /**
13459  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
13460  */
13461 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
13462
13463 /**
13464  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
13465  */
13466 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
13467
13468 /**
13469  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
13470  */
13471 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
13472
13473 /**
13474  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
13475  */
13476 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
13477
13478 /**
13479  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
13480  */
13481 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
13482
13483 /**
13484  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
13485  */
13486 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
13487
13488 /**
13489  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
13490  */
13491 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
13492
13493 /**
13494  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
13495  */
13496 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
13497
13498 /**
13499  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
13500  */
13501 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
13502
13503 /**
13504  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
13505  */
13506 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
13507
13508 /**
13509  *\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
13510  */
13511 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
13512
13513 /**
13514  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
13515  */
13516 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
13517
13518 /**
13519  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
13520  */
13521 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
13522
13523 /**
13524  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
13525  */
13526 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
13527
13528 /**
13529  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
13530  */
13531 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
13532
13533 /**
13534  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
13535  */
13536 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
13537
13538 /**
13539  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
13540  */
13541 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
13542
13543 /**
13544  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
13545  */
13546 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
13547
13548 /**
13549  * Constructs a new IgnoringMessageHandler given each field
13550  */
13551 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
13552
13553 /**
13554  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
13555  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
13556  */
13557 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
13558
13559 /**
13560  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
13561  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
13562  */
13563 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
13564
13565 /**
13566  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
13567  */
13568 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
13569
13570 /**
13571  * Constructs a new ErroringMessageHandler
13572  */
13573 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
13574
13575 /**
13576  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
13577  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
13578  */
13579 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
13580
13581 /**
13582  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
13583  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
13584  */
13585 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
13586
13587 /**
13588  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
13589  */
13590 void MessageHandler_free(struct LDKMessageHandler this_obj);
13591
13592 /**
13593  * A message handler which handles messages specific to channels. Usually this is just a
13594  * ChannelManager object or a ErroringMessageHandler.
13595  */
13596 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
13597
13598 /**
13599  * A message handler which handles messages specific to channels. Usually this is just a
13600  * ChannelManager object or a ErroringMessageHandler.
13601  */
13602 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
13603
13604 /**
13605  * A message handler which handles messages updating our knowledge of the network channel
13606  * graph. Usually this is just a NetGraphMsgHandlerMonitor object or an IgnoringMessageHandler.
13607  */
13608 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
13609
13610 /**
13611  * A message handler which handles messages updating our knowledge of the network channel
13612  * graph. Usually this is just a NetGraphMsgHandlerMonitor object or an IgnoringMessageHandler.
13613  */
13614 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
13615
13616 /**
13617  * Constructs a new MessageHandler given each field
13618  */
13619 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
13620
13621 /**
13622  * Creates a copy of a SocketDescriptor
13623  */
13624 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
13625
13626 /**
13627  * Calls the free function if one is set
13628  */
13629 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
13630
13631 /**
13632  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
13633  */
13634 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
13635
13636 /**
13637  * Used to indicate that we probably can't make any future connections to this peer, implying
13638  * we should go ahead and force-close any channels we have with it.
13639  */
13640 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
13641
13642 /**
13643  * Used to indicate that we probably can't make any future connections to this peer, implying
13644  * we should go ahead and force-close any channels we have with it.
13645  */
13646 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
13647
13648 /**
13649  * Constructs a new PeerHandleError given each field
13650  */
13651 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
13652
13653 /**
13654  * Creates a copy of the PeerHandleError
13655  */
13656 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
13657
13658 /**
13659  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
13660  */
13661 void PeerManager_free(struct LDKPeerManager this_obj);
13662
13663 /**
13664  * Constructs a new PeerManager with the given message handlers and node_id secret key
13665  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
13666  * cryptographically secure random bytes.
13667  */
13668 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);
13669
13670 /**
13671  * Get the list of node ids for peers which have completed the initial handshake.
13672  *
13673  * For outbound connections, this will be the same as the their_node_id parameter passed in to
13674  * new_outbound_connection, however entries will only appear once the initial handshake has
13675  * completed and we are sure the remote peer has the private key for the given node_id.
13676  */
13677 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
13678
13679 /**
13680  * Indicates a new outbound connection has been established to a node with the given node_id.
13681  * Note that if an Err is returned here you MUST NOT call socket_disconnected for the new
13682  * descriptor but must disconnect the connection immediately.
13683  *
13684  * Returns a small number of bytes to send to the remote node (currently always 50).
13685  *
13686  * Panics if descriptor is duplicative with some other descriptor which has not yet had a
13687  * socket_disconnected().
13688  */
13689 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);
13690
13691 /**
13692  * Indicates a new inbound connection has been established.
13693  *
13694  * May refuse the connection by returning an Err, but will never write bytes to the remote end
13695  * (outbound connector always speaks first). Note that if an Err is returned here you MUST NOT
13696  * call socket_disconnected for the new descriptor but must disconnect the connection
13697  * immediately.
13698  *
13699  * Panics if descriptor is duplicative with some other descriptor which has not yet had
13700  * socket_disconnected called.
13701  */
13702 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
13703
13704 /**
13705  * Indicates that there is room to write data to the given socket descriptor.
13706  *
13707  * May return an Err to indicate that the connection should be closed.
13708  *
13709  * Will most likely call send_data on the descriptor passed in (or the descriptor handed into
13710  * new_*\\_connection) before returning. Thus, be very careful with reentrancy issues! The
13711  * invariants around calling write_buffer_space_avail in case a write did not fully complete
13712  * must still hold - be ready to call write_buffer_space_avail again if a write call generated
13713  * here isn't sufficient! Panics if the descriptor was not previously registered in a
13714  * new_\\*_connection event.
13715  */
13716 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
13717
13718 /**
13719  * Indicates that data was read from the given socket descriptor.
13720  *
13721  * May return an Err to indicate that the connection should be closed.
13722  *
13723  * Will *not* call back into send_data on any descriptors to avoid reentrancy complexity.
13724  * Thus, however, you almost certainly want to call process_events() after any read_event to
13725  * generate send_data calls to handle responses.
13726  *
13727  * If Ok(true) is returned, further read_events should not be triggered until a send_data call
13728  * on this file descriptor has resume_read set (preventing DoS issues in the send buffer).
13729  *
13730  * Panics if the descriptor was not previously registered in a new_*_connection event.
13731  */
13732 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);
13733
13734 /**
13735  * Checks for any events generated by our handlers and processes them. Includes sending most
13736  * response messages as well as messages generated by calls to handler functions directly (eg
13737  * functions like ChannelManager::process_pending_htlc_forward or send_payment).
13738  */
13739 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
13740
13741 /**
13742  * Indicates that the given socket descriptor's connection is now closed.
13743  *
13744  * This must only be called if the socket has been disconnected by the peer or your own
13745  * decision to disconnect it and must NOT be called in any case where other parts of this
13746  * library (eg PeerHandleError, explicit disconnect_socket calls) instruct you to disconnect
13747  * the peer.
13748  *
13749  * Panics if the descriptor was not previously registered in a successful new_*_connection event.
13750  */
13751 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
13752
13753 /**
13754  * Disconnect a peer given its node id.
13755  *
13756  * Set no_connection_possible to true to prevent any further connection with this peer,
13757  * force-closing any channels we have with it.
13758  *
13759  * If a peer is connected, this will call `disconnect_socket` on the descriptor for the peer,
13760  * so be careful about reentrancy issues.
13761  */
13762 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
13763
13764 /**
13765  * This function should be called roughly once every 30 seconds.
13766  * It will send pings to each peer and disconnect those which did not respond to the last round of pings.
13767  * Will most likely call send_data on all of the registered descriptors, thus, be very careful with reentrancy issues!
13768  */
13769 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
13770
13771 /**
13772  * Build the commitment secret from the seed and the commitment number
13773  */
13774 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
13775
13776 /**
13777  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
13778  * from the base secret and the per_commitment_point.
13779  *
13780  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13781  * generated (ie our own).
13782  */
13783 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
13784
13785 /**
13786  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
13787  * from the base point and the per_commitment_key. This is the public equivalent of
13788  * derive_private_key - using only public keys to derive a public key instead of private keys.
13789  *
13790  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13791  * generated (ie our own).
13792  */
13793 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
13794
13795 /**
13796  * Derives a per-commitment-transaction revocation key from its constituent parts.
13797  *
13798  * Only the cheating participant owns a valid witness to propagate a revoked
13799  * commitment transaction, thus per_commitment_secret always come from cheater
13800  * and revocation_base_secret always come from punisher, which is the broadcaster
13801  * of the transaction spending with this key knowledge.
13802  *
13803  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13804  * generated (ie our own).
13805  */
13806 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
13807
13808 /**
13809  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
13810  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
13811  * public key instead of private keys.
13812  *
13813  * Only the cheating participant owns a valid witness to propagate a revoked
13814  * commitment transaction, thus per_commitment_point always come from cheater
13815  * and revocation_base_point always come from punisher, which is the broadcaster
13816  * of the transaction spending with this key knowledge.
13817  *
13818  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
13819  * generated (ie our own).
13820  */
13821 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
13822
13823 /**
13824  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
13825  */
13826 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
13827
13828 /**
13829  * The broadcaster's per-commitment public key which was used to derive the other keys.
13830  */
13831 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13832
13833 /**
13834  * The broadcaster's per-commitment public key which was used to derive the other keys.
13835  */
13836 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13837
13838 /**
13839  * The revocation key which is used to allow the broadcaster of the commitment
13840  * transaction to provide their counterparty the ability to punish them if they broadcast
13841  * an old state.
13842  */
13843 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13844
13845 /**
13846  * The revocation key which is used to allow the broadcaster of the commitment
13847  * transaction to provide their counterparty the ability to punish them if they broadcast
13848  * an old state.
13849  */
13850 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13851
13852 /**
13853  * Broadcaster's HTLC Key
13854  */
13855 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13856
13857 /**
13858  * Broadcaster's HTLC Key
13859  */
13860 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13861
13862 /**
13863  * Countersignatory's HTLC Key
13864  */
13865 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13866
13867 /**
13868  * Countersignatory's HTLC Key
13869  */
13870 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13871
13872 /**
13873  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
13874  */
13875 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
13876
13877 /**
13878  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
13879  */
13880 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13881
13882 /**
13883  * Constructs a new TxCreationKeys given each field
13884  */
13885 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);
13886
13887 /**
13888  * Creates a copy of the TxCreationKeys
13889  */
13890 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
13891
13892 /**
13893  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
13894  */
13895 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
13896
13897 /**
13898  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
13899  */
13900 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
13901
13902 /**
13903  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
13904  */
13905 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
13906
13907 /**
13908  * The public key which is used to sign all commitment transactions, as it appears in the
13909  * on-chain channel lock-in 2-of-2 multisig output.
13910  */
13911 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13912
13913 /**
13914  * The public key which is used to sign all commitment transactions, as it appears in the
13915  * on-chain channel lock-in 2-of-2 multisig output.
13916  */
13917 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13918
13919 /**
13920  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
13921  * revocation keys. This is combined with the per-commitment-secret generated by the
13922  * counterparty to create a secret which the counterparty can reveal to revoke previous
13923  * states.
13924  */
13925 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13926
13927 /**
13928  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
13929  * revocation keys. This is combined with the per-commitment-secret generated by the
13930  * counterparty to create a secret which the counterparty can reveal to revoke previous
13931  * states.
13932  */
13933 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13934
13935 /**
13936  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
13937  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
13938  * static across every commitment transaction.
13939  */
13940 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13941
13942 /**
13943  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
13944  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
13945  * static across every commitment transaction.
13946  */
13947 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13948
13949 /**
13950  * The base point which is used (with derive_public_key) to derive a per-commitment payment
13951  * public key which receives non-HTLC-encumbered funds which are only available for spending
13952  * after some delay (or can be claimed via the revocation path).
13953  */
13954 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13955
13956 /**
13957  * The base point which is used (with derive_public_key) to derive a per-commitment payment
13958  * public key which receives non-HTLC-encumbered funds which are only available for spending
13959  * after some delay (or can be claimed via the revocation path).
13960  */
13961 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13962
13963 /**
13964  * The base point which is used (with derive_public_key) to derive a per-commitment public key
13965  * which is used to encumber HTLC-in-flight outputs.
13966  */
13967 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
13968
13969 /**
13970  * The base point which is used (with derive_public_key) to derive a per-commitment public key
13971  * which is used to encumber HTLC-in-flight outputs.
13972  */
13973 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13974
13975 /**
13976  * Constructs a new ChannelPublicKeys given each field
13977  */
13978 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);
13979
13980 /**
13981  * Creates a copy of the ChannelPublicKeys
13982  */
13983 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
13984
13985 /**
13986  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
13987  */
13988 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
13989
13990 /**
13991  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
13992  */
13993 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
13994
13995 /**
13996  * Create per-state keys from channel base points and the per-commitment point.
13997  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
13998  */
13999 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);
14000
14001 /**
14002  * Generate per-state keys from channel static keys.
14003  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
14004  */
14005 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);
14006
14007 /**
14008  * A script either spendable by the revocation
14009  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
14010  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
14011  */
14012 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
14013
14014 /**
14015  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
14016  */
14017 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
14018
14019 /**
14020  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
14021  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
14022  * need to compare this value to whether the commitment transaction in question is that of
14023  * the counterparty or our own.
14024  */
14025 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14026
14027 /**
14028  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
14029  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
14030  * need to compare this value to whether the commitment transaction in question is that of
14031  * the counterparty or our own.
14032  */
14033 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
14034
14035 /**
14036  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
14037  * this divided by 1000.
14038  */
14039 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14040
14041 /**
14042  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
14043  * this divided by 1000.
14044  */
14045 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
14046
14047 /**
14048  * The CLTV lock-time at which this HTLC expires.
14049  */
14050 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14051
14052 /**
14053  * The CLTV lock-time at which this HTLC expires.
14054  */
14055 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
14056
14057 /**
14058  * The hash of the preimage which unlocks this HTLC.
14059  */
14060 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
14061
14062 /**
14063  * The hash of the preimage which unlocks this HTLC.
14064  */
14065 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14066
14067 /**
14068  * The position within the commitment transactions' outputs. This may be None if the value is
14069  * below the dust limit (in which case no output appears in the commitment transaction and the
14070  * value is spent to additional transaction fees).
14071  */
14072 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
14073
14074 /**
14075  * The position within the commitment transactions' outputs. This may be None if the value is
14076  * below the dust limit (in which case no output appears in the commitment transaction and the
14077  * value is spent to additional transaction fees).
14078  */
14079 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
14080
14081 /**
14082  * Constructs a new HTLCOutputInCommitment given each field
14083  */
14084 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);
14085
14086 /**
14087  * Creates a copy of the HTLCOutputInCommitment
14088  */
14089 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
14090
14091 /**
14092  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
14093  */
14094 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
14095
14096 /**
14097  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
14098  */
14099 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
14100
14101 /**
14102  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
14103  * does not need to have its previous_output_index filled.
14104  */
14105 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, const struct LDKTxCreationKeys *NONNULL_PTR keys);
14106
14107 /**
14108  * Gets the redeemscript for a funding output from the two funding public keys.
14109  * Note that the order of funding public keys does not matter.
14110  */
14111 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
14112
14113 /**
14114  * panics if htlc.transaction_output_index.is_none()!
14115  */
14116 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);
14117
14118 /**
14119  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14120  */
14121 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
14122
14123 /**
14124  * Holder public keys
14125  */
14126 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14127
14128 /**
14129  * Holder public keys
14130  */
14131 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
14132
14133 /**
14134  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
14135  */
14136 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14137
14138 /**
14139  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
14140  */
14141 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
14142
14143 /**
14144  * Whether the holder is the initiator of this channel.
14145  * This is an input to the commitment number obscure factor computation.
14146  */
14147 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14148
14149 /**
14150  * Whether the holder is the initiator of this channel.
14151  * This is an input to the commitment number obscure factor computation.
14152  */
14153 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
14154
14155 /**
14156  * The late-bound counterparty channel transaction parameters.
14157  * These parameters are populated at the point in the protocol where the counterparty provides them.
14158  */
14159 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14160
14161 /**
14162  * The late-bound counterparty channel transaction parameters.
14163  * These parameters are populated at the point in the protocol where the counterparty provides them.
14164  */
14165 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
14166
14167 /**
14168  * The late-bound funding outpoint
14169  */
14170 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
14171
14172 /**
14173  * The late-bound funding outpoint
14174  */
14175 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
14176
14177 /**
14178  * Constructs a new ChannelTransactionParameters given each field
14179  */
14180 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);
14181
14182 /**
14183  * Creates a copy of the ChannelTransactionParameters
14184  */
14185 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
14186
14187 /**
14188  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14189  */
14190 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
14191
14192 /**
14193  * Counter-party public keys
14194  */
14195 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
14196
14197 /**
14198  * Counter-party public keys
14199  */
14200 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
14201
14202 /**
14203  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
14204  */
14205 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
14206
14207 /**
14208  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
14209  */
14210 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
14211
14212 /**
14213  * Constructs a new CounterpartyChannelTransactionParameters given each field
14214  */
14215 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
14216
14217 /**
14218  * Creates a copy of the CounterpartyChannelTransactionParameters
14219  */
14220 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
14221
14222 /**
14223  * Whether the late bound parameters are populated.
14224  */
14225 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14226
14227 /**
14228  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
14229  * given that the holder is the broadcaster.
14230  *
14231  * self.is_populated() must be true before calling this function.
14232  */
14233 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14234
14235 /**
14236  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
14237  * given that the counterparty is the broadcaster.
14238  *
14239  * self.is_populated() must be true before calling this function.
14240  */
14241 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
14242
14243 /**
14244  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
14245  */
14246 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
14247
14248 /**
14249  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
14250  */
14251 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
14252
14253 /**
14254  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
14255  */
14256 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
14257
14258 /**
14259  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
14260  */
14261 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
14262
14263 /**
14264  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
14265  */
14266 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
14267
14268 /**
14269  * Get the channel pubkeys for the broadcaster
14270  */
14271 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14272
14273 /**
14274  * Get the channel pubkeys for the countersignatory
14275  */
14276 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14277
14278 /**
14279  * Get the contest delay applicable to the transactions.
14280  * Note that the contest delay was selected by the countersignatory.
14281  */
14282 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14283
14284 /**
14285  * Whether the channel is outbound from the broadcaster.
14286  *
14287  * The boolean representing the side that initiated the channel is
14288  * an input to the commitment number obscure factor computation.
14289  */
14290 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14291
14292 /**
14293  * The funding outpoint
14294  */
14295 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
14296
14297 /**
14298  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
14299  */
14300 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
14301
14302 /**
14303  * Our counterparty's signature for the transaction
14304  */
14305 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
14306
14307 /**
14308  * Our counterparty's signature for the transaction
14309  */
14310 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
14311
14312 /**
14313  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
14314  */
14315 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
14316
14317 /**
14318  * Creates a copy of the HolderCommitmentTransaction
14319  */
14320 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
14321
14322 /**
14323  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
14324  */
14325 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
14326
14327 /**
14328  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
14329  */
14330 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
14331
14332 /**
14333  * Create a new holder transaction with the given counterparty signatures.
14334  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
14335  */
14336 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);
14337
14338 /**
14339  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
14340  */
14341 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
14342
14343 /**
14344  * The commitment transaction
14345  */
14346 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
14347
14348 /**
14349  * The commitment transaction
14350  */
14351 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
14352
14353 /**
14354  * The txid for the commitment transaction.
14355  *
14356  * This is provided as a performance optimization, instead of calling transaction.txid()
14357  * multiple times.
14358  */
14359 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
14360
14361 /**
14362  * The txid for the commitment transaction.
14363  *
14364  * This is provided as a performance optimization, instead of calling transaction.txid()
14365  * multiple times.
14366  */
14367 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14368
14369 /**
14370  * Constructs a new BuiltCommitmentTransaction given each field
14371  */
14372 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
14373
14374 /**
14375  * Creates a copy of the BuiltCommitmentTransaction
14376  */
14377 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
14378
14379 /**
14380  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
14381  */
14382 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
14383
14384 /**
14385  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
14386  */
14387 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
14388
14389 /**
14390  * Get the SIGHASH_ALL sighash value of the transaction.
14391  *
14392  * This can be used to verify a signature.
14393  */
14394 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);
14395
14396 /**
14397  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
14398  * because we are about to broadcast a holder transaction.
14399  */
14400 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);
14401
14402 /**
14403  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
14404  */
14405 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
14406
14407 /**
14408  * Creates a copy of the CommitmentTransaction
14409  */
14410 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
14411
14412 /**
14413  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
14414  */
14415 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
14416
14417 /**
14418  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
14419  */
14420 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
14421
14422 /**
14423  * The backwards-counting commitment number
14424  */
14425 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14426
14427 /**
14428  * The value to be sent to the broadcaster
14429  */
14430 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14431
14432 /**
14433  * The value to be sent to the counterparty
14434  */
14435 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14436
14437 /**
14438  * The feerate paid per 1000-weight-unit in this commitment transaction.
14439  */
14440 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14441
14442 /**
14443  * Trust our pre-built transaction and derived transaction creation public keys.
14444  *
14445  * Applies a wrapper which allows access to these fields.
14446  *
14447  * This should only be used if you fully trust the builder of this object.  It should not
14448  *\tbe used by an external signer - instead use the verify function.
14449  */
14450 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
14451
14452 /**
14453  * Verify our pre-built transaction and derived transaction creation public keys.
14454  *
14455  * Applies a wrapper which allows access to these fields.
14456  *
14457  * An external validating signer must call this method before signing
14458  * or using the built transaction.
14459  */
14460 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);
14461
14462 /**
14463  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
14464  */
14465 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
14466
14467 /**
14468  * The transaction ID of the built Bitcoin transaction
14469  */
14470 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14471
14472 /**
14473  * The pre-built Bitcoin commitment transaction
14474  */
14475 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14476
14477 /**
14478  * The pre-calculated transaction creation public keys.
14479  */
14480 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
14481
14482 /**
14483  * Get a signature for each HTLC which was included in the commitment transaction (ie for
14484  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
14485  *
14486  * The returned Vec has one entry for each HTLC, and in the same order.
14487  */
14488 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);
14489
14490 /**
14491  * Get the transaction number obscure factor
14492  */
14493 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
14494
14495 /**
14496  * Creates a copy of the InitFeatures
14497  */
14498 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
14499
14500 /**
14501  * Creates a copy of the NodeFeatures
14502  */
14503 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
14504
14505 /**
14506  * Creates a copy of the ChannelFeatures
14507  */
14508 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
14509
14510 /**
14511  * Creates a copy of the InvoiceFeatures
14512  */
14513 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
14514
14515 /**
14516  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
14517  */
14518 void InitFeatures_free(struct LDKInitFeatures this_obj);
14519
14520 /**
14521  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
14522  */
14523 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
14524
14525 /**
14526  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
14527  */
14528 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
14529
14530 /**
14531  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
14532  */
14533 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
14534
14535 /**
14536  * Create a blank Features with no features set
14537  */
14538 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
14539
14540 /**
14541  * Creates a Features with the bits set which are known by the implementation
14542  */
14543 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
14544
14545 /**
14546  * Create a blank Features with no features set
14547  */
14548 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
14549
14550 /**
14551  * Creates a Features with the bits set which are known by the implementation
14552  */
14553 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
14554
14555 /**
14556  * Create a blank Features with no features set
14557  */
14558 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
14559
14560 /**
14561  * Creates a Features with the bits set which are known by the implementation
14562  */
14563 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
14564
14565 /**
14566  * Create a blank Features with no features set
14567  */
14568 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
14569
14570 /**
14571  * Creates a Features with the bits set which are known by the implementation
14572  */
14573 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
14574
14575 /**
14576  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
14577  */
14578 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
14579
14580 /**
14581  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
14582  */
14583 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
14584
14585 /**
14586  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
14587  */
14588 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
14589
14590 /**
14591  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
14592  */
14593 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
14594
14595 /**
14596  * Read a InitFeatures from a byte array, created by InitFeatures_write
14597  */
14598 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
14599
14600 /**
14601  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
14602  */
14603 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
14604
14605 /**
14606  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
14607  */
14608 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
14609
14610 /**
14611  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
14612  */
14613 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
14614
14615 /**
14616  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
14617  */
14618 void RouteHop_free(struct LDKRouteHop this_obj);
14619
14620 /**
14621  * The node_id of the node at this hop.
14622  */
14623 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14624
14625 /**
14626  * The node_id of the node at this hop.
14627  */
14628 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14629
14630 /**
14631  * The node_announcement features of the node at this hop. For the last hop, these may be
14632  * amended to match the features present in the invoice this node generated.
14633  */
14634 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14635
14636 /**
14637  * The node_announcement features of the node at this hop. For the last hop, these may be
14638  * amended to match the features present in the invoice this node generated.
14639  */
14640 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
14641
14642 /**
14643  * The channel that should be used from the previous hop to reach this node.
14644  */
14645 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14646
14647 /**
14648  * The channel that should be used from the previous hop to reach this node.
14649  */
14650 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
14651
14652 /**
14653  * The channel_announcement features of the channel that should be used from the previous hop
14654  * to reach this node.
14655  */
14656 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14657
14658 /**
14659  * The channel_announcement features of the channel that should be used from the previous hop
14660  * to reach this node.
14661  */
14662 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
14663
14664 /**
14665  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
14666  * For the last hop, this should be the full value of the payment (might be more than
14667  * requested if we had to match htlc_minimum_msat).
14668  */
14669 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14670
14671 /**
14672  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
14673  * For the last hop, this should be the full value of the payment (might be more than
14674  * requested if we had to match htlc_minimum_msat).
14675  */
14676 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
14677
14678 /**
14679  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
14680  * expected at the destination, in excess of the current block height.
14681  */
14682 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
14683
14684 /**
14685  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
14686  * expected at the destination, in excess of the current block height.
14687  */
14688 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
14689
14690 /**
14691  * Constructs a new RouteHop given each field
14692  */
14693 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);
14694
14695 /**
14696  * Creates a copy of the RouteHop
14697  */
14698 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
14699
14700 /**
14701  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
14702  */
14703 void Route_free(struct LDKRoute this_obj);
14704
14705 /**
14706  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
14707  * last RouteHop in each path must be the same.
14708  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
14709  * destination. Thus, this must always be at least length one. While the maximum length of any
14710  * given path is variable, keeping the length of any path to less than 20 should currently
14711  * ensure it is viable.
14712  */
14713 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
14714
14715 /**
14716  * Constructs a new Route given each field
14717  */
14718 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg);
14719
14720 /**
14721  * Creates a copy of the Route
14722  */
14723 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
14724
14725 /**
14726  * Serialize the Route object into a byte array which can be read by Route_read
14727  */
14728 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
14729
14730 /**
14731  * Read a Route from a byte array, created by Route_write
14732  */
14733 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
14734
14735 /**
14736  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
14737  */
14738 void RouteHint_free(struct LDKRouteHint this_obj);
14739
14740 /**
14741  * The node_id of the non-target end of the route
14742  */
14743 struct LDKPublicKey RouteHint_get_src_node_id(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14744
14745 /**
14746  * The node_id of the non-target end of the route
14747  */
14748 void RouteHint_set_src_node_id(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14749
14750 /**
14751  * The short_channel_id of this channel
14752  */
14753 uint64_t RouteHint_get_short_channel_id(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14754
14755 /**
14756  * The short_channel_id of this channel
14757  */
14758 void RouteHint_set_short_channel_id(struct LDKRouteHint *NONNULL_PTR this_ptr, uint64_t val);
14759
14760 /**
14761  * The fees which must be paid to use this channel
14762  */
14763 struct LDKRoutingFees RouteHint_get_fees(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14764
14765 /**
14766  * The fees which must be paid to use this channel
14767  */
14768 void RouteHint_set_fees(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
14769
14770 /**
14771  * The difference in CLTV values between this node and the next node.
14772  */
14773 uint16_t RouteHint_get_cltv_expiry_delta(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14774
14775 /**
14776  * The difference in CLTV values between this node and the next node.
14777  */
14778 void RouteHint_set_cltv_expiry_delta(struct LDKRouteHint *NONNULL_PTR this_ptr, uint16_t val);
14779
14780 /**
14781  * The minimum value, in msat, which must be relayed to the next hop.
14782  */
14783 struct LDKCOption_u64Z RouteHint_get_htlc_minimum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14784
14785 /**
14786  * The minimum value, in msat, which must be relayed to the next hop.
14787  */
14788 void RouteHint_set_htlc_minimum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14789
14790 /**
14791  * The maximum value in msat available for routing with a single HTLC.
14792  */
14793 struct LDKCOption_u64Z RouteHint_get_htlc_maximum_msat(const struct LDKRouteHint *NONNULL_PTR this_ptr);
14794
14795 /**
14796  * The maximum value in msat available for routing with a single HTLC.
14797  */
14798 void RouteHint_set_htlc_maximum_msat(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14799
14800 /**
14801  * Constructs a new RouteHint given each field
14802  */
14803 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);
14804
14805 /**
14806  * Creates a copy of the RouteHint
14807  */
14808 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
14809
14810 /**
14811  * Gets a route from us (payer) to the given target node (payee).
14812  *
14813  * If the payee provided features in their invoice, they should be provided via payee_features.
14814  * Without this, MPP will only be used if the payee's features are available in the network graph.
14815  *
14816  * Extra routing hops between known nodes and the target will be used if they are included in
14817  * last_hops.
14818  *
14819  * If some channels aren't announced, it may be useful to fill in a first_hops with the
14820  * results from a local ChannelManager::list_usable_channels() call. If it is filled in, our
14821  * view of our local channels (from net_graph_msg_handler) will be ignored, and only those
14822  * in first_hops will be used.
14823  *
14824  * Panics if first_hops contains channels without short_channel_ids
14825  * (ChannelManager::list_usable_channels will never include such channels).
14826  *
14827  * The fees on channels from us to next-hops are ignored (as they are assumed to all be
14828  * equal), however the enabled/disabled bit on such channels as well as the
14829  * htlc_minimum_msat/htlc_maximum_msat *are* checked as they may change based on the receiving node.
14830  */
14831 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);
14832
14833 /**
14834  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
14835  */
14836 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
14837
14838 /**
14839  * Creates a copy of the NetworkGraph
14840  */
14841 struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
14842
14843 /**
14844  * Frees any resources used by the LockedNetworkGraph, if is_owned is set and inner is non-NULL.
14845  */
14846 void LockedNetworkGraph_free(struct LDKLockedNetworkGraph this_obj);
14847
14848 /**
14849  * Frees any resources used by the NetGraphMsgHandler, if is_owned is set and inner is non-NULL.
14850  */
14851 void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
14852
14853 /**
14854  * Creates a new tracker of the actual state of the network of channels and nodes,
14855  * assuming a fresh network graph.
14856  * Chain monitor is used to make sure announced channels exist on-chain,
14857  * channel data is correct, and that the announcement is signed with
14858  * channel owners' keys.
14859  */
14860 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(struct LDKThirtyTwoBytes genesis_hash, struct LDKAccess *chain_access, struct LDKLogger logger);
14861
14862 /**
14863  * Creates a new tracker of the actual state of the network of channels and nodes,
14864  * assuming an existing Network Graph.
14865  */
14866 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(struct LDKAccess *chain_access, struct LDKLogger logger, struct LDKNetworkGraph network_graph);
14867
14868 /**
14869  * Adds a provider used to check new announcements. Does not affect
14870  * existing announcements unless they are updated.
14871  * Add, update or remove the provider would replace the current one.
14872  */
14873 void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKAccess *chain_access);
14874
14875 /**
14876  * Take a read lock on the network_graph and return it in the C-bindings
14877  * newtype helper. This is likely only useful when called via the C
14878  * bindings as you can call `self.network_graph.read().unwrap()` in Rust
14879  * yourself.
14880  */
14881 MUST_USE_RES struct LDKLockedNetworkGraph NetGraphMsgHandler_read_locked_graph(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14882
14883 /**
14884  * Get a reference to the NetworkGraph which this read-lock contains.
14885  */
14886 MUST_USE_RES struct LDKNetworkGraph LockedNetworkGraph_graph(const struct LDKLockedNetworkGraph *NONNULL_PTR this_arg);
14887
14888 /**
14889  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
14890  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
14891  */
14892 struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14893
14894 /**
14895  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
14896  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
14897  */
14898 struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
14899
14900 /**
14901  * Frees any resources used by the DirectionalChannelInfo, if is_owned is set and inner is non-NULL.
14902  */
14903 void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
14904
14905 /**
14906  * When the last update to the channel direction was issued.
14907  * Value is opaque, as set in the announcement.
14908  */
14909 uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14910
14911 /**
14912  * When the last update to the channel direction was issued.
14913  * Value is opaque, as set in the announcement.
14914  */
14915 void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
14916
14917 /**
14918  * Whether the channel can be currently used for payments (in this one direction).
14919  */
14920 bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14921
14922 /**
14923  * Whether the channel can be currently used for payments (in this one direction).
14924  */
14925 void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
14926
14927 /**
14928  * The difference in CLTV values that you must have when routing through this channel.
14929  */
14930 uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14931
14932 /**
14933  * The difference in CLTV values that you must have when routing through this channel.
14934  */
14935 void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
14936
14937 /**
14938  * The minimum value, which must be relayed to the next hop via the channel
14939  */
14940 uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14941
14942 /**
14943  * The minimum value, which must be relayed to the next hop via the channel
14944  */
14945 void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
14946
14947 /**
14948  * The maximum value which may be relayed to the next hop via the channel.
14949  */
14950 struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14951
14952 /**
14953  * The maximum value which may be relayed to the next hop via the channel.
14954  */
14955 void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
14956
14957 /**
14958  * Fees charged when the channel is used for routing
14959  */
14960 struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14961
14962 /**
14963  * Fees charged when the channel is used for routing
14964  */
14965 void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
14966
14967 /**
14968  * Most recent update for the channel received from the network
14969  * Mostly redundant with the data we store in fields explicitly.
14970  * Everything else is useful only for sending out for initial routing sync.
14971  * Not stored if contains excess data to prevent DoS.
14972  */
14973 struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
14974
14975 /**
14976  * Most recent update for the channel received from the network
14977  * Mostly redundant with the data we store in fields explicitly.
14978  * Everything else is useful only for sending out for initial routing sync.
14979  * Not stored if contains excess data to prevent DoS.
14980  */
14981 void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
14982
14983 /**
14984  * Constructs a new DirectionalChannelInfo given each field
14985  */
14986 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);
14987
14988 /**
14989  * Creates a copy of the DirectionalChannelInfo
14990  */
14991 struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig);
14992
14993 /**
14994  * Serialize the DirectionalChannelInfo object into a byte array which can be read by DirectionalChannelInfo_read
14995  */
14996 struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj);
14997
14998 /**
14999  * Read a DirectionalChannelInfo from a byte array, created by DirectionalChannelInfo_write
15000  */
15001 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser);
15002
15003 /**
15004  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
15005  */
15006 void ChannelInfo_free(struct LDKChannelInfo this_obj);
15007
15008 /**
15009  * Protocol features of a channel communicated during its announcement
15010  */
15011 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15012
15013 /**
15014  * Protocol features of a channel communicated during its announcement
15015  */
15016 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
15017
15018 /**
15019  * Source node of the first direction of a channel
15020  */
15021 struct LDKPublicKey ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15022
15023 /**
15024  * Source node of the first direction of a channel
15025  */
15026 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15027
15028 /**
15029  * Details about the first direction of a channel
15030  */
15031 struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15032
15033 /**
15034  * Details about the first direction of a channel
15035  */
15036 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
15037
15038 /**
15039  * Source node of the second direction of a channel
15040  */
15041 struct LDKPublicKey ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15042
15043 /**
15044  * Source node of the second direction of a channel
15045  */
15046 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15047
15048 /**
15049  * Details about the second direction of a channel
15050  */
15051 struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15052
15053 /**
15054  * Details about the second direction of a channel
15055  */
15056 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
15057
15058 /**
15059  * The channel capacity as seen on-chain, if chain lookup is available.
15060  */
15061 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15062
15063 /**
15064  * The channel capacity as seen on-chain, if chain lookup is available.
15065  */
15066 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
15067
15068 /**
15069  * An initial announcement of the channel
15070  * Mostly redundant with the data we store in fields explicitly.
15071  * Everything else is useful only for sending out for initial routing sync.
15072  * Not stored if contains excess data to prevent DoS.
15073  */
15074 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
15075
15076 /**
15077  * An initial announcement of the channel
15078  * Mostly redundant with the data we store in fields explicitly.
15079  * Everything else is useful only for sending out for initial routing sync.
15080  * Not stored if contains excess data to prevent DoS.
15081  */
15082 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
15083
15084 /**
15085  * Constructs a new ChannelInfo given each field
15086  */
15087 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);
15088
15089 /**
15090  * Creates a copy of the ChannelInfo
15091  */
15092 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
15093
15094 /**
15095  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
15096  */
15097 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
15098
15099 /**
15100  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
15101  */
15102 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
15103
15104 /**
15105  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
15106  */
15107 void RoutingFees_free(struct LDKRoutingFees this_obj);
15108
15109 /**
15110  * Flat routing fee in satoshis
15111  */
15112 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
15113
15114 /**
15115  * Flat routing fee in satoshis
15116  */
15117 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
15118
15119 /**
15120  * Liquidity-based routing fee in millionths of a routed amount.
15121  * In other words, 10000 is 1%.
15122  */
15123 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
15124
15125 /**
15126  * Liquidity-based routing fee in millionths of a routed amount.
15127  * In other words, 10000 is 1%.
15128  */
15129 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
15130
15131 /**
15132  * Constructs a new RoutingFees given each field
15133  */
15134 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
15135
15136 /**
15137  * Creates a copy of the RoutingFees
15138  */
15139 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
15140
15141 /**
15142  * Read a RoutingFees from a byte array, created by RoutingFees_write
15143  */
15144 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
15145
15146 /**
15147  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
15148  */
15149 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
15150
15151 /**
15152  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
15153  */
15154 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
15155
15156 /**
15157  * Protocol features the node announced support for
15158  */
15159 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15160
15161 /**
15162  * Protocol features the node announced support for
15163  */
15164 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
15165
15166 /**
15167  * When the last known update to the node state was issued.
15168  * Value is opaque, as set in the announcement.
15169  */
15170 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15171
15172 /**
15173  * When the last known update to the node state was issued.
15174  * Value is opaque, as set in the announcement.
15175  */
15176 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
15177
15178 /**
15179  * Color assigned to the node
15180  */
15181 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
15182
15183 /**
15184  * Color assigned to the node
15185  */
15186 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
15187
15188 /**
15189  * Moniker assigned to the node.
15190  * May be invalid or malicious (eg control chars),
15191  * should not be exposed to the user.
15192  */
15193 const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
15194
15195 /**
15196  * Moniker assigned to the node.
15197  * May be invalid or malicious (eg control chars),
15198  * should not be exposed to the user.
15199  */
15200 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15201
15202 /**
15203  * Internet-level addresses via which one can connect to the node
15204  */
15205 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
15206
15207 /**
15208  * An initial announcement of the node
15209  * Mostly redundant with the data we store in fields explicitly.
15210  * Everything else is useful only for sending out for initial routing sync.
15211  * Not stored if contains excess data to prevent DoS.
15212  */
15213 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
15214
15215 /**
15216  * An initial announcement of the node
15217  * Mostly redundant with the data we store in fields explicitly.
15218  * Everything else is useful only for sending out for initial routing sync.
15219  * Not stored if contains excess data to prevent DoS.
15220  */
15221 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
15222
15223 /**
15224  * Constructs a new NodeAnnouncementInfo given each field
15225  */
15226 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);
15227
15228 /**
15229  * Creates a copy of the NodeAnnouncementInfo
15230  */
15231 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
15232
15233 /**
15234  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
15235  */
15236 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
15237
15238 /**
15239  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
15240  */
15241 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
15242
15243 /**
15244  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
15245  */
15246 void NodeInfo_free(struct LDKNodeInfo this_obj);
15247
15248 /**
15249  * All valid channels a node has announced
15250  */
15251 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
15252
15253 /**
15254  * Lowest fees enabling routing via any of the enabled, known channels to a node.
15255  * The two fields (flat and proportional fee) are independent,
15256  * meaning they don't have to refer to the same channel.
15257  */
15258 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
15259
15260 /**
15261  * Lowest fees enabling routing via any of the enabled, known channels to a node.
15262  * The two fields (flat and proportional fee) are independent,
15263  * meaning they don't have to refer to the same channel.
15264  */
15265 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
15266
15267 /**
15268  * More information about a node from node_announcement.
15269  * Optional because we store a Node entry after learning about it from
15270  * a channel announcement, but before receiving a node announcement.
15271  */
15272 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
15273
15274 /**
15275  * More information about a node from node_announcement.
15276  * Optional because we store a Node entry after learning about it from
15277  * a channel announcement, but before receiving a node announcement.
15278  */
15279 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
15280
15281 /**
15282  * Constructs a new NodeInfo given each field
15283  */
15284 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
15285
15286 /**
15287  * Creates a copy of the NodeInfo
15288  */
15289 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
15290
15291 /**
15292  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
15293  */
15294 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
15295
15296 /**
15297  * Read a NodeInfo from a byte array, created by NodeInfo_write
15298  */
15299 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
15300
15301 /**
15302  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
15303  */
15304 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
15305
15306 /**
15307  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
15308  */
15309 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
15310
15311 /**
15312  * Creates a new, empty, network graph.
15313  */
15314 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
15315
15316 /**
15317  * For an already known node (from channel announcements), update its stored properties from a
15318  * given node announcement.
15319  *
15320  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15321  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15322  * routing messages from a source using a protocol other than the lightning P2P protocol.
15323  */
15324 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
15325
15326 /**
15327  * For an already known node (from channel announcements), update its stored properties from a
15328  * given node announcement without verifying the associated signatures. Because we aren't
15329  * given the associated signatures here we cannot relay the node announcement to any of our
15330  * peers.
15331  */
15332 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
15333
15334 /**
15335  * Store or update channel info from a channel announcement.
15336  *
15337  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15338  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15339  * routing messages from a source using a protocol other than the lightning P2P protocol.
15340  *
15341  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
15342  * the corresponding UTXO exists on chain and is correctly-formatted.
15343  */
15344 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);
15345
15346 /**
15347  * Store or update channel info from a channel announcement without verifying the associated
15348  * signatures. Because we aren't given the associated signatures here we cannot relay the
15349  * channel announcement to any of our peers.
15350  *
15351  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
15352  * the corresponding UTXO exists on chain and is correctly-formatted.
15353  */
15354 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);
15355
15356 /**
15357  * Close a channel if a corresponding HTLC fail was sent.
15358  * If permanent, removes a channel from the local storage.
15359  * May cause the removal of nodes too, if this was their last channel.
15360  * If not permanent, makes channels unavailable for routing.
15361  */
15362 void NetworkGraph_close_channel_from_update(struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
15363
15364 /**
15365  * For an already known (from announcement) channel, update info about one of the directions
15366  * of the channel.
15367  *
15368  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
15369  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
15370  * routing messages from a source using a protocol other than the lightning P2P protocol.
15371  */
15372 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
15373
15374 /**
15375  * For an already known (from announcement) channel, update info about one of the directions
15376  * of the channel without verifying the associated signatures. Because we aren't given the
15377  * associated signatures here we cannot relay the channel update to any of our peers.
15378  */
15379 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
15380
15381 /* Text to put at the end of the generated file */