Update auto-generated bindings
[ldk-c-bindings] / lightning-c-bindings / include / lightning.h
1 #ifndef LDK_C_BINDINGS_H
2 #define LDK_C_BINDINGS_H
3
4 /* Generated with cbindgen:0.19.0 */
5
6 /* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
7
8 #include <stdarg.h>
9 #include <stdbool.h>
10 #include <stdint.h>
11 #include "ldk_rust_types.h"
12
13 /**
14  * An error when accessing the chain via [`Access`].
15  */
16 typedef enum LDKAccessError {
17    /**
18     * The requested chain is unknown.
19     */
20    LDKAccessError_UnknownChain,
21    /**
22     * The requested transaction doesn't exist or hasn't confirmed.
23     */
24    LDKAccessError_UnknownTx,
25    /**
26     * Must be last for serialization purposes
27     */
28    LDKAccessError_Sentinel,
29 } LDKAccessError;
30
31 /**
32  * An error enum representing a failure to persist a channel monitor update.
33  */
34 typedef enum LDKChannelMonitorUpdateErr {
35    /**
36     * Used to indicate a temporary failure (eg connection to a watchtower or remote backup of
37     * our state failed, but is expected to succeed at some point in the future).
38     *
39     * Such a failure will \"freeze\" a channel, preventing us from revoking old states or
40     * submitting new commitment transactions to the counterparty. Once the update(s) which failed
41     * have been successfully applied, ChannelManager::channel_monitor_updated can be used to
42     * restore the channel to an operational state.
43     *
44     * Note that a given ChannelManager will *never* re-generate a given ChannelMonitorUpdate. If
45     * you return a TemporaryFailure you must ensure that it is written to disk safely before
46     * writing out the latest ChannelManager state.
47     *
48     * Even when a channel has been \"frozen\" updates to the ChannelMonitor can continue to occur
49     * (eg if an inbound HTLC which we forwarded was claimed upstream resulting in us attempting
50     * to claim it on this channel) and those updates must be applied wherever they can be. At
51     * least one such updated ChannelMonitor must be persisted otherwise PermanentFailure should
52     * be returned to get things on-chain ASAP using only the in-memory copy. Obviously updates to
53     * the channel which would invalidate previous ChannelMonitors are not made when a channel has
54     * been \"frozen\".
55     *
56     * Note that even if updates made after TemporaryFailure succeed you must still call
57     * channel_monitor_updated to ensure you have the latest monitor and re-enable normal channel
58     * operation.
59     *
60     * Note that the update being processed here will not be replayed for you when you call
61     * ChannelManager::channel_monitor_updated, so you must store the update itself along
62     * with the persisted ChannelMonitor on your own local disk prior to returning a
63     * TemporaryFailure. You may, of course, employ a journaling approach, storing only the
64     * ChannelMonitorUpdate on disk without updating the monitor itself, replaying the journal at
65     * reload-time.
66     *
67     * For deployments where a copy of ChannelMonitors and other local state are backed up in a
68     * remote location (with local copies persisted immediately), it is anticipated that all
69     * updates will return TemporaryFailure until the remote copies could be updated.
70     */
71    LDKChannelMonitorUpdateErr_TemporaryFailure,
72    /**
73     * Used to indicate no further channel monitor updates will be allowed (eg we've moved on to a
74     * different watchtower and cannot update with all watchtowers that were previously informed
75     * of this channel).
76     *
77     * At reception of this error, ChannelManager will force-close the channel and return at
78     * least a final ChannelMonitorUpdate::ChannelForceClosed which must be delivered to at
79     * least one ChannelMonitor copy. Revocation secret MUST NOT be released and offchain channel
80     * update must be rejected.
81     *
82     * This failure may also signal a failure to update the local persisted copy of one of
83     * the channel monitor instance.
84     *
85     * Note that even when you fail a holder commitment transaction update, you must store the
86     * update to ensure you can claim from it in case of a duplicate copy of this ChannelMonitor
87     * broadcasts it (e.g distributed channel-monitor deployment)
88     *
89     * In case of distributed watchtowers deployment, the new version must be written to disk, as
90     * state may have been stored but rejected due to a block forcing a commitment broadcast. This
91     * storage is used to claim outputs of rejected state confirmed onchain by another watchtower,
92     * lagging behind on block processing.
93     */
94    LDKChannelMonitorUpdateErr_PermanentFailure,
95    /**
96     * Must be last for serialization purposes
97     */
98    LDKChannelMonitorUpdateErr_Sentinel,
99 } LDKChannelMonitorUpdateErr;
100
101 /**
102  * An enum that represents the speed at which we want a transaction to confirm used for feerate
103  * estimation.
104  */
105 typedef enum LDKConfirmationTarget {
106    /**
107     * We are happy with this transaction confirming slowly when feerate drops some.
108     */
109    LDKConfirmationTarget_Background,
110    /**
111     * We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
112     */
113    LDKConfirmationTarget_Normal,
114    /**
115     * We'd like this transaction to confirm in the next few blocks.
116     */
117    LDKConfirmationTarget_HighPriority,
118    /**
119     * Must be last for serialization purposes
120     */
121    LDKConfirmationTarget_Sentinel,
122 } LDKConfirmationTarget;
123
124 /**
125  * Errors that may occur when constructing a new `RawInvoice` or `Invoice`
126  */
127 typedef enum LDKCreationError {
128    /**
129     * The supplied description string was longer than 639 __bytes__ (see [`Description::new(…)`](./struct.Description.html#method.new))
130     */
131    LDKCreationError_DescriptionTooLong,
132    /**
133     * The specified route has too many hops and can't be encoded
134     */
135    LDKCreationError_RouteTooLong,
136    /**
137     * The unix timestamp of the supplied date is <0 or can't be represented as `SystemTime`
138     */
139    LDKCreationError_TimestampOutOfBounds,
140    /**
141     * The supplied expiry time could cause an overflow if added to a `PositiveTimestamp`
142     */
143    LDKCreationError_ExpiryTimeOutOfBounds,
144    /**
145     * Must be last for serialization purposes
146     */
147    LDKCreationError_Sentinel,
148 } LDKCreationError;
149
150 /**
151  * Enum representing the crypto currencies (or networks) supported by this library
152  */
153 typedef enum LDKCurrency {
154    /**
155     * Bitcoin mainnet
156     */
157    LDKCurrency_Bitcoin,
158    /**
159     * Bitcoin testnet
160     */
161    LDKCurrency_BitcoinTestnet,
162    /**
163     * Bitcoin regtest
164     */
165    LDKCurrency_Regtest,
166    /**
167     * Bitcoin simnet
168     */
169    LDKCurrency_Simnet,
170    /**
171     * Bitcoin signet
172     */
173    LDKCurrency_Signet,
174    /**
175     * Must be last for serialization purposes
176     */
177    LDKCurrency_Sentinel,
178 } LDKCurrency;
179
180 /**
181  * Represents an IO Error. Note that some information is lost in the conversion from Rust.
182  */
183 typedef enum LDKIOError {
184    LDKIOError_NotFound,
185    LDKIOError_PermissionDenied,
186    LDKIOError_ConnectionRefused,
187    LDKIOError_ConnectionReset,
188    LDKIOError_ConnectionAborted,
189    LDKIOError_NotConnected,
190    LDKIOError_AddrInUse,
191    LDKIOError_AddrNotAvailable,
192    LDKIOError_BrokenPipe,
193    LDKIOError_AlreadyExists,
194    LDKIOError_WouldBlock,
195    LDKIOError_InvalidInput,
196    LDKIOError_InvalidData,
197    LDKIOError_TimedOut,
198    LDKIOError_WriteZero,
199    LDKIOError_Interrupted,
200    LDKIOError_Other,
201    LDKIOError_UnexpectedEof,
202    /**
203     * Must be last for serialization purposes
204     */
205    LDKIOError_Sentinel,
206 } LDKIOError;
207
208 /**
209  * An enum representing the available verbosity levels of the logger.
210  */
211 typedef enum LDKLevel {
212    /**
213     * Designates very low priority, often extremely verbose, information
214     */
215    LDKLevel_Trace,
216    /**
217     * Designates lower priority information
218     */
219    LDKLevel_Debug,
220    /**
221     * Designates useful information
222     */
223    LDKLevel_Info,
224    /**
225     * Designates hazardous situations
226     */
227    LDKLevel_Warn,
228    /**
229     * Designates very serious errors
230     */
231    LDKLevel_Error,
232    /**
233     * Must be last for serialization purposes
234     */
235    LDKLevel_Sentinel,
236 } LDKLevel;
237
238 /**
239  * An enum representing the possible Bitcoin or test networks which we can run on
240  */
241 typedef enum LDKNetwork {
242    /**
243     * The main Bitcoin blockchain.
244     */
245    LDKNetwork_Bitcoin,
246    /**
247     * The testnet3 blockchain.
248     */
249    LDKNetwork_Testnet,
250    /**
251     * A local test blockchain.
252     */
253    LDKNetwork_Regtest,
254    /**
255     * A blockchain on which blocks are signed instead of mined.
256     */
257    LDKNetwork_Signet,
258    /**
259     * Must be last for serialization purposes
260     */
261    LDKNetwork_Sentinel,
262 } LDKNetwork;
263
264 /**
265  * Represents an error returned from libsecp256k1 during validation of some secp256k1 data
266  */
267 typedef enum LDKSecp256k1Error {
268    /**
269     * Signature failed verification
270     */
271    LDKSecp256k1Error_IncorrectSignature,
272    /**
273     * Badly sized message ("messages" are actually fixed-sized digests; see the MESSAGE_SIZE constant)
274     */
275    LDKSecp256k1Error_InvalidMessage,
276    /**
277     * Bad public key
278     */
279    LDKSecp256k1Error_InvalidPublicKey,
280    /**
281     * Bad signature
282     */
283    LDKSecp256k1Error_InvalidSignature,
284    /**
285     * Bad secret key
286     */
287    LDKSecp256k1Error_InvalidSecretKey,
288    /**
289     * Bad recovery id
290     */
291    LDKSecp256k1Error_InvalidRecoveryId,
292    /**
293     * Invalid tweak for add_assign or mul_assign
294     */
295    LDKSecp256k1Error_InvalidTweak,
296    /**
297     * tweak_add_check failed on an xonly public key
298     */
299    LDKSecp256k1Error_TweakCheckFailed,
300    /**
301     * Didn't pass enough memory to context creation with preallocated memory
302     */
303    LDKSecp256k1Error_NotEnoughMemory,
304    /**
305     * Must be last for serialization purposes
306     */
307    LDKSecp256k1Error_Sentinel,
308 } LDKSecp256k1Error;
309
310 /**
311  * Errors that may occur when converting a `RawInvoice` to an `Invoice`. They relate to the
312  * requirements sections in BOLT #11
313  */
314 typedef enum LDKSemanticError {
315    /**
316     * The invoice is missing the mandatory payment hash
317     */
318    LDKSemanticError_NoPaymentHash,
319    /**
320     * The invoice has multiple payment hashes which isn't allowed
321     */
322    LDKSemanticError_MultiplePaymentHashes,
323    /**
324     * No description or description hash are part of the invoice
325     */
326    LDKSemanticError_NoDescription,
327    /**
328     * The invoice contains multiple descriptions and/or description hashes which isn't allowed
329     */
330    LDKSemanticError_MultipleDescriptions,
331    /**
332     * The invoice contains multiple payment secrets
333     */
334    LDKSemanticError_MultiplePaymentSecrets,
335    /**
336     * The invoice's features are invalid
337     */
338    LDKSemanticError_InvalidFeatures,
339    /**
340     * The recovery id doesn't fit the signature/pub key
341     */
342    LDKSemanticError_InvalidRecoveryId,
343    /**
344     * The invoice's signature is invalid
345     */
346    LDKSemanticError_InvalidSignature,
347    /**
348     * Must be last for serialization purposes
349     */
350    LDKSemanticError_Sentinel,
351 } LDKSemanticError;
352
353 /**
354  * SI prefixes for the human readable part
355  */
356 typedef enum LDKSiPrefix {
357    /**
358     * 10^-3
359     */
360    LDKSiPrefix_Milli,
361    /**
362     * 10^-6
363     */
364    LDKSiPrefix_Micro,
365    /**
366     * 10^-9
367     */
368    LDKSiPrefix_Nano,
369    /**
370     * 10^-12
371     */
372    LDKSiPrefix_Pico,
373    /**
374     * Must be last for serialization purposes
375     */
376    LDKSiPrefix_Sentinel,
377 } LDKSiPrefix;
378
379 /**
380  * A Rust str object, ie a reference to a UTF8-valid string.
381  * This is *not* null-terminated so cannot be used directly as a C string!
382  */
383 typedef struct LDKStr {
384    /**
385     * A pointer to the string's bytes, in UTF8 encoding
386     */
387    const uint8_t *chars;
388    /**
389     * The number of bytes (not characters!) pointed to by `chars`
390     */
391    uintptr_t len;
392    /**
393     * Whether the data pointed to by `chars` should be freed or not.
394     */
395    bool chars_is_owned;
396 } LDKStr;
397
398 /**
399  * A serialized transaction, in (pointer, length) form.
400  *
401  * This type optionally owns its own memory, and thus the semantics around access change based on
402  * the `data_is_owned` flag. If `data_is_owned` is set, you must call `Transaction_free` to free
403  * the underlying buffer before the object goes out of scope. If `data_is_owned` is not set, any
404  * access to the buffer after the scope in which the object was provided to you is invalid. eg,
405  * access after you return from the call in which a `!data_is_owned` `Transaction` is provided to
406  * you would be invalid.
407  *
408  * Note that, while it may change in the future, because transactions on the Rust side are stored
409  * in a deserialized form, all `Transaction`s generated on the Rust side will have `data_is_owned`
410  * set. Similarly, while it may change in the future, all `Transaction`s you pass to Rust may have
411  * `data_is_owned` either set or unset at your discretion.
412  */
413 typedef struct LDKTransaction {
414    /**
415     * The serialized transaction data.
416     *
417     * This is non-const for your convenience, an object passed to Rust is never written to.
418     */
419    uint8_t *data;
420    /**
421     * The length of the serialized transaction
422     */
423    uintptr_t datalen;
424    /**
425     * Whether the data pointed to by `data` should be freed or not.
426     */
427    bool data_is_owned;
428 } LDKTransaction;
429
430 /**
431  * A dynamically-allocated array of u8s of arbitrary size.
432  * This corresponds to std::vector in C++
433  */
434 typedef struct LDKCVec_u8Z {
435    /**
436     * The elements in the array.
437     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
438     */
439    uint8_t *data;
440    /**
441     * The number of elements pointed to by `data`.
442     */
443    uintptr_t datalen;
444 } LDKCVec_u8Z;
445
446 /**
447  * A transaction output including a scriptPubKey and value.
448  * This type *does* own its own memory, so must be free'd appropriately.
449  */
450 typedef struct LDKTxOut {
451    /**
452     * The script_pubkey in this output
453     */
454    struct LDKCVec_u8Z script_pubkey;
455    /**
456     * The value, in satoshis, of this output
457     */
458    uint64_t value;
459 } LDKTxOut;
460
461 /**
462  * Represents a valid secp256k1 secret key serialized as a 32 byte array.
463  */
464 typedef struct LDKSecretKey {
465    /**
466     * The bytes of the secret key
467     */
468    uint8_t bytes[32];
469 } LDKSecretKey;
470
471 /**
472  * The contents of CResult_SecretKeyErrorZ
473  */
474 typedef union LDKCResult_SecretKeyErrorZPtr {
475    /**
476     * A pointer to the contents in the success state.
477     * Reading from this pointer when `result_ok` is not set is undefined.
478     */
479    struct LDKSecretKey *result;
480    /**
481     * A pointer to the contents in the error state.
482     * Reading from this pointer when `result_ok` is set is undefined.
483     */
484    enum LDKSecp256k1Error *err;
485 } LDKCResult_SecretKeyErrorZPtr;
486
487 /**
488  * A CResult_SecretKeyErrorZ represents the result of a fallible operation,
489  * containing a crate::c_types::SecretKey on success and a crate::c_types::Secp256k1Error on failure.
490  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
491  */
492 typedef struct LDKCResult_SecretKeyErrorZ {
493    /**
494     * The contents of this CResult_SecretKeyErrorZ, accessible via either
495     * `err` or `result` depending on the state of `result_ok`.
496     */
497    union LDKCResult_SecretKeyErrorZPtr contents;
498    /**
499     * Whether this CResult_SecretKeyErrorZ represents a success state.
500     */
501    bool result_ok;
502 } LDKCResult_SecretKeyErrorZ;
503
504 /**
505  * Represents a valid secp256k1 public key serialized in "compressed form" as a 33 byte array.
506  */
507 typedef struct LDKPublicKey {
508    /**
509     * The bytes of the public key
510     */
511    uint8_t compressed_form[33];
512 } LDKPublicKey;
513
514 /**
515  * The contents of CResult_PublicKeyErrorZ
516  */
517 typedef union LDKCResult_PublicKeyErrorZPtr {
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 LDKPublicKey *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_PublicKeyErrorZPtr;
529
530 /**
531  * A CResult_PublicKeyErrorZ represents the result of a fallible operation,
532  * containing a crate::c_types::PublicKey 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_PublicKeyErrorZ {
536    /**
537     * The contents of this CResult_PublicKeyErrorZ, accessible via either
538     * `err` or `result` depending on the state of `result_ok`.
539     */
540    union LDKCResult_PublicKeyErrorZPtr contents;
541    /**
542     * Whether this CResult_PublicKeyErrorZ represents a success state.
543     */
544    bool result_ok;
545 } LDKCResult_PublicKeyErrorZ;
546
547
548
549 /**
550  * The set of public keys which are used in the creation of one commitment transaction.
551  * These are derived from the channel base keys and per-commitment data.
552  *
553  * A broadcaster key is provided from potential broadcaster of the computed transaction.
554  * A countersignatory key is coming from a protocol participant unable to broadcast the
555  * transaction.
556  *
557  * These keys are assumed to be good, either because the code derived them from
558  * channel basepoints via the new function, or they were obtained via
559  * CommitmentTransaction.trust().keys() because we trusted the source of the
560  * pre-calculated keys.
561  */
562 typedef struct MUST_USE_STRUCT LDKTxCreationKeys {
563    /**
564     * A pointer to the opaque Rust object.
565     * Nearly everywhere, inner must be non-null, however in places where
566     * the Rust equivalent takes an Option, it may be set to null to indicate None.
567     */
568    LDKnativeTxCreationKeys *inner;
569    /**
570     * Indicates that this is the only struct which contains the same pointer.
571     * Rust functions which take ownership of an object provided via an argument require
572     * this to be true and invalidate the object pointed to by inner.
573     */
574    bool is_owned;
575 } LDKTxCreationKeys;
576
577
578
579 /**
580  * An error in decoding a message or struct.
581  */
582 typedef struct MUST_USE_STRUCT LDKDecodeError {
583    /**
584     * A pointer to the opaque Rust object.
585     * Nearly everywhere, inner must be non-null, however in places where
586     * the Rust equivalent takes an Option, it may be set to null to indicate None.
587     */
588    LDKnativeDecodeError *inner;
589    /**
590     * Indicates that this is the only struct which contains the same pointer.
591     * Rust functions which take ownership of an object provided via an argument require
592     * this to be true and invalidate the object pointed to by inner.
593     */
594    bool is_owned;
595 } LDKDecodeError;
596
597 /**
598  * The contents of CResult_TxCreationKeysDecodeErrorZ
599  */
600 typedef union LDKCResult_TxCreationKeysDecodeErrorZPtr {
601    /**
602     * A pointer to the contents in the success state.
603     * Reading from this pointer when `result_ok` is not set is undefined.
604     */
605    struct LDKTxCreationKeys *result;
606    /**
607     * A pointer to the contents in the error state.
608     * Reading from this pointer when `result_ok` is set is undefined.
609     */
610    struct LDKDecodeError *err;
611 } LDKCResult_TxCreationKeysDecodeErrorZPtr;
612
613 /**
614  * A CResult_TxCreationKeysDecodeErrorZ represents the result of a fallible operation,
615  * containing a crate::lightning::ln::chan_utils::TxCreationKeys on success and a crate::lightning::ln::msgs::DecodeError on failure.
616  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
617  */
618 typedef struct LDKCResult_TxCreationKeysDecodeErrorZ {
619    /**
620     * The contents of this CResult_TxCreationKeysDecodeErrorZ, accessible via either
621     * `err` or `result` depending on the state of `result_ok`.
622     */
623    union LDKCResult_TxCreationKeysDecodeErrorZPtr contents;
624    /**
625     * Whether this CResult_TxCreationKeysDecodeErrorZ represents a success state.
626     */
627    bool result_ok;
628 } LDKCResult_TxCreationKeysDecodeErrorZ;
629
630
631
632 /**
633  * One counterparty's public keys which do not change over the life of a channel.
634  */
635 typedef struct MUST_USE_STRUCT LDKChannelPublicKeys {
636    /**
637     * A pointer to the opaque Rust object.
638     * Nearly everywhere, inner must be non-null, however in places where
639     * the Rust equivalent takes an Option, it may be set to null to indicate None.
640     */
641    LDKnativeChannelPublicKeys *inner;
642    /**
643     * Indicates that this is the only struct which contains the same pointer.
644     * Rust functions which take ownership of an object provided via an argument require
645     * this to be true and invalidate the object pointed to by inner.
646     */
647    bool is_owned;
648 } LDKChannelPublicKeys;
649
650 /**
651  * The contents of CResult_ChannelPublicKeysDecodeErrorZ
652  */
653 typedef union LDKCResult_ChannelPublicKeysDecodeErrorZPtr {
654    /**
655     * A pointer to the contents in the success state.
656     * Reading from this pointer when `result_ok` is not set is undefined.
657     */
658    struct LDKChannelPublicKeys *result;
659    /**
660     * A pointer to the contents in the error state.
661     * Reading from this pointer when `result_ok` is set is undefined.
662     */
663    struct LDKDecodeError *err;
664 } LDKCResult_ChannelPublicKeysDecodeErrorZPtr;
665
666 /**
667  * A CResult_ChannelPublicKeysDecodeErrorZ represents the result of a fallible operation,
668  * containing a crate::lightning::ln::chan_utils::ChannelPublicKeys on success and a crate::lightning::ln::msgs::DecodeError on failure.
669  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
670  */
671 typedef struct LDKCResult_ChannelPublicKeysDecodeErrorZ {
672    /**
673     * The contents of this CResult_ChannelPublicKeysDecodeErrorZ, accessible via either
674     * `err` or `result` depending on the state of `result_ok`.
675     */
676    union LDKCResult_ChannelPublicKeysDecodeErrorZPtr contents;
677    /**
678     * Whether this CResult_ChannelPublicKeysDecodeErrorZ represents a success state.
679     */
680    bool result_ok;
681 } LDKCResult_ChannelPublicKeysDecodeErrorZ;
682
683 /**
684  * The contents of CResult_TxCreationKeysErrorZ
685  */
686 typedef union LDKCResult_TxCreationKeysErrorZPtr {
687    /**
688     * A pointer to the contents in the success state.
689     * Reading from this pointer when `result_ok` is not set is undefined.
690     */
691    struct LDKTxCreationKeys *result;
692    /**
693     * A pointer to the contents in the error state.
694     * Reading from this pointer when `result_ok` is set is undefined.
695     */
696    enum LDKSecp256k1Error *err;
697 } LDKCResult_TxCreationKeysErrorZPtr;
698
699 /**
700  * A CResult_TxCreationKeysErrorZ represents the result of a fallible operation,
701  * containing a crate::lightning::ln::chan_utils::TxCreationKeys on success and a crate::c_types::Secp256k1Error on failure.
702  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
703  */
704 typedef struct LDKCResult_TxCreationKeysErrorZ {
705    /**
706     * The contents of this CResult_TxCreationKeysErrorZ, accessible via either
707     * `err` or `result` depending on the state of `result_ok`.
708     */
709    union LDKCResult_TxCreationKeysErrorZPtr contents;
710    /**
711     * Whether this CResult_TxCreationKeysErrorZ represents a success state.
712     */
713    bool result_ok;
714 } LDKCResult_TxCreationKeysErrorZ;
715
716 /**
717  * An enum which can either contain a u32 or not
718  */
719 typedef enum LDKCOption_u32Z_Tag {
720    /**
721     * When we're in this state, this COption_u32Z contains a u32
722     */
723    LDKCOption_u32Z_Some,
724    /**
725     * When we're in this state, this COption_u32Z contains nothing
726     */
727    LDKCOption_u32Z_None,
728    /**
729     * Must be last for serialization purposes
730     */
731    LDKCOption_u32Z_Sentinel,
732 } LDKCOption_u32Z_Tag;
733
734 typedef struct LDKCOption_u32Z {
735    LDKCOption_u32Z_Tag tag;
736    union {
737       struct {
738          uint32_t some;
739       };
740    };
741 } LDKCOption_u32Z;
742
743
744
745 /**
746  * Information about an HTLC as it appears in a commitment transaction
747  */
748 typedef struct MUST_USE_STRUCT LDKHTLCOutputInCommitment {
749    /**
750     * A pointer to the opaque Rust object.
751     * Nearly everywhere, inner must be non-null, however in places where
752     * the Rust equivalent takes an Option, it may be set to null to indicate None.
753     */
754    LDKnativeHTLCOutputInCommitment *inner;
755    /**
756     * Indicates that this is the only struct which contains the same pointer.
757     * Rust functions which take ownership of an object provided via an argument require
758     * this to be true and invalidate the object pointed to by inner.
759     */
760    bool is_owned;
761 } LDKHTLCOutputInCommitment;
762
763 /**
764  * The contents of CResult_HTLCOutputInCommitmentDecodeErrorZ
765  */
766 typedef union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr {
767    /**
768     * A pointer to the contents in the success state.
769     * Reading from this pointer when `result_ok` is not set is undefined.
770     */
771    struct LDKHTLCOutputInCommitment *result;
772    /**
773     * A pointer to the contents in the error state.
774     * Reading from this pointer when `result_ok` is set is undefined.
775     */
776    struct LDKDecodeError *err;
777 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr;
778
779 /**
780  * A CResult_HTLCOutputInCommitmentDecodeErrorZ represents the result of a fallible operation,
781  * containing a crate::lightning::ln::chan_utils::HTLCOutputInCommitment on success and a crate::lightning::ln::msgs::DecodeError on failure.
782  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
783  */
784 typedef struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ {
785    /**
786     * The contents of this CResult_HTLCOutputInCommitmentDecodeErrorZ, accessible via either
787     * `err` or `result` depending on the state of `result_ok`.
788     */
789    union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr contents;
790    /**
791     * Whether this CResult_HTLCOutputInCommitmentDecodeErrorZ represents a success state.
792     */
793    bool result_ok;
794 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZ;
795
796
797
798 /**
799  * Late-bound per-channel counterparty data used to build transactions.
800  */
801 typedef struct MUST_USE_STRUCT LDKCounterpartyChannelTransactionParameters {
802    /**
803     * A pointer to the opaque Rust object.
804     * Nearly everywhere, inner must be non-null, however in places where
805     * the Rust equivalent takes an Option, it may be set to null to indicate None.
806     */
807    LDKnativeCounterpartyChannelTransactionParameters *inner;
808    /**
809     * Indicates that this is the only struct which contains the same pointer.
810     * Rust functions which take ownership of an object provided via an argument require
811     * this to be true and invalidate the object pointed to by inner.
812     */
813    bool is_owned;
814 } LDKCounterpartyChannelTransactionParameters;
815
816 /**
817  * The contents of CResult_CounterpartyChannelTransactionParametersDecodeErrorZ
818  */
819 typedef union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr {
820    /**
821     * A pointer to the contents in the success state.
822     * Reading from this pointer when `result_ok` is not set is undefined.
823     */
824    struct LDKCounterpartyChannelTransactionParameters *result;
825    /**
826     * A pointer to the contents in the error state.
827     * Reading from this pointer when `result_ok` is set is undefined.
828     */
829    struct LDKDecodeError *err;
830 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr;
831
832 /**
833  * A CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
834  * containing a crate::lightning::ln::chan_utils::CounterpartyChannelTransactionParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
835  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
836  */
837 typedef struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
838    /**
839     * The contents of this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ, accessible via either
840     * `err` or `result` depending on the state of `result_ok`.
841     */
842    union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr contents;
843    /**
844     * Whether this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents a success state.
845     */
846    bool result_ok;
847 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
848
849
850
851 /**
852  * Per-channel data used to build transactions in conjunction with the per-commitment data (CommitmentTransaction).
853  * The fields are organized by holder/counterparty.
854  *
855  * Normally, this is converted to the broadcaster/countersignatory-organized DirectedChannelTransactionParameters
856  * before use, via the as_holder_broadcastable and as_counterparty_broadcastable functions.
857  */
858 typedef struct MUST_USE_STRUCT LDKChannelTransactionParameters {
859    /**
860     * A pointer to the opaque Rust object.
861     * Nearly everywhere, inner must be non-null, however in places where
862     * the Rust equivalent takes an Option, it may be set to null to indicate None.
863     */
864    LDKnativeChannelTransactionParameters *inner;
865    /**
866     * Indicates that this is the only struct which contains the same pointer.
867     * Rust functions which take ownership of an object provided via an argument require
868     * this to be true and invalidate the object pointed to by inner.
869     */
870    bool is_owned;
871 } LDKChannelTransactionParameters;
872
873 /**
874  * The contents of CResult_ChannelTransactionParametersDecodeErrorZ
875  */
876 typedef union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr {
877    /**
878     * A pointer to the contents in the success state.
879     * Reading from this pointer when `result_ok` is not set is undefined.
880     */
881    struct LDKChannelTransactionParameters *result;
882    /**
883     * A pointer to the contents in the error state.
884     * Reading from this pointer when `result_ok` is set is undefined.
885     */
886    struct LDKDecodeError *err;
887 } LDKCResult_ChannelTransactionParametersDecodeErrorZPtr;
888
889 /**
890  * A CResult_ChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
891  * containing a crate::lightning::ln::chan_utils::ChannelTransactionParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
892  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
893  */
894 typedef struct LDKCResult_ChannelTransactionParametersDecodeErrorZ {
895    /**
896     * The contents of this CResult_ChannelTransactionParametersDecodeErrorZ, accessible via either
897     * `err` or `result` depending on the state of `result_ok`.
898     */
899    union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr contents;
900    /**
901     * Whether this CResult_ChannelTransactionParametersDecodeErrorZ represents a success state.
902     */
903    bool result_ok;
904 } LDKCResult_ChannelTransactionParametersDecodeErrorZ;
905
906 /**
907  * Represents a secp256k1 signature serialized as two 32-byte numbers
908  */
909 typedef struct LDKSignature {
910    /**
911     * The bytes of the signature in "compact" form
912     */
913    uint8_t compact_form[64];
914 } LDKSignature;
915
916 /**
917  * A dynamically-allocated array of crate::c_types::Signatures of arbitrary size.
918  * This corresponds to std::vector in C++
919  */
920 typedef struct LDKCVec_SignatureZ {
921    /**
922     * The elements in the array.
923     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
924     */
925    struct LDKSignature *data;
926    /**
927     * The number of elements pointed to by `data`.
928     */
929    uintptr_t datalen;
930 } LDKCVec_SignatureZ;
931
932
933
934 /**
935  * Information needed to build and sign a holder's commitment transaction.
936  *
937  * The transaction is only signed once we are ready to broadcast.
938  */
939 typedef struct MUST_USE_STRUCT LDKHolderCommitmentTransaction {
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    LDKnativeHolderCommitmentTransaction *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 } LDKHolderCommitmentTransaction;
953
954 /**
955  * The contents of CResult_HolderCommitmentTransactionDecodeErrorZ
956  */
957 typedef union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr {
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 LDKHolderCommitmentTransaction *result;
963    /**
964     * A pointer to the contents in the error state.
965     * Reading from this pointer when `result_ok` is set is undefined.
966     */
967    struct LDKDecodeError *err;
968 } LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr;
969
970 /**
971  * A CResult_HolderCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
972  * containing a crate::lightning::ln::chan_utils::HolderCommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
973  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
974  */
975 typedef struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ {
976    /**
977     * The contents of this CResult_HolderCommitmentTransactionDecodeErrorZ, accessible via either
978     * `err` or `result` depending on the state of `result_ok`.
979     */
980    union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr contents;
981    /**
982     * Whether this CResult_HolderCommitmentTransactionDecodeErrorZ represents a success state.
983     */
984    bool result_ok;
985 } LDKCResult_HolderCommitmentTransactionDecodeErrorZ;
986
987
988
989 /**
990  * A pre-built Bitcoin commitment transaction and its txid.
991  */
992 typedef struct MUST_USE_STRUCT LDKBuiltCommitmentTransaction {
993    /**
994     * A pointer to the opaque Rust object.
995     * Nearly everywhere, inner must be non-null, however in places where
996     * the Rust equivalent takes an Option, it may be set to null to indicate None.
997     */
998    LDKnativeBuiltCommitmentTransaction *inner;
999    /**
1000     * Indicates that this is the only struct which contains the same pointer.
1001     * Rust functions which take ownership of an object provided via an argument require
1002     * this to be true and invalidate the object pointed to by inner.
1003     */
1004    bool is_owned;
1005 } LDKBuiltCommitmentTransaction;
1006
1007 /**
1008  * The contents of CResult_BuiltCommitmentTransactionDecodeErrorZ
1009  */
1010 typedef union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr {
1011    /**
1012     * A pointer to the contents in the success state.
1013     * Reading from this pointer when `result_ok` is not set is undefined.
1014     */
1015    struct LDKBuiltCommitmentTransaction *result;
1016    /**
1017     * A pointer to the contents in the error state.
1018     * Reading from this pointer when `result_ok` is set is undefined.
1019     */
1020    struct LDKDecodeError *err;
1021 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr;
1022
1023 /**
1024  * A CResult_BuiltCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1025  * containing a crate::lightning::ln::chan_utils::BuiltCommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1026  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1027  */
1028 typedef struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ {
1029    /**
1030     * The contents of this CResult_BuiltCommitmentTransactionDecodeErrorZ, accessible via either
1031     * `err` or `result` depending on the state of `result_ok`.
1032     */
1033    union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr contents;
1034    /**
1035     * Whether this CResult_BuiltCommitmentTransactionDecodeErrorZ represents a success state.
1036     */
1037    bool result_ok;
1038 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZ;
1039
1040
1041
1042 /**
1043  * This class tracks the per-transaction information needed to build a commitment transaction and to
1044  * actually build it and sign.  It is used for holder transactions that we sign only when needed
1045  * and for transactions we sign for the counterparty.
1046  *
1047  * This class can be used inside a signer implementation to generate a signature given the relevant
1048  * secret key.
1049  */
1050 typedef struct MUST_USE_STRUCT LDKCommitmentTransaction {
1051    /**
1052     * A pointer to the opaque Rust object.
1053     * Nearly everywhere, inner must be non-null, however in places where
1054     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1055     */
1056    LDKnativeCommitmentTransaction *inner;
1057    /**
1058     * Indicates that this is the only struct which contains the same pointer.
1059     * Rust functions which take ownership of an object provided via an argument require
1060     * this to be true and invalidate the object pointed to by inner.
1061     */
1062    bool is_owned;
1063 } LDKCommitmentTransaction;
1064
1065 /**
1066  * The contents of CResult_CommitmentTransactionDecodeErrorZ
1067  */
1068 typedef union LDKCResult_CommitmentTransactionDecodeErrorZPtr {
1069    /**
1070     * A pointer to the contents in the success state.
1071     * Reading from this pointer when `result_ok` is not set is undefined.
1072     */
1073    struct LDKCommitmentTransaction *result;
1074    /**
1075     * A pointer to the contents in the error state.
1076     * Reading from this pointer when `result_ok` is set is undefined.
1077     */
1078    struct LDKDecodeError *err;
1079 } LDKCResult_CommitmentTransactionDecodeErrorZPtr;
1080
1081 /**
1082  * A CResult_CommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1083  * containing a crate::lightning::ln::chan_utils::CommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1084  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1085  */
1086 typedef struct LDKCResult_CommitmentTransactionDecodeErrorZ {
1087    /**
1088     * The contents of this CResult_CommitmentTransactionDecodeErrorZ, accessible via either
1089     * `err` or `result` depending on the state of `result_ok`.
1090     */
1091    union LDKCResult_CommitmentTransactionDecodeErrorZPtr contents;
1092    /**
1093     * Whether this CResult_CommitmentTransactionDecodeErrorZ represents a success state.
1094     */
1095    bool result_ok;
1096 } LDKCResult_CommitmentTransactionDecodeErrorZ;
1097
1098
1099
1100 /**
1101  * A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin
1102  * transaction and the transaction creation keys) are trusted.
1103  *
1104  * See trust() and verify() functions on CommitmentTransaction.
1105  *
1106  * This structure implements Deref.
1107  */
1108 typedef struct MUST_USE_STRUCT LDKTrustedCommitmentTransaction {
1109    /**
1110     * A pointer to the opaque Rust object.
1111     * Nearly everywhere, inner must be non-null, however in places where
1112     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1113     */
1114    LDKnativeTrustedCommitmentTransaction *inner;
1115    /**
1116     * Indicates that this is the only struct which contains the same pointer.
1117     * Rust functions which take ownership of an object provided via an argument require
1118     * this to be true and invalidate the object pointed to by inner.
1119     */
1120    bool is_owned;
1121 } LDKTrustedCommitmentTransaction;
1122
1123 /**
1124  * The contents of CResult_TrustedCommitmentTransactionNoneZ
1125  */
1126 typedef union LDKCResult_TrustedCommitmentTransactionNoneZPtr {
1127    /**
1128     * A pointer to the contents in the success state.
1129     * Reading from this pointer when `result_ok` is not set is undefined.
1130     */
1131    struct LDKTrustedCommitmentTransaction *result;
1132    /**
1133     * Note that this value is always NULL, as there are no contents in the Err variant
1134     */
1135    void *err;
1136 } LDKCResult_TrustedCommitmentTransactionNoneZPtr;
1137
1138 /**
1139  * A CResult_TrustedCommitmentTransactionNoneZ represents the result of a fallible operation,
1140  * containing a crate::lightning::ln::chan_utils::TrustedCommitmentTransaction on success and a () on failure.
1141  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1142  */
1143 typedef struct LDKCResult_TrustedCommitmentTransactionNoneZ {
1144    /**
1145     * The contents of this CResult_TrustedCommitmentTransactionNoneZ, accessible via either
1146     * `err` or `result` depending on the state of `result_ok`.
1147     */
1148    union LDKCResult_TrustedCommitmentTransactionNoneZPtr contents;
1149    /**
1150     * Whether this CResult_TrustedCommitmentTransactionNoneZ represents a success state.
1151     */
1152    bool result_ok;
1153 } LDKCResult_TrustedCommitmentTransactionNoneZ;
1154
1155 /**
1156  * The contents of CResult_CVec_SignatureZNoneZ
1157  */
1158 typedef union LDKCResult_CVec_SignatureZNoneZPtr {
1159    /**
1160     * A pointer to the contents in the success state.
1161     * Reading from this pointer when `result_ok` is not set is undefined.
1162     */
1163    struct LDKCVec_SignatureZ *result;
1164    /**
1165     * Note that this value is always NULL, as there are no contents in the Err variant
1166     */
1167    void *err;
1168 } LDKCResult_CVec_SignatureZNoneZPtr;
1169
1170 /**
1171  * A CResult_CVec_SignatureZNoneZ represents the result of a fallible operation,
1172  * containing a crate::c_types::derived::CVec_SignatureZ on success and a () on failure.
1173  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1174  */
1175 typedef struct LDKCResult_CVec_SignatureZNoneZ {
1176    /**
1177     * The contents of this CResult_CVec_SignatureZNoneZ, accessible via either
1178     * `err` or `result` depending on the state of `result_ok`.
1179     */
1180    union LDKCResult_CVec_SignatureZNoneZPtr contents;
1181    /**
1182     * Whether this CResult_CVec_SignatureZNoneZ represents a success state.
1183     */
1184    bool result_ok;
1185 } LDKCResult_CVec_SignatureZNoneZ;
1186
1187 /**
1188  * The contents of CResult_NoneErrorZ
1189  */
1190 typedef union LDKCResult_NoneErrorZPtr {
1191    /**
1192     * Note that this value is always NULL, as there are no contents in the OK variant
1193     */
1194    void *result;
1195    /**
1196     * A pointer to the contents in the error state.
1197     * Reading from this pointer when `result_ok` is set is undefined.
1198     */
1199    enum LDKIOError *err;
1200 } LDKCResult_NoneErrorZPtr;
1201
1202 /**
1203  * A CResult_NoneErrorZ represents the result of a fallible operation,
1204  * containing a () on success and a crate::c_types::IOError on failure.
1205  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1206  */
1207 typedef struct LDKCResult_NoneErrorZ {
1208    /**
1209     * The contents of this CResult_NoneErrorZ, accessible via either
1210     * `err` or `result` depending on the state of `result_ok`.
1211     */
1212    union LDKCResult_NoneErrorZPtr contents;
1213    /**
1214     * Whether this CResult_NoneErrorZ represents a success state.
1215     */
1216    bool result_ok;
1217 } LDKCResult_NoneErrorZ;
1218
1219
1220
1221 /**
1222  * A hop in a route
1223  */
1224 typedef struct MUST_USE_STRUCT LDKRouteHop {
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    LDKnativeRouteHop *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 } LDKRouteHop;
1238
1239 /**
1240  * The contents of CResult_RouteHopDecodeErrorZ
1241  */
1242 typedef union LDKCResult_RouteHopDecodeErrorZPtr {
1243    /**
1244     * A pointer to the contents in the success state.
1245     * Reading from this pointer when `result_ok` is not set is undefined.
1246     */
1247    struct LDKRouteHop *result;
1248    /**
1249     * A pointer to the contents in the error state.
1250     * Reading from this pointer when `result_ok` is set is undefined.
1251     */
1252    struct LDKDecodeError *err;
1253 } LDKCResult_RouteHopDecodeErrorZPtr;
1254
1255 /**
1256  * A CResult_RouteHopDecodeErrorZ represents the result of a fallible operation,
1257  * containing a crate::lightning::routing::router::RouteHop on success and a crate::lightning::ln::msgs::DecodeError on failure.
1258  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1259  */
1260 typedef struct LDKCResult_RouteHopDecodeErrorZ {
1261    /**
1262     * The contents of this CResult_RouteHopDecodeErrorZ, accessible via either
1263     * `err` or `result` depending on the state of `result_ok`.
1264     */
1265    union LDKCResult_RouteHopDecodeErrorZPtr contents;
1266    /**
1267     * Whether this CResult_RouteHopDecodeErrorZ represents a success state.
1268     */
1269    bool result_ok;
1270 } LDKCResult_RouteHopDecodeErrorZ;
1271
1272 /**
1273  * A dynamically-allocated array of crate::lightning::routing::router::RouteHops of arbitrary size.
1274  * This corresponds to std::vector in C++
1275  */
1276 typedef struct LDKCVec_RouteHopZ {
1277    /**
1278     * The elements in the array.
1279     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1280     */
1281    struct LDKRouteHop *data;
1282    /**
1283     * The number of elements pointed to by `data`.
1284     */
1285    uintptr_t datalen;
1286 } LDKCVec_RouteHopZ;
1287
1288 /**
1289  * A dynamically-allocated array of crate::c_types::derived::CVec_RouteHopZs of arbitrary size.
1290  * This corresponds to std::vector in C++
1291  */
1292 typedef struct LDKCVec_CVec_RouteHopZZ {
1293    /**
1294     * The elements in the array.
1295     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1296     */
1297    struct LDKCVec_RouteHopZ *data;
1298    /**
1299     * The number of elements pointed to by `data`.
1300     */
1301    uintptr_t datalen;
1302 } LDKCVec_CVec_RouteHopZZ;
1303
1304
1305
1306 /**
1307  * A route directs a payment from the sender (us) to the recipient. If the recipient supports MPP,
1308  * it can take multiple paths. Each path is composed of one or more hops through the network.
1309  */
1310 typedef struct MUST_USE_STRUCT LDKRoute {
1311    /**
1312     * A pointer to the opaque Rust object.
1313     * Nearly everywhere, inner must be non-null, however in places where
1314     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1315     */
1316    LDKnativeRoute *inner;
1317    /**
1318     * Indicates that this is the only struct which contains the same pointer.
1319     * Rust functions which take ownership of an object provided via an argument require
1320     * this to be true and invalidate the object pointed to by inner.
1321     */
1322    bool is_owned;
1323 } LDKRoute;
1324
1325 /**
1326  * The contents of CResult_RouteDecodeErrorZ
1327  */
1328 typedef union LDKCResult_RouteDecodeErrorZPtr {
1329    /**
1330     * A pointer to the contents in the success state.
1331     * Reading from this pointer when `result_ok` is not set is undefined.
1332     */
1333    struct LDKRoute *result;
1334    /**
1335     * A pointer to the contents in the error state.
1336     * Reading from this pointer when `result_ok` is set is undefined.
1337     */
1338    struct LDKDecodeError *err;
1339 } LDKCResult_RouteDecodeErrorZPtr;
1340
1341 /**
1342  * A CResult_RouteDecodeErrorZ represents the result of a fallible operation,
1343  * containing a crate::lightning::routing::router::Route on success and a crate::lightning::ln::msgs::DecodeError on failure.
1344  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1345  */
1346 typedef struct LDKCResult_RouteDecodeErrorZ {
1347    /**
1348     * The contents of this CResult_RouteDecodeErrorZ, accessible via either
1349     * `err` or `result` depending on the state of `result_ok`.
1350     */
1351    union LDKCResult_RouteDecodeErrorZPtr contents;
1352    /**
1353     * Whether this CResult_RouteDecodeErrorZ represents a success state.
1354     */
1355    bool result_ok;
1356 } LDKCResult_RouteDecodeErrorZ;
1357
1358 /**
1359  * An enum which can either contain a u64 or not
1360  */
1361 typedef enum LDKCOption_u64Z_Tag {
1362    /**
1363     * When we're in this state, this COption_u64Z contains a u64
1364     */
1365    LDKCOption_u64Z_Some,
1366    /**
1367     * When we're in this state, this COption_u64Z contains nothing
1368     */
1369    LDKCOption_u64Z_None,
1370    /**
1371     * Must be last for serialization purposes
1372     */
1373    LDKCOption_u64Z_Sentinel,
1374 } LDKCOption_u64Z_Tag;
1375
1376 typedef struct LDKCOption_u64Z {
1377    LDKCOption_u64Z_Tag tag;
1378    union {
1379       struct {
1380          uint64_t some;
1381       };
1382    };
1383 } LDKCOption_u64Z;
1384
1385
1386
1387 /**
1388  * Details of a channel, as returned by ChannelManager::list_channels and ChannelManager::list_usable_channels
1389  */
1390 typedef struct MUST_USE_STRUCT LDKChannelDetails {
1391    /**
1392     * A pointer to the opaque Rust object.
1393     * Nearly everywhere, inner must be non-null, however in places where
1394     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1395     */
1396    LDKnativeChannelDetails *inner;
1397    /**
1398     * Indicates that this is the only struct which contains the same pointer.
1399     * Rust functions which take ownership of an object provided via an argument require
1400     * this to be true and invalidate the object pointed to by inner.
1401     */
1402    bool is_owned;
1403 } LDKChannelDetails;
1404
1405 /**
1406  * A dynamically-allocated array of crate::lightning::ln::channelmanager::ChannelDetailss of arbitrary size.
1407  * This corresponds to std::vector in C++
1408  */
1409 typedef struct LDKCVec_ChannelDetailsZ {
1410    /**
1411     * The elements in the array.
1412     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1413     */
1414    struct LDKChannelDetails *data;
1415    /**
1416     * The number of elements pointed to by `data`.
1417     */
1418    uintptr_t datalen;
1419 } LDKCVec_ChannelDetailsZ;
1420
1421
1422
1423 /**
1424  * A list of hops along a payment path terminating with a channel to the recipient.
1425  */
1426 typedef struct MUST_USE_STRUCT LDKRouteHint {
1427    /**
1428     * A pointer to the opaque Rust object.
1429     * Nearly everywhere, inner must be non-null, however in places where
1430     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1431     */
1432    LDKnativeRouteHint *inner;
1433    /**
1434     * Indicates that this is the only struct which contains the same pointer.
1435     * Rust functions which take ownership of an object provided via an argument require
1436     * this to be true and invalidate the object pointed to by inner.
1437     */
1438    bool is_owned;
1439 } LDKRouteHint;
1440
1441 /**
1442  * A dynamically-allocated array of crate::lightning::routing::router::RouteHints of arbitrary size.
1443  * This corresponds to std::vector in C++
1444  */
1445 typedef struct LDKCVec_RouteHintZ {
1446    /**
1447     * The elements in the array.
1448     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1449     */
1450    struct LDKRouteHint *data;
1451    /**
1452     * The number of elements pointed to by `data`.
1453     */
1454    uintptr_t datalen;
1455 } LDKCVec_RouteHintZ;
1456
1457
1458
1459 /**
1460  * An Err type for failure to process messages.
1461  */
1462 typedef struct MUST_USE_STRUCT LDKLightningError {
1463    /**
1464     * A pointer to the opaque Rust object.
1465     * Nearly everywhere, inner must be non-null, however in places where
1466     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1467     */
1468    LDKnativeLightningError *inner;
1469    /**
1470     * Indicates that this is the only struct which contains the same pointer.
1471     * Rust functions which take ownership of an object provided via an argument require
1472     * this to be true and invalidate the object pointed to by inner.
1473     */
1474    bool is_owned;
1475 } LDKLightningError;
1476
1477 /**
1478  * The contents of CResult_RouteLightningErrorZ
1479  */
1480 typedef union LDKCResult_RouteLightningErrorZPtr {
1481    /**
1482     * A pointer to the contents in the success state.
1483     * Reading from this pointer when `result_ok` is not set is undefined.
1484     */
1485    struct LDKRoute *result;
1486    /**
1487     * A pointer to the contents in the error state.
1488     * Reading from this pointer when `result_ok` is set is undefined.
1489     */
1490    struct LDKLightningError *err;
1491 } LDKCResult_RouteLightningErrorZPtr;
1492
1493 /**
1494  * A CResult_RouteLightningErrorZ represents the result of a fallible operation,
1495  * containing a crate::lightning::routing::router::Route on success and a crate::lightning::ln::msgs::LightningError on failure.
1496  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1497  */
1498 typedef struct LDKCResult_RouteLightningErrorZ {
1499    /**
1500     * The contents of this CResult_RouteLightningErrorZ, accessible via either
1501     * `err` or `result` depending on the state of `result_ok`.
1502     */
1503    union LDKCResult_RouteLightningErrorZPtr contents;
1504    /**
1505     * Whether this CResult_RouteLightningErrorZ represents a success state.
1506     */
1507    bool result_ok;
1508 } LDKCResult_RouteLightningErrorZ;
1509
1510 /**
1511  * The contents of CResult_TxOutAccessErrorZ
1512  */
1513 typedef union LDKCResult_TxOutAccessErrorZPtr {
1514    /**
1515     * A pointer to the contents in the success state.
1516     * Reading from this pointer when `result_ok` is not set is undefined.
1517     */
1518    struct LDKTxOut *result;
1519    /**
1520     * A pointer to the contents in the error state.
1521     * Reading from this pointer when `result_ok` is set is undefined.
1522     */
1523    enum LDKAccessError *err;
1524 } LDKCResult_TxOutAccessErrorZPtr;
1525
1526 /**
1527  * A CResult_TxOutAccessErrorZ represents the result of a fallible operation,
1528  * containing a crate::c_types::TxOut on success and a crate::lightning::chain::AccessError on failure.
1529  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1530  */
1531 typedef struct LDKCResult_TxOutAccessErrorZ {
1532    /**
1533     * The contents of this CResult_TxOutAccessErrorZ, accessible via either
1534     * `err` or `result` depending on the state of `result_ok`.
1535     */
1536    union LDKCResult_TxOutAccessErrorZPtr contents;
1537    /**
1538     * Whether this CResult_TxOutAccessErrorZ represents a success state.
1539     */
1540    bool result_ok;
1541 } LDKCResult_TxOutAccessErrorZ;
1542
1543 /**
1544  * A tuple of 2 elements. See the individual fields for the types contained.
1545  */
1546 typedef struct LDKC2Tuple_usizeTransactionZ {
1547    /**
1548     * The element at position 0
1549     */
1550    uintptr_t a;
1551    /**
1552     * The element at position 1
1553     */
1554    struct LDKTransaction b;
1555 } LDKC2Tuple_usizeTransactionZ;
1556
1557 /**
1558  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_usizeTransactionZs of arbitrary size.
1559  * This corresponds to std::vector in C++
1560  */
1561 typedef struct LDKCVec_C2Tuple_usizeTransactionZZ {
1562    /**
1563     * The elements in the array.
1564     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1565     */
1566    struct LDKC2Tuple_usizeTransactionZ *data;
1567    /**
1568     * The number of elements pointed to by `data`.
1569     */
1570    uintptr_t datalen;
1571 } LDKCVec_C2Tuple_usizeTransactionZZ;
1572
1573 /**
1574  * Arbitrary 32 bytes, which could represent one of a few different things. You probably want to
1575  * look up the corresponding function in rust-lightning's docs.
1576  */
1577 typedef struct LDKThirtyTwoBytes {
1578    /**
1579     * The thirty-two bytes
1580     */
1581    uint8_t data[32];
1582 } LDKThirtyTwoBytes;
1583
1584 /**
1585  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
1586  * This corresponds to std::vector in C++
1587  */
1588 typedef struct LDKCVec_TxidZ {
1589    /**
1590     * The elements in the array.
1591     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1592     */
1593    struct LDKThirtyTwoBytes *data;
1594    /**
1595     * The number of elements pointed to by `data`.
1596     */
1597    uintptr_t datalen;
1598 } LDKCVec_TxidZ;
1599
1600 /**
1601  * The contents of CResult_NoneChannelMonitorUpdateErrZ
1602  */
1603 typedef union LDKCResult_NoneChannelMonitorUpdateErrZPtr {
1604    /**
1605     * Note that this value is always NULL, as there are no contents in the OK variant
1606     */
1607    void *result;
1608    /**
1609     * A pointer to the contents in the error state.
1610     * Reading from this pointer when `result_ok` is set is undefined.
1611     */
1612    enum LDKChannelMonitorUpdateErr *err;
1613 } LDKCResult_NoneChannelMonitorUpdateErrZPtr;
1614
1615 /**
1616  * A CResult_NoneChannelMonitorUpdateErrZ represents the result of a fallible operation,
1617  * containing a () on success and a crate::lightning::chain::channelmonitor::ChannelMonitorUpdateErr on failure.
1618  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1619  */
1620 typedef struct LDKCResult_NoneChannelMonitorUpdateErrZ {
1621    /**
1622     * The contents of this CResult_NoneChannelMonitorUpdateErrZ, accessible via either
1623     * `err` or `result` depending on the state of `result_ok`.
1624     */
1625    union LDKCResult_NoneChannelMonitorUpdateErrZPtr contents;
1626    /**
1627     * Whether this CResult_NoneChannelMonitorUpdateErrZ represents a success state.
1628     */
1629    bool result_ok;
1630 } LDKCResult_NoneChannelMonitorUpdateErrZ;
1631
1632
1633
1634 /**
1635  * Simple structure sent back by `chain::Watch` when an HTLC from a forward channel is detected on
1636  * chain. Used to update the corresponding HTLC in the backward channel. Failing to pass the
1637  * preimage claim backward will lead to loss of funds.
1638  */
1639 typedef struct MUST_USE_STRUCT LDKHTLCUpdate {
1640    /**
1641     * A pointer to the opaque Rust object.
1642     * Nearly everywhere, inner must be non-null, however in places where
1643     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1644     */
1645    LDKnativeHTLCUpdate *inner;
1646    /**
1647     * Indicates that this is the only struct which contains the same pointer.
1648     * Rust functions which take ownership of an object provided via an argument require
1649     * this to be true and invalidate the object pointed to by inner.
1650     */
1651    bool is_owned;
1652 } LDKHTLCUpdate;
1653
1654
1655
1656 /**
1657  * A reference to a transaction output.
1658  *
1659  * Differs from bitcoin::blockdata::transaction::OutPoint as the index is a u16 instead of u32
1660  * due to LN's restrictions on index values. Should reduce (possibly) unsafe conversions this way.
1661  */
1662 typedef struct MUST_USE_STRUCT LDKOutPoint {
1663    /**
1664     * A pointer to the opaque Rust object.
1665     * Nearly everywhere, inner must be non-null, however in places where
1666     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1667     */
1668    LDKnativeOutPoint *inner;
1669    /**
1670     * Indicates that this is the only struct which contains the same pointer.
1671     * Rust functions which take ownership of an object provided via an argument require
1672     * this to be true and invalidate the object pointed to by inner.
1673     */
1674    bool is_owned;
1675 } LDKOutPoint;
1676
1677 /**
1678  * An event to be processed by the ChannelManager.
1679  */
1680 typedef enum LDKMonitorEvent_Tag {
1681    /**
1682     * A monitor event containing an HTLCUpdate.
1683     */
1684    LDKMonitorEvent_HTLCEvent,
1685    /**
1686     * A monitor event that the Channel's commitment transaction was broadcasted.
1687     */
1688    LDKMonitorEvent_CommitmentTxBroadcasted,
1689    /**
1690     * Must be last for serialization purposes
1691     */
1692    LDKMonitorEvent_Sentinel,
1693 } LDKMonitorEvent_Tag;
1694
1695 typedef struct MUST_USE_STRUCT LDKMonitorEvent {
1696    LDKMonitorEvent_Tag tag;
1697    union {
1698       struct {
1699          struct LDKHTLCUpdate htlc_event;
1700       };
1701       struct {
1702          struct LDKOutPoint commitment_tx_broadcasted;
1703       };
1704    };
1705 } LDKMonitorEvent;
1706
1707 /**
1708  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::MonitorEvents of arbitrary size.
1709  * This corresponds to std::vector in C++
1710  */
1711 typedef struct LDKCVec_MonitorEventZ {
1712    /**
1713     * The elements in the array.
1714     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1715     */
1716    struct LDKMonitorEvent *data;
1717    /**
1718     * The number of elements pointed to by `data`.
1719     */
1720    uintptr_t datalen;
1721 } LDKCVec_MonitorEventZ;
1722
1723 /**
1724  * An enum which can either contain a crate::c_types::derived::C2Tuple_usizeTransactionZ or not
1725  */
1726 typedef enum LDKCOption_C2Tuple_usizeTransactionZZ_Tag {
1727    /**
1728     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains a crate::c_types::derived::C2Tuple_usizeTransactionZ
1729     */
1730    LDKCOption_C2Tuple_usizeTransactionZZ_Some,
1731    /**
1732     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains nothing
1733     */
1734    LDKCOption_C2Tuple_usizeTransactionZZ_None,
1735    /**
1736     * Must be last for serialization purposes
1737     */
1738    LDKCOption_C2Tuple_usizeTransactionZZ_Sentinel,
1739 } LDKCOption_C2Tuple_usizeTransactionZZ_Tag;
1740
1741 typedef struct LDKCOption_C2Tuple_usizeTransactionZZ {
1742    LDKCOption_C2Tuple_usizeTransactionZZ_Tag tag;
1743    union {
1744       struct {
1745          struct LDKC2Tuple_usizeTransactionZ some;
1746       };
1747    };
1748 } LDKCOption_C2Tuple_usizeTransactionZZ;
1749
1750
1751
1752 /**
1753  * Information about a spendable output to a P2WSH script. See
1754  * SpendableOutputDescriptor::DelayedPaymentOutput for more details on how to spend this.
1755  */
1756 typedef struct MUST_USE_STRUCT LDKDelayedPaymentOutputDescriptor {
1757    /**
1758     * A pointer to the opaque Rust object.
1759     * Nearly everywhere, inner must be non-null, however in places where
1760     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1761     */
1762    LDKnativeDelayedPaymentOutputDescriptor *inner;
1763    /**
1764     * Indicates that this is the only struct which contains the same pointer.
1765     * Rust functions which take ownership of an object provided via an argument require
1766     * this to be true and invalidate the object pointed to by inner.
1767     */
1768    bool is_owned;
1769 } LDKDelayedPaymentOutputDescriptor;
1770
1771
1772
1773 /**
1774  * Information about a spendable output to our \"payment key\". See
1775  * SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this.
1776  */
1777 typedef struct MUST_USE_STRUCT LDKStaticPaymentOutputDescriptor {
1778    /**
1779     * A pointer to the opaque Rust object.
1780     * Nearly everywhere, inner must be non-null, however in places where
1781     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1782     */
1783    LDKnativeStaticPaymentOutputDescriptor *inner;
1784    /**
1785     * Indicates that this is the only struct which contains the same pointer.
1786     * Rust functions which take ownership of an object provided via an argument require
1787     * this to be true and invalidate the object pointed to by inner.
1788     */
1789    bool is_owned;
1790 } LDKStaticPaymentOutputDescriptor;
1791
1792 /**
1793  * When on-chain outputs are created by rust-lightning (which our counterparty is not able to
1794  * claim at any point in the future) an event is generated which you must track and be able to
1795  * spend on-chain. The information needed to do this is provided in this enum, including the
1796  * outpoint describing which txid and output index is available, the full output which exists at
1797  * that txid/index, and any keys or other information required to sign.
1798  */
1799 typedef enum LDKSpendableOutputDescriptor_Tag {
1800    /**
1801     * An output to a script which was provided via KeysInterface directly, either from
1802     * `get_destination_script()` or `get_shutdown_pubkey()`, thus you should already know how to
1803     * spend it. No secret keys are provided as rust-lightning was never given any key.
1804     * These may include outputs from a transaction punishing our counterparty or claiming an HTLC
1805     * on-chain using the payment preimage or after it has timed out.
1806     */
1807    LDKSpendableOutputDescriptor_StaticOutput,
1808    /**
1809     * An output to a P2WSH script which can be spent with a single signature after a CSV delay.
1810     *
1811     * The witness in the spending input should be:
1812     * <BIP 143 signature> <empty vector> (MINIMALIF standard rule) <provided witnessScript>
1813     *
1814     * Note that the nSequence field in the spending input must be set to to_self_delay
1815     * (which means the transaction is not broadcastable until at least to_self_delay
1816     * blocks after the outpoint confirms).
1817     *
1818     * These are generally the result of a \"revocable\" output to us, spendable only by us unless
1819     * it is an output from an old state which we broadcast (which should never happen).
1820     *
1821     * To derive the delayed_payment key which is used to sign for this input, you must pass the
1822     * holder delayed_payment_base_key (ie the private key which corresponds to the pubkey in
1823     * Sign::pubkeys().delayed_payment_basepoint) and the provided per_commitment_point to
1824     * chan_utils::derive_private_key. The public key can be generated without the secret key
1825     * using chan_utils::derive_public_key and only the delayed_payment_basepoint which appears in
1826     * Sign::pubkeys().
1827     *
1828     * To derive the revocation_pubkey provided here (which is used in the witness
1829     * script generation), you must pass the counterparty revocation_basepoint (which appears in the
1830     * call to Sign::ready_channel) and the provided per_commitment point
1831     * to chan_utils::derive_public_revocation_key.
1832     *
1833     * The witness script which is hashed and included in the output script_pubkey may be
1834     * regenerated by passing the revocation_pubkey (derived as above), our delayed_payment pubkey
1835     * (derived as above), and the to_self_delay contained here to
1836     * chan_utils::get_revokeable_redeemscript.
1837     */
1838    LDKSpendableOutputDescriptor_DelayedPaymentOutput,
1839    /**
1840     * An output to a P2WPKH, spendable exclusively by our payment key (ie the private key which
1841     * corresponds to the public key in Sign::pubkeys().payment_point).
1842     * The witness in the spending input, is, thus, simply:
1843     * <BIP 143 signature> <payment key>
1844     *
1845     * These are generally the result of our counterparty having broadcast the current state,
1846     * allowing us to claim the non-HTLC-encumbered outputs immediately.
1847     */
1848    LDKSpendableOutputDescriptor_StaticPaymentOutput,
1849    /**
1850     * Must be last for serialization purposes
1851     */
1852    LDKSpendableOutputDescriptor_Sentinel,
1853 } LDKSpendableOutputDescriptor_Tag;
1854
1855 typedef struct LDKSpendableOutputDescriptor_LDKStaticOutput_Body {
1856    /**
1857     * The outpoint which is spendable
1858     */
1859    struct LDKOutPoint outpoint;
1860    /**
1861     * The output which is referenced by the given outpoint.
1862     */
1863    struct LDKTxOut output;
1864 } LDKSpendableOutputDescriptor_LDKStaticOutput_Body;
1865
1866 typedef struct MUST_USE_STRUCT LDKSpendableOutputDescriptor {
1867    LDKSpendableOutputDescriptor_Tag tag;
1868    union {
1869       LDKSpendableOutputDescriptor_LDKStaticOutput_Body static_output;
1870       struct {
1871          struct LDKDelayedPaymentOutputDescriptor delayed_payment_output;
1872       };
1873       struct {
1874          struct LDKStaticPaymentOutputDescriptor static_payment_output;
1875       };
1876    };
1877 } LDKSpendableOutputDescriptor;
1878
1879 /**
1880  * A dynamically-allocated array of crate::lightning::chain::keysinterface::SpendableOutputDescriptors of arbitrary size.
1881  * This corresponds to std::vector in C++
1882  */
1883 typedef struct LDKCVec_SpendableOutputDescriptorZ {
1884    /**
1885     * The elements in the array.
1886     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1887     */
1888    struct LDKSpendableOutputDescriptor *data;
1889    /**
1890     * The number of elements pointed to by `data`.
1891     */
1892    uintptr_t datalen;
1893 } LDKCVec_SpendableOutputDescriptorZ;
1894
1895
1896
1897 /**
1898  * An accept_channel message to be sent or received from a peer
1899  */
1900 typedef struct MUST_USE_STRUCT LDKAcceptChannel {
1901    /**
1902     * A pointer to the opaque Rust object.
1903     * Nearly everywhere, inner must be non-null, however in places where
1904     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1905     */
1906    LDKnativeAcceptChannel *inner;
1907    /**
1908     * Indicates that this is the only struct which contains the same pointer.
1909     * Rust functions which take ownership of an object provided via an argument require
1910     * this to be true and invalidate the object pointed to by inner.
1911     */
1912    bool is_owned;
1913 } LDKAcceptChannel;
1914
1915
1916
1917 /**
1918  * An open_channel message to be sent or received from a peer
1919  */
1920 typedef struct MUST_USE_STRUCT LDKOpenChannel {
1921    /**
1922     * A pointer to the opaque Rust object.
1923     * Nearly everywhere, inner must be non-null, however in places where
1924     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1925     */
1926    LDKnativeOpenChannel *inner;
1927    /**
1928     * Indicates that this is the only struct which contains the same pointer.
1929     * Rust functions which take ownership of an object provided via an argument require
1930     * this to be true and invalidate the object pointed to by inner.
1931     */
1932    bool is_owned;
1933 } LDKOpenChannel;
1934
1935
1936
1937 /**
1938  * A funding_created message to be sent or received from a peer
1939  */
1940 typedef struct MUST_USE_STRUCT LDKFundingCreated {
1941    /**
1942     * A pointer to the opaque Rust object.
1943     * Nearly everywhere, inner must be non-null, however in places where
1944     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1945     */
1946    LDKnativeFundingCreated *inner;
1947    /**
1948     * Indicates that this is the only struct which contains the same pointer.
1949     * Rust functions which take ownership of an object provided via an argument require
1950     * this to be true and invalidate the object pointed to by inner.
1951     */
1952    bool is_owned;
1953 } LDKFundingCreated;
1954
1955
1956
1957 /**
1958  * A funding_signed message to be sent or received from a peer
1959  */
1960 typedef struct MUST_USE_STRUCT LDKFundingSigned {
1961    /**
1962     * A pointer to the opaque Rust object.
1963     * Nearly everywhere, inner must be non-null, however in places where
1964     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1965     */
1966    LDKnativeFundingSigned *inner;
1967    /**
1968     * Indicates that this is the only struct which contains the same pointer.
1969     * Rust functions which take ownership of an object provided via an argument require
1970     * this to be true and invalidate the object pointed to by inner.
1971     */
1972    bool is_owned;
1973 } LDKFundingSigned;
1974
1975
1976
1977 /**
1978  * A funding_locked message to be sent or received from a peer
1979  */
1980 typedef struct MUST_USE_STRUCT LDKFundingLocked {
1981    /**
1982     * A pointer to the opaque Rust object.
1983     * Nearly everywhere, inner must be non-null, however in places where
1984     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1985     */
1986    LDKnativeFundingLocked *inner;
1987    /**
1988     * Indicates that this is the only struct which contains the same pointer.
1989     * Rust functions which take ownership of an object provided via an argument require
1990     * this to be true and invalidate the object pointed to by inner.
1991     */
1992    bool is_owned;
1993 } LDKFundingLocked;
1994
1995
1996
1997 /**
1998  * An announcement_signatures message to be sent or received from a peer
1999  */
2000 typedef struct MUST_USE_STRUCT LDKAnnouncementSignatures {
2001    /**
2002     * A pointer to the opaque Rust object.
2003     * Nearly everywhere, inner must be non-null, however in places where
2004     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2005     */
2006    LDKnativeAnnouncementSignatures *inner;
2007    /**
2008     * Indicates that this is the only struct which contains the same pointer.
2009     * Rust functions which take ownership of an object provided via an argument require
2010     * this to be true and invalidate the object pointed to by inner.
2011     */
2012    bool is_owned;
2013 } LDKAnnouncementSignatures;
2014
2015
2016
2017 /**
2018  * Struct used to return values from revoke_and_ack messages, containing a bunch of commitment
2019  * transaction updates if they were pending.
2020  */
2021 typedef struct MUST_USE_STRUCT LDKCommitmentUpdate {
2022    /**
2023     * A pointer to the opaque Rust object.
2024     * Nearly everywhere, inner must be non-null, however in places where
2025     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2026     */
2027    LDKnativeCommitmentUpdate *inner;
2028    /**
2029     * Indicates that this is the only struct which contains the same pointer.
2030     * Rust functions which take ownership of an object provided via an argument require
2031     * this to be true and invalidate the object pointed to by inner.
2032     */
2033    bool is_owned;
2034 } LDKCommitmentUpdate;
2035
2036
2037
2038 /**
2039  * A revoke_and_ack message to be sent or received from a peer
2040  */
2041 typedef struct MUST_USE_STRUCT LDKRevokeAndACK {
2042    /**
2043     * A pointer to the opaque Rust object.
2044     * Nearly everywhere, inner must be non-null, however in places where
2045     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2046     */
2047    LDKnativeRevokeAndACK *inner;
2048    /**
2049     * Indicates that this is the only struct which contains the same pointer.
2050     * Rust functions which take ownership of an object provided via an argument require
2051     * this to be true and invalidate the object pointed to by inner.
2052     */
2053    bool is_owned;
2054 } LDKRevokeAndACK;
2055
2056
2057
2058 /**
2059  * A closing_signed message to be sent or received from a peer
2060  */
2061 typedef struct MUST_USE_STRUCT LDKClosingSigned {
2062    /**
2063     * A pointer to the opaque Rust object.
2064     * Nearly everywhere, inner must be non-null, however in places where
2065     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2066     */
2067    LDKnativeClosingSigned *inner;
2068    /**
2069     * Indicates that this is the only struct which contains the same pointer.
2070     * Rust functions which take ownership of an object provided via an argument require
2071     * this to be true and invalidate the object pointed to by inner.
2072     */
2073    bool is_owned;
2074 } LDKClosingSigned;
2075
2076
2077
2078 /**
2079  * A shutdown message to be sent or received from a peer
2080  */
2081 typedef struct MUST_USE_STRUCT LDKShutdown {
2082    /**
2083     * A pointer to the opaque Rust object.
2084     * Nearly everywhere, inner must be non-null, however in places where
2085     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2086     */
2087    LDKnativeShutdown *inner;
2088    /**
2089     * Indicates that this is the only struct which contains the same pointer.
2090     * Rust functions which take ownership of an object provided via an argument require
2091     * this to be true and invalidate the object pointed to by inner.
2092     */
2093    bool is_owned;
2094 } LDKShutdown;
2095
2096
2097
2098 /**
2099  * A channel_reestablish message to be sent or received from a peer
2100  */
2101 typedef struct MUST_USE_STRUCT LDKChannelReestablish {
2102    /**
2103     * A pointer to the opaque Rust object.
2104     * Nearly everywhere, inner must be non-null, however in places where
2105     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2106     */
2107    LDKnativeChannelReestablish *inner;
2108    /**
2109     * Indicates that this is the only struct which contains the same pointer.
2110     * Rust functions which take ownership of an object provided via an argument require
2111     * this to be true and invalidate the object pointed to by inner.
2112     */
2113    bool is_owned;
2114 } LDKChannelReestablish;
2115
2116
2117
2118 /**
2119  * A channel_announcement message to be sent or received from a peer
2120  */
2121 typedef struct MUST_USE_STRUCT LDKChannelAnnouncement {
2122    /**
2123     * A pointer to the opaque Rust object.
2124     * Nearly everywhere, inner must be non-null, however in places where
2125     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2126     */
2127    LDKnativeChannelAnnouncement *inner;
2128    /**
2129     * Indicates that this is the only struct which contains the same pointer.
2130     * Rust functions which take ownership of an object provided via an argument require
2131     * this to be true and invalidate the object pointed to by inner.
2132     */
2133    bool is_owned;
2134 } LDKChannelAnnouncement;
2135
2136
2137
2138 /**
2139  * A channel_update message to be sent or received from a peer
2140  */
2141 typedef struct MUST_USE_STRUCT LDKChannelUpdate {
2142    /**
2143     * A pointer to the opaque Rust object.
2144     * Nearly everywhere, inner must be non-null, however in places where
2145     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2146     */
2147    LDKnativeChannelUpdate *inner;
2148    /**
2149     * Indicates that this is the only struct which contains the same pointer.
2150     * Rust functions which take ownership of an object provided via an argument require
2151     * this to be true and invalidate the object pointed to by inner.
2152     */
2153    bool is_owned;
2154 } LDKChannelUpdate;
2155
2156
2157
2158 /**
2159  * A node_announcement message to be sent or received from a peer
2160  */
2161 typedef struct MUST_USE_STRUCT LDKNodeAnnouncement {
2162    /**
2163     * A pointer to the opaque Rust object.
2164     * Nearly everywhere, inner must be non-null, however in places where
2165     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2166     */
2167    LDKnativeNodeAnnouncement *inner;
2168    /**
2169     * Indicates that this is the only struct which contains the same pointer.
2170     * Rust functions which take ownership of an object provided via an argument require
2171     * this to be true and invalidate the object pointed to by inner.
2172     */
2173    bool is_owned;
2174 } LDKNodeAnnouncement;
2175
2176
2177
2178 /**
2179  * An error message to be sent or received from a peer
2180  */
2181 typedef struct MUST_USE_STRUCT LDKErrorMessage {
2182    /**
2183     * A pointer to the opaque Rust object.
2184     * Nearly everywhere, inner must be non-null, however in places where
2185     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2186     */
2187    LDKnativeErrorMessage *inner;
2188    /**
2189     * Indicates that this is the only struct which contains the same pointer.
2190     * Rust functions which take ownership of an object provided via an argument require
2191     * this to be true and invalidate the object pointed to by inner.
2192     */
2193    bool is_owned;
2194 } LDKErrorMessage;
2195
2196 /**
2197  * Used to put an error message in a LightningError
2198  */
2199 typedef enum LDKErrorAction_Tag {
2200    /**
2201     * The peer took some action which made us think they were useless. Disconnect them.
2202     */
2203    LDKErrorAction_DisconnectPeer,
2204    /**
2205     * The peer did something harmless that we weren't able to process, just log and ignore
2206     */
2207    LDKErrorAction_IgnoreError,
2208    /**
2209     * The peer did something harmless that we weren't able to meaningfully process.
2210     * If the error is logged, log it at the given level.
2211     */
2212    LDKErrorAction_IgnoreAndLog,
2213    /**
2214     * The peer did something incorrect. Tell them.
2215     */
2216    LDKErrorAction_SendErrorMessage,
2217    /**
2218     * Must be last for serialization purposes
2219     */
2220    LDKErrorAction_Sentinel,
2221 } LDKErrorAction_Tag;
2222
2223 typedef struct LDKErrorAction_LDKDisconnectPeer_Body {
2224    /**
2225     * An error message which we should make an effort to send before we disconnect.
2226     *
2227     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2228     */
2229    struct LDKErrorMessage msg;
2230 } LDKErrorAction_LDKDisconnectPeer_Body;
2231
2232 typedef struct LDKErrorAction_LDKSendErrorMessage_Body {
2233    /**
2234     * The message to send.
2235     */
2236    struct LDKErrorMessage msg;
2237 } LDKErrorAction_LDKSendErrorMessage_Body;
2238
2239 typedef struct MUST_USE_STRUCT LDKErrorAction {
2240    LDKErrorAction_Tag tag;
2241    union {
2242       LDKErrorAction_LDKDisconnectPeer_Body disconnect_peer;
2243       struct {
2244          enum LDKLevel ignore_and_log;
2245       };
2246       LDKErrorAction_LDKSendErrorMessage_Body send_error_message;
2247    };
2248 } LDKErrorAction;
2249
2250 /**
2251  * The information we received from a peer along the route of a payment we originated. This is
2252  * returned by ChannelMessageHandler::handle_update_fail_htlc to be passed into
2253  * RoutingMessageHandler::handle_htlc_fail_channel_update to update our network map.
2254  */
2255 typedef enum LDKHTLCFailChannelUpdate_Tag {
2256    /**
2257     * We received an error which included a full ChannelUpdate message.
2258     */
2259    LDKHTLCFailChannelUpdate_ChannelUpdateMessage,
2260    /**
2261     * We received an error which indicated only that a channel has been closed
2262     */
2263    LDKHTLCFailChannelUpdate_ChannelClosed,
2264    /**
2265     * We received an error which indicated only that a node has failed
2266     */
2267    LDKHTLCFailChannelUpdate_NodeFailure,
2268    /**
2269     * Must be last for serialization purposes
2270     */
2271    LDKHTLCFailChannelUpdate_Sentinel,
2272 } LDKHTLCFailChannelUpdate_Tag;
2273
2274 typedef struct LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body {
2275    /**
2276     * The unwrapped message we received
2277     */
2278    struct LDKChannelUpdate msg;
2279 } LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body;
2280
2281 typedef struct LDKHTLCFailChannelUpdate_LDKChannelClosed_Body {
2282    /**
2283     * The short_channel_id which has now closed.
2284     */
2285    uint64_t short_channel_id;
2286    /**
2287     * when this true, this channel should be permanently removed from the
2288     * consideration. Otherwise, this channel can be restored as new channel_update is received
2289     */
2290    bool is_permanent;
2291 } LDKHTLCFailChannelUpdate_LDKChannelClosed_Body;
2292
2293 typedef struct LDKHTLCFailChannelUpdate_LDKNodeFailure_Body {
2294    /**
2295     * The node_id that has failed.
2296     */
2297    struct LDKPublicKey node_id;
2298    /**
2299     * when this true, node should be permanently removed from the
2300     * consideration. Otherwise, the channels connected to this node can be
2301     * restored as new channel_update is received
2302     */
2303    bool is_permanent;
2304 } LDKHTLCFailChannelUpdate_LDKNodeFailure_Body;
2305
2306 typedef struct MUST_USE_STRUCT LDKHTLCFailChannelUpdate {
2307    LDKHTLCFailChannelUpdate_Tag tag;
2308    union {
2309       LDKHTLCFailChannelUpdate_LDKChannelUpdateMessage_Body channel_update_message;
2310       LDKHTLCFailChannelUpdate_LDKChannelClosed_Body channel_closed;
2311       LDKHTLCFailChannelUpdate_LDKNodeFailure_Body node_failure;
2312    };
2313 } LDKHTLCFailChannelUpdate;
2314
2315
2316
2317 /**
2318  * A query_channel_range message is used to query a peer for channel
2319  * UTXOs in a range of blocks. The recipient of a query makes a best
2320  * effort to reply to the query using one or more reply_channel_range
2321  * messages.
2322  */
2323 typedef struct MUST_USE_STRUCT LDKQueryChannelRange {
2324    /**
2325     * A pointer to the opaque Rust object.
2326     * Nearly everywhere, inner must be non-null, however in places where
2327     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2328     */
2329    LDKnativeQueryChannelRange *inner;
2330    /**
2331     * Indicates that this is the only struct which contains the same pointer.
2332     * Rust functions which take ownership of an object provided via an argument require
2333     * this to be true and invalidate the object pointed to by inner.
2334     */
2335    bool is_owned;
2336 } LDKQueryChannelRange;
2337
2338
2339
2340 /**
2341  * A query_short_channel_ids message is used to query a peer for
2342  * routing gossip messages related to one or more short_channel_ids.
2343  * The query recipient will reply with the latest, if available,
2344  * channel_announcement, channel_update and node_announcement messages
2345  * it maintains for the requested short_channel_ids followed by a
2346  * reply_short_channel_ids_end message. The short_channel_ids sent in
2347  * this query are encoded. We only support encoding_type=0 uncompressed
2348  * serialization and do not support encoding_type=1 zlib serialization.
2349  */
2350 typedef struct MUST_USE_STRUCT LDKQueryShortChannelIds {
2351    /**
2352     * A pointer to the opaque Rust object.
2353     * Nearly everywhere, inner must be non-null, however in places where
2354     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2355     */
2356    LDKnativeQueryShortChannelIds *inner;
2357    /**
2358     * Indicates that this is the only struct which contains the same pointer.
2359     * Rust functions which take ownership of an object provided via an argument require
2360     * this to be true and invalidate the object pointed to by inner.
2361     */
2362    bool is_owned;
2363 } LDKQueryShortChannelIds;
2364
2365
2366
2367 /**
2368  * A reply_channel_range message is a reply to a query_channel_range
2369  * message. Multiple reply_channel_range messages can be sent in reply
2370  * to a single query_channel_range message. The query recipient makes a
2371  * best effort to respond based on their local network view which may
2372  * not be a perfect view of the network. The short_channel_ids in the
2373  * reply are encoded. We only support encoding_type=0 uncompressed
2374  * serialization and do not support encoding_type=1 zlib serialization.
2375  */
2376 typedef struct MUST_USE_STRUCT LDKReplyChannelRange {
2377    /**
2378     * A pointer to the opaque Rust object.
2379     * Nearly everywhere, inner must be non-null, however in places where
2380     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2381     */
2382    LDKnativeReplyChannelRange *inner;
2383    /**
2384     * Indicates that this is the only struct which contains the same pointer.
2385     * Rust functions which take ownership of an object provided via an argument require
2386     * this to be true and invalidate the object pointed to by inner.
2387     */
2388    bool is_owned;
2389 } LDKReplyChannelRange;
2390
2391 /**
2392  * An event generated by ChannelManager which indicates a message should be sent to a peer (or
2393  * broadcast to most peers).
2394  * These events are handled by PeerManager::process_events if you are using a PeerManager.
2395  */
2396 typedef enum LDKMessageSendEvent_Tag {
2397    /**
2398     * Used to indicate that we've accepted a channel open and should send the accept_channel
2399     * message provided to the given peer.
2400     */
2401    LDKMessageSendEvent_SendAcceptChannel,
2402    /**
2403     * Used to indicate that we've initiated a channel open and should send the open_channel
2404     * message provided to the given peer.
2405     */
2406    LDKMessageSendEvent_SendOpenChannel,
2407    /**
2408     * Used to indicate that a funding_created message should be sent to the peer with the given node_id.
2409     */
2410    LDKMessageSendEvent_SendFundingCreated,
2411    /**
2412     * Used to indicate that a funding_signed message should be sent to the peer with the given node_id.
2413     */
2414    LDKMessageSendEvent_SendFundingSigned,
2415    /**
2416     * Used to indicate that a funding_locked message should be sent to the peer with the given node_id.
2417     */
2418    LDKMessageSendEvent_SendFundingLocked,
2419    /**
2420     * Used to indicate that an announcement_signatures message should be sent to the peer with the given node_id.
2421     */
2422    LDKMessageSendEvent_SendAnnouncementSignatures,
2423    /**
2424     * Used to indicate that a series of HTLC update messages, as well as a commitment_signed
2425     * message should be sent to the peer with the given node_id.
2426     */
2427    LDKMessageSendEvent_UpdateHTLCs,
2428    /**
2429     * Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
2430     */
2431    LDKMessageSendEvent_SendRevokeAndACK,
2432    /**
2433     * Used to indicate that a closing_signed message should be sent to the peer with the given node_id.
2434     */
2435    LDKMessageSendEvent_SendClosingSigned,
2436    /**
2437     * Used to indicate that a shutdown message should be sent to the peer with the given node_id.
2438     */
2439    LDKMessageSendEvent_SendShutdown,
2440    /**
2441     * Used to indicate that a channel_reestablish message should be sent to the peer with the given node_id.
2442     */
2443    LDKMessageSendEvent_SendChannelReestablish,
2444    /**
2445     * Used to indicate that a channel_announcement and channel_update should be broadcast to all
2446     * peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
2447     *
2448     * Note that after doing so, you very likely (unless you did so very recently) want to call
2449     * ChannelManager::broadcast_node_announcement to trigger a BroadcastNodeAnnouncement event.
2450     * This ensures that any nodes which see our channel_announcement also have a relevant
2451     * node_announcement, including relevant feature flags which may be important for routing
2452     * through or to us.
2453     */
2454    LDKMessageSendEvent_BroadcastChannelAnnouncement,
2455    /**
2456     * Used to indicate that a node_announcement should be broadcast to all peers.
2457     */
2458    LDKMessageSendEvent_BroadcastNodeAnnouncement,
2459    /**
2460     * Used to indicate that a channel_update should be broadcast to all peers.
2461     */
2462    LDKMessageSendEvent_BroadcastChannelUpdate,
2463    /**
2464     * Used to indicate that a channel_update should be sent to a single peer.
2465     * In contrast to [`Self::BroadcastChannelUpdate`], this is used when the channel is a
2466     * private channel and we shouldn't be informing all of our peers of channel parameters.
2467     */
2468    LDKMessageSendEvent_SendChannelUpdate,
2469    /**
2470     * Broadcast an error downstream to be handled
2471     */
2472    LDKMessageSendEvent_HandleError,
2473    /**
2474     * When a payment fails we may receive updates back from the hop where it failed. In such
2475     * cases this event is generated so that we can inform the network graph of this information.
2476     */
2477    LDKMessageSendEvent_PaymentFailureNetworkUpdate,
2478    /**
2479     * Query a peer for channels with funding transaction UTXOs in a block range.
2480     */
2481    LDKMessageSendEvent_SendChannelRangeQuery,
2482    /**
2483     * Request routing gossip messages from a peer for a list of channels identified by
2484     * their short_channel_ids.
2485     */
2486    LDKMessageSendEvent_SendShortIdsQuery,
2487    /**
2488     * Sends a reply to a channel range query. This may be one of several SendReplyChannelRange events
2489     * emitted during processing of the query.
2490     */
2491    LDKMessageSendEvent_SendReplyChannelRange,
2492    /**
2493     * Must be last for serialization purposes
2494     */
2495    LDKMessageSendEvent_Sentinel,
2496 } LDKMessageSendEvent_Tag;
2497
2498 typedef struct LDKMessageSendEvent_LDKSendAcceptChannel_Body {
2499    /**
2500     * The node_id of the node which should receive this message
2501     */
2502    struct LDKPublicKey node_id;
2503    /**
2504     * The message which should be sent.
2505     */
2506    struct LDKAcceptChannel msg;
2507 } LDKMessageSendEvent_LDKSendAcceptChannel_Body;
2508
2509 typedef struct LDKMessageSendEvent_LDKSendOpenChannel_Body {
2510    /**
2511     * The node_id of the node which should receive this message
2512     */
2513    struct LDKPublicKey node_id;
2514    /**
2515     * The message which should be sent.
2516     */
2517    struct LDKOpenChannel msg;
2518 } LDKMessageSendEvent_LDKSendOpenChannel_Body;
2519
2520 typedef struct LDKMessageSendEvent_LDKSendFundingCreated_Body {
2521    /**
2522     * The node_id of the node which should receive this message
2523     */
2524    struct LDKPublicKey node_id;
2525    /**
2526     * The message which should be sent.
2527     */
2528    struct LDKFundingCreated msg;
2529 } LDKMessageSendEvent_LDKSendFundingCreated_Body;
2530
2531 typedef struct LDKMessageSendEvent_LDKSendFundingSigned_Body {
2532    /**
2533     * The node_id of the node which should receive this message
2534     */
2535    struct LDKPublicKey node_id;
2536    /**
2537     * The message which should be sent.
2538     */
2539    struct LDKFundingSigned msg;
2540 } LDKMessageSendEvent_LDKSendFundingSigned_Body;
2541
2542 typedef struct LDKMessageSendEvent_LDKSendFundingLocked_Body {
2543    /**
2544     * The node_id of the node which should receive these message(s)
2545     */
2546    struct LDKPublicKey node_id;
2547    /**
2548     * The funding_locked message which should be sent.
2549     */
2550    struct LDKFundingLocked msg;
2551 } LDKMessageSendEvent_LDKSendFundingLocked_Body;
2552
2553 typedef struct LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body {
2554    /**
2555     * The node_id of the node which should receive these message(s)
2556     */
2557    struct LDKPublicKey node_id;
2558    /**
2559     * The announcement_signatures message which should be sent.
2560     */
2561    struct LDKAnnouncementSignatures msg;
2562 } LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body;
2563
2564 typedef struct LDKMessageSendEvent_LDKUpdateHTLCs_Body {
2565    /**
2566     * The node_id of the node which should receive these message(s)
2567     */
2568    struct LDKPublicKey node_id;
2569    /**
2570     * The update messages which should be sent. ALL messages in the struct should be sent!
2571     */
2572    struct LDKCommitmentUpdate updates;
2573 } LDKMessageSendEvent_LDKUpdateHTLCs_Body;
2574
2575 typedef struct LDKMessageSendEvent_LDKSendRevokeAndACK_Body {
2576    /**
2577     * The node_id of the node which should receive this message
2578     */
2579    struct LDKPublicKey node_id;
2580    /**
2581     * The message which should be sent.
2582     */
2583    struct LDKRevokeAndACK msg;
2584 } LDKMessageSendEvent_LDKSendRevokeAndACK_Body;
2585
2586 typedef struct LDKMessageSendEvent_LDKSendClosingSigned_Body {
2587    /**
2588     * The node_id of the node which should receive this message
2589     */
2590    struct LDKPublicKey node_id;
2591    /**
2592     * The message which should be sent.
2593     */
2594    struct LDKClosingSigned msg;
2595 } LDKMessageSendEvent_LDKSendClosingSigned_Body;
2596
2597 typedef struct LDKMessageSendEvent_LDKSendShutdown_Body {
2598    /**
2599     * The node_id of the node which should receive this message
2600     */
2601    struct LDKPublicKey node_id;
2602    /**
2603     * The message which should be sent.
2604     */
2605    struct LDKShutdown msg;
2606 } LDKMessageSendEvent_LDKSendShutdown_Body;
2607
2608 typedef struct LDKMessageSendEvent_LDKSendChannelReestablish_Body {
2609    /**
2610     * The node_id of the node which should receive this message
2611     */
2612    struct LDKPublicKey node_id;
2613    /**
2614     * The message which should be sent.
2615     */
2616    struct LDKChannelReestablish msg;
2617 } LDKMessageSendEvent_LDKSendChannelReestablish_Body;
2618
2619 typedef struct LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body {
2620    /**
2621     * The channel_announcement which should be sent.
2622     */
2623    struct LDKChannelAnnouncement msg;
2624    /**
2625     * The followup channel_update which should be sent.
2626     */
2627    struct LDKChannelUpdate update_msg;
2628 } LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body;
2629
2630 typedef struct LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body {
2631    /**
2632     * The node_announcement which should be sent.
2633     */
2634    struct LDKNodeAnnouncement msg;
2635 } LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body;
2636
2637 typedef struct LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body {
2638    /**
2639     * The channel_update which should be sent.
2640     */
2641    struct LDKChannelUpdate msg;
2642 } LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body;
2643
2644 typedef struct LDKMessageSendEvent_LDKSendChannelUpdate_Body {
2645    /**
2646     * The node_id of the node which should receive this message
2647     */
2648    struct LDKPublicKey node_id;
2649    /**
2650     * The channel_update which should be sent.
2651     */
2652    struct LDKChannelUpdate msg;
2653 } LDKMessageSendEvent_LDKSendChannelUpdate_Body;
2654
2655 typedef struct LDKMessageSendEvent_LDKHandleError_Body {
2656    /**
2657     * The node_id of the node which should receive this message
2658     */
2659    struct LDKPublicKey node_id;
2660    /**
2661     * The action which should be taken.
2662     */
2663    struct LDKErrorAction action;
2664 } LDKMessageSendEvent_LDKHandleError_Body;
2665
2666 typedef struct LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body {
2667    /**
2668     * The channel/node update which should be sent to NetGraphMsgHandler
2669     */
2670    struct LDKHTLCFailChannelUpdate update;
2671 } LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body;
2672
2673 typedef struct LDKMessageSendEvent_LDKSendChannelRangeQuery_Body {
2674    /**
2675     * The node_id of this message recipient
2676     */
2677    struct LDKPublicKey node_id;
2678    /**
2679     * The query_channel_range which should be sent.
2680     */
2681    struct LDKQueryChannelRange msg;
2682 } LDKMessageSendEvent_LDKSendChannelRangeQuery_Body;
2683
2684 typedef struct LDKMessageSendEvent_LDKSendShortIdsQuery_Body {
2685    /**
2686     * The node_id of this message recipient
2687     */
2688    struct LDKPublicKey node_id;
2689    /**
2690     * The query_short_channel_ids which should be sent.
2691     */
2692    struct LDKQueryShortChannelIds msg;
2693 } LDKMessageSendEvent_LDKSendShortIdsQuery_Body;
2694
2695 typedef struct LDKMessageSendEvent_LDKSendReplyChannelRange_Body {
2696    /**
2697     * The node_id of this message recipient
2698     */
2699    struct LDKPublicKey node_id;
2700    /**
2701     * The reply_channel_range which should be sent.
2702     */
2703    struct LDKReplyChannelRange msg;
2704 } LDKMessageSendEvent_LDKSendReplyChannelRange_Body;
2705
2706 typedef struct MUST_USE_STRUCT LDKMessageSendEvent {
2707    LDKMessageSendEvent_Tag tag;
2708    union {
2709       LDKMessageSendEvent_LDKSendAcceptChannel_Body send_accept_channel;
2710       LDKMessageSendEvent_LDKSendOpenChannel_Body send_open_channel;
2711       LDKMessageSendEvent_LDKSendFundingCreated_Body send_funding_created;
2712       LDKMessageSendEvent_LDKSendFundingSigned_Body send_funding_signed;
2713       LDKMessageSendEvent_LDKSendFundingLocked_Body send_funding_locked;
2714       LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body send_announcement_signatures;
2715       LDKMessageSendEvent_LDKUpdateHTLCs_Body update_htl_cs;
2716       LDKMessageSendEvent_LDKSendRevokeAndACK_Body send_revoke_and_ack;
2717       LDKMessageSendEvent_LDKSendClosingSigned_Body send_closing_signed;
2718       LDKMessageSendEvent_LDKSendShutdown_Body send_shutdown;
2719       LDKMessageSendEvent_LDKSendChannelReestablish_Body send_channel_reestablish;
2720       LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body broadcast_channel_announcement;
2721       LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body broadcast_node_announcement;
2722       LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body broadcast_channel_update;
2723       LDKMessageSendEvent_LDKSendChannelUpdate_Body send_channel_update;
2724       LDKMessageSendEvent_LDKHandleError_Body handle_error;
2725       LDKMessageSendEvent_LDKPaymentFailureNetworkUpdate_Body payment_failure_network_update;
2726       LDKMessageSendEvent_LDKSendChannelRangeQuery_Body send_channel_range_query;
2727       LDKMessageSendEvent_LDKSendShortIdsQuery_Body send_short_ids_query;
2728       LDKMessageSendEvent_LDKSendReplyChannelRange_Body send_reply_channel_range;
2729    };
2730 } LDKMessageSendEvent;
2731
2732 /**
2733  * A dynamically-allocated array of crate::lightning::util::events::MessageSendEvents of arbitrary size.
2734  * This corresponds to std::vector in C++
2735  */
2736 typedef struct LDKCVec_MessageSendEventZ {
2737    /**
2738     * The elements in the array.
2739     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2740     */
2741    struct LDKMessageSendEvent *data;
2742    /**
2743     * The number of elements pointed to by `data`.
2744     */
2745    uintptr_t datalen;
2746 } LDKCVec_MessageSendEventZ;
2747
2748
2749
2750 /**
2751  * Features used within an `init` message.
2752  */
2753 typedef struct MUST_USE_STRUCT LDKInitFeatures {
2754    /**
2755     * A pointer to the opaque Rust object.
2756     * Nearly everywhere, inner must be non-null, however in places where
2757     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2758     */
2759    LDKnativeInitFeatures *inner;
2760    /**
2761     * Indicates that this is the only struct which contains the same pointer.
2762     * Rust functions which take ownership of an object provided via an argument require
2763     * this to be true and invalidate the object pointed to by inner.
2764     */
2765    bool is_owned;
2766 } LDKInitFeatures;
2767
2768 /**
2769  * The contents of CResult_InitFeaturesDecodeErrorZ
2770  */
2771 typedef union LDKCResult_InitFeaturesDecodeErrorZPtr {
2772    /**
2773     * A pointer to the contents in the success state.
2774     * Reading from this pointer when `result_ok` is not set is undefined.
2775     */
2776    struct LDKInitFeatures *result;
2777    /**
2778     * A pointer to the contents in the error state.
2779     * Reading from this pointer when `result_ok` is set is undefined.
2780     */
2781    struct LDKDecodeError *err;
2782 } LDKCResult_InitFeaturesDecodeErrorZPtr;
2783
2784 /**
2785  * A CResult_InitFeaturesDecodeErrorZ represents the result of a fallible operation,
2786  * containing a crate::lightning::ln::features::InitFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
2787  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2788  */
2789 typedef struct LDKCResult_InitFeaturesDecodeErrorZ {
2790    /**
2791     * The contents of this CResult_InitFeaturesDecodeErrorZ, accessible via either
2792     * `err` or `result` depending on the state of `result_ok`.
2793     */
2794    union LDKCResult_InitFeaturesDecodeErrorZPtr contents;
2795    /**
2796     * Whether this CResult_InitFeaturesDecodeErrorZ represents a success state.
2797     */
2798    bool result_ok;
2799 } LDKCResult_InitFeaturesDecodeErrorZ;
2800
2801
2802
2803 /**
2804  * Features used within a `node_announcement` message.
2805  */
2806 typedef struct MUST_USE_STRUCT LDKNodeFeatures {
2807    /**
2808     * A pointer to the opaque Rust object.
2809     * Nearly everywhere, inner must be non-null, however in places where
2810     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2811     */
2812    LDKnativeNodeFeatures *inner;
2813    /**
2814     * Indicates that this is the only struct which contains the same pointer.
2815     * Rust functions which take ownership of an object provided via an argument require
2816     * this to be true and invalidate the object pointed to by inner.
2817     */
2818    bool is_owned;
2819 } LDKNodeFeatures;
2820
2821 /**
2822  * The contents of CResult_NodeFeaturesDecodeErrorZ
2823  */
2824 typedef union LDKCResult_NodeFeaturesDecodeErrorZPtr {
2825    /**
2826     * A pointer to the contents in the success state.
2827     * Reading from this pointer when `result_ok` is not set is undefined.
2828     */
2829    struct LDKNodeFeatures *result;
2830    /**
2831     * A pointer to the contents in the error state.
2832     * Reading from this pointer when `result_ok` is set is undefined.
2833     */
2834    struct LDKDecodeError *err;
2835 } LDKCResult_NodeFeaturesDecodeErrorZPtr;
2836
2837 /**
2838  * A CResult_NodeFeaturesDecodeErrorZ represents the result of a fallible operation,
2839  * containing a crate::lightning::ln::features::NodeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
2840  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2841  */
2842 typedef struct LDKCResult_NodeFeaturesDecodeErrorZ {
2843    /**
2844     * The contents of this CResult_NodeFeaturesDecodeErrorZ, accessible via either
2845     * `err` or `result` depending on the state of `result_ok`.
2846     */
2847    union LDKCResult_NodeFeaturesDecodeErrorZPtr contents;
2848    /**
2849     * Whether this CResult_NodeFeaturesDecodeErrorZ represents a success state.
2850     */
2851    bool result_ok;
2852 } LDKCResult_NodeFeaturesDecodeErrorZ;
2853
2854
2855
2856 /**
2857  * Features used within a `channel_announcement` message.
2858  */
2859 typedef struct MUST_USE_STRUCT LDKChannelFeatures {
2860    /**
2861     * A pointer to the opaque Rust object.
2862     * Nearly everywhere, inner must be non-null, however in places where
2863     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2864     */
2865    LDKnativeChannelFeatures *inner;
2866    /**
2867     * Indicates that this is the only struct which contains the same pointer.
2868     * Rust functions which take ownership of an object provided via an argument require
2869     * this to be true and invalidate the object pointed to by inner.
2870     */
2871    bool is_owned;
2872 } LDKChannelFeatures;
2873
2874 /**
2875  * The contents of CResult_ChannelFeaturesDecodeErrorZ
2876  */
2877 typedef union LDKCResult_ChannelFeaturesDecodeErrorZPtr {
2878    /**
2879     * A pointer to the contents in the success state.
2880     * Reading from this pointer when `result_ok` is not set is undefined.
2881     */
2882    struct LDKChannelFeatures *result;
2883    /**
2884     * A pointer to the contents in the error state.
2885     * Reading from this pointer when `result_ok` is set is undefined.
2886     */
2887    struct LDKDecodeError *err;
2888 } LDKCResult_ChannelFeaturesDecodeErrorZPtr;
2889
2890 /**
2891  * A CResult_ChannelFeaturesDecodeErrorZ represents the result of a fallible operation,
2892  * containing a crate::lightning::ln::features::ChannelFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
2893  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2894  */
2895 typedef struct LDKCResult_ChannelFeaturesDecodeErrorZ {
2896    /**
2897     * The contents of this CResult_ChannelFeaturesDecodeErrorZ, accessible via either
2898     * `err` or `result` depending on the state of `result_ok`.
2899     */
2900    union LDKCResult_ChannelFeaturesDecodeErrorZPtr contents;
2901    /**
2902     * Whether this CResult_ChannelFeaturesDecodeErrorZ represents a success state.
2903     */
2904    bool result_ok;
2905 } LDKCResult_ChannelFeaturesDecodeErrorZ;
2906
2907
2908
2909 /**
2910  * Features used within an invoice.
2911  */
2912 typedef struct MUST_USE_STRUCT LDKInvoiceFeatures {
2913    /**
2914     * A pointer to the opaque Rust object.
2915     * Nearly everywhere, inner must be non-null, however in places where
2916     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2917     */
2918    LDKnativeInvoiceFeatures *inner;
2919    /**
2920     * Indicates that this is the only struct which contains the same pointer.
2921     * Rust functions which take ownership of an object provided via an argument require
2922     * this to be true and invalidate the object pointed to by inner.
2923     */
2924    bool is_owned;
2925 } LDKInvoiceFeatures;
2926
2927 /**
2928  * The contents of CResult_InvoiceFeaturesDecodeErrorZ
2929  */
2930 typedef union LDKCResult_InvoiceFeaturesDecodeErrorZPtr {
2931    /**
2932     * A pointer to the contents in the success state.
2933     * Reading from this pointer when `result_ok` is not set is undefined.
2934     */
2935    struct LDKInvoiceFeatures *result;
2936    /**
2937     * A pointer to the contents in the error state.
2938     * Reading from this pointer when `result_ok` is set is undefined.
2939     */
2940    struct LDKDecodeError *err;
2941 } LDKCResult_InvoiceFeaturesDecodeErrorZPtr;
2942
2943 /**
2944  * A CResult_InvoiceFeaturesDecodeErrorZ represents the result of a fallible operation,
2945  * containing a crate::lightning::ln::features::InvoiceFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
2946  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2947  */
2948 typedef struct LDKCResult_InvoiceFeaturesDecodeErrorZ {
2949    /**
2950     * The contents of this CResult_InvoiceFeaturesDecodeErrorZ, accessible via either
2951     * `err` or `result` depending on the state of `result_ok`.
2952     */
2953    union LDKCResult_InvoiceFeaturesDecodeErrorZPtr contents;
2954    /**
2955     * Whether this CResult_InvoiceFeaturesDecodeErrorZ represents a success state.
2956     */
2957    bool result_ok;
2958 } LDKCResult_InvoiceFeaturesDecodeErrorZ;
2959
2960 /**
2961  * The contents of CResult_DelayedPaymentOutputDescriptorDecodeErrorZ
2962  */
2963 typedef union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr {
2964    /**
2965     * A pointer to the contents in the success state.
2966     * Reading from this pointer when `result_ok` is not set is undefined.
2967     */
2968    struct LDKDelayedPaymentOutputDescriptor *result;
2969    /**
2970     * A pointer to the contents in the error state.
2971     * Reading from this pointer when `result_ok` is set is undefined.
2972     */
2973    struct LDKDecodeError *err;
2974 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr;
2975
2976 /**
2977  * A CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
2978  * containing a crate::lightning::chain::keysinterface::DelayedPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
2979  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2980  */
2981 typedef struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
2982    /**
2983     * The contents of this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ, accessible via either
2984     * `err` or `result` depending on the state of `result_ok`.
2985     */
2986    union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr contents;
2987    /**
2988     * Whether this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents a success state.
2989     */
2990    bool result_ok;
2991 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
2992
2993 /**
2994  * The contents of CResult_StaticPaymentOutputDescriptorDecodeErrorZ
2995  */
2996 typedef union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr {
2997    /**
2998     * A pointer to the contents in the success state.
2999     * Reading from this pointer when `result_ok` is not set is undefined.
3000     */
3001    struct LDKStaticPaymentOutputDescriptor *result;
3002    /**
3003     * A pointer to the contents in the error state.
3004     * Reading from this pointer when `result_ok` is set is undefined.
3005     */
3006    struct LDKDecodeError *err;
3007 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr;
3008
3009 /**
3010  * A CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
3011  * containing a crate::lightning::chain::keysinterface::StaticPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
3012  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3013  */
3014 typedef struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ {
3015    /**
3016     * The contents of this CResult_StaticPaymentOutputDescriptorDecodeErrorZ, accessible via either
3017     * `err` or `result` depending on the state of `result_ok`.
3018     */
3019    union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr contents;
3020    /**
3021     * Whether this CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents a success state.
3022     */
3023    bool result_ok;
3024 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ;
3025
3026 /**
3027  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
3028  */
3029 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
3030    /**
3031     * A pointer to the contents in the success state.
3032     * Reading from this pointer when `result_ok` is not set is undefined.
3033     */
3034    struct LDKSpendableOutputDescriptor *result;
3035    /**
3036     * A pointer to the contents in the error state.
3037     * Reading from this pointer when `result_ok` is set is undefined.
3038     */
3039    struct LDKDecodeError *err;
3040 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
3041
3042 /**
3043  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
3044  * containing a crate::lightning::chain::keysinterface::SpendableOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
3045  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3046  */
3047 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
3048    /**
3049     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
3050     * `err` or `result` depending on the state of `result_ok`.
3051     */
3052    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
3053    /**
3054     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
3055     */
3056    bool result_ok;
3057 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
3058
3059 /**
3060  * A tuple of 2 elements. See the individual fields for the types contained.
3061  */
3062 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
3063    /**
3064     * The element at position 0
3065     */
3066    struct LDKSignature a;
3067    /**
3068     * The element at position 1
3069     */
3070    struct LDKCVec_SignatureZ b;
3071 } LDKC2Tuple_SignatureCVec_SignatureZZ;
3072
3073 /**
3074  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
3075  */
3076 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
3077    /**
3078     * A pointer to the contents in the success state.
3079     * Reading from this pointer when `result_ok` is not set is undefined.
3080     */
3081    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
3082    /**
3083     * Note that this value is always NULL, as there are no contents in the Err variant
3084     */
3085    void *err;
3086 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
3087
3088 /**
3089  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
3090  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
3091  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3092  */
3093 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
3094    /**
3095     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
3096     * `err` or `result` depending on the state of `result_ok`.
3097     */
3098    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
3099    /**
3100     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
3101     */
3102    bool result_ok;
3103 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
3104
3105 /**
3106  * The contents of CResult_SignatureNoneZ
3107  */
3108 typedef union LDKCResult_SignatureNoneZPtr {
3109    /**
3110     * A pointer to the contents in the success state.
3111     * Reading from this pointer when `result_ok` is not set is undefined.
3112     */
3113    struct LDKSignature *result;
3114    /**
3115     * Note that this value is always NULL, as there are no contents in the Err variant
3116     */
3117    void *err;
3118 } LDKCResult_SignatureNoneZPtr;
3119
3120 /**
3121  * A CResult_SignatureNoneZ represents the result of a fallible operation,
3122  * containing a crate::c_types::Signature on success and a () on failure.
3123  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3124  */
3125 typedef struct LDKCResult_SignatureNoneZ {
3126    /**
3127     * The contents of this CResult_SignatureNoneZ, accessible via either
3128     * `err` or `result` depending on the state of `result_ok`.
3129     */
3130    union LDKCResult_SignatureNoneZPtr contents;
3131    /**
3132     * Whether this CResult_SignatureNoneZ represents a success state.
3133     */
3134    bool result_ok;
3135 } LDKCResult_SignatureNoneZ;
3136
3137
3138
3139 /**
3140  * The unsigned part of a channel_announcement
3141  */
3142 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
3143    /**
3144     * A pointer to the opaque Rust object.
3145     * Nearly everywhere, inner must be non-null, however in places where
3146     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3147     */
3148    LDKnativeUnsignedChannelAnnouncement *inner;
3149    /**
3150     * Indicates that this is the only struct which contains the same pointer.
3151     * Rust functions which take ownership of an object provided via an argument require
3152     * this to be true and invalidate the object pointed to by inner.
3153     */
3154    bool is_owned;
3155 } LDKUnsignedChannelAnnouncement;
3156
3157 /**
3158  * A trait to sign lightning channel transactions as described in BOLT 3.
3159  *
3160  * Signing services could be implemented on a hardware wallet. In this case,
3161  * the current Sign would be a front-end on top of a communication
3162  * channel connected to your secure device and lightning key material wouldn't
3163  * reside on a hot server. Nevertheless, a this deployment would still need
3164  * to trust the ChannelManager to avoid loss of funds as this latest component
3165  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
3166  *
3167  * A more secure iteration would be to use hashlock (or payment points) to pair
3168  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
3169  * at the price of more state and computation on the hardware wallet side. In the future,
3170  * we are looking forward to design such interface.
3171  *
3172  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
3173  * to act, as liveness and breach reply correctness are always going to be hard requirements
3174  * of LN security model, orthogonal of key management issues.
3175  */
3176 typedef struct LDKBaseSign {
3177    /**
3178     * An opaque pointer which is passed to your function implementations as an argument.
3179     * This has no meaning in the LDK, and can be NULL or any other value.
3180     */
3181    void *this_arg;
3182    /**
3183     * Gets the per-commitment point for a specific commitment number
3184     *
3185     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3186     */
3187    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
3188    /**
3189     * Gets the commitment secret for a specific commitment number as part of the revocation process
3190     *
3191     * An external signer implementation should error here if the commitment was already signed
3192     * and should refuse to sign it in the future.
3193     *
3194     * May be called more than once for the same index.
3195     *
3196     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
3197     */
3198    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
3199    /**
3200     * Gets the holder's channel public keys and basepoints
3201     */
3202    struct LDKChannelPublicKeys pubkeys;
3203    /**
3204     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
3205     * Note that this takes a pointer to this object, not the this_ptr like other methods do
3206     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
3207     */
3208    void (*set_pubkeys)(const struct LDKBaseSign*NONNULL_PTR );
3209    /**
3210     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
3211     * some SpendableOutputDescriptor types. This should be sufficient to identify this
3212     * Sign object uniquely and lookup or re-derive its keys.
3213     */
3214    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
3215    /**
3216     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
3217     *
3218     * Note that if signing fails or is rejected, the channel will be force-closed.
3219     */
3220    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx);
3221    /**
3222     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
3223     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
3224     * latest commitment_tx when we initiate a force-close.
3225     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
3226     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
3227     * the latest.
3228     * This may be called multiple times for the same transaction.
3229     *
3230     * An external signer implementation should check that the commitment has not been revoked.
3231     *
3232     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
3233     */
3234    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
3235    /**
3236     * Create a signature for the given input in a transaction spending an HTLC transaction output
3237     * or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
3238     *
3239     * A justice transaction may claim multiple outputs at the same time if timelocks are
3240     * similar, but only a signature for the input at index `input` should be signed for here.
3241     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
3242     * to an upcoming timelock expiration.
3243     *
3244     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3245     *
3246     * per_commitment_key is revocation secret which was provided by our counterparty when they
3247     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3248     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
3249     * so).
3250     */
3251    struct LDKCResult_SignatureNoneZ (*sign_justice_revoked_output)(const void *this_arg, struct LDKTransaction justice_tx, uintptr_t input, uint64_t amount, const uint8_t (*per_commitment_key)[32]);
3252    /**
3253     * Create a signature for the given input in a transaction spending a commitment transaction
3254     * HTLC output when our counterparty broadcasts an old state.
3255     *
3256     * A justice transaction may claim multiple outputs at the same time if timelocks are
3257     * similar, but only a signature for the input at index `input` should be signed for here.
3258     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
3259     * to an upcoming timelock expiration.
3260     *
3261     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3262     *
3263     * per_commitment_key is revocation secret which was provided by our counterparty when they
3264     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
3265     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
3266     * so).
3267     *
3268     * htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
3269     * (which is committed to in the BIP 143 signatures).
3270     */
3271    struct LDKCResult_SignatureNoneZ (*sign_justice_revoked_htlc)(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);
3272    /**
3273     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
3274     * transaction, either offered or received.
3275     *
3276     * Such a transaction may claim multiples offered outputs at same time if we know the
3277     * preimage for each when we create it, but only the input at index `input` should be
3278     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
3279     * needed with regards to an upcoming timelock expiration.
3280     *
3281     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
3282     * outputs.
3283     *
3284     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
3285     *
3286     * Per_commitment_point is the dynamic point corresponding to the channel state
3287     * detected onchain. It has been generated by our counterparty and is used to derive
3288     * channel state keys, which are then included in the witness script and committed to in the
3289     * BIP 143 signature.
3290     */
3291    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);
3292    /**
3293     * Create a signature for a (proposed) closing transaction.
3294     *
3295     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
3296     * chosen to forgo their output as dust.
3297     */
3298    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, struct LDKTransaction closing_tx);
3299    /**
3300     * Signs a channel announcement message with our funding key, proving it comes from one
3301     * of the channel participants.
3302     *
3303     * Note that if this fails or is rejected, the channel will not be publicly announced and
3304     * our counterparty may (though likely will not) close the channel on us for violating the
3305     * protocol.
3306     */
3307    struct LDKCResult_SignatureNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
3308    /**
3309     * Set the counterparty static channel data, including basepoints,
3310     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
3311     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
3312     * they MUST NOT be allowed to change to different values once set.
3313     *
3314     * channel_parameters.is_populated() MUST be true.
3315     *
3316     * We bind holder_selected_contest_delay late here for API convenience.
3317     *
3318     * Will be called before any signatures are applied.
3319     */
3320    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
3321    /**
3322     * Frees any resources associated with this object given its this_arg pointer.
3323     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
3324     */
3325    void (*free)(void *this_arg);
3326 } LDKBaseSign;
3327
3328 /**
3329  * A cloneable signer.
3330  *
3331  * Although we require signers to be cloneable, it may be useful for developers to be able to use
3332  * signers in an un-sized way, for example as `dyn BaseSign`. Therefore we separate the Clone trait,
3333  * which implies Sized, into this derived trait.
3334  */
3335 typedef struct LDKSign {
3336    /**
3337     * An opaque pointer which is passed to your function implementations as an argument.
3338     * This has no meaning in the LDK, and can be NULL or any other value.
3339     */
3340    void *this_arg;
3341    /**
3342     * Implementation of BaseSign for this object.
3343     */
3344    struct LDKBaseSign BaseSign;
3345    /**
3346     * Serialize the object into a byte array
3347     */
3348    struct LDKCVec_u8Z (*write)(const void *this_arg);
3349    /**
3350     * Called, if set, after this Sign has been cloned into a duplicate object.
3351     * The new Sign is provided, and should be mutated as needed to perform a
3352     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
3353     */
3354    void (*cloned)(struct LDKSign *NONNULL_PTR new_Sign);
3355    /**
3356     * Frees any resources associated with this object given its this_arg pointer.
3357     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
3358     */
3359    void (*free)(void *this_arg);
3360 } LDKSign;
3361
3362 /**
3363  * The contents of CResult_SignDecodeErrorZ
3364  */
3365 typedef union LDKCResult_SignDecodeErrorZPtr {
3366    /**
3367     * A pointer to the contents in the success state.
3368     * Reading from this pointer when `result_ok` is not set is undefined.
3369     */
3370    struct LDKSign *result;
3371    /**
3372     * A pointer to the contents in the error state.
3373     * Reading from this pointer when `result_ok` is set is undefined.
3374     */
3375    struct LDKDecodeError *err;
3376 } LDKCResult_SignDecodeErrorZPtr;
3377
3378 /**
3379  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
3380  * containing a crate::lightning::chain::keysinterface::Sign on success and a crate::lightning::ln::msgs::DecodeError on failure.
3381  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3382  */
3383 typedef struct LDKCResult_SignDecodeErrorZ {
3384    /**
3385     * The contents of this CResult_SignDecodeErrorZ, accessible via either
3386     * `err` or `result` depending on the state of `result_ok`.
3387     */
3388    union LDKCResult_SignDecodeErrorZPtr contents;
3389    /**
3390     * Whether this CResult_SignDecodeErrorZ represents a success state.
3391     */
3392    bool result_ok;
3393 } LDKCResult_SignDecodeErrorZ;
3394
3395 /**
3396  * Represents a secp256k1 signature serialized as two 32-byte numbers as well as a tag which
3397  * allows recovering the exact public key which created the signature given the message.
3398  */
3399 typedef struct LDKRecoverableSignature {
3400    /**
3401     * The bytes of the signature in "compact" form plus a "Recovery ID" which allows for
3402     * recovery.
3403     */
3404    uint8_t serialized_form[68];
3405 } LDKRecoverableSignature;
3406
3407 /**
3408  * The contents of CResult_RecoverableSignatureNoneZ
3409  */
3410 typedef union LDKCResult_RecoverableSignatureNoneZPtr {
3411    /**
3412     * A pointer to the contents in the success state.
3413     * Reading from this pointer when `result_ok` is not set is undefined.
3414     */
3415    struct LDKRecoverableSignature *result;
3416    /**
3417     * Note that this value is always NULL, as there are no contents in the Err variant
3418     */
3419    void *err;
3420 } LDKCResult_RecoverableSignatureNoneZPtr;
3421
3422 /**
3423  * A CResult_RecoverableSignatureNoneZ represents the result of a fallible operation,
3424  * containing a crate::c_types::RecoverableSignature on success and a () on failure.
3425  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3426  */
3427 typedef struct LDKCResult_RecoverableSignatureNoneZ {
3428    /**
3429     * The contents of this CResult_RecoverableSignatureNoneZ, accessible via either
3430     * `err` or `result` depending on the state of `result_ok`.
3431     */
3432    union LDKCResult_RecoverableSignatureNoneZPtr contents;
3433    /**
3434     * Whether this CResult_RecoverableSignatureNoneZ represents a success state.
3435     */
3436    bool result_ok;
3437 } LDKCResult_RecoverableSignatureNoneZ;
3438
3439 /**
3440  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
3441  * This corresponds to std::vector in C++
3442  */
3443 typedef struct LDKCVec_CVec_u8ZZ {
3444    /**
3445     * The elements in the array.
3446     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3447     */
3448    struct LDKCVec_u8Z *data;
3449    /**
3450     * The number of elements pointed to by `data`.
3451     */
3452    uintptr_t datalen;
3453 } LDKCVec_CVec_u8ZZ;
3454
3455 /**
3456  * The contents of CResult_CVec_CVec_u8ZZNoneZ
3457  */
3458 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
3459    /**
3460     * A pointer to the contents in the success state.
3461     * Reading from this pointer when `result_ok` is not set is undefined.
3462     */
3463    struct LDKCVec_CVec_u8ZZ *result;
3464    /**
3465     * Note that this value is always NULL, as there are no contents in the Err variant
3466     */
3467    void *err;
3468 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
3469
3470 /**
3471  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
3472  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
3473  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3474  */
3475 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
3476    /**
3477     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
3478     * `err` or `result` depending on the state of `result_ok`.
3479     */
3480    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
3481    /**
3482     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
3483     */
3484    bool result_ok;
3485 } LDKCResult_CVec_CVec_u8ZZNoneZ;
3486
3487
3488
3489 /**
3490  * A simple implementation of Sign that just keeps the private keys in memory.
3491  *
3492  * This implementation performs no policy checks and is insufficient by itself as
3493  * a secure external signer.
3494  */
3495 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
3496    /**
3497     * A pointer to the opaque Rust object.
3498     * Nearly everywhere, inner must be non-null, however in places where
3499     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3500     */
3501    LDKnativeInMemorySigner *inner;
3502    /**
3503     * Indicates that this is the only struct which contains the same pointer.
3504     * Rust functions which take ownership of an object provided via an argument require
3505     * this to be true and invalidate the object pointed to by inner.
3506     */
3507    bool is_owned;
3508 } LDKInMemorySigner;
3509
3510 /**
3511  * The contents of CResult_InMemorySignerDecodeErrorZ
3512  */
3513 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
3514    /**
3515     * A pointer to the contents in the success state.
3516     * Reading from this pointer when `result_ok` is not set is undefined.
3517     */
3518    struct LDKInMemorySigner *result;
3519    /**
3520     * A pointer to the contents in the error state.
3521     * Reading from this pointer when `result_ok` is set is undefined.
3522     */
3523    struct LDKDecodeError *err;
3524 } LDKCResult_InMemorySignerDecodeErrorZPtr;
3525
3526 /**
3527  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
3528  * containing a crate::lightning::chain::keysinterface::InMemorySigner on success and a crate::lightning::ln::msgs::DecodeError on failure.
3529  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3530  */
3531 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
3532    /**
3533     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
3534     * `err` or `result` depending on the state of `result_ok`.
3535     */
3536    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
3537    /**
3538     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
3539     */
3540    bool result_ok;
3541 } LDKCResult_InMemorySignerDecodeErrorZ;
3542
3543 /**
3544  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
3545  * This corresponds to std::vector in C++
3546  */
3547 typedef struct LDKCVec_TxOutZ {
3548    /**
3549     * The elements in the array.
3550     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3551     */
3552    struct LDKTxOut *data;
3553    /**
3554     * The number of elements pointed to by `data`.
3555     */
3556    uintptr_t datalen;
3557 } LDKCVec_TxOutZ;
3558
3559 /**
3560  * The contents of CResult_TransactionNoneZ
3561  */
3562 typedef union LDKCResult_TransactionNoneZPtr {
3563    /**
3564     * A pointer to the contents in the success state.
3565     * Reading from this pointer when `result_ok` is not set is undefined.
3566     */
3567    struct LDKTransaction *result;
3568    /**
3569     * Note that this value is always NULL, as there are no contents in the Err variant
3570     */
3571    void *err;
3572 } LDKCResult_TransactionNoneZPtr;
3573
3574 /**
3575  * A CResult_TransactionNoneZ represents the result of a fallible operation,
3576  * containing a crate::c_types::Transaction on success and a () on failure.
3577  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3578  */
3579 typedef struct LDKCResult_TransactionNoneZ {
3580    /**
3581     * The contents of this CResult_TransactionNoneZ, accessible via either
3582     * `err` or `result` depending on the state of `result_ok`.
3583     */
3584    union LDKCResult_TransactionNoneZPtr contents;
3585    /**
3586     * Whether this CResult_TransactionNoneZ represents a success state.
3587     */
3588    bool result_ok;
3589 } LDKCResult_TransactionNoneZ;
3590
3591
3592
3593 /**
3594  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
3595  * on-chain transactions to ensure no loss of funds occurs.
3596  *
3597  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
3598  * information and are actively monitoring the chain.
3599  *
3600  * Pending Events or updated HTLCs which have not yet been read out by
3601  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
3602  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
3603  * gotten are fully handled before re-serializing the new state.
3604  *
3605  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
3606  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
3607  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
3608  * returned block hash and the the current chain and then reconnecting blocks to get to the
3609  * best chain) upon deserializing the object!
3610  */
3611 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
3612    /**
3613     * A pointer to the opaque Rust object.
3614     * Nearly everywhere, inner must be non-null, however in places where
3615     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3616     */
3617    LDKnativeChannelMonitor *inner;
3618    /**
3619     * Indicates that this is the only struct which contains the same pointer.
3620     * Rust functions which take ownership of an object provided via an argument require
3621     * this to be true and invalidate the object pointed to by inner.
3622     */
3623    bool is_owned;
3624 } LDKChannelMonitor;
3625
3626 /**
3627  * A tuple of 2 elements. See the individual fields for the types contained.
3628  */
3629 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
3630    /**
3631     * The element at position 0
3632     */
3633    struct LDKThirtyTwoBytes a;
3634    /**
3635     * The element at position 1
3636     */
3637    struct LDKChannelMonitor b;
3638 } LDKC2Tuple_BlockHashChannelMonitorZ;
3639
3640 /**
3641  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZs of arbitrary size.
3642  * This corresponds to std::vector in C++
3643  */
3644 typedef struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ {
3645    /**
3646     * The elements in the array.
3647     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3648     */
3649    struct LDKC2Tuple_BlockHashChannelMonitorZ *data;
3650    /**
3651     * The number of elements pointed to by `data`.
3652     */
3653    uintptr_t datalen;
3654 } LDKCVec_C2Tuple_BlockHashChannelMonitorZZ;
3655
3656 /**
3657  * The contents of CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ
3658  */
3659 typedef union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr {
3660    /**
3661     * A pointer to the contents in the success state.
3662     * Reading from this pointer when `result_ok` is not set is undefined.
3663     */
3664    struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ *result;
3665    /**
3666     * A pointer to the contents in the error state.
3667     * Reading from this pointer when `result_ok` is set is undefined.
3668     */
3669    enum LDKIOError *err;
3670 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr;
3671
3672 /**
3673  * A CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents the result of a fallible operation,
3674  * containing a crate::c_types::derived::CVec_C2Tuple_BlockHashChannelMonitorZZ on success and a crate::c_types::IOError on failure.
3675  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3676  */
3677 typedef struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
3678    /**
3679     * The contents of this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ, accessible via either
3680     * `err` or `result` depending on the state of `result_ok`.
3681     */
3682    union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr contents;
3683    /**
3684     * Whether this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents a success state.
3685     */
3686    bool result_ok;
3687 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
3688
3689 /**
3690  * An enum which can either contain a u16 or not
3691  */
3692 typedef enum LDKCOption_u16Z_Tag {
3693    /**
3694     * When we're in this state, this COption_u16Z contains a u16
3695     */
3696    LDKCOption_u16Z_Some,
3697    /**
3698     * When we're in this state, this COption_u16Z contains nothing
3699     */
3700    LDKCOption_u16Z_None,
3701    /**
3702     * Must be last for serialization purposes
3703     */
3704    LDKCOption_u16Z_Sentinel,
3705 } LDKCOption_u16Z_Tag;
3706
3707 typedef struct LDKCOption_u16Z {
3708    LDKCOption_u16Z_Tag tag;
3709    union {
3710       struct {
3711          uint16_t some;
3712       };
3713    };
3714 } LDKCOption_u16Z;
3715
3716 /**
3717  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
3718  * too-high values)
3719  */
3720 typedef enum LDKAPIError_Tag {
3721    /**
3722     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
3723     * are documented, but generally indicates some precondition of a function was violated.
3724     */
3725    LDKAPIError_APIMisuseError,
3726    /**
3727     * Due to a high feerate, we were unable to complete the request.
3728     * For example, this may be returned if the feerate implies we cannot open a channel at the
3729     * requested value, but opening a larger channel would succeed.
3730     */
3731    LDKAPIError_FeeRateTooHigh,
3732    /**
3733     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
3734     * too-many-hops, etc).
3735     */
3736    LDKAPIError_RouteError,
3737    /**
3738     * We were unable to complete the request as the Channel required to do so is unable to
3739     * complete the request (or was not found). This can take many forms, including disconnected
3740     * peer, channel at capacity, channel shutting down, etc.
3741     */
3742    LDKAPIError_ChannelUnavailable,
3743    /**
3744     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
3745     * attempted action to fail.
3746     */
3747    LDKAPIError_MonitorUpdateFailed,
3748    /**
3749     * Must be last for serialization purposes
3750     */
3751    LDKAPIError_Sentinel,
3752 } LDKAPIError_Tag;
3753
3754 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
3755    /**
3756     * A human-readable error message
3757     */
3758    struct LDKStr err;
3759 } LDKAPIError_LDKAPIMisuseError_Body;
3760
3761 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
3762    /**
3763     * A human-readable error message
3764     */
3765    struct LDKStr err;
3766    /**
3767     * The feerate which was too high.
3768     */
3769    uint32_t feerate;
3770 } LDKAPIError_LDKFeeRateTooHigh_Body;
3771
3772 typedef struct LDKAPIError_LDKRouteError_Body {
3773    /**
3774     * A human-readable error message
3775     */
3776    struct LDKStr err;
3777 } LDKAPIError_LDKRouteError_Body;
3778
3779 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
3780    /**
3781     * A human-readable error message
3782     */
3783    struct LDKStr err;
3784 } LDKAPIError_LDKChannelUnavailable_Body;
3785
3786 typedef struct MUST_USE_STRUCT LDKAPIError {
3787    LDKAPIError_Tag tag;
3788    union {
3789       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
3790       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
3791       LDKAPIError_LDKRouteError_Body route_error;
3792       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
3793    };
3794 } LDKAPIError;
3795
3796 /**
3797  * The contents of CResult_NoneAPIErrorZ
3798  */
3799 typedef union LDKCResult_NoneAPIErrorZPtr {
3800    /**
3801     * Note that this value is always NULL, as there are no contents in the OK variant
3802     */
3803    void *result;
3804    /**
3805     * A pointer to the contents in the error state.
3806     * Reading from this pointer when `result_ok` is set is undefined.
3807     */
3808    struct LDKAPIError *err;
3809 } LDKCResult_NoneAPIErrorZPtr;
3810
3811 /**
3812  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
3813  * containing a () on success and a crate::lightning::util::errors::APIError on failure.
3814  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3815  */
3816 typedef struct LDKCResult_NoneAPIErrorZ {
3817    /**
3818     * The contents of this CResult_NoneAPIErrorZ, accessible via either
3819     * `err` or `result` depending on the state of `result_ok`.
3820     */
3821    union LDKCResult_NoneAPIErrorZPtr contents;
3822    /**
3823     * Whether this CResult_NoneAPIErrorZ represents a success state.
3824     */
3825    bool result_ok;
3826 } LDKCResult_NoneAPIErrorZ;
3827
3828 /**
3829  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
3830  * This corresponds to std::vector in C++
3831  */
3832 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
3833    /**
3834     * The elements in the array.
3835     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3836     */
3837    struct LDKCResult_NoneAPIErrorZ *data;
3838    /**
3839     * The number of elements pointed to by `data`.
3840     */
3841    uintptr_t datalen;
3842 } LDKCVec_CResult_NoneAPIErrorZZ;
3843
3844 /**
3845  * A dynamically-allocated array of crate::lightning::util::errors::APIErrors of arbitrary size.
3846  * This corresponds to std::vector in C++
3847  */
3848 typedef struct LDKCVec_APIErrorZ {
3849    /**
3850     * The elements in the array.
3851     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3852     */
3853    struct LDKAPIError *data;
3854    /**
3855     * The number of elements pointed to by `data`.
3856     */
3857    uintptr_t datalen;
3858 } LDKCVec_APIErrorZ;
3859
3860 /**
3861  * If a payment fails to send, it can be in one of several states. This enum is returned as the
3862  * Err() type describing which state the payment is in, see the description of individual enum
3863  * states for more.
3864  */
3865 typedef enum LDKPaymentSendFailure_Tag {
3866    /**
3867     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
3868     * send the payment at all. No channel state has been changed or messages sent to peers, and
3869     * once you've changed the parameter at error, you can freely retry the payment in full.
3870     */
3871    LDKPaymentSendFailure_ParameterError,
3872    /**
3873     * A parameter in a single path which was passed to send_payment was invalid, preventing us
3874     * from attempting to send the payment at all. No channel state has been changed or messages
3875     * sent to peers, and once you've changed the parameter at error, you can freely retry the
3876     * payment in full.
3877     *
3878     * The results here are ordered the same as the paths in the route object which was passed to
3879     * send_payment.
3880     */
3881    LDKPaymentSendFailure_PathParameterError,
3882    /**
3883     * All paths which were attempted failed to send, with no channel state change taking place.
3884     * You can freely retry the payment in full (though you probably want to do so over different
3885     * paths than the ones selected).
3886     */
3887    LDKPaymentSendFailure_AllFailedRetrySafe,
3888    /**
3889     * Some paths which were attempted failed to send, though possibly not all. At least some
3890     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
3891     * in over-/re-payment.
3892     *
3893     * The results here are ordered the same as the paths in the route object which was passed to
3894     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
3895     * retried (though there is currently no API with which to do so).
3896     *
3897     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
3898     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
3899     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
3900     * with the latest update_id.
3901     */
3902    LDKPaymentSendFailure_PartialFailure,
3903    /**
3904     * Must be last for serialization purposes
3905     */
3906    LDKPaymentSendFailure_Sentinel,
3907 } LDKPaymentSendFailure_Tag;
3908
3909 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
3910    LDKPaymentSendFailure_Tag tag;
3911    union {
3912       struct {
3913          struct LDKAPIError parameter_error;
3914       };
3915       struct {
3916          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
3917       };
3918       struct {
3919          struct LDKCVec_APIErrorZ all_failed_retry_safe;
3920       };
3921       struct {
3922          struct LDKCVec_CResult_NoneAPIErrorZZ partial_failure;
3923       };
3924    };
3925 } LDKPaymentSendFailure;
3926
3927 /**
3928  * The contents of CResult_NonePaymentSendFailureZ
3929  */
3930 typedef union LDKCResult_NonePaymentSendFailureZPtr {
3931    /**
3932     * Note that this value is always NULL, as there are no contents in the OK variant
3933     */
3934    void *result;
3935    /**
3936     * A pointer to the contents in the error state.
3937     * Reading from this pointer when `result_ok` is set is undefined.
3938     */
3939    struct LDKPaymentSendFailure *err;
3940 } LDKCResult_NonePaymentSendFailureZPtr;
3941
3942 /**
3943  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
3944  * containing a () on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
3945  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3946  */
3947 typedef struct LDKCResult_NonePaymentSendFailureZ {
3948    /**
3949     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
3950     * `err` or `result` depending on the state of `result_ok`.
3951     */
3952    union LDKCResult_NonePaymentSendFailureZPtr contents;
3953    /**
3954     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
3955     */
3956    bool result_ok;
3957 } LDKCResult_NonePaymentSendFailureZ;
3958
3959 /**
3960  * The contents of CResult_PaymentHashPaymentSendFailureZ
3961  */
3962 typedef union LDKCResult_PaymentHashPaymentSendFailureZPtr {
3963    /**
3964     * A pointer to the contents in the success state.
3965     * Reading from this pointer when `result_ok` is not set is undefined.
3966     */
3967    struct LDKThirtyTwoBytes *result;
3968    /**
3969     * A pointer to the contents in the error state.
3970     * Reading from this pointer when `result_ok` is set is undefined.
3971     */
3972    struct LDKPaymentSendFailure *err;
3973 } LDKCResult_PaymentHashPaymentSendFailureZPtr;
3974
3975 /**
3976  * A CResult_PaymentHashPaymentSendFailureZ represents the result of a fallible operation,
3977  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
3978  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3979  */
3980 typedef struct LDKCResult_PaymentHashPaymentSendFailureZ {
3981    /**
3982     * The contents of this CResult_PaymentHashPaymentSendFailureZ, accessible via either
3983     * `err` or `result` depending on the state of `result_ok`.
3984     */
3985    union LDKCResult_PaymentHashPaymentSendFailureZPtr contents;
3986    /**
3987     * Whether this CResult_PaymentHashPaymentSendFailureZ represents a success state.
3988     */
3989    bool result_ok;
3990 } LDKCResult_PaymentHashPaymentSendFailureZ;
3991
3992 /**
3993  * A 4-byte byte array.
3994  */
3995 typedef struct LDKFourBytes {
3996    /**
3997     * The four bytes
3998     */
3999    uint8_t data[4];
4000 } LDKFourBytes;
4001
4002 /**
4003  * A 16-byte byte array.
4004  */
4005 typedef struct LDKSixteenBytes {
4006    /**
4007     * The sixteen bytes
4008     */
4009    uint8_t data[16];
4010 } LDKSixteenBytes;
4011
4012 /**
4013  * A 10-byte byte array.
4014  */
4015 typedef struct LDKTenBytes {
4016    /**
4017     * The ten bytes
4018     */
4019    uint8_t data[10];
4020 } LDKTenBytes;
4021
4022 /**
4023  * An address which can be used to connect to a remote peer
4024  */
4025 typedef enum LDKNetAddress_Tag {
4026    /**
4027     * An IPv4 address/port on which the peer is listening.
4028     */
4029    LDKNetAddress_IPv4,
4030    /**
4031     * An IPv6 address/port on which the peer is listening.
4032     */
4033    LDKNetAddress_IPv6,
4034    /**
4035     * An old-style Tor onion address/port on which the peer is listening.
4036     */
4037    LDKNetAddress_OnionV2,
4038    /**
4039     * A new-style Tor onion address/port on which the peer is listening.
4040     * To create the human-readable \"hostname\", concatenate ed25519_pubkey, checksum, and version,
4041     * wrap as base32 and append \".onion\".
4042     */
4043    LDKNetAddress_OnionV3,
4044    /**
4045     * Must be last for serialization purposes
4046     */
4047    LDKNetAddress_Sentinel,
4048 } LDKNetAddress_Tag;
4049
4050 typedef struct LDKNetAddress_LDKIPv4_Body {
4051    /**
4052     * The 4-byte IPv4 address
4053     */
4054    struct LDKFourBytes addr;
4055    /**
4056     * The port on which the node is listening
4057     */
4058    uint16_t port;
4059 } LDKNetAddress_LDKIPv4_Body;
4060
4061 typedef struct LDKNetAddress_LDKIPv6_Body {
4062    /**
4063     * The 16-byte IPv6 address
4064     */
4065    struct LDKSixteenBytes addr;
4066    /**
4067     * The port on which the node is listening
4068     */
4069    uint16_t port;
4070 } LDKNetAddress_LDKIPv6_Body;
4071
4072 typedef struct LDKNetAddress_LDKOnionV2_Body {
4073    /**
4074     * The bytes (usually encoded in base32 with \".onion\" appended)
4075     */
4076    struct LDKTenBytes addr;
4077    /**
4078     * The port on which the node is listening
4079     */
4080    uint16_t port;
4081 } LDKNetAddress_LDKOnionV2_Body;
4082
4083 typedef struct LDKNetAddress_LDKOnionV3_Body {
4084    /**
4085     * The ed25519 long-term public key of the peer
4086     */
4087    struct LDKThirtyTwoBytes ed25519_pubkey;
4088    /**
4089     * The checksum of the pubkey and version, as included in the onion address
4090     */
4091    uint16_t checksum;
4092    /**
4093     * The version byte, as defined by the Tor Onion v3 spec.
4094     */
4095    uint8_t version;
4096    /**
4097     * The port on which the node is listening
4098     */
4099    uint16_t port;
4100 } LDKNetAddress_LDKOnionV3_Body;
4101
4102 typedef struct MUST_USE_STRUCT LDKNetAddress {
4103    LDKNetAddress_Tag tag;
4104    union {
4105       LDKNetAddress_LDKIPv4_Body i_pv4;
4106       LDKNetAddress_LDKIPv6_Body i_pv6;
4107       LDKNetAddress_LDKOnionV2_Body onion_v2;
4108       LDKNetAddress_LDKOnionV3_Body onion_v3;
4109    };
4110 } LDKNetAddress;
4111
4112 /**
4113  * A dynamically-allocated array of crate::lightning::ln::msgs::NetAddresss of arbitrary size.
4114  * This corresponds to std::vector in C++
4115  */
4116 typedef struct LDKCVec_NetAddressZ {
4117    /**
4118     * The elements in the array.
4119     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4120     */
4121    struct LDKNetAddress *data;
4122    /**
4123     * The number of elements pointed to by `data`.
4124     */
4125    uintptr_t datalen;
4126 } LDKCVec_NetAddressZ;
4127
4128 /**
4129  * A tuple of 2 elements. See the individual fields for the types contained.
4130  */
4131 typedef struct LDKC2Tuple_PaymentHashPaymentSecretZ {
4132    /**
4133     * The element at position 0
4134     */
4135    struct LDKThirtyTwoBytes a;
4136    /**
4137     * The element at position 1
4138     */
4139    struct LDKThirtyTwoBytes b;
4140 } LDKC2Tuple_PaymentHashPaymentSecretZ;
4141
4142 /**
4143  * The contents of CResult_PaymentSecretAPIErrorZ
4144  */
4145 typedef union LDKCResult_PaymentSecretAPIErrorZPtr {
4146    /**
4147     * A pointer to the contents in the success state.
4148     * Reading from this pointer when `result_ok` is not set is undefined.
4149     */
4150    struct LDKThirtyTwoBytes *result;
4151    /**
4152     * A pointer to the contents in the error state.
4153     * Reading from this pointer when `result_ok` is set is undefined.
4154     */
4155    struct LDKAPIError *err;
4156 } LDKCResult_PaymentSecretAPIErrorZPtr;
4157
4158 /**
4159  * A CResult_PaymentSecretAPIErrorZ represents the result of a fallible operation,
4160  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
4161  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4162  */
4163 typedef struct LDKCResult_PaymentSecretAPIErrorZ {
4164    /**
4165     * The contents of this CResult_PaymentSecretAPIErrorZ, accessible via either
4166     * `err` or `result` depending on the state of `result_ok`.
4167     */
4168    union LDKCResult_PaymentSecretAPIErrorZPtr contents;
4169    /**
4170     * Whether this CResult_PaymentSecretAPIErrorZ represents a success state.
4171     */
4172    bool result_ok;
4173 } LDKCResult_PaymentSecretAPIErrorZ;
4174
4175 /**
4176  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::ChannelMonitors of arbitrary size.
4177  * This corresponds to std::vector in C++
4178  */
4179 typedef struct LDKCVec_ChannelMonitorZ {
4180    /**
4181     * The elements in the array.
4182     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4183     */
4184    struct LDKChannelMonitor *data;
4185    /**
4186     * The number of elements pointed to by `data`.
4187     */
4188    uintptr_t datalen;
4189 } LDKCVec_ChannelMonitorZ;
4190
4191
4192
4193 /**
4194  * An update generated by the underlying Channel itself which contains some new information the
4195  * ChannelMonitor should be made aware of.
4196  */
4197 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
4198    /**
4199     * A pointer to the opaque Rust object.
4200     * Nearly everywhere, inner must be non-null, however in places where
4201     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4202     */
4203    LDKnativeChannelMonitorUpdate *inner;
4204    /**
4205     * Indicates that this is the only struct which contains the same pointer.
4206     * Rust functions which take ownership of an object provided via an argument require
4207     * this to be true and invalidate the object pointed to by inner.
4208     */
4209    bool is_owned;
4210 } LDKChannelMonitorUpdate;
4211
4212 /**
4213  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
4214  * blocks are connected and disconnected.
4215  *
4216  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
4217  * responsible for maintaining a set of monitors such that they can be updated accordingly as
4218  * channel state changes and HTLCs are resolved. See method documentation for specific
4219  * requirements.
4220  *
4221  * Implementations **must** ensure that updates are successfully applied and persisted upon method
4222  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
4223  * without taking any further action such as persisting the current state.
4224  *
4225  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
4226  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
4227  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
4228  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
4229  * multiple instances.
4230  *
4231  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
4232  * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4233  * [`PermanentFailure`]: channelmonitor::ChannelMonitorUpdateErr::PermanentFailure
4234  */
4235 typedef struct LDKWatch {
4236    /**
4237     * An opaque pointer which is passed to your function implementations as an argument.
4238     * This has no meaning in the LDK, and can be NULL or any other value.
4239     */
4240    void *this_arg;
4241    /**
4242     * Watches a channel identified by `funding_txo` using `monitor`.
4243     *
4244     * Implementations are responsible for watching the chain for the funding transaction along
4245     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
4246     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
4247     *
4248     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
4249     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
4250     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
4251     */
4252    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
4253    /**
4254     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
4255     *
4256     * Implementations must call [`update_monitor`] with the given update. See
4257     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
4258     *
4259     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
4260     * [`ChannelMonitorUpdateErr`]: channelmonitor::ChannelMonitorUpdateErr
4261     */
4262    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
4263    /**
4264     * Returns any monitor events since the last call. Subsequent calls must only return new
4265     * events.
4266     */
4267    struct LDKCVec_MonitorEventZ (*release_pending_monitor_events)(const void *this_arg);
4268    /**
4269     * Frees any resources associated with this object given its this_arg pointer.
4270     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4271     */
4272    void (*free)(void *this_arg);
4273 } LDKWatch;
4274
4275 /**
4276  * An interface to send a transaction to the Bitcoin network.
4277  */
4278 typedef struct LDKBroadcasterInterface {
4279    /**
4280     * An opaque pointer which is passed to your function implementations as an argument.
4281     * This has no meaning in the LDK, and can be NULL or any other value.
4282     */
4283    void *this_arg;
4284    /**
4285     * Sends a transaction out to (hopefully) be mined.
4286     */
4287    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
4288    /**
4289     * Frees any resources associated with this object given its this_arg pointer.
4290     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4291     */
4292    void (*free)(void *this_arg);
4293 } LDKBroadcasterInterface;
4294
4295 /**
4296  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
4297  * own the memory pointed to by data.
4298  */
4299 typedef struct LDKu8slice {
4300    /**
4301     * A pointer to the byte buffer
4302     */
4303    const uint8_t *data;
4304    /**
4305     * The number of bytes pointed to by `data`.
4306     */
4307    uintptr_t datalen;
4308 } LDKu8slice;
4309
4310 /**
4311  * A trait to describe an object which can get user secrets and key material.
4312  */
4313 typedef struct LDKKeysInterface {
4314    /**
4315     * An opaque pointer which is passed to your function implementations as an argument.
4316     * This has no meaning in the LDK, and can be NULL or any other value.
4317     */
4318    void *this_arg;
4319    /**
4320     * Get node secret key (aka node_id or network_key).
4321     *
4322     * This method must return the same value each time it is called.
4323     */
4324    struct LDKSecretKey (*get_node_secret)(const void *this_arg);
4325    /**
4326     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
4327     *
4328     * This method should return a different value each time it is called, to avoid linking
4329     * on-chain funds across channels as controlled to the same user.
4330     */
4331    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
4332    /**
4333     * Get a public key which we will send funds to (in the form of a P2WPKH output) when closing
4334     * a channel.
4335     *
4336     * This method should return a different value each time it is called, to avoid linking
4337     * on-chain funds across channels as controlled to the same user.
4338     */
4339    struct LDKPublicKey (*get_shutdown_pubkey)(const void *this_arg);
4340    /**
4341     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
4342     * restarted with some stale data!
4343     *
4344     * This method must return a different value each time it is called.
4345     */
4346    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
4347    /**
4348     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
4349     * onion packets and for temporary channel IDs. There is no requirement that these be
4350     * persisted anywhere, though they must be unique across restarts.
4351     *
4352     * This method must return a different value each time it is called.
4353     */
4354    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
4355    /**
4356     * Reads a `Signer` for this `KeysInterface` from the given input stream.
4357     * This is only called during deserialization of other objects which contain
4358     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
4359     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
4360     * contain no versioning scheme. You may wish to include your own version prefix and ensure
4361     * you've read all of the provided bytes to ensure no corruption occurred.
4362     */
4363    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
4364    /**
4365     * Sign an invoice's preimage (note that this is the preimage of the invoice, not the HTLC's
4366     * preimage). By parameterizing by the preimage instead of the hash, we allow implementors of
4367     * this trait to parse the invoice and make sure they're signing what they expect, rather than
4368     * blindly signing the hash.
4369     */
4370    struct LDKCResult_RecoverableSignatureNoneZ (*sign_invoice)(const void *this_arg, struct LDKCVec_u8Z invoice_preimage);
4371    /**
4372     * Frees any resources associated with this object given its this_arg pointer.
4373     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4374     */
4375    void (*free)(void *this_arg);
4376 } LDKKeysInterface;
4377
4378 /**
4379  * A trait which should be implemented to provide feerate information on a number of time
4380  * horizons.
4381  *
4382  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
4383  * called from inside the library in response to chain events, P2P events, or timer events).
4384  */
4385 typedef struct LDKFeeEstimator {
4386    /**
4387     * An opaque pointer which is passed to your function implementations as an argument.
4388     * This has no meaning in the LDK, and can be NULL or any other value.
4389     */
4390    void *this_arg;
4391    /**
4392     * Gets estimated satoshis of fee required per 1000 Weight-Units.
4393     *
4394     * Must be no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later round-downs
4395     * don't put us below 1 satoshi-per-byte).
4396     *
4397     * This translates to:
4398     *  * satoshis-per-byte * 250
4399     *  * ceil(satoshis-per-kbyte / 4)
4400     */
4401    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
4402    /**
4403     * Frees any resources associated with this object given its this_arg pointer.
4404     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4405     */
4406    void (*free)(void *this_arg);
4407 } LDKFeeEstimator;
4408
4409 /**
4410  * A trait encapsulating the operations required of a logger
4411  */
4412 typedef struct LDKLogger {
4413    /**
4414     * An opaque pointer which is passed to your function implementations as an argument.
4415     * This has no meaning in the LDK, and can be NULL or any other value.
4416     */
4417    void *this_arg;
4418    /**
4419     * Logs the `Record`
4420     */
4421    void (*log)(const void *this_arg, const char *record);
4422    /**
4423     * Frees any resources associated with this object given its this_arg pointer.
4424     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
4425     */
4426    void (*free)(void *this_arg);
4427 } LDKLogger;
4428
4429
4430
4431 /**
4432  * Manager which keeps track of a number of channels and sends messages to the appropriate
4433  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
4434  *
4435  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
4436  * to individual Channels.
4437  *
4438  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
4439  * all peers during write/read (though does not modify this instance, only the instance being
4440  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
4441  * called funding_transaction_generated for outbound channels).
4442  *
4443  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
4444  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
4445  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
4446  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
4447  * the serialization process). If the deserialized version is out-of-date compared to the
4448  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
4449  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
4450  *
4451  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
4452  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
4453  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
4454  * block_connected() to step towards your best block) upon deserialization before using the
4455  * object!
4456  *
4457  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
4458  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
4459  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
4460  * offline for a full minute. In order to track this, you must call
4461  * timer_tick_occurred roughly once per minute, though it doesn't have to be perfect.
4462  *
4463  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
4464  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
4465  * essentially you should default to using a SimpleRefChannelManager, and use a
4466  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
4467  * you're using lightning-net-tokio.
4468  */
4469 typedef struct MUST_USE_STRUCT LDKChannelManager {
4470    /**
4471     * A pointer to the opaque Rust object.
4472     * Nearly everywhere, inner must be non-null, however in places where
4473     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4474     */
4475    LDKnativeChannelManager *inner;
4476    /**
4477     * Indicates that this is the only struct which contains the same pointer.
4478     * Rust functions which take ownership of an object provided via an argument require
4479     * this to be true and invalidate the object pointed to by inner.
4480     */
4481    bool is_owned;
4482 } LDKChannelManager;
4483
4484 /**
4485  * A tuple of 2 elements. See the individual fields for the types contained.
4486  */
4487 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
4488    /**
4489     * The element at position 0
4490     */
4491    struct LDKThirtyTwoBytes a;
4492    /**
4493     * The element at position 1
4494     */
4495    struct LDKChannelManager b;
4496 } LDKC2Tuple_BlockHashChannelManagerZ;
4497
4498 /**
4499  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
4500  */
4501 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
4502    /**
4503     * A pointer to the contents in the success state.
4504     * Reading from this pointer when `result_ok` is not set is undefined.
4505     */
4506    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
4507    /**
4508     * A pointer to the contents in the error state.
4509     * Reading from this pointer when `result_ok` is set is undefined.
4510     */
4511    struct LDKDecodeError *err;
4512 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
4513
4514 /**
4515  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
4516  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
4517  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4518  */
4519 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
4520    /**
4521     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
4522     * `err` or `result` depending on the state of `result_ok`.
4523     */
4524    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
4525    /**
4526     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
4527     */
4528    bool result_ok;
4529 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
4530
4531
4532
4533 /**
4534  * Options which apply on a per-channel basis and may change at runtime or based on negotiation
4535  * with our counterparty.
4536  */
4537 typedef struct MUST_USE_STRUCT LDKChannelConfig {
4538    /**
4539     * A pointer to the opaque Rust object.
4540     * Nearly everywhere, inner must be non-null, however in places where
4541     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4542     */
4543    LDKnativeChannelConfig *inner;
4544    /**
4545     * Indicates that this is the only struct which contains the same pointer.
4546     * Rust functions which take ownership of an object provided via an argument require
4547     * this to be true and invalidate the object pointed to by inner.
4548     */
4549    bool is_owned;
4550 } LDKChannelConfig;
4551
4552 /**
4553  * The contents of CResult_ChannelConfigDecodeErrorZ
4554  */
4555 typedef union LDKCResult_ChannelConfigDecodeErrorZPtr {
4556    /**
4557     * A pointer to the contents in the success state.
4558     * Reading from this pointer when `result_ok` is not set is undefined.
4559     */
4560    struct LDKChannelConfig *result;
4561    /**
4562     * A pointer to the contents in the error state.
4563     * Reading from this pointer when `result_ok` is set is undefined.
4564     */
4565    struct LDKDecodeError *err;
4566 } LDKCResult_ChannelConfigDecodeErrorZPtr;
4567
4568 /**
4569  * A CResult_ChannelConfigDecodeErrorZ represents the result of a fallible operation,
4570  * containing a crate::lightning::util::config::ChannelConfig on success and a crate::lightning::ln::msgs::DecodeError on failure.
4571  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4572  */
4573 typedef struct LDKCResult_ChannelConfigDecodeErrorZ {
4574    /**
4575     * The contents of this CResult_ChannelConfigDecodeErrorZ, accessible via either
4576     * `err` or `result` depending on the state of `result_ok`.
4577     */
4578    union LDKCResult_ChannelConfigDecodeErrorZPtr contents;
4579    /**
4580     * Whether this CResult_ChannelConfigDecodeErrorZ represents a success state.
4581     */
4582    bool result_ok;
4583 } LDKCResult_ChannelConfigDecodeErrorZ;
4584
4585 /**
4586  * The contents of CResult_OutPointDecodeErrorZ
4587  */
4588 typedef union LDKCResult_OutPointDecodeErrorZPtr {
4589    /**
4590     * A pointer to the contents in the success state.
4591     * Reading from this pointer when `result_ok` is not set is undefined.
4592     */
4593    struct LDKOutPoint *result;
4594    /**
4595     * A pointer to the contents in the error state.
4596     * Reading from this pointer when `result_ok` is set is undefined.
4597     */
4598    struct LDKDecodeError *err;
4599 } LDKCResult_OutPointDecodeErrorZPtr;
4600
4601 /**
4602  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
4603  * containing a crate::lightning::chain::transaction::OutPoint on success and a crate::lightning::ln::msgs::DecodeError on failure.
4604  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4605  */
4606 typedef struct LDKCResult_OutPointDecodeErrorZ {
4607    /**
4608     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
4609     * `err` or `result` depending on the state of `result_ok`.
4610     */
4611    union LDKCResult_OutPointDecodeErrorZPtr contents;
4612    /**
4613     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
4614     */
4615    bool result_ok;
4616 } LDKCResult_OutPointDecodeErrorZ;
4617
4618 /**
4619  * The contents of CResult_SiPrefixNoneZ
4620  */
4621 typedef union LDKCResult_SiPrefixNoneZPtr {
4622    /**
4623     * A pointer to the contents in the success state.
4624     * Reading from this pointer when `result_ok` is not set is undefined.
4625     */
4626    enum LDKSiPrefix *result;
4627    /**
4628     * Note that this value is always NULL, as there are no contents in the Err variant
4629     */
4630    void *err;
4631 } LDKCResult_SiPrefixNoneZPtr;
4632
4633 /**
4634  * A CResult_SiPrefixNoneZ represents the result of a fallible operation,
4635  * containing a crate::lightning_invoice::SiPrefix on success and a () on failure.
4636  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4637  */
4638 typedef struct LDKCResult_SiPrefixNoneZ {
4639    /**
4640     * The contents of this CResult_SiPrefixNoneZ, accessible via either
4641     * `err` or `result` depending on the state of `result_ok`.
4642     */
4643    union LDKCResult_SiPrefixNoneZPtr contents;
4644    /**
4645     * Whether this CResult_SiPrefixNoneZ represents a success state.
4646     */
4647    bool result_ok;
4648 } LDKCResult_SiPrefixNoneZ;
4649
4650
4651
4652 /**
4653  * Represents a syntactically and semantically correct lightning BOLT11 invoice.
4654  *
4655  * There are three ways to construct an `Invoice`:
4656  *  1. using `InvoiceBuilder`
4657  *  2. using `Invoice::from_signed(SignedRawInvoice)`
4658  *  3. using `str::parse::<Invoice>(&str)`
4659  */
4660 typedef struct MUST_USE_STRUCT LDKInvoice {
4661    /**
4662     * A pointer to the opaque Rust object.
4663     * Nearly everywhere, inner must be non-null, however in places where
4664     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4665     */
4666    LDKnativeInvoice *inner;
4667    /**
4668     * Indicates that this is the only struct which contains the same pointer.
4669     * Rust functions which take ownership of an object provided via an argument require
4670     * this to be true and invalidate the object pointed to by inner.
4671     */
4672    bool is_owned;
4673 } LDKInvoice;
4674
4675 /**
4676  * The contents of CResult_InvoiceNoneZ
4677  */
4678 typedef union LDKCResult_InvoiceNoneZPtr {
4679    /**
4680     * A pointer to the contents in the success state.
4681     * Reading from this pointer when `result_ok` is not set is undefined.
4682     */
4683    struct LDKInvoice *result;
4684    /**
4685     * Note that this value is always NULL, as there are no contents in the Err variant
4686     */
4687    void *err;
4688 } LDKCResult_InvoiceNoneZPtr;
4689
4690 /**
4691  * A CResult_InvoiceNoneZ represents the result of a fallible operation,
4692  * containing a crate::lightning_invoice::Invoice on success and a () on failure.
4693  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4694  */
4695 typedef struct LDKCResult_InvoiceNoneZ {
4696    /**
4697     * The contents of this CResult_InvoiceNoneZ, accessible via either
4698     * `err` or `result` depending on the state of `result_ok`.
4699     */
4700    union LDKCResult_InvoiceNoneZPtr contents;
4701    /**
4702     * Whether this CResult_InvoiceNoneZ represents a success state.
4703     */
4704    bool result_ok;
4705 } LDKCResult_InvoiceNoneZ;
4706
4707
4708
4709 /**
4710  * Represents a signed `RawInvoice` with cached hash. The signature is not checked and may be
4711  * invalid.
4712  *
4713  * # Invariants
4714  * The hash has to be either from the deserialized invoice or from the serialized `raw_invoice`.
4715  */
4716 typedef struct MUST_USE_STRUCT LDKSignedRawInvoice {
4717    /**
4718     * A pointer to the opaque Rust object.
4719     * Nearly everywhere, inner must be non-null, however in places where
4720     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4721     */
4722    LDKnativeSignedRawInvoice *inner;
4723    /**
4724     * Indicates that this is the only struct which contains the same pointer.
4725     * Rust functions which take ownership of an object provided via an argument require
4726     * this to be true and invalidate the object pointed to by inner.
4727     */
4728    bool is_owned;
4729 } LDKSignedRawInvoice;
4730
4731 /**
4732  * The contents of CResult_SignedRawInvoiceNoneZ
4733  */
4734 typedef union LDKCResult_SignedRawInvoiceNoneZPtr {
4735    /**
4736     * A pointer to the contents in the success state.
4737     * Reading from this pointer when `result_ok` is not set is undefined.
4738     */
4739    struct LDKSignedRawInvoice *result;
4740    /**
4741     * Note that this value is always NULL, as there are no contents in the Err variant
4742     */
4743    void *err;
4744 } LDKCResult_SignedRawInvoiceNoneZPtr;
4745
4746 /**
4747  * A CResult_SignedRawInvoiceNoneZ represents the result of a fallible operation,
4748  * containing a crate::lightning_invoice::SignedRawInvoice on success and a () on failure.
4749  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4750  */
4751 typedef struct LDKCResult_SignedRawInvoiceNoneZ {
4752    /**
4753     * The contents of this CResult_SignedRawInvoiceNoneZ, accessible via either
4754     * `err` or `result` depending on the state of `result_ok`.
4755     */
4756    union LDKCResult_SignedRawInvoiceNoneZPtr contents;
4757    /**
4758     * Whether this CResult_SignedRawInvoiceNoneZ represents a success state.
4759     */
4760    bool result_ok;
4761 } LDKCResult_SignedRawInvoiceNoneZ;
4762
4763
4764
4765 /**
4766  * Represents an syntactically correct Invoice for a payment on the lightning network,
4767  * but without the signature information.
4768  * De- and encoding should not lead to information loss but may lead to different hashes.
4769  *
4770  * For methods without docs see the corresponding methods in `Invoice`.
4771  */
4772 typedef struct MUST_USE_STRUCT LDKRawInvoice {
4773    /**
4774     * A pointer to the opaque Rust object.
4775     * Nearly everywhere, inner must be non-null, however in places where
4776     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4777     */
4778    LDKnativeRawInvoice *inner;
4779    /**
4780     * Indicates that this is the only struct which contains the same pointer.
4781     * Rust functions which take ownership of an object provided via an argument require
4782     * this to be true and invalidate the object pointed to by inner.
4783     */
4784    bool is_owned;
4785 } LDKRawInvoice;
4786
4787
4788
4789 /**
4790  * Recoverable signature
4791  */
4792 typedef struct MUST_USE_STRUCT LDKInvoiceSignature {
4793    /**
4794     * A pointer to the opaque Rust object.
4795     * Nearly everywhere, inner must be non-null, however in places where
4796     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4797     */
4798    LDKnativeInvoiceSignature *inner;
4799    /**
4800     * Indicates that this is the only struct which contains the same pointer.
4801     * Rust functions which take ownership of an object provided via an argument require
4802     * this to be true and invalidate the object pointed to by inner.
4803     */
4804    bool is_owned;
4805 } LDKInvoiceSignature;
4806
4807 /**
4808  * A tuple of 3 elements. See the individual fields for the types contained.
4809  */
4810 typedef struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ {
4811    /**
4812     * The element at position 0
4813     */
4814    struct LDKRawInvoice a;
4815    /**
4816     * The element at position 1
4817     */
4818    struct LDKThirtyTwoBytes b;
4819    /**
4820     * The element at position 2
4821     */
4822    struct LDKInvoiceSignature c;
4823 } LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ;
4824
4825
4826
4827 /**
4828  * Payee public key
4829  */
4830 typedef struct MUST_USE_STRUCT LDKPayeePubKey {
4831    /**
4832     * A pointer to the opaque Rust object.
4833     * Nearly everywhere, inner must be non-null, however in places where
4834     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4835     */
4836    LDKnativePayeePubKey *inner;
4837    /**
4838     * Indicates that this is the only struct which contains the same pointer.
4839     * Rust functions which take ownership of an object provided via an argument require
4840     * this to be true and invalidate the object pointed to by inner.
4841     */
4842    bool is_owned;
4843 } LDKPayeePubKey;
4844
4845 /**
4846  * The contents of CResult_PayeePubKeyErrorZ
4847  */
4848 typedef union LDKCResult_PayeePubKeyErrorZPtr {
4849    /**
4850     * A pointer to the contents in the success state.
4851     * Reading from this pointer when `result_ok` is not set is undefined.
4852     */
4853    struct LDKPayeePubKey *result;
4854    /**
4855     * A pointer to the contents in the error state.
4856     * Reading from this pointer when `result_ok` is set is undefined.
4857     */
4858    enum LDKSecp256k1Error *err;
4859 } LDKCResult_PayeePubKeyErrorZPtr;
4860
4861 /**
4862  * A CResult_PayeePubKeyErrorZ represents the result of a fallible operation,
4863  * containing a crate::lightning_invoice::PayeePubKey on success and a crate::c_types::Secp256k1Error on failure.
4864  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4865  */
4866 typedef struct LDKCResult_PayeePubKeyErrorZ {
4867    /**
4868     * The contents of this CResult_PayeePubKeyErrorZ, accessible via either
4869     * `err` or `result` depending on the state of `result_ok`.
4870     */
4871    union LDKCResult_PayeePubKeyErrorZPtr contents;
4872    /**
4873     * Whether this CResult_PayeePubKeyErrorZ represents a success state.
4874     */
4875    bool result_ok;
4876 } LDKCResult_PayeePubKeyErrorZ;
4877
4878
4879
4880 /**
4881  * Private routing information
4882  *
4883  * # Invariants
4884  * The encoded route has to be <1024 5bit characters long (<=639 bytes or <=12 hops)
4885  *
4886  */
4887 typedef struct MUST_USE_STRUCT LDKPrivateRoute {
4888    /**
4889     * A pointer to the opaque Rust object.
4890     * Nearly everywhere, inner must be non-null, however in places where
4891     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4892     */
4893    LDKnativePrivateRoute *inner;
4894    /**
4895     * Indicates that this is the only struct which contains the same pointer.
4896     * Rust functions which take ownership of an object provided via an argument require
4897     * this to be true and invalidate the object pointed to by inner.
4898     */
4899    bool is_owned;
4900 } LDKPrivateRoute;
4901
4902 /**
4903  * A dynamically-allocated array of crate::lightning_invoice::PrivateRoutes of arbitrary size.
4904  * This corresponds to std::vector in C++
4905  */
4906 typedef struct LDKCVec_PrivateRouteZ {
4907    /**
4908     * The elements in the array.
4909     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4910     */
4911    struct LDKPrivateRoute *data;
4912    /**
4913     * The number of elements pointed to by `data`.
4914     */
4915    uintptr_t datalen;
4916 } LDKCVec_PrivateRouteZ;
4917
4918
4919
4920 /**
4921  * A timestamp that refers to a date after 1 January 1970 which means its representation as UNIX
4922  * timestamp is positive.
4923  *
4924  * # Invariants
4925  * The UNIX timestamp representing the stored time has to be positive and small enough so that
4926  * a `EpiryTime` can be added to it without an overflow.
4927  */
4928 typedef struct MUST_USE_STRUCT LDKPositiveTimestamp {
4929    /**
4930     * A pointer to the opaque Rust object.
4931     * Nearly everywhere, inner must be non-null, however in places where
4932     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4933     */
4934    LDKnativePositiveTimestamp *inner;
4935    /**
4936     * Indicates that this is the only struct which contains the same pointer.
4937     * Rust functions which take ownership of an object provided via an argument require
4938     * this to be true and invalidate the object pointed to by inner.
4939     */
4940    bool is_owned;
4941 } LDKPositiveTimestamp;
4942
4943 /**
4944  * The contents of CResult_PositiveTimestampCreationErrorZ
4945  */
4946 typedef union LDKCResult_PositiveTimestampCreationErrorZPtr {
4947    /**
4948     * A pointer to the contents in the success state.
4949     * Reading from this pointer when `result_ok` is not set is undefined.
4950     */
4951    struct LDKPositiveTimestamp *result;
4952    /**
4953     * A pointer to the contents in the error state.
4954     * Reading from this pointer when `result_ok` is set is undefined.
4955     */
4956    enum LDKCreationError *err;
4957 } LDKCResult_PositiveTimestampCreationErrorZPtr;
4958
4959 /**
4960  * A CResult_PositiveTimestampCreationErrorZ represents the result of a fallible operation,
4961  * containing a crate::lightning_invoice::PositiveTimestamp on success and a crate::lightning_invoice::CreationError on failure.
4962  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4963  */
4964 typedef struct LDKCResult_PositiveTimestampCreationErrorZ {
4965    /**
4966     * The contents of this CResult_PositiveTimestampCreationErrorZ, accessible via either
4967     * `err` or `result` depending on the state of `result_ok`.
4968     */
4969    union LDKCResult_PositiveTimestampCreationErrorZPtr contents;
4970    /**
4971     * Whether this CResult_PositiveTimestampCreationErrorZ represents a success state.
4972     */
4973    bool result_ok;
4974 } LDKCResult_PositiveTimestampCreationErrorZ;
4975
4976 /**
4977  * The contents of CResult_NoneSemanticErrorZ
4978  */
4979 typedef union LDKCResult_NoneSemanticErrorZPtr {
4980    /**
4981     * Note that this value is always NULL, as there are no contents in the OK variant
4982     */
4983    void *result;
4984    /**
4985     * A pointer to the contents in the error state.
4986     * Reading from this pointer when `result_ok` is set is undefined.
4987     */
4988    enum LDKSemanticError *err;
4989 } LDKCResult_NoneSemanticErrorZPtr;
4990
4991 /**
4992  * A CResult_NoneSemanticErrorZ represents the result of a fallible operation,
4993  * containing a () on success and a crate::lightning_invoice::SemanticError on failure.
4994  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4995  */
4996 typedef struct LDKCResult_NoneSemanticErrorZ {
4997    /**
4998     * The contents of this CResult_NoneSemanticErrorZ, accessible via either
4999     * `err` or `result` depending on the state of `result_ok`.
5000     */
5001    union LDKCResult_NoneSemanticErrorZPtr contents;
5002    /**
5003     * Whether this CResult_NoneSemanticErrorZ represents a success state.
5004     */
5005    bool result_ok;
5006 } LDKCResult_NoneSemanticErrorZ;
5007
5008 /**
5009  * The contents of CResult_InvoiceSemanticErrorZ
5010  */
5011 typedef union LDKCResult_InvoiceSemanticErrorZPtr {
5012    /**
5013     * A pointer to the contents in the success state.
5014     * Reading from this pointer when `result_ok` is not set is undefined.
5015     */
5016    struct LDKInvoice *result;
5017    /**
5018     * A pointer to the contents in the error state.
5019     * Reading from this pointer when `result_ok` is set is undefined.
5020     */
5021    enum LDKSemanticError *err;
5022 } LDKCResult_InvoiceSemanticErrorZPtr;
5023
5024 /**
5025  * A CResult_InvoiceSemanticErrorZ represents the result of a fallible operation,
5026  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SemanticError on failure.
5027  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5028  */
5029 typedef struct LDKCResult_InvoiceSemanticErrorZ {
5030    /**
5031     * The contents of this CResult_InvoiceSemanticErrorZ, accessible via either
5032     * `err` or `result` depending on the state of `result_ok`.
5033     */
5034    union LDKCResult_InvoiceSemanticErrorZPtr contents;
5035    /**
5036     * Whether this CResult_InvoiceSemanticErrorZ represents a success state.
5037     */
5038    bool result_ok;
5039 } LDKCResult_InvoiceSemanticErrorZ;
5040
5041
5042
5043 /**
5044  * Description string
5045  *
5046  * # Invariants
5047  * The description can be at most 639 __bytes__ long
5048  */
5049 typedef struct MUST_USE_STRUCT LDKDescription {
5050    /**
5051     * A pointer to the opaque Rust object.
5052     * Nearly everywhere, inner must be non-null, however in places where
5053     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5054     */
5055    LDKnativeDescription *inner;
5056    /**
5057     * Indicates that this is the only struct which contains the same pointer.
5058     * Rust functions which take ownership of an object provided via an argument require
5059     * this to be true and invalidate the object pointed to by inner.
5060     */
5061    bool is_owned;
5062 } LDKDescription;
5063
5064 /**
5065  * The contents of CResult_DescriptionCreationErrorZ
5066  */
5067 typedef union LDKCResult_DescriptionCreationErrorZPtr {
5068    /**
5069     * A pointer to the contents in the success state.
5070     * Reading from this pointer when `result_ok` is not set is undefined.
5071     */
5072    struct LDKDescription *result;
5073    /**
5074     * A pointer to the contents in the error state.
5075     * Reading from this pointer when `result_ok` is set is undefined.
5076     */
5077    enum LDKCreationError *err;
5078 } LDKCResult_DescriptionCreationErrorZPtr;
5079
5080 /**
5081  * A CResult_DescriptionCreationErrorZ represents the result of a fallible operation,
5082  * containing a crate::lightning_invoice::Description on success and a crate::lightning_invoice::CreationError on failure.
5083  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5084  */
5085 typedef struct LDKCResult_DescriptionCreationErrorZ {
5086    /**
5087     * The contents of this CResult_DescriptionCreationErrorZ, accessible via either
5088     * `err` or `result` depending on the state of `result_ok`.
5089     */
5090    union LDKCResult_DescriptionCreationErrorZPtr contents;
5091    /**
5092     * Whether this CResult_DescriptionCreationErrorZ represents a success state.
5093     */
5094    bool result_ok;
5095 } LDKCResult_DescriptionCreationErrorZ;
5096
5097
5098
5099 /**
5100  * Positive duration that defines when (relatively to the timestamp) in the future the invoice
5101  * expires
5102  *
5103  * # Invariants
5104  * The number of seconds this expiry time represents has to be in the range
5105  * `0...(SYSTEM_TIME_MAX_UNIX_TIMESTAMP - MAX_EXPIRY_TIME)` to avoid overflows when adding it to a
5106  * timestamp
5107  */
5108 typedef struct MUST_USE_STRUCT LDKExpiryTime {
5109    /**
5110     * A pointer to the opaque Rust object.
5111     * Nearly everywhere, inner must be non-null, however in places where
5112     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5113     */
5114    LDKnativeExpiryTime *inner;
5115    /**
5116     * Indicates that this is the only struct which contains the same pointer.
5117     * Rust functions which take ownership of an object provided via an argument require
5118     * this to be true and invalidate the object pointed to by inner.
5119     */
5120    bool is_owned;
5121 } LDKExpiryTime;
5122
5123 /**
5124  * The contents of CResult_ExpiryTimeCreationErrorZ
5125  */
5126 typedef union LDKCResult_ExpiryTimeCreationErrorZPtr {
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 LDKExpiryTime *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    enum LDKCreationError *err;
5137 } LDKCResult_ExpiryTimeCreationErrorZPtr;
5138
5139 /**
5140  * A CResult_ExpiryTimeCreationErrorZ represents the result of a fallible operation,
5141  * containing a crate::lightning_invoice::ExpiryTime on success and a crate::lightning_invoice::CreationError on failure.
5142  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5143  */
5144 typedef struct LDKCResult_ExpiryTimeCreationErrorZ {
5145    /**
5146     * The contents of this CResult_ExpiryTimeCreationErrorZ, accessible via either
5147     * `err` or `result` depending on the state of `result_ok`.
5148     */
5149    union LDKCResult_ExpiryTimeCreationErrorZPtr contents;
5150    /**
5151     * Whether this CResult_ExpiryTimeCreationErrorZ represents a success state.
5152     */
5153    bool result_ok;
5154 } LDKCResult_ExpiryTimeCreationErrorZ;
5155
5156 /**
5157  * The contents of CResult_PrivateRouteCreationErrorZ
5158  */
5159 typedef union LDKCResult_PrivateRouteCreationErrorZPtr {
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 LDKPrivateRoute *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    enum LDKCreationError *err;
5170 } LDKCResult_PrivateRouteCreationErrorZPtr;
5171
5172 /**
5173  * A CResult_PrivateRouteCreationErrorZ represents the result of a fallible operation,
5174  * containing a crate::lightning_invoice::PrivateRoute on success and a crate::lightning_invoice::CreationError on failure.
5175  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5176  */
5177 typedef struct LDKCResult_PrivateRouteCreationErrorZ {
5178    /**
5179     * The contents of this CResult_PrivateRouteCreationErrorZ, accessible via either
5180     * `err` or `result` depending on the state of `result_ok`.
5181     */
5182    union LDKCResult_PrivateRouteCreationErrorZPtr contents;
5183    /**
5184     * Whether this CResult_PrivateRouteCreationErrorZ represents a success state.
5185     */
5186    bool result_ok;
5187 } LDKCResult_PrivateRouteCreationErrorZ;
5188
5189 /**
5190  * The contents of CResult_StringErrorZ
5191  */
5192 typedef union LDKCResult_StringErrorZPtr {
5193    /**
5194     * A pointer to the contents in the success state.
5195     * Reading from this pointer when `result_ok` is not set is undefined.
5196     */
5197    struct LDKStr *result;
5198    /**
5199     * A pointer to the contents in the error state.
5200     * Reading from this pointer when `result_ok` is set is undefined.
5201     */
5202    enum LDKSecp256k1Error *err;
5203 } LDKCResult_StringErrorZPtr;
5204
5205 /**
5206  * A CResult_StringErrorZ represents the result of a fallible operation,
5207  * containing a crate::c_types::Str on success and a crate::c_types::Secp256k1Error on failure.
5208  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5209  */
5210 typedef struct LDKCResult_StringErrorZ {
5211    /**
5212     * The contents of this CResult_StringErrorZ, accessible via either
5213     * `err` or `result` depending on the state of `result_ok`.
5214     */
5215    union LDKCResult_StringErrorZPtr contents;
5216    /**
5217     * Whether this CResult_StringErrorZ represents a success state.
5218     */
5219    bool result_ok;
5220 } LDKCResult_StringErrorZ;
5221
5222 /**
5223  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
5224  */
5225 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
5226    /**
5227     * A pointer to the contents in the success state.
5228     * Reading from this pointer when `result_ok` is not set is undefined.
5229     */
5230    struct LDKChannelMonitorUpdate *result;
5231    /**
5232     * A pointer to the contents in the error state.
5233     * Reading from this pointer when `result_ok` is set is undefined.
5234     */
5235    struct LDKDecodeError *err;
5236 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
5237
5238 /**
5239  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
5240  * containing a crate::lightning::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
5241  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5242  */
5243 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
5244    /**
5245     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
5246     * `err` or `result` depending on the state of `result_ok`.
5247     */
5248    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
5249    /**
5250     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
5251     */
5252    bool result_ok;
5253 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
5254
5255 /**
5256  * The contents of CResult_HTLCUpdateDecodeErrorZ
5257  */
5258 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
5259    /**
5260     * A pointer to the contents in the success state.
5261     * Reading from this pointer when `result_ok` is not set is undefined.
5262     */
5263    struct LDKHTLCUpdate *result;
5264    /**
5265     * A pointer to the contents in the error state.
5266     * Reading from this pointer when `result_ok` is set is undefined.
5267     */
5268    struct LDKDecodeError *err;
5269 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
5270
5271 /**
5272  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
5273  * containing a crate::lightning::chain::channelmonitor::HTLCUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
5274  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5275  */
5276 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
5277    /**
5278     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
5279     * `err` or `result` depending on the state of `result_ok`.
5280     */
5281    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
5282    /**
5283     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
5284     */
5285    bool result_ok;
5286 } LDKCResult_HTLCUpdateDecodeErrorZ;
5287
5288
5289
5290 /**
5291  * General Err type for ChannelMonitor actions. Generally, this implies that the data provided is
5292  * inconsistent with the ChannelMonitor being called. eg for ChannelMonitor::update_monitor this
5293  * means you tried to update a monitor for a different channel or the ChannelMonitorUpdate was
5294  * corrupted.
5295  * Contains a developer-readable error message.
5296  */
5297 typedef struct MUST_USE_STRUCT LDKMonitorUpdateError {
5298    /**
5299     * A pointer to the opaque Rust object.
5300     * Nearly everywhere, inner must be non-null, however in places where
5301     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5302     */
5303    LDKnativeMonitorUpdateError *inner;
5304    /**
5305     * Indicates that this is the only struct which contains the same pointer.
5306     * Rust functions which take ownership of an object provided via an argument require
5307     * this to be true and invalidate the object pointed to by inner.
5308     */
5309    bool is_owned;
5310 } LDKMonitorUpdateError;
5311
5312 /**
5313  * The contents of CResult_NoneMonitorUpdateErrorZ
5314  */
5315 typedef union LDKCResult_NoneMonitorUpdateErrorZPtr {
5316    /**
5317     * Note that this value is always NULL, as there are no contents in the OK variant
5318     */
5319    void *result;
5320    /**
5321     * A pointer to the contents in the error state.
5322     * Reading from this pointer when `result_ok` is set is undefined.
5323     */
5324    struct LDKMonitorUpdateError *err;
5325 } LDKCResult_NoneMonitorUpdateErrorZPtr;
5326
5327 /**
5328  * A CResult_NoneMonitorUpdateErrorZ represents the result of a fallible operation,
5329  * containing a () on success and a crate::lightning::chain::channelmonitor::MonitorUpdateError on failure.
5330  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5331  */
5332 typedef struct LDKCResult_NoneMonitorUpdateErrorZ {
5333    /**
5334     * The contents of this CResult_NoneMonitorUpdateErrorZ, accessible via either
5335     * `err` or `result` depending on the state of `result_ok`.
5336     */
5337    union LDKCResult_NoneMonitorUpdateErrorZPtr contents;
5338    /**
5339     * Whether this CResult_NoneMonitorUpdateErrorZ represents a success state.
5340     */
5341    bool result_ok;
5342 } LDKCResult_NoneMonitorUpdateErrorZ;
5343
5344 /**
5345  * A tuple of 2 elements. See the individual fields for the types contained.
5346  */
5347 typedef struct LDKC2Tuple_OutPointScriptZ {
5348    /**
5349     * The element at position 0
5350     */
5351    struct LDKOutPoint a;
5352    /**
5353     * The element at position 1
5354     */
5355    struct LDKCVec_u8Z b;
5356 } LDKC2Tuple_OutPointScriptZ;
5357
5358 /**
5359  * A tuple of 2 elements. See the individual fields for the types contained.
5360  */
5361 typedef struct LDKC2Tuple_u32ScriptZ {
5362    /**
5363     * The element at position 0
5364     */
5365    uint32_t a;
5366    /**
5367     * The element at position 1
5368     */
5369    struct LDKCVec_u8Z b;
5370 } LDKC2Tuple_u32ScriptZ;
5371
5372 /**
5373  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
5374  * This corresponds to std::vector in C++
5375  */
5376 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
5377    /**
5378     * The elements in the array.
5379     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5380     */
5381    struct LDKC2Tuple_u32ScriptZ *data;
5382    /**
5383     * The number of elements pointed to by `data`.
5384     */
5385    uintptr_t datalen;
5386 } LDKCVec_C2Tuple_u32ScriptZZ;
5387
5388 /**
5389  * A tuple of 2 elements. See the individual fields for the types contained.
5390  */
5391 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
5392    /**
5393     * The element at position 0
5394     */
5395    struct LDKThirtyTwoBytes a;
5396    /**
5397     * The element at position 1
5398     */
5399    struct LDKCVec_C2Tuple_u32ScriptZZ b;
5400 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
5401
5402 /**
5403  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
5404  * This corresponds to std::vector in C++
5405  */
5406 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
5407    /**
5408     * The elements in the array.
5409     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5410     */
5411    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
5412    /**
5413     * The number of elements pointed to by `data`.
5414     */
5415    uintptr_t datalen;
5416 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
5417
5418 /**
5419  * Some information provided on receipt of payment depends on whether the payment received is a
5420  * spontaneous payment or a \"conventional\" lightning payment that's paying an invoice.
5421  */
5422 typedef enum LDKPaymentPurpose_Tag {
5423    /**
5424     * Information for receiving a payment that we generated an invoice for.
5425     */
5426    LDKPaymentPurpose_InvoicePayment,
5427    /**
5428     * Because this is a spontaneous payment, the payer generated their own preimage rather than us
5429     * (the payee) providing a preimage.
5430     */
5431    LDKPaymentPurpose_SpontaneousPayment,
5432    /**
5433     * Must be last for serialization purposes
5434     */
5435    LDKPaymentPurpose_Sentinel,
5436 } LDKPaymentPurpose_Tag;
5437
5438 typedef struct LDKPaymentPurpose_LDKInvoicePayment_Body {
5439    /**
5440     * The preimage to the payment_hash, if the payment hash (and secret) were fetched via
5441     * [`ChannelManager::create_inbound_payment`]. If provided, this can be handed directly to
5442     * [`ChannelManager::claim_funds`].
5443     *
5444     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
5445     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
5446     *
5447     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
5448     */
5449    struct LDKThirtyTwoBytes payment_preimage;
5450    /**
5451     * The \"payment secret\". This authenticates the sender to the recipient, preventing a
5452     * number of deanonymization attacks during the routing process.
5453     * It is provided here for your reference, however its accuracy is enforced directly by
5454     * [`ChannelManager`] using the values you previously provided to
5455     * [`ChannelManager::create_inbound_payment`] or
5456     * [`ChannelManager::create_inbound_payment_for_hash`].
5457     *
5458     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
5459     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
5460     * [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
5461     */
5462    struct LDKThirtyTwoBytes payment_secret;
5463    /**
5464     * This is the `user_payment_id` which was provided to
5465     * [`ChannelManager::create_inbound_payment_for_hash`] or
5466     * [`ChannelManager::create_inbound_payment`]. It has no meaning inside of LDK and is
5467     * simply copied here. It may be used to correlate PaymentReceived events with invoice
5468     * metadata stored elsewhere.
5469     *
5470     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
5471     * [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
5472     */
5473    uint64_t user_payment_id;
5474 } LDKPaymentPurpose_LDKInvoicePayment_Body;
5475
5476 typedef struct MUST_USE_STRUCT LDKPaymentPurpose {
5477    LDKPaymentPurpose_Tag tag;
5478    union {
5479       LDKPaymentPurpose_LDKInvoicePayment_Body invoice_payment;
5480       struct {
5481          struct LDKThirtyTwoBytes spontaneous_payment;
5482       };
5483    };
5484 } LDKPaymentPurpose;
5485
5486 /**
5487  * An Event which you should probably take some action in response to.
5488  *
5489  * Note that while Writeable and Readable are implemented for Event, you probably shouldn't use
5490  * them directly as they don't round-trip exactly (for example FundingGenerationReady is never
5491  * written as it makes no sense to respond to it after reconnecting to peers).
5492  */
5493 typedef enum LDKEvent_Tag {
5494    /**
5495     * Used to indicate that the client should generate a funding transaction with the given
5496     * parameters and then call ChannelManager::funding_transaction_generated.
5497     * Generated in ChannelManager message handling.
5498     * Note that *all inputs* in the funding transaction must spend SegWit outputs or your
5499     * counterparty can steal your funds!
5500     */
5501    LDKEvent_FundingGenerationReady,
5502    /**
5503     * Indicates we've received money! Just gotta dig out that payment preimage and feed it to
5504     * ChannelManager::claim_funds to get it....
5505     * Note that if the preimage is not known or the amount paid is incorrect, you should call
5506     * ChannelManager::fail_htlc_backwards to free up resources for this HTLC and avoid
5507     * network congestion.
5508     * The amount paid should be considered 'incorrect' when it is less than or more than twice
5509     * the amount expected.
5510     * If you fail to call either ChannelManager::claim_funds or
5511     * ChannelManager::fail_htlc_backwards within the HTLC's timeout, the HTLC will be
5512     * automatically failed.
5513     */
5514    LDKEvent_PaymentReceived,
5515    /**
5516     * Indicates an outbound payment we made succeeded (ie it made it all the way to its target
5517     * and we got back the payment preimage for it).
5518     */
5519    LDKEvent_PaymentSent,
5520    /**
5521     * Indicates an outbound payment we made failed. Probably some intermediary node dropped
5522     * something. You may wish to retry with a different route.
5523     */
5524    LDKEvent_PaymentFailed,
5525    /**
5526     * Used to indicate that ChannelManager::process_pending_htlc_forwards should be called at a
5527     * time in the future.
5528     */
5529    LDKEvent_PendingHTLCsForwardable,
5530    /**
5531     * Used to indicate that an output which you should know how to spend was confirmed on chain
5532     * and is now spendable.
5533     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
5534     * counterparty spending them due to some kind of timeout. Thus, you need to store them
5535     * somewhere and spend them when you create on-chain transactions.
5536     */
5537    LDKEvent_SpendableOutputs,
5538    /**
5539     * This event is generated when a payment has been successfully forwarded through us and a
5540     * forwarding fee earned.
5541     */
5542    LDKEvent_PaymentForwarded,
5543    /**
5544     * Must be last for serialization purposes
5545     */
5546    LDKEvent_Sentinel,
5547 } LDKEvent_Tag;
5548
5549 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
5550    /**
5551     * The random channel_id we picked which you'll need to pass into
5552     * ChannelManager::funding_transaction_generated.
5553     */
5554    struct LDKThirtyTwoBytes temporary_channel_id;
5555    /**
5556     * The value, in satoshis, that the output should have.
5557     */
5558    uint64_t channel_value_satoshis;
5559    /**
5560     * The script which should be used in the transaction output.
5561     */
5562    struct LDKCVec_u8Z output_script;
5563    /**
5564     * The value passed in to ChannelManager::create_channel
5565     */
5566    uint64_t user_channel_id;
5567 } LDKEvent_LDKFundingGenerationReady_Body;
5568
5569 typedef struct LDKEvent_LDKPaymentReceived_Body {
5570    /**
5571     * The hash for which the preimage should be handed to the ChannelManager.
5572     */
5573    struct LDKThirtyTwoBytes payment_hash;
5574    /**
5575     * The value, in thousandths of a satoshi, that this payment is for. Note that you must
5576     * compare this to the expected value before accepting the payment (as otherwise you are
5577     * providing proof-of-payment for less than the value you expected!).
5578     */
5579    uint64_t amt;
5580    /**
5581     * Information for claiming this received payment, based on whether the purpose of the
5582     * payment is to pay an invoice or to send a spontaneous payment.
5583     */
5584    struct LDKPaymentPurpose purpose;
5585 } LDKEvent_LDKPaymentReceived_Body;
5586
5587 typedef struct LDKEvent_LDKPaymentSent_Body {
5588    /**
5589     * The preimage to the hash given to ChannelManager::send_payment.
5590     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
5591     * store it somehow!
5592     */
5593    struct LDKThirtyTwoBytes payment_preimage;
5594 } LDKEvent_LDKPaymentSent_Body;
5595
5596 typedef struct LDKEvent_LDKPaymentFailed_Body {
5597    /**
5598     * The hash which was given to ChannelManager::send_payment.
5599     */
5600    struct LDKThirtyTwoBytes payment_hash;
5601    /**
5602     * Indicates the payment was rejected for some reason by the recipient. This implies that
5603     * the payment has failed, not just the route in question. If this is not set, you may
5604     * retry the payment via a different route.
5605     */
5606    bool rejected_by_dest;
5607 } LDKEvent_LDKPaymentFailed_Body;
5608
5609 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
5610    /**
5611     * The minimum amount of time that should be waited prior to calling
5612     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
5613     * you should wait a random amount of time in roughly the range (now + time_forwardable,
5614     * now + 5*time_forwardable).
5615     */
5616    uint64_t time_forwardable;
5617 } LDKEvent_LDKPendingHTLCsForwardable_Body;
5618
5619 typedef struct LDKEvent_LDKSpendableOutputs_Body {
5620    /**
5621     * The outputs which you should store as spendable by you.
5622     */
5623    struct LDKCVec_SpendableOutputDescriptorZ outputs;
5624 } LDKEvent_LDKSpendableOutputs_Body;
5625
5626 typedef struct LDKEvent_LDKPaymentForwarded_Body {
5627    /**
5628     * The fee, in milli-satoshis, which was earned as a result of the payment.
5629     *
5630     * Note that if we force-closed the channel over which we forwarded an HTLC while the HTLC
5631     * was pending, the amount the next hop claimed will have been rounded down to the nearest
5632     * whole satoshi. Thus, the fee calculated here may be higher than expected as we still
5633     * claimed the full value in millisatoshis from the source. In this case,
5634     * `claim_from_onchain_tx` will be set.
5635     *
5636     * If the channel which sent us the payment has been force-closed, we will claim the funds
5637     * via an on-chain transaction. In that case we do not yet know the on-chain transaction
5638     * fees which we will spend and will instead set this to `None`. It is possible duplicate
5639     * `PaymentForwarded` events are generated for the same payment iff `fee_earned_msat` is
5640     * `None`.
5641     */
5642    struct LDKCOption_u64Z fee_earned_msat;
5643    /**
5644     * If this is `true`, the forwarded HTLC was claimed by our counterparty via an on-chain
5645     * transaction.
5646     */
5647    bool claim_from_onchain_tx;
5648 } LDKEvent_LDKPaymentForwarded_Body;
5649
5650 typedef struct MUST_USE_STRUCT LDKEvent {
5651    LDKEvent_Tag tag;
5652    union {
5653       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
5654       LDKEvent_LDKPaymentReceived_Body payment_received;
5655       LDKEvent_LDKPaymentSent_Body payment_sent;
5656       LDKEvent_LDKPaymentFailed_Body payment_failed;
5657       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
5658       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
5659       LDKEvent_LDKPaymentForwarded_Body payment_forwarded;
5660    };
5661 } LDKEvent;
5662
5663 /**
5664  * A dynamically-allocated array of crate::lightning::util::events::Events of arbitrary size.
5665  * This corresponds to std::vector in C++
5666  */
5667 typedef struct LDKCVec_EventZ {
5668    /**
5669     * The elements in the array.
5670     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5671     */
5672    struct LDKEvent *data;
5673    /**
5674     * The number of elements pointed to by `data`.
5675     */
5676    uintptr_t datalen;
5677 } LDKCVec_EventZ;
5678
5679 /**
5680  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
5681  * This corresponds to std::vector in C++
5682  */
5683 typedef struct LDKCVec_TransactionZ {
5684    /**
5685     * The elements in the array.
5686     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5687     */
5688    struct LDKTransaction *data;
5689    /**
5690     * The number of elements pointed to by `data`.
5691     */
5692    uintptr_t datalen;
5693 } LDKCVec_TransactionZ;
5694
5695 /**
5696  * A tuple of 2 elements. See the individual fields for the types contained.
5697  */
5698 typedef struct LDKC2Tuple_u32TxOutZ {
5699    /**
5700     * The element at position 0
5701     */
5702    uint32_t a;
5703    /**
5704     * The element at position 1
5705     */
5706    struct LDKTxOut b;
5707 } LDKC2Tuple_u32TxOutZ;
5708
5709 /**
5710  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
5711  * This corresponds to std::vector in C++
5712  */
5713 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
5714    /**
5715     * The elements in the array.
5716     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5717     */
5718    struct LDKC2Tuple_u32TxOutZ *data;
5719    /**
5720     * The number of elements pointed to by `data`.
5721     */
5722    uintptr_t datalen;
5723 } LDKCVec_C2Tuple_u32TxOutZZ;
5724
5725 /**
5726  * A tuple of 2 elements. See the individual fields for the types contained.
5727  */
5728 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
5729    /**
5730     * The element at position 0
5731     */
5732    struct LDKThirtyTwoBytes a;
5733    /**
5734     * The element at position 1
5735     */
5736    struct LDKCVec_C2Tuple_u32TxOutZZ b;
5737 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
5738
5739 /**
5740  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
5741  * This corresponds to std::vector in C++
5742  */
5743 typedef struct LDKCVec_TransactionOutputsZ {
5744    /**
5745     * The elements in the array.
5746     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5747     */
5748    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
5749    /**
5750     * The number of elements pointed to by `data`.
5751     */
5752    uintptr_t datalen;
5753 } LDKCVec_TransactionOutputsZ;
5754
5755 /**
5756  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
5757  */
5758 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
5759    /**
5760     * A pointer to the contents in the success state.
5761     * Reading from this pointer when `result_ok` is not set is undefined.
5762     */
5763    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
5764    /**
5765     * A pointer to the contents in the error state.
5766     * Reading from this pointer when `result_ok` is set is undefined.
5767     */
5768    struct LDKDecodeError *err;
5769 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
5770
5771 /**
5772  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
5773  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
5774  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5775  */
5776 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
5777    /**
5778     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
5779     * `err` or `result` depending on the state of `result_ok`.
5780     */
5781    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
5782    /**
5783     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
5784     */
5785    bool result_ok;
5786 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
5787
5788 /**
5789  * The contents of CResult_boolLightningErrorZ
5790  */
5791 typedef union LDKCResult_boolLightningErrorZPtr {
5792    /**
5793     * A pointer to the contents in the success state.
5794     * Reading from this pointer when `result_ok` is not set is undefined.
5795     */
5796    bool *result;
5797    /**
5798     * A pointer to the contents in the error state.
5799     * Reading from this pointer when `result_ok` is set is undefined.
5800     */
5801    struct LDKLightningError *err;
5802 } LDKCResult_boolLightningErrorZPtr;
5803
5804 /**
5805  * A CResult_boolLightningErrorZ represents the result of a fallible operation,
5806  * containing a bool on success and a crate::lightning::ln::msgs::LightningError on failure.
5807  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5808  */
5809 typedef struct LDKCResult_boolLightningErrorZ {
5810    /**
5811     * The contents of this CResult_boolLightningErrorZ, accessible via either
5812     * `err` or `result` depending on the state of `result_ok`.
5813     */
5814    union LDKCResult_boolLightningErrorZPtr contents;
5815    /**
5816     * Whether this CResult_boolLightningErrorZ represents a success state.
5817     */
5818    bool result_ok;
5819 } LDKCResult_boolLightningErrorZ;
5820
5821 /**
5822  * A tuple of 3 elements. See the individual fields for the types contained.
5823  */
5824 typedef struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
5825    /**
5826     * The element at position 0
5827     */
5828    struct LDKChannelAnnouncement a;
5829    /**
5830     * The element at position 1
5831     */
5832    struct LDKChannelUpdate b;
5833    /**
5834     * The element at position 2
5835     */
5836    struct LDKChannelUpdate c;
5837 } LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
5838
5839 /**
5840  * A dynamically-allocated array of crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZs of arbitrary size.
5841  * This corresponds to std::vector in C++
5842  */
5843 typedef struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5844    /**
5845     * The elements in the array.
5846     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5847     */
5848    struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *data;
5849    /**
5850     * The number of elements pointed to by `data`.
5851     */
5852    uintptr_t datalen;
5853 } LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
5854
5855 /**
5856  * A dynamically-allocated array of crate::lightning::ln::msgs::NodeAnnouncements of arbitrary size.
5857  * This corresponds to std::vector in C++
5858  */
5859 typedef struct LDKCVec_NodeAnnouncementZ {
5860    /**
5861     * The elements in the array.
5862     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5863     */
5864    struct LDKNodeAnnouncement *data;
5865    /**
5866     * The number of elements pointed to by `data`.
5867     */
5868    uintptr_t datalen;
5869 } LDKCVec_NodeAnnouncementZ;
5870
5871 /**
5872  * The contents of CResult_NoneLightningErrorZ
5873  */
5874 typedef union LDKCResult_NoneLightningErrorZPtr {
5875    /**
5876     * Note that this value is always NULL, as there are no contents in the OK variant
5877     */
5878    void *result;
5879    /**
5880     * A pointer to the contents in the error state.
5881     * Reading from this pointer when `result_ok` is set is undefined.
5882     */
5883    struct LDKLightningError *err;
5884 } LDKCResult_NoneLightningErrorZPtr;
5885
5886 /**
5887  * A CResult_NoneLightningErrorZ represents the result of a fallible operation,
5888  * containing a () on success and a crate::lightning::ln::msgs::LightningError on failure.
5889  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5890  */
5891 typedef struct LDKCResult_NoneLightningErrorZ {
5892    /**
5893     * The contents of this CResult_NoneLightningErrorZ, accessible via either
5894     * `err` or `result` depending on the state of `result_ok`.
5895     */
5896    union LDKCResult_NoneLightningErrorZPtr contents;
5897    /**
5898     * Whether this CResult_NoneLightningErrorZ represents a success state.
5899     */
5900    bool result_ok;
5901 } LDKCResult_NoneLightningErrorZ;
5902
5903 /**
5904  * A dynamically-allocated array of crate::c_types::PublicKeys of arbitrary size.
5905  * This corresponds to std::vector in C++
5906  */
5907 typedef struct LDKCVec_PublicKeyZ {
5908    /**
5909     * The elements in the array.
5910     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5911     */
5912    struct LDKPublicKey *data;
5913    /**
5914     * The number of elements pointed to by `data`.
5915     */
5916    uintptr_t datalen;
5917 } LDKCVec_PublicKeyZ;
5918
5919
5920
5921 /**
5922  * Error for PeerManager errors. If you get one of these, you must disconnect the socket and
5923  * generate no further read_event/write_buffer_space_avail/socket_disconnected calls for the
5924  * descriptor.
5925  */
5926 typedef struct MUST_USE_STRUCT LDKPeerHandleError {
5927    /**
5928     * A pointer to the opaque Rust object.
5929     * Nearly everywhere, inner must be non-null, however in places where
5930     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5931     */
5932    LDKnativePeerHandleError *inner;
5933    /**
5934     * Indicates that this is the only struct which contains the same pointer.
5935     * Rust functions which take ownership of an object provided via an argument require
5936     * this to be true and invalidate the object pointed to by inner.
5937     */
5938    bool is_owned;
5939 } LDKPeerHandleError;
5940
5941 /**
5942  * The contents of CResult_CVec_u8ZPeerHandleErrorZ
5943  */
5944 typedef union LDKCResult_CVec_u8ZPeerHandleErrorZPtr {
5945    /**
5946     * A pointer to the contents in the success state.
5947     * Reading from this pointer when `result_ok` is not set is undefined.
5948     */
5949    struct LDKCVec_u8Z *result;
5950    /**
5951     * A pointer to the contents in the error state.
5952     * Reading from this pointer when `result_ok` is set is undefined.
5953     */
5954    struct LDKPeerHandleError *err;
5955 } LDKCResult_CVec_u8ZPeerHandleErrorZPtr;
5956
5957 /**
5958  * A CResult_CVec_u8ZPeerHandleErrorZ represents the result of a fallible operation,
5959  * containing a crate::c_types::derived::CVec_u8Z on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
5960  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5961  */
5962 typedef struct LDKCResult_CVec_u8ZPeerHandleErrorZ {
5963    /**
5964     * The contents of this CResult_CVec_u8ZPeerHandleErrorZ, accessible via either
5965     * `err` or `result` depending on the state of `result_ok`.
5966     */
5967    union LDKCResult_CVec_u8ZPeerHandleErrorZPtr contents;
5968    /**
5969     * Whether this CResult_CVec_u8ZPeerHandleErrorZ represents a success state.
5970     */
5971    bool result_ok;
5972 } LDKCResult_CVec_u8ZPeerHandleErrorZ;
5973
5974 /**
5975  * The contents of CResult_NonePeerHandleErrorZ
5976  */
5977 typedef union LDKCResult_NonePeerHandleErrorZPtr {
5978    /**
5979     * Note that this value is always NULL, as there are no contents in the OK variant
5980     */
5981    void *result;
5982    /**
5983     * A pointer to the contents in the error state.
5984     * Reading from this pointer when `result_ok` is set is undefined.
5985     */
5986    struct LDKPeerHandleError *err;
5987 } LDKCResult_NonePeerHandleErrorZPtr;
5988
5989 /**
5990  * A CResult_NonePeerHandleErrorZ represents the result of a fallible operation,
5991  * containing a () on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
5992  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5993  */
5994 typedef struct LDKCResult_NonePeerHandleErrorZ {
5995    /**
5996     * The contents of this CResult_NonePeerHandleErrorZ, accessible via either
5997     * `err` or `result` depending on the state of `result_ok`.
5998     */
5999    union LDKCResult_NonePeerHandleErrorZPtr contents;
6000    /**
6001     * Whether this CResult_NonePeerHandleErrorZ represents a success state.
6002     */
6003    bool result_ok;
6004 } LDKCResult_NonePeerHandleErrorZ;
6005
6006 /**
6007  * The contents of CResult_boolPeerHandleErrorZ
6008  */
6009 typedef union LDKCResult_boolPeerHandleErrorZPtr {
6010    /**
6011     * A pointer to the contents in the success state.
6012     * Reading from this pointer when `result_ok` is not set is undefined.
6013     */
6014    bool *result;
6015    /**
6016     * A pointer to the contents in the error state.
6017     * Reading from this pointer when `result_ok` is set is undefined.
6018     */
6019    struct LDKPeerHandleError *err;
6020 } LDKCResult_boolPeerHandleErrorZPtr;
6021
6022 /**
6023  * A CResult_boolPeerHandleErrorZ represents the result of a fallible operation,
6024  * containing a bool on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
6025  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6026  */
6027 typedef struct LDKCResult_boolPeerHandleErrorZ {
6028    /**
6029     * The contents of this CResult_boolPeerHandleErrorZ, accessible via either
6030     * `err` or `result` depending on the state of `result_ok`.
6031     */
6032    union LDKCResult_boolPeerHandleErrorZPtr contents;
6033    /**
6034     * Whether this CResult_boolPeerHandleErrorZ represents a success state.
6035     */
6036    bool result_ok;
6037 } LDKCResult_boolPeerHandleErrorZ;
6038
6039
6040
6041 /**
6042  * Details about one direction of a channel. Received
6043  * within a channel update.
6044  */
6045 typedef struct MUST_USE_STRUCT LDKDirectionalChannelInfo {
6046    /**
6047     * A pointer to the opaque Rust object.
6048     * Nearly everywhere, inner must be non-null, however in places where
6049     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6050     */
6051    LDKnativeDirectionalChannelInfo *inner;
6052    /**
6053     * Indicates that this is the only struct which contains the same pointer.
6054     * Rust functions which take ownership of an object provided via an argument require
6055     * this to be true and invalidate the object pointed to by inner.
6056     */
6057    bool is_owned;
6058 } LDKDirectionalChannelInfo;
6059
6060 /**
6061  * The contents of CResult_DirectionalChannelInfoDecodeErrorZ
6062  */
6063 typedef union LDKCResult_DirectionalChannelInfoDecodeErrorZPtr {
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 LDKDirectionalChannelInfo *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_DirectionalChannelInfoDecodeErrorZPtr;
6075
6076 /**
6077  * A CResult_DirectionalChannelInfoDecodeErrorZ represents the result of a fallible operation,
6078  * containing a crate::lightning::routing::network_graph::DirectionalChannelInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6079  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6080  */
6081 typedef struct LDKCResult_DirectionalChannelInfoDecodeErrorZ {
6082    /**
6083     * The contents of this CResult_DirectionalChannelInfoDecodeErrorZ, accessible via either
6084     * `err` or `result` depending on the state of `result_ok`.
6085     */
6086    union LDKCResult_DirectionalChannelInfoDecodeErrorZPtr contents;
6087    /**
6088     * Whether this CResult_DirectionalChannelInfoDecodeErrorZ represents a success state.
6089     */
6090    bool result_ok;
6091 } LDKCResult_DirectionalChannelInfoDecodeErrorZ;
6092
6093
6094
6095 /**
6096  * Details about a channel (both directions).
6097  * Received within a channel announcement.
6098  */
6099 typedef struct MUST_USE_STRUCT LDKChannelInfo {
6100    /**
6101     * A pointer to the opaque Rust object.
6102     * Nearly everywhere, inner must be non-null, however in places where
6103     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6104     */
6105    LDKnativeChannelInfo *inner;
6106    /**
6107     * Indicates that this is the only struct which contains the same pointer.
6108     * Rust functions which take ownership of an object provided via an argument require
6109     * this to be true and invalidate the object pointed to by inner.
6110     */
6111    bool is_owned;
6112 } LDKChannelInfo;
6113
6114 /**
6115  * The contents of CResult_ChannelInfoDecodeErrorZ
6116  */
6117 typedef union LDKCResult_ChannelInfoDecodeErrorZPtr {
6118    /**
6119     * A pointer to the contents in the success state.
6120     * Reading from this pointer when `result_ok` is not set is undefined.
6121     */
6122    struct LDKChannelInfo *result;
6123    /**
6124     * A pointer to the contents in the error state.
6125     * Reading from this pointer when `result_ok` is set is undefined.
6126     */
6127    struct LDKDecodeError *err;
6128 } LDKCResult_ChannelInfoDecodeErrorZPtr;
6129
6130 /**
6131  * A CResult_ChannelInfoDecodeErrorZ represents the result of a fallible operation,
6132  * containing a crate::lightning::routing::network_graph::ChannelInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6133  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6134  */
6135 typedef struct LDKCResult_ChannelInfoDecodeErrorZ {
6136    /**
6137     * The contents of this CResult_ChannelInfoDecodeErrorZ, accessible via either
6138     * `err` or `result` depending on the state of `result_ok`.
6139     */
6140    union LDKCResult_ChannelInfoDecodeErrorZPtr contents;
6141    /**
6142     * Whether this CResult_ChannelInfoDecodeErrorZ represents a success state.
6143     */
6144    bool result_ok;
6145 } LDKCResult_ChannelInfoDecodeErrorZ;
6146
6147
6148
6149 /**
6150  * Fees for routing via a given channel or a node
6151  */
6152 typedef struct MUST_USE_STRUCT LDKRoutingFees {
6153    /**
6154     * A pointer to the opaque Rust object.
6155     * Nearly everywhere, inner must be non-null, however in places where
6156     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6157     */
6158    LDKnativeRoutingFees *inner;
6159    /**
6160     * Indicates that this is the only struct which contains the same pointer.
6161     * Rust functions which take ownership of an object provided via an argument require
6162     * this to be true and invalidate the object pointed to by inner.
6163     */
6164    bool is_owned;
6165 } LDKRoutingFees;
6166
6167 /**
6168  * The contents of CResult_RoutingFeesDecodeErrorZ
6169  */
6170 typedef union LDKCResult_RoutingFeesDecodeErrorZPtr {
6171    /**
6172     * A pointer to the contents in the success state.
6173     * Reading from this pointer when `result_ok` is not set is undefined.
6174     */
6175    struct LDKRoutingFees *result;
6176    /**
6177     * A pointer to the contents in the error state.
6178     * Reading from this pointer when `result_ok` is set is undefined.
6179     */
6180    struct LDKDecodeError *err;
6181 } LDKCResult_RoutingFeesDecodeErrorZPtr;
6182
6183 /**
6184  * A CResult_RoutingFeesDecodeErrorZ represents the result of a fallible operation,
6185  * containing a crate::lightning::routing::network_graph::RoutingFees on success and a crate::lightning::ln::msgs::DecodeError on failure.
6186  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6187  */
6188 typedef struct LDKCResult_RoutingFeesDecodeErrorZ {
6189    /**
6190     * The contents of this CResult_RoutingFeesDecodeErrorZ, accessible via either
6191     * `err` or `result` depending on the state of `result_ok`.
6192     */
6193    union LDKCResult_RoutingFeesDecodeErrorZPtr contents;
6194    /**
6195     * Whether this CResult_RoutingFeesDecodeErrorZ represents a success state.
6196     */
6197    bool result_ok;
6198 } LDKCResult_RoutingFeesDecodeErrorZ;
6199
6200
6201
6202 /**
6203  * Information received in the latest node_announcement from this node.
6204  */
6205 typedef struct MUST_USE_STRUCT LDKNodeAnnouncementInfo {
6206    /**
6207     * A pointer to the opaque Rust object.
6208     * Nearly everywhere, inner must be non-null, however in places where
6209     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6210     */
6211    LDKnativeNodeAnnouncementInfo *inner;
6212    /**
6213     * Indicates that this is the only struct which contains the same pointer.
6214     * Rust functions which take ownership of an object provided via an argument require
6215     * this to be true and invalidate the object pointed to by inner.
6216     */
6217    bool is_owned;
6218 } LDKNodeAnnouncementInfo;
6219
6220 /**
6221  * The contents of CResult_NodeAnnouncementInfoDecodeErrorZ
6222  */
6223 typedef union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr {
6224    /**
6225     * A pointer to the contents in the success state.
6226     * Reading from this pointer when `result_ok` is not set is undefined.
6227     */
6228    struct LDKNodeAnnouncementInfo *result;
6229    /**
6230     * A pointer to the contents in the error state.
6231     * Reading from this pointer when `result_ok` is set is undefined.
6232     */
6233    struct LDKDecodeError *err;
6234 } LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr;
6235
6236 /**
6237  * A CResult_NodeAnnouncementInfoDecodeErrorZ represents the result of a fallible operation,
6238  * containing a crate::lightning::routing::network_graph::NodeAnnouncementInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6239  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6240  */
6241 typedef struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ {
6242    /**
6243     * The contents of this CResult_NodeAnnouncementInfoDecodeErrorZ, accessible via either
6244     * `err` or `result` depending on the state of `result_ok`.
6245     */
6246    union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr contents;
6247    /**
6248     * Whether this CResult_NodeAnnouncementInfoDecodeErrorZ represents a success state.
6249     */
6250    bool result_ok;
6251 } LDKCResult_NodeAnnouncementInfoDecodeErrorZ;
6252
6253 /**
6254  * A dynamically-allocated array of u64s of arbitrary size.
6255  * This corresponds to std::vector in C++
6256  */
6257 typedef struct LDKCVec_u64Z {
6258    /**
6259     * The elements in the array.
6260     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6261     */
6262    uint64_t *data;
6263    /**
6264     * The number of elements pointed to by `data`.
6265     */
6266    uintptr_t datalen;
6267 } LDKCVec_u64Z;
6268
6269
6270
6271 /**
6272  * Details about a node in the network, known from the network announcement.
6273  */
6274 typedef struct MUST_USE_STRUCT LDKNodeInfo {
6275    /**
6276     * A pointer to the opaque Rust object.
6277     * Nearly everywhere, inner must be non-null, however in places where
6278     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6279     */
6280    LDKnativeNodeInfo *inner;
6281    /**
6282     * Indicates that this is the only struct which contains the same pointer.
6283     * Rust functions which take ownership of an object provided via an argument require
6284     * this to be true and invalidate the object pointed to by inner.
6285     */
6286    bool is_owned;
6287 } LDKNodeInfo;
6288
6289 /**
6290  * The contents of CResult_NodeInfoDecodeErrorZ
6291  */
6292 typedef union LDKCResult_NodeInfoDecodeErrorZPtr {
6293    /**
6294     * A pointer to the contents in the success state.
6295     * Reading from this pointer when `result_ok` is not set is undefined.
6296     */
6297    struct LDKNodeInfo *result;
6298    /**
6299     * A pointer to the contents in the error state.
6300     * Reading from this pointer when `result_ok` is set is undefined.
6301     */
6302    struct LDKDecodeError *err;
6303 } LDKCResult_NodeInfoDecodeErrorZPtr;
6304
6305 /**
6306  * A CResult_NodeInfoDecodeErrorZ represents the result of a fallible operation,
6307  * containing a crate::lightning::routing::network_graph::NodeInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6308  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6309  */
6310 typedef struct LDKCResult_NodeInfoDecodeErrorZ {
6311    /**
6312     * The contents of this CResult_NodeInfoDecodeErrorZ, accessible via either
6313     * `err` or `result` depending on the state of `result_ok`.
6314     */
6315    union LDKCResult_NodeInfoDecodeErrorZPtr contents;
6316    /**
6317     * Whether this CResult_NodeInfoDecodeErrorZ represents a success state.
6318     */
6319    bool result_ok;
6320 } LDKCResult_NodeInfoDecodeErrorZ;
6321
6322
6323
6324 /**
6325  * Represents the network as nodes and channels between them
6326  */
6327 typedef struct MUST_USE_STRUCT LDKNetworkGraph {
6328    /**
6329     * A pointer to the opaque Rust object.
6330     * Nearly everywhere, inner must be non-null, however in places where
6331     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6332     */
6333    LDKnativeNetworkGraph *inner;
6334    /**
6335     * Indicates that this is the only struct which contains the same pointer.
6336     * Rust functions which take ownership of an object provided via an argument require
6337     * this to be true and invalidate the object pointed to by inner.
6338     */
6339    bool is_owned;
6340 } LDKNetworkGraph;
6341
6342 /**
6343  * The contents of CResult_NetworkGraphDecodeErrorZ
6344  */
6345 typedef union LDKCResult_NetworkGraphDecodeErrorZPtr {
6346    /**
6347     * A pointer to the contents in the success state.
6348     * Reading from this pointer when `result_ok` is not set is undefined.
6349     */
6350    struct LDKNetworkGraph *result;
6351    /**
6352     * A pointer to the contents in the error state.
6353     * Reading from this pointer when `result_ok` is set is undefined.
6354     */
6355    struct LDKDecodeError *err;
6356 } LDKCResult_NetworkGraphDecodeErrorZPtr;
6357
6358 /**
6359  * A CResult_NetworkGraphDecodeErrorZ represents the result of a fallible operation,
6360  * containing a crate::lightning::routing::network_graph::NetworkGraph on success and a crate::lightning::ln::msgs::DecodeError on failure.
6361  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6362  */
6363 typedef struct LDKCResult_NetworkGraphDecodeErrorZ {
6364    /**
6365     * The contents of this CResult_NetworkGraphDecodeErrorZ, accessible via either
6366     * `err` or `result` depending on the state of `result_ok`.
6367     */
6368    union LDKCResult_NetworkGraphDecodeErrorZPtr contents;
6369    /**
6370     * Whether this CResult_NetworkGraphDecodeErrorZ represents a success state.
6371     */
6372    bool result_ok;
6373 } LDKCResult_NetworkGraphDecodeErrorZ;
6374
6375 /**
6376  * The contents of CResult_NetAddressu8Z
6377  */
6378 typedef union LDKCResult_NetAddressu8ZPtr {
6379    /**
6380     * A pointer to the contents in the success state.
6381     * Reading from this pointer when `result_ok` is not set is undefined.
6382     */
6383    struct LDKNetAddress *result;
6384    /**
6385     * A pointer to the contents in the error state.
6386     * Reading from this pointer when `result_ok` is set is undefined.
6387     */
6388    uint8_t *err;
6389 } LDKCResult_NetAddressu8ZPtr;
6390
6391 /**
6392  * A CResult_NetAddressu8Z represents the result of a fallible operation,
6393  * containing a crate::lightning::ln::msgs::NetAddress on success and a u8 on failure.
6394  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6395  */
6396 typedef struct LDKCResult_NetAddressu8Z {
6397    /**
6398     * The contents of this CResult_NetAddressu8Z, accessible via either
6399     * `err` or `result` depending on the state of `result_ok`.
6400     */
6401    union LDKCResult_NetAddressu8ZPtr contents;
6402    /**
6403     * Whether this CResult_NetAddressu8Z represents a success state.
6404     */
6405    bool result_ok;
6406 } LDKCResult_NetAddressu8Z;
6407
6408 /**
6409  * The contents of CResult_CResult_NetAddressu8ZDecodeErrorZ
6410  */
6411 typedef union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr {
6412    /**
6413     * A pointer to the contents in the success state.
6414     * Reading from this pointer when `result_ok` is not set is undefined.
6415     */
6416    struct LDKCResult_NetAddressu8Z *result;
6417    /**
6418     * A pointer to the contents in the error state.
6419     * Reading from this pointer when `result_ok` is set is undefined.
6420     */
6421    struct LDKDecodeError *err;
6422 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr;
6423
6424 /**
6425  * A CResult_CResult_NetAddressu8ZDecodeErrorZ represents the result of a fallible operation,
6426  * containing a crate::c_types::derived::CResult_NetAddressu8Z on success and a crate::lightning::ln::msgs::DecodeError on failure.
6427  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6428  */
6429 typedef struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ {
6430    /**
6431     * The contents of this CResult_CResult_NetAddressu8ZDecodeErrorZ, accessible via either
6432     * `err` or `result` depending on the state of `result_ok`.
6433     */
6434    union LDKCResult_CResult_NetAddressu8ZDecodeErrorZPtr contents;
6435    /**
6436     * Whether this CResult_CResult_NetAddressu8ZDecodeErrorZ represents a success state.
6437     */
6438    bool result_ok;
6439 } LDKCResult_CResult_NetAddressu8ZDecodeErrorZ;
6440
6441 /**
6442  * The contents of CResult_NetAddressDecodeErrorZ
6443  */
6444 typedef union LDKCResult_NetAddressDecodeErrorZPtr {
6445    /**
6446     * A pointer to the contents in the success state.
6447     * Reading from this pointer when `result_ok` is not set is undefined.
6448     */
6449    struct LDKNetAddress *result;
6450    /**
6451     * A pointer to the contents in the error state.
6452     * Reading from this pointer when `result_ok` is set is undefined.
6453     */
6454    struct LDKDecodeError *err;
6455 } LDKCResult_NetAddressDecodeErrorZPtr;
6456
6457 /**
6458  * A CResult_NetAddressDecodeErrorZ represents the result of a fallible operation,
6459  * containing a crate::lightning::ln::msgs::NetAddress on success and a crate::lightning::ln::msgs::DecodeError on failure.
6460  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6461  */
6462 typedef struct LDKCResult_NetAddressDecodeErrorZ {
6463    /**
6464     * The contents of this CResult_NetAddressDecodeErrorZ, accessible via either
6465     * `err` or `result` depending on the state of `result_ok`.
6466     */
6467    union LDKCResult_NetAddressDecodeErrorZPtr contents;
6468    /**
6469     * Whether this CResult_NetAddressDecodeErrorZ represents a success state.
6470     */
6471    bool result_ok;
6472 } LDKCResult_NetAddressDecodeErrorZ;
6473
6474
6475
6476 /**
6477  * An update_add_htlc message to be sent or received from a peer
6478  */
6479 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
6480    /**
6481     * A pointer to the opaque Rust object.
6482     * Nearly everywhere, inner must be non-null, however in places where
6483     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6484     */
6485    LDKnativeUpdateAddHTLC *inner;
6486    /**
6487     * Indicates that this is the only struct which contains the same pointer.
6488     * Rust functions which take ownership of an object provided via an argument require
6489     * this to be true and invalidate the object pointed to by inner.
6490     */
6491    bool is_owned;
6492 } LDKUpdateAddHTLC;
6493
6494 /**
6495  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateAddHTLCs of arbitrary size.
6496  * This corresponds to std::vector in C++
6497  */
6498 typedef struct LDKCVec_UpdateAddHTLCZ {
6499    /**
6500     * The elements in the array.
6501     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6502     */
6503    struct LDKUpdateAddHTLC *data;
6504    /**
6505     * The number of elements pointed to by `data`.
6506     */
6507    uintptr_t datalen;
6508 } LDKCVec_UpdateAddHTLCZ;
6509
6510
6511
6512 /**
6513  * An update_fulfill_htlc message to be sent or received from a peer
6514  */
6515 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
6516    /**
6517     * A pointer to the opaque Rust object.
6518     * Nearly everywhere, inner must be non-null, however in places where
6519     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6520     */
6521    LDKnativeUpdateFulfillHTLC *inner;
6522    /**
6523     * Indicates that this is the only struct which contains the same pointer.
6524     * Rust functions which take ownership of an object provided via an argument require
6525     * this to be true and invalidate the object pointed to by inner.
6526     */
6527    bool is_owned;
6528 } LDKUpdateFulfillHTLC;
6529
6530 /**
6531  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
6532  * This corresponds to std::vector in C++
6533  */
6534 typedef struct LDKCVec_UpdateFulfillHTLCZ {
6535    /**
6536     * The elements in the array.
6537     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6538     */
6539    struct LDKUpdateFulfillHTLC *data;
6540    /**
6541     * The number of elements pointed to by `data`.
6542     */
6543    uintptr_t datalen;
6544 } LDKCVec_UpdateFulfillHTLCZ;
6545
6546
6547
6548 /**
6549  * An update_fail_htlc message to be sent or received from a peer
6550  */
6551 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
6552    /**
6553     * A pointer to the opaque Rust object.
6554     * Nearly everywhere, inner must be non-null, however in places where
6555     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6556     */
6557    LDKnativeUpdateFailHTLC *inner;
6558    /**
6559     * Indicates that this is the only struct which contains the same pointer.
6560     * Rust functions which take ownership of an object provided via an argument require
6561     * this to be true and invalidate the object pointed to by inner.
6562     */
6563    bool is_owned;
6564 } LDKUpdateFailHTLC;
6565
6566 /**
6567  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailHTLCs of arbitrary size.
6568  * This corresponds to std::vector in C++
6569  */
6570 typedef struct LDKCVec_UpdateFailHTLCZ {
6571    /**
6572     * The elements in the array.
6573     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6574     */
6575    struct LDKUpdateFailHTLC *data;
6576    /**
6577     * The number of elements pointed to by `data`.
6578     */
6579    uintptr_t datalen;
6580 } LDKCVec_UpdateFailHTLCZ;
6581
6582
6583
6584 /**
6585  * An update_fail_malformed_htlc message to be sent or received from a peer
6586  */
6587 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
6588    /**
6589     * A pointer to the opaque Rust object.
6590     * Nearly everywhere, inner must be non-null, however in places where
6591     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6592     */
6593    LDKnativeUpdateFailMalformedHTLC *inner;
6594    /**
6595     * Indicates that this is the only struct which contains the same pointer.
6596     * Rust functions which take ownership of an object provided via an argument require
6597     * this to be true and invalidate the object pointed to by inner.
6598     */
6599    bool is_owned;
6600 } LDKUpdateFailMalformedHTLC;
6601
6602 /**
6603  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
6604  * This corresponds to std::vector in C++
6605  */
6606 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
6607    /**
6608     * The elements in the array.
6609     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6610     */
6611    struct LDKUpdateFailMalformedHTLC *data;
6612    /**
6613     * The number of elements pointed to by `data`.
6614     */
6615    uintptr_t datalen;
6616 } LDKCVec_UpdateFailMalformedHTLCZ;
6617
6618 /**
6619  * The contents of CResult_AcceptChannelDecodeErrorZ
6620  */
6621 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
6622    /**
6623     * A pointer to the contents in the success state.
6624     * Reading from this pointer when `result_ok` is not set is undefined.
6625     */
6626    struct LDKAcceptChannel *result;
6627    /**
6628     * A pointer to the contents in the error state.
6629     * Reading from this pointer when `result_ok` is set is undefined.
6630     */
6631    struct LDKDecodeError *err;
6632 } LDKCResult_AcceptChannelDecodeErrorZPtr;
6633
6634 /**
6635  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
6636  * containing a crate::lightning::ln::msgs::AcceptChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
6637  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6638  */
6639 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
6640    /**
6641     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
6642     * `err` or `result` depending on the state of `result_ok`.
6643     */
6644    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
6645    /**
6646     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
6647     */
6648    bool result_ok;
6649 } LDKCResult_AcceptChannelDecodeErrorZ;
6650
6651 /**
6652  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
6653  */
6654 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
6655    /**
6656     * A pointer to the contents in the success state.
6657     * Reading from this pointer when `result_ok` is not set is undefined.
6658     */
6659    struct LDKAnnouncementSignatures *result;
6660    /**
6661     * A pointer to the contents in the error state.
6662     * Reading from this pointer when `result_ok` is set is undefined.
6663     */
6664    struct LDKDecodeError *err;
6665 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
6666
6667 /**
6668  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
6669  * containing a crate::lightning::ln::msgs::AnnouncementSignatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
6670  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6671  */
6672 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
6673    /**
6674     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
6675     * `err` or `result` depending on the state of `result_ok`.
6676     */
6677    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
6678    /**
6679     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
6680     */
6681    bool result_ok;
6682 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
6683
6684 /**
6685  * The contents of CResult_ChannelReestablishDecodeErrorZ
6686  */
6687 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
6688    /**
6689     * A pointer to the contents in the success state.
6690     * Reading from this pointer when `result_ok` is not set is undefined.
6691     */
6692    struct LDKChannelReestablish *result;
6693    /**
6694     * A pointer to the contents in the error state.
6695     * Reading from this pointer when `result_ok` is set is undefined.
6696     */
6697    struct LDKDecodeError *err;
6698 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
6699
6700 /**
6701  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
6702  * containing a crate::lightning::ln::msgs::ChannelReestablish on success and a crate::lightning::ln::msgs::DecodeError on failure.
6703  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6704  */
6705 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
6706    /**
6707     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
6708     * `err` or `result` depending on the state of `result_ok`.
6709     */
6710    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
6711    /**
6712     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
6713     */
6714    bool result_ok;
6715 } LDKCResult_ChannelReestablishDecodeErrorZ;
6716
6717 /**
6718  * The contents of CResult_ClosingSignedDecodeErrorZ
6719  */
6720 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
6721    /**
6722     * A pointer to the contents in the success state.
6723     * Reading from this pointer when `result_ok` is not set is undefined.
6724     */
6725    struct LDKClosingSigned *result;
6726    /**
6727     * A pointer to the contents in the error state.
6728     * Reading from this pointer when `result_ok` is set is undefined.
6729     */
6730    struct LDKDecodeError *err;
6731 } LDKCResult_ClosingSignedDecodeErrorZPtr;
6732
6733 /**
6734  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
6735  * containing a crate::lightning::ln::msgs::ClosingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
6736  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6737  */
6738 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
6739    /**
6740     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
6741     * `err` or `result` depending on the state of `result_ok`.
6742     */
6743    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
6744    /**
6745     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
6746     */
6747    bool result_ok;
6748 } LDKCResult_ClosingSignedDecodeErrorZ;
6749
6750
6751
6752 /**
6753  * A commitment_signed message to be sent or received from a peer
6754  */
6755 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
6756    /**
6757     * A pointer to the opaque Rust object.
6758     * Nearly everywhere, inner must be non-null, however in places where
6759     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6760     */
6761    LDKnativeCommitmentSigned *inner;
6762    /**
6763     * Indicates that this is the only struct which contains the same pointer.
6764     * Rust functions which take ownership of an object provided via an argument require
6765     * this to be true and invalidate the object pointed to by inner.
6766     */
6767    bool is_owned;
6768 } LDKCommitmentSigned;
6769
6770 /**
6771  * The contents of CResult_CommitmentSignedDecodeErrorZ
6772  */
6773 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
6774    /**
6775     * A pointer to the contents in the success state.
6776     * Reading from this pointer when `result_ok` is not set is undefined.
6777     */
6778    struct LDKCommitmentSigned *result;
6779    /**
6780     * A pointer to the contents in the error state.
6781     * Reading from this pointer when `result_ok` is set is undefined.
6782     */
6783    struct LDKDecodeError *err;
6784 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
6785
6786 /**
6787  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
6788  * containing a crate::lightning::ln::msgs::CommitmentSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
6789  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6790  */
6791 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
6792    /**
6793     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
6794     * `err` or `result` depending on the state of `result_ok`.
6795     */
6796    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
6797    /**
6798     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
6799     */
6800    bool result_ok;
6801 } LDKCResult_CommitmentSignedDecodeErrorZ;
6802
6803 /**
6804  * The contents of CResult_FundingCreatedDecodeErrorZ
6805  */
6806 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
6807    /**
6808     * A pointer to the contents in the success state.
6809     * Reading from this pointer when `result_ok` is not set is undefined.
6810     */
6811    struct LDKFundingCreated *result;
6812    /**
6813     * A pointer to the contents in the error state.
6814     * Reading from this pointer when `result_ok` is set is undefined.
6815     */
6816    struct LDKDecodeError *err;
6817 } LDKCResult_FundingCreatedDecodeErrorZPtr;
6818
6819 /**
6820  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
6821  * containing a crate::lightning::ln::msgs::FundingCreated on success and a crate::lightning::ln::msgs::DecodeError on failure.
6822  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6823  */
6824 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
6825    /**
6826     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
6827     * `err` or `result` depending on the state of `result_ok`.
6828     */
6829    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
6830    /**
6831     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
6832     */
6833    bool result_ok;
6834 } LDKCResult_FundingCreatedDecodeErrorZ;
6835
6836 /**
6837  * The contents of CResult_FundingSignedDecodeErrorZ
6838  */
6839 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
6840    /**
6841     * A pointer to the contents in the success state.
6842     * Reading from this pointer when `result_ok` is not set is undefined.
6843     */
6844    struct LDKFundingSigned *result;
6845    /**
6846     * A pointer to the contents in the error state.
6847     * Reading from this pointer when `result_ok` is set is undefined.
6848     */
6849    struct LDKDecodeError *err;
6850 } LDKCResult_FundingSignedDecodeErrorZPtr;
6851
6852 /**
6853  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
6854  * containing a crate::lightning::ln::msgs::FundingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
6855  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6856  */
6857 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
6858    /**
6859     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
6860     * `err` or `result` depending on the state of `result_ok`.
6861     */
6862    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
6863    /**
6864     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
6865     */
6866    bool result_ok;
6867 } LDKCResult_FundingSignedDecodeErrorZ;
6868
6869 /**
6870  * The contents of CResult_FundingLockedDecodeErrorZ
6871  */
6872 typedef union LDKCResult_FundingLockedDecodeErrorZPtr {
6873    /**
6874     * A pointer to the contents in the success state.
6875     * Reading from this pointer when `result_ok` is not set is undefined.
6876     */
6877    struct LDKFundingLocked *result;
6878    /**
6879     * A pointer to the contents in the error state.
6880     * Reading from this pointer when `result_ok` is set is undefined.
6881     */
6882    struct LDKDecodeError *err;
6883 } LDKCResult_FundingLockedDecodeErrorZPtr;
6884
6885 /**
6886  * A CResult_FundingLockedDecodeErrorZ represents the result of a fallible operation,
6887  * containing a crate::lightning::ln::msgs::FundingLocked on success and a crate::lightning::ln::msgs::DecodeError on failure.
6888  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6889  */
6890 typedef struct LDKCResult_FundingLockedDecodeErrorZ {
6891    /**
6892     * The contents of this CResult_FundingLockedDecodeErrorZ, accessible via either
6893     * `err` or `result` depending on the state of `result_ok`.
6894     */
6895    union LDKCResult_FundingLockedDecodeErrorZPtr contents;
6896    /**
6897     * Whether this CResult_FundingLockedDecodeErrorZ represents a success state.
6898     */
6899    bool result_ok;
6900 } LDKCResult_FundingLockedDecodeErrorZ;
6901
6902
6903
6904 /**
6905  * An init message to be sent or received from a peer
6906  */
6907 typedef struct MUST_USE_STRUCT LDKInit {
6908    /**
6909     * A pointer to the opaque Rust object.
6910     * Nearly everywhere, inner must be non-null, however in places where
6911     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6912     */
6913    LDKnativeInit *inner;
6914    /**
6915     * Indicates that this is the only struct which contains the same pointer.
6916     * Rust functions which take ownership of an object provided via an argument require
6917     * this to be true and invalidate the object pointed to by inner.
6918     */
6919    bool is_owned;
6920 } LDKInit;
6921
6922 /**
6923  * The contents of CResult_InitDecodeErrorZ
6924  */
6925 typedef union LDKCResult_InitDecodeErrorZPtr {
6926    /**
6927     * A pointer to the contents in the success state.
6928     * Reading from this pointer when `result_ok` is not set is undefined.
6929     */
6930    struct LDKInit *result;
6931    /**
6932     * A pointer to the contents in the error state.
6933     * Reading from this pointer when `result_ok` is set is undefined.
6934     */
6935    struct LDKDecodeError *err;
6936 } LDKCResult_InitDecodeErrorZPtr;
6937
6938 /**
6939  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
6940  * containing a crate::lightning::ln::msgs::Init on success and a crate::lightning::ln::msgs::DecodeError on failure.
6941  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6942  */
6943 typedef struct LDKCResult_InitDecodeErrorZ {
6944    /**
6945     * The contents of this CResult_InitDecodeErrorZ, accessible via either
6946     * `err` or `result` depending on the state of `result_ok`.
6947     */
6948    union LDKCResult_InitDecodeErrorZPtr contents;
6949    /**
6950     * Whether this CResult_InitDecodeErrorZ represents a success state.
6951     */
6952    bool result_ok;
6953 } LDKCResult_InitDecodeErrorZ;
6954
6955 /**
6956  * The contents of CResult_OpenChannelDecodeErrorZ
6957  */
6958 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
6959    /**
6960     * A pointer to the contents in the success state.
6961     * Reading from this pointer when `result_ok` is not set is undefined.
6962     */
6963    struct LDKOpenChannel *result;
6964    /**
6965     * A pointer to the contents in the error state.
6966     * Reading from this pointer when `result_ok` is set is undefined.
6967     */
6968    struct LDKDecodeError *err;
6969 } LDKCResult_OpenChannelDecodeErrorZPtr;
6970
6971 /**
6972  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
6973  * containing a crate::lightning::ln::msgs::OpenChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
6974  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6975  */
6976 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
6977    /**
6978     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
6979     * `err` or `result` depending on the state of `result_ok`.
6980     */
6981    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
6982    /**
6983     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
6984     */
6985    bool result_ok;
6986 } LDKCResult_OpenChannelDecodeErrorZ;
6987
6988 /**
6989  * The contents of CResult_RevokeAndACKDecodeErrorZ
6990  */
6991 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
6992    /**
6993     * A pointer to the contents in the success state.
6994     * Reading from this pointer when `result_ok` is not set is undefined.
6995     */
6996    struct LDKRevokeAndACK *result;
6997    /**
6998     * A pointer to the contents in the error state.
6999     * Reading from this pointer when `result_ok` is set is undefined.
7000     */
7001    struct LDKDecodeError *err;
7002 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
7003
7004 /**
7005  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
7006  * containing a crate::lightning::ln::msgs::RevokeAndACK on success and a crate::lightning::ln::msgs::DecodeError on failure.
7007  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7008  */
7009 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
7010    /**
7011     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
7012     * `err` or `result` depending on the state of `result_ok`.
7013     */
7014    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
7015    /**
7016     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
7017     */
7018    bool result_ok;
7019 } LDKCResult_RevokeAndACKDecodeErrorZ;
7020
7021 /**
7022  * The contents of CResult_ShutdownDecodeErrorZ
7023  */
7024 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
7025    /**
7026     * A pointer to the contents in the success state.
7027     * Reading from this pointer when `result_ok` is not set is undefined.
7028     */
7029    struct LDKShutdown *result;
7030    /**
7031     * A pointer to the contents in the error state.
7032     * Reading from this pointer when `result_ok` is set is undefined.
7033     */
7034    struct LDKDecodeError *err;
7035 } LDKCResult_ShutdownDecodeErrorZPtr;
7036
7037 /**
7038  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
7039  * containing a crate::lightning::ln::msgs::Shutdown on success and a crate::lightning::ln::msgs::DecodeError on failure.
7040  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7041  */
7042 typedef struct LDKCResult_ShutdownDecodeErrorZ {
7043    /**
7044     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
7045     * `err` or `result` depending on the state of `result_ok`.
7046     */
7047    union LDKCResult_ShutdownDecodeErrorZPtr contents;
7048    /**
7049     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
7050     */
7051    bool result_ok;
7052 } LDKCResult_ShutdownDecodeErrorZ;
7053
7054 /**
7055  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
7056  */
7057 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
7058    /**
7059     * A pointer to the contents in the success state.
7060     * Reading from this pointer when `result_ok` is not set is undefined.
7061     */
7062    struct LDKUpdateFailHTLC *result;
7063    /**
7064     * A pointer to the contents in the error state.
7065     * Reading from this pointer when `result_ok` is set is undefined.
7066     */
7067    struct LDKDecodeError *err;
7068 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
7069
7070 /**
7071  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
7072  * containing a crate::lightning::ln::msgs::UpdateFailHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
7073  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7074  */
7075 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
7076    /**
7077     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
7078     * `err` or `result` depending on the state of `result_ok`.
7079     */
7080    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
7081    /**
7082     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
7083     */
7084    bool result_ok;
7085 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
7086
7087 /**
7088  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
7089  */
7090 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
7091    /**
7092     * A pointer to the contents in the success state.
7093     * Reading from this pointer when `result_ok` is not set is undefined.
7094     */
7095    struct LDKUpdateFailMalformedHTLC *result;
7096    /**
7097     * A pointer to the contents in the error state.
7098     * Reading from this pointer when `result_ok` is set is undefined.
7099     */
7100    struct LDKDecodeError *err;
7101 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
7102
7103 /**
7104  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
7105  * containing a crate::lightning::ln::msgs::UpdateFailMalformedHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
7106  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7107  */
7108 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
7109    /**
7110     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
7111     * `err` or `result` depending on the state of `result_ok`.
7112     */
7113    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
7114    /**
7115     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
7116     */
7117    bool result_ok;
7118 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
7119
7120
7121
7122 /**
7123  * An update_fee message to be sent or received from a peer
7124  */
7125 typedef struct MUST_USE_STRUCT LDKUpdateFee {
7126    /**
7127     * A pointer to the opaque Rust object.
7128     * Nearly everywhere, inner must be non-null, however in places where
7129     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7130     */
7131    LDKnativeUpdateFee *inner;
7132    /**
7133     * Indicates that this is the only struct which contains the same pointer.
7134     * Rust functions which take ownership of an object provided via an argument require
7135     * this to be true and invalidate the object pointed to by inner.
7136     */
7137    bool is_owned;
7138 } LDKUpdateFee;
7139
7140 /**
7141  * The contents of CResult_UpdateFeeDecodeErrorZ
7142  */
7143 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
7144    /**
7145     * A pointer to the contents in the success state.
7146     * Reading from this pointer when `result_ok` is not set is undefined.
7147     */
7148    struct LDKUpdateFee *result;
7149    /**
7150     * A pointer to the contents in the error state.
7151     * Reading from this pointer when `result_ok` is set is undefined.
7152     */
7153    struct LDKDecodeError *err;
7154 } LDKCResult_UpdateFeeDecodeErrorZPtr;
7155
7156 /**
7157  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
7158  * containing a crate::lightning::ln::msgs::UpdateFee on success and a crate::lightning::ln::msgs::DecodeError on failure.
7159  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7160  */
7161 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
7162    /**
7163     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
7164     * `err` or `result` depending on the state of `result_ok`.
7165     */
7166    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
7167    /**
7168     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
7169     */
7170    bool result_ok;
7171 } LDKCResult_UpdateFeeDecodeErrorZ;
7172
7173 /**
7174  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
7175  */
7176 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
7177    /**
7178     * A pointer to the contents in the success state.
7179     * Reading from this pointer when `result_ok` is not set is undefined.
7180     */
7181    struct LDKUpdateFulfillHTLC *result;
7182    /**
7183     * A pointer to the contents in the error state.
7184     * Reading from this pointer when `result_ok` is set is undefined.
7185     */
7186    struct LDKDecodeError *err;
7187 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
7188
7189 /**
7190  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
7191  * containing a crate::lightning::ln::msgs::UpdateFulfillHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
7192  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7193  */
7194 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
7195    /**
7196     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
7197     * `err` or `result` depending on the state of `result_ok`.
7198     */
7199    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
7200    /**
7201     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
7202     */
7203    bool result_ok;
7204 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
7205
7206 /**
7207  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
7208  */
7209 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
7210    /**
7211     * A pointer to the contents in the success state.
7212     * Reading from this pointer when `result_ok` is not set is undefined.
7213     */
7214    struct LDKUpdateAddHTLC *result;
7215    /**
7216     * A pointer to the contents in the error state.
7217     * Reading from this pointer when `result_ok` is set is undefined.
7218     */
7219    struct LDKDecodeError *err;
7220 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
7221
7222 /**
7223  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
7224  * containing a crate::lightning::ln::msgs::UpdateAddHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
7225  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7226  */
7227 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
7228    /**
7229     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
7230     * `err` or `result` depending on the state of `result_ok`.
7231     */
7232    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
7233    /**
7234     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
7235     */
7236    bool result_ok;
7237 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
7238
7239
7240
7241 /**
7242  * A ping message to be sent or received from a peer
7243  */
7244 typedef struct MUST_USE_STRUCT LDKPing {
7245    /**
7246     * A pointer to the opaque Rust object.
7247     * Nearly everywhere, inner must be non-null, however in places where
7248     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7249     */
7250    LDKnativePing *inner;
7251    /**
7252     * Indicates that this is the only struct which contains the same pointer.
7253     * Rust functions which take ownership of an object provided via an argument require
7254     * this to be true and invalidate the object pointed to by inner.
7255     */
7256    bool is_owned;
7257 } LDKPing;
7258
7259 /**
7260  * The contents of CResult_PingDecodeErrorZ
7261  */
7262 typedef union LDKCResult_PingDecodeErrorZPtr {
7263    /**
7264     * A pointer to the contents in the success state.
7265     * Reading from this pointer when `result_ok` is not set is undefined.
7266     */
7267    struct LDKPing *result;
7268    /**
7269     * A pointer to the contents in the error state.
7270     * Reading from this pointer when `result_ok` is set is undefined.
7271     */
7272    struct LDKDecodeError *err;
7273 } LDKCResult_PingDecodeErrorZPtr;
7274
7275 /**
7276  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
7277  * containing a crate::lightning::ln::msgs::Ping on success and a crate::lightning::ln::msgs::DecodeError on failure.
7278  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7279  */
7280 typedef struct LDKCResult_PingDecodeErrorZ {
7281    /**
7282     * The contents of this CResult_PingDecodeErrorZ, accessible via either
7283     * `err` or `result` depending on the state of `result_ok`.
7284     */
7285    union LDKCResult_PingDecodeErrorZPtr contents;
7286    /**
7287     * Whether this CResult_PingDecodeErrorZ represents a success state.
7288     */
7289    bool result_ok;
7290 } LDKCResult_PingDecodeErrorZ;
7291
7292
7293
7294 /**
7295  * A pong message to be sent or received from a peer
7296  */
7297 typedef struct MUST_USE_STRUCT LDKPong {
7298    /**
7299     * A pointer to the opaque Rust object.
7300     * Nearly everywhere, inner must be non-null, however in places where
7301     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7302     */
7303    LDKnativePong *inner;
7304    /**
7305     * Indicates that this is the only struct which contains the same pointer.
7306     * Rust functions which take ownership of an object provided via an argument require
7307     * this to be true and invalidate the object pointed to by inner.
7308     */
7309    bool is_owned;
7310 } LDKPong;
7311
7312 /**
7313  * The contents of CResult_PongDecodeErrorZ
7314  */
7315 typedef union LDKCResult_PongDecodeErrorZPtr {
7316    /**
7317     * A pointer to the contents in the success state.
7318     * Reading from this pointer when `result_ok` is not set is undefined.
7319     */
7320    struct LDKPong *result;
7321    /**
7322     * A pointer to the contents in the error state.
7323     * Reading from this pointer when `result_ok` is set is undefined.
7324     */
7325    struct LDKDecodeError *err;
7326 } LDKCResult_PongDecodeErrorZPtr;
7327
7328 /**
7329  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
7330  * containing a crate::lightning::ln::msgs::Pong on success and a crate::lightning::ln::msgs::DecodeError on failure.
7331  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7332  */
7333 typedef struct LDKCResult_PongDecodeErrorZ {
7334    /**
7335     * The contents of this CResult_PongDecodeErrorZ, accessible via either
7336     * `err` or `result` depending on the state of `result_ok`.
7337     */
7338    union LDKCResult_PongDecodeErrorZPtr contents;
7339    /**
7340     * Whether this CResult_PongDecodeErrorZ represents a success state.
7341     */
7342    bool result_ok;
7343 } LDKCResult_PongDecodeErrorZ;
7344
7345 /**
7346  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
7347  */
7348 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
7349    /**
7350     * A pointer to the contents in the success state.
7351     * Reading from this pointer when `result_ok` is not set is undefined.
7352     */
7353    struct LDKUnsignedChannelAnnouncement *result;
7354    /**
7355     * A pointer to the contents in the error state.
7356     * Reading from this pointer when `result_ok` is set is undefined.
7357     */
7358    struct LDKDecodeError *err;
7359 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
7360
7361 /**
7362  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
7363  * containing a crate::lightning::ln::msgs::UnsignedChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
7364  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7365  */
7366 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
7367    /**
7368     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
7369     * `err` or `result` depending on the state of `result_ok`.
7370     */
7371    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
7372    /**
7373     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
7374     */
7375    bool result_ok;
7376 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
7377
7378 /**
7379  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
7380  */
7381 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
7382    /**
7383     * A pointer to the contents in the success state.
7384     * Reading from this pointer when `result_ok` is not set is undefined.
7385     */
7386    struct LDKChannelAnnouncement *result;
7387    /**
7388     * A pointer to the contents in the error state.
7389     * Reading from this pointer when `result_ok` is set is undefined.
7390     */
7391    struct LDKDecodeError *err;
7392 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
7393
7394 /**
7395  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
7396  * containing a crate::lightning::ln::msgs::ChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
7397  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7398  */
7399 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
7400    /**
7401     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
7402     * `err` or `result` depending on the state of `result_ok`.
7403     */
7404    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
7405    /**
7406     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
7407     */
7408    bool result_ok;
7409 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
7410
7411
7412
7413 /**
7414  * The unsigned part of a channel_update
7415  */
7416 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
7417    /**
7418     * A pointer to the opaque Rust object.
7419     * Nearly everywhere, inner must be non-null, however in places where
7420     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7421     */
7422    LDKnativeUnsignedChannelUpdate *inner;
7423    /**
7424     * Indicates that this is the only struct which contains the same pointer.
7425     * Rust functions which take ownership of an object provided via an argument require
7426     * this to be true and invalidate the object pointed to by inner.
7427     */
7428    bool is_owned;
7429 } LDKUnsignedChannelUpdate;
7430
7431 /**
7432  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
7433  */
7434 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
7435    /**
7436     * A pointer to the contents in the success state.
7437     * Reading from this pointer when `result_ok` is not set is undefined.
7438     */
7439    struct LDKUnsignedChannelUpdate *result;
7440    /**
7441     * A pointer to the contents in the error state.
7442     * Reading from this pointer when `result_ok` is set is undefined.
7443     */
7444    struct LDKDecodeError *err;
7445 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
7446
7447 /**
7448  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
7449  * containing a crate::lightning::ln::msgs::UnsignedChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
7450  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7451  */
7452 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
7453    /**
7454     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
7455     * `err` or `result` depending on the state of `result_ok`.
7456     */
7457    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
7458    /**
7459     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
7460     */
7461    bool result_ok;
7462 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
7463
7464 /**
7465  * The contents of CResult_ChannelUpdateDecodeErrorZ
7466  */
7467 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
7468    /**
7469     * A pointer to the contents in the success state.
7470     * Reading from this pointer when `result_ok` is not set is undefined.
7471     */
7472    struct LDKChannelUpdate *result;
7473    /**
7474     * A pointer to the contents in the error state.
7475     * Reading from this pointer when `result_ok` is set is undefined.
7476     */
7477    struct LDKDecodeError *err;
7478 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
7479
7480 /**
7481  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
7482  * containing a crate::lightning::ln::msgs::ChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
7483  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7484  */
7485 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
7486    /**
7487     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
7488     * `err` or `result` depending on the state of `result_ok`.
7489     */
7490    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
7491    /**
7492     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
7493     */
7494    bool result_ok;
7495 } LDKCResult_ChannelUpdateDecodeErrorZ;
7496
7497 /**
7498  * The contents of CResult_ErrorMessageDecodeErrorZ
7499  */
7500 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
7501    /**
7502     * A pointer to the contents in the success state.
7503     * Reading from this pointer when `result_ok` is not set is undefined.
7504     */
7505    struct LDKErrorMessage *result;
7506    /**
7507     * A pointer to the contents in the error state.
7508     * Reading from this pointer when `result_ok` is set is undefined.
7509     */
7510    struct LDKDecodeError *err;
7511 } LDKCResult_ErrorMessageDecodeErrorZPtr;
7512
7513 /**
7514  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
7515  * containing a crate::lightning::ln::msgs::ErrorMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
7516  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7517  */
7518 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
7519    /**
7520     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
7521     * `err` or `result` depending on the state of `result_ok`.
7522     */
7523    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
7524    /**
7525     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
7526     */
7527    bool result_ok;
7528 } LDKCResult_ErrorMessageDecodeErrorZ;
7529
7530
7531
7532 /**
7533  * The unsigned part of a node_announcement
7534  */
7535 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
7536    /**
7537     * A pointer to the opaque Rust object.
7538     * Nearly everywhere, inner must be non-null, however in places where
7539     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7540     */
7541    LDKnativeUnsignedNodeAnnouncement *inner;
7542    /**
7543     * Indicates that this is the only struct which contains the same pointer.
7544     * Rust functions which take ownership of an object provided via an argument require
7545     * this to be true and invalidate the object pointed to by inner.
7546     */
7547    bool is_owned;
7548 } LDKUnsignedNodeAnnouncement;
7549
7550 /**
7551  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
7552  */
7553 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
7554    /**
7555     * A pointer to the contents in the success state.
7556     * Reading from this pointer when `result_ok` is not set is undefined.
7557     */
7558    struct LDKUnsignedNodeAnnouncement *result;
7559    /**
7560     * A pointer to the contents in the error state.
7561     * Reading from this pointer when `result_ok` is set is undefined.
7562     */
7563    struct LDKDecodeError *err;
7564 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
7565
7566 /**
7567  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
7568  * containing a crate::lightning::ln::msgs::UnsignedNodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
7569  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7570  */
7571 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
7572    /**
7573     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
7574     * `err` or `result` depending on the state of `result_ok`.
7575     */
7576    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
7577    /**
7578     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
7579     */
7580    bool result_ok;
7581 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
7582
7583 /**
7584  * The contents of CResult_NodeAnnouncementDecodeErrorZ
7585  */
7586 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
7587    /**
7588     * A pointer to the contents in the success state.
7589     * Reading from this pointer when `result_ok` is not set is undefined.
7590     */
7591    struct LDKNodeAnnouncement *result;
7592    /**
7593     * A pointer to the contents in the error state.
7594     * Reading from this pointer when `result_ok` is set is undefined.
7595     */
7596    struct LDKDecodeError *err;
7597 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
7598
7599 /**
7600  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
7601  * containing a crate::lightning::ln::msgs::NodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
7602  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7603  */
7604 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
7605    /**
7606     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
7607     * `err` or `result` depending on the state of `result_ok`.
7608     */
7609    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
7610    /**
7611     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
7612     */
7613    bool result_ok;
7614 } LDKCResult_NodeAnnouncementDecodeErrorZ;
7615
7616 /**
7617  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
7618  */
7619 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
7620    /**
7621     * A pointer to the contents in the success state.
7622     * Reading from this pointer when `result_ok` is not set is undefined.
7623     */
7624    struct LDKQueryShortChannelIds *result;
7625    /**
7626     * A pointer to the contents in the error state.
7627     * Reading from this pointer when `result_ok` is set is undefined.
7628     */
7629    struct LDKDecodeError *err;
7630 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
7631
7632 /**
7633  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
7634  * containing a crate::lightning::ln::msgs::QueryShortChannelIds on success and a crate::lightning::ln::msgs::DecodeError on failure.
7635  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7636  */
7637 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
7638    /**
7639     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
7640     * `err` or `result` depending on the state of `result_ok`.
7641     */
7642    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
7643    /**
7644     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
7645     */
7646    bool result_ok;
7647 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
7648
7649
7650
7651 /**
7652  * A reply_short_channel_ids_end message is sent as a reply to a
7653  * query_short_channel_ids message. The query recipient makes a best
7654  * effort to respond based on their local network view which may not be
7655  * a perfect view of the network.
7656  */
7657 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
7658    /**
7659     * A pointer to the opaque Rust object.
7660     * Nearly everywhere, inner must be non-null, however in places where
7661     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7662     */
7663    LDKnativeReplyShortChannelIdsEnd *inner;
7664    /**
7665     * Indicates that this is the only struct which contains the same pointer.
7666     * Rust functions which take ownership of an object provided via an argument require
7667     * this to be true and invalidate the object pointed to by inner.
7668     */
7669    bool is_owned;
7670 } LDKReplyShortChannelIdsEnd;
7671
7672 /**
7673  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
7674  */
7675 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
7676    /**
7677     * A pointer to the contents in the success state.
7678     * Reading from this pointer when `result_ok` is not set is undefined.
7679     */
7680    struct LDKReplyShortChannelIdsEnd *result;
7681    /**
7682     * A pointer to the contents in the error state.
7683     * Reading from this pointer when `result_ok` is set is undefined.
7684     */
7685    struct LDKDecodeError *err;
7686 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
7687
7688 /**
7689  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
7690  * containing a crate::lightning::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::lightning::ln::msgs::DecodeError on failure.
7691  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7692  */
7693 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
7694    /**
7695     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
7696     * `err` or `result` depending on the state of `result_ok`.
7697     */
7698    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
7699    /**
7700     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
7701     */
7702    bool result_ok;
7703 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
7704
7705 /**
7706  * The contents of CResult_QueryChannelRangeDecodeErrorZ
7707  */
7708 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
7709    /**
7710     * A pointer to the contents in the success state.
7711     * Reading from this pointer when `result_ok` is not set is undefined.
7712     */
7713    struct LDKQueryChannelRange *result;
7714    /**
7715     * A pointer to the contents in the error state.
7716     * Reading from this pointer when `result_ok` is set is undefined.
7717     */
7718    struct LDKDecodeError *err;
7719 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
7720
7721 /**
7722  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
7723  * containing a crate::lightning::ln::msgs::QueryChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
7724  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7725  */
7726 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
7727    /**
7728     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
7729     * `err` or `result` depending on the state of `result_ok`.
7730     */
7731    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
7732    /**
7733     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
7734     */
7735    bool result_ok;
7736 } LDKCResult_QueryChannelRangeDecodeErrorZ;
7737
7738 /**
7739  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
7740  */
7741 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
7742    /**
7743     * A pointer to the contents in the success state.
7744     * Reading from this pointer when `result_ok` is not set is undefined.
7745     */
7746    struct LDKReplyChannelRange *result;
7747    /**
7748     * A pointer to the contents in the error state.
7749     * Reading from this pointer when `result_ok` is set is undefined.
7750     */
7751    struct LDKDecodeError *err;
7752 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
7753
7754 /**
7755  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
7756  * containing a crate::lightning::ln::msgs::ReplyChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
7757  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7758  */
7759 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
7760    /**
7761     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
7762     * `err` or `result` depending on the state of `result_ok`.
7763     */
7764    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
7765    /**
7766     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
7767     */
7768    bool result_ok;
7769 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
7770
7771
7772
7773 /**
7774  * A gossip_timestamp_filter message is used by a node to request
7775  * gossip relay for messages in the requested time range when the
7776  * gossip_queries feature has been negotiated.
7777  */
7778 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
7779    /**
7780     * A pointer to the opaque Rust object.
7781     * Nearly everywhere, inner must be non-null, however in places where
7782     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7783     */
7784    LDKnativeGossipTimestampFilter *inner;
7785    /**
7786     * Indicates that this is the only struct which contains the same pointer.
7787     * Rust functions which take ownership of an object provided via an argument require
7788     * this to be true and invalidate the object pointed to by inner.
7789     */
7790    bool is_owned;
7791 } LDKGossipTimestampFilter;
7792
7793 /**
7794  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
7795  */
7796 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
7797    /**
7798     * A pointer to the contents in the success state.
7799     * Reading from this pointer when `result_ok` is not set is undefined.
7800     */
7801    struct LDKGossipTimestampFilter *result;
7802    /**
7803     * A pointer to the contents in the error state.
7804     * Reading from this pointer when `result_ok` is set is undefined.
7805     */
7806    struct LDKDecodeError *err;
7807 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
7808
7809 /**
7810  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
7811  * containing a crate::lightning::ln::msgs::GossipTimestampFilter on success and a crate::lightning::ln::msgs::DecodeError on failure.
7812  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7813  */
7814 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
7815    /**
7816     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
7817     * `err` or `result` depending on the state of `result_ok`.
7818     */
7819    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
7820    /**
7821     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
7822     */
7823    bool result_ok;
7824 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
7825
7826 /**
7827  * When signing using a fallible method either an user-supplied `SignError` or a `CreationError`
7828  * may occur.
7829  */
7830 typedef enum LDKSignOrCreationError_Tag {
7831    /**
7832     * An error occurred during signing
7833     */
7834    LDKSignOrCreationError_SignError,
7835    /**
7836     * An error occurred while building the transaction
7837     */
7838    LDKSignOrCreationError_CreationError,
7839    /**
7840     * Must be last for serialization purposes
7841     */
7842    LDKSignOrCreationError_Sentinel,
7843 } LDKSignOrCreationError_Tag;
7844
7845 typedef struct MUST_USE_STRUCT LDKSignOrCreationError {
7846    LDKSignOrCreationError_Tag tag;
7847    union {
7848       struct {
7849          enum LDKCreationError creation_error;
7850       };
7851    };
7852 } LDKSignOrCreationError;
7853
7854 /**
7855  * The contents of CResult_InvoiceSignOrCreationErrorZ
7856  */
7857 typedef union LDKCResult_InvoiceSignOrCreationErrorZPtr {
7858    /**
7859     * A pointer to the contents in the success state.
7860     * Reading from this pointer when `result_ok` is not set is undefined.
7861     */
7862    struct LDKInvoice *result;
7863    /**
7864     * A pointer to the contents in the error state.
7865     * Reading from this pointer when `result_ok` is set is undefined.
7866     */
7867    struct LDKSignOrCreationError *err;
7868 } LDKCResult_InvoiceSignOrCreationErrorZPtr;
7869
7870 /**
7871  * A CResult_InvoiceSignOrCreationErrorZ represents the result of a fallible operation,
7872  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SignOrCreationError on failure.
7873  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7874  */
7875 typedef struct LDKCResult_InvoiceSignOrCreationErrorZ {
7876    /**
7877     * The contents of this CResult_InvoiceSignOrCreationErrorZ, accessible via either
7878     * `err` or `result` depending on the state of `result_ok`.
7879     */
7880    union LDKCResult_InvoiceSignOrCreationErrorZPtr contents;
7881    /**
7882     * Whether this CResult_InvoiceSignOrCreationErrorZ represents a success state.
7883     */
7884    bool result_ok;
7885 } LDKCResult_InvoiceSignOrCreationErrorZ;
7886
7887 /**
7888  * A trait indicating an object may generate message send events
7889  */
7890 typedef struct LDKMessageSendEventsProvider {
7891    /**
7892     * An opaque pointer which is passed to your function implementations as an argument.
7893     * This has no meaning in the LDK, and can be NULL or any other value.
7894     */
7895    void *this_arg;
7896    /**
7897     * Gets the list of pending events which were generated by previous actions, clearing the list
7898     * in the process.
7899     */
7900    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
7901    /**
7902     * Frees any resources associated with this object given its this_arg pointer.
7903     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7904     */
7905    void (*free)(void *this_arg);
7906 } LDKMessageSendEventsProvider;
7907
7908 /**
7909  * A trait implemented for objects handling events from [`EventsProvider`].
7910  */
7911 typedef struct LDKEventHandler {
7912    /**
7913     * An opaque pointer which is passed to your function implementations as an argument.
7914     * This has no meaning in the LDK, and can be NULL or any other value.
7915     */
7916    void *this_arg;
7917    /**
7918     * Handles the given [`Event`].
7919     *
7920     * See [`EventsProvider`] for details that must be considered when implementing this method.
7921     */
7922    void (*handle_event)(const void *this_arg, struct LDKEvent event);
7923    /**
7924     * Frees any resources associated with this object given its this_arg pointer.
7925     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7926     */
7927    void (*free)(void *this_arg);
7928 } LDKEventHandler;
7929
7930 /**
7931  * A trait indicating an object may generate events.
7932  *
7933  * Events are processed by passing an [`EventHandler`] to [`process_pending_events`].
7934  *
7935  * # Requirements
7936  *
7937  * See [`process_pending_events`] for requirements around event processing.
7938  *
7939  * When using this trait, [`process_pending_events`] will call [`handle_event`] for each pending
7940  * event since the last invocation. The handler must either act upon the event immediately
7941  * or preserve it for later handling.
7942  *
7943  * Note, handlers may call back into the provider and thus deadlocking must be avoided. Be sure to
7944  * consult the provider's documentation on the implication of processing events and how a handler
7945  * may safely use the provider (e.g., see [`ChannelManager::process_pending_events`] and
7946  * [`ChainMonitor::process_pending_events`]).
7947  *
7948  * (C-not implementable) As there is likely no reason for a user to implement this trait on their
7949  * own type(s).
7950  *
7951  * [`process_pending_events`]: Self::process_pending_events
7952  * [`handle_event`]: EventHandler::handle_event
7953  * [`ChannelManager::process_pending_events`]: crate::ln::channelmanager::ChannelManager#method.process_pending_events
7954  * [`ChainMonitor::process_pending_events`]: crate::chain::chainmonitor::ChainMonitor#method.process_pending_events
7955  */
7956 typedef struct LDKEventsProvider {
7957    /**
7958     * An opaque pointer which is passed to your function implementations as an argument.
7959     * This has no meaning in the LDK, and can be NULL or any other value.
7960     */
7961    void *this_arg;
7962    /**
7963     * Processes any events generated since the last call using the given event handler.
7964     *
7965     * Subsequent calls must only process new events. However, handlers must be capable of handling
7966     * duplicate events across process restarts. This may occur if the provider was recovered from
7967     * an old state (i.e., it hadn't been successfully persisted after processing pending events).
7968     */
7969    void (*process_pending_events)(const void *this_arg, struct LDKEventHandler handler);
7970    /**
7971     * Frees any resources associated with this object given its this_arg pointer.
7972     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7973     */
7974    void (*free)(void *this_arg);
7975 } LDKEventsProvider;
7976
7977
7978
7979 /**
7980  * Configuration we set when applicable.
7981  *
7982  * Default::default() provides sane defaults.
7983  */
7984 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
7985    /**
7986     * A pointer to the opaque Rust object.
7987     * Nearly everywhere, inner must be non-null, however in places where
7988     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7989     */
7990    LDKnativeChannelHandshakeConfig *inner;
7991    /**
7992     * Indicates that this is the only struct which contains the same pointer.
7993     * Rust functions which take ownership of an object provided via an argument require
7994     * this to be true and invalidate the object pointed to by inner.
7995     */
7996    bool is_owned;
7997 } LDKChannelHandshakeConfig;
7998
7999
8000
8001 /**
8002  * Optional channel limits which are applied during channel creation.
8003  *
8004  * These limits are only applied to our counterparty's limits, not our own.
8005  *
8006  * Use 0/<type>::max_value() as appropriate to skip checking.
8007  *
8008  * Provides sane defaults for most configurations.
8009  *
8010  * Most additional limits are disabled except those with which specify a default in individual
8011  * field documentation. Note that this may result in barely-usable channels, but since they
8012  * are applied mostly only to incoming channels that's not much of a problem.
8013  */
8014 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
8015    /**
8016     * A pointer to the opaque Rust object.
8017     * Nearly everywhere, inner must be non-null, however in places where
8018     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8019     */
8020    LDKnativeChannelHandshakeLimits *inner;
8021    /**
8022     * Indicates that this is the only struct which contains the same pointer.
8023     * Rust functions which take ownership of an object provided via an argument require
8024     * this to be true and invalidate the object pointed to by inner.
8025     */
8026    bool is_owned;
8027 } LDKChannelHandshakeLimits;
8028
8029
8030
8031 /**
8032  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
8033  *
8034  * Default::default() provides sane defaults for most configurations
8035  * (but currently with 0 relay fees!)
8036  */
8037 typedef struct MUST_USE_STRUCT LDKUserConfig {
8038    /**
8039     * A pointer to the opaque Rust object.
8040     * Nearly everywhere, inner must be non-null, however in places where
8041     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8042     */
8043    LDKnativeUserConfig *inner;
8044    /**
8045     * Indicates that this is the only struct which contains the same pointer.
8046     * Rust functions which take ownership of an object provided via an argument require
8047     * this to be true and invalidate the object pointed to by inner.
8048     */
8049    bool is_owned;
8050 } LDKUserConfig;
8051
8052
8053
8054 /**
8055  * The best known block as identified by its hash and height.
8056  */
8057 typedef struct MUST_USE_STRUCT LDKBestBlock {
8058    /**
8059     * A pointer to the opaque Rust object.
8060     * Nearly everywhere, inner must be non-null, however in places where
8061     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8062     */
8063    LDKnativeBestBlock *inner;
8064    /**
8065     * Indicates that this is the only struct which contains the same pointer.
8066     * Rust functions which take ownership of an object provided via an argument require
8067     * this to be true and invalidate the object pointed to by inner.
8068     */
8069    bool is_owned;
8070 } LDKBestBlock;
8071
8072 /**
8073  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
8074  * UTXOs.
8075  */
8076 typedef struct LDKAccess {
8077    /**
8078     * An opaque pointer which is passed to your function implementations as an argument.
8079     * This has no meaning in the LDK, and can be NULL or any other value.
8080     */
8081    void *this_arg;
8082    /**
8083     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
8084     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
8085     * is unknown.
8086     *
8087     * [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
8088     */
8089    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
8090    /**
8091     * Frees any resources associated with this object given its this_arg pointer.
8092     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8093     */
8094    void (*free)(void *this_arg);
8095 } LDKAccess;
8096
8097 /**
8098  * The `Listen` trait is used to notify when blocks have been connected or disconnected from the
8099  * chain.
8100  *
8101  * Useful when needing to replay chain data upon startup or as new chain events occur. Clients
8102  * sourcing chain data using a block-oriented API should prefer this interface over [`Confirm`].
8103  * Such clients fetch the entire header chain whereas clients using [`Confirm`] only fetch headers
8104  * when needed.
8105  */
8106 typedef struct LDKListen {
8107    /**
8108     * An opaque pointer which is passed to your function implementations as an argument.
8109     * This has no meaning in the LDK, and can be NULL or any other value.
8110     */
8111    void *this_arg;
8112    /**
8113     * Notifies the listener that a block was added at the given height.
8114     */
8115    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
8116    /**
8117     * Notifies the listener that a block was removed at the given height.
8118     */
8119    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
8120    /**
8121     * Frees any resources associated with this object given its this_arg pointer.
8122     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8123     */
8124    void (*free)(void *this_arg);
8125 } LDKListen;
8126
8127 /**
8128  * The `Confirm` trait is used to notify when transactions have been confirmed on chain or
8129  * unconfirmed during a chain reorganization.
8130  *
8131  * Clients sourcing chain data using a transaction-oriented API should prefer this interface over
8132  * [`Listen`]. For instance, an Electrum client may implement [`Filter`] by subscribing to activity
8133  * related to registered transactions and outputs. Upon notification, it would pass along the
8134  * matching transactions using this interface.
8135  *
8136  * # Use
8137  *
8138  * The intended use is as follows:
8139  * - Call [`transactions_confirmed`] to process any on-chain activity of interest.
8140  * - Call [`transaction_unconfirmed`] to process any transaction returned by [`get_relevant_txids`]
8141  *   that has been reorganized out of the chain.
8142  * - Call [`best_block_updated`] whenever a new chain tip becomes available.
8143  *
8144  * # Order
8145  *
8146  * Clients must call these methods in chain order. Specifically:
8147  * - Transactions confirmed in a block must be given before transactions confirmed in a later
8148  *   block.
8149  * - Dependent transactions within the same block must be given in topological order, possibly in
8150  *   separate calls.
8151  * - Unconfirmed transactions must be given after the original confirmations and before any
8152  *   reconfirmation.
8153  *
8154  * See individual method documentation for further details.
8155  *
8156  * [`transactions_confirmed`]: Self::transactions_confirmed
8157  * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
8158  * [`best_block_updated`]: Self::best_block_updated
8159  * [`get_relevant_txids`]: Self::get_relevant_txids
8160  */
8161 typedef struct LDKConfirm {
8162    /**
8163     * An opaque pointer which is passed to your function implementations as an argument.
8164     * This has no meaning in the LDK, and can be NULL or any other value.
8165     */
8166    void *this_arg;
8167    /**
8168     * Processes transactions confirmed in a block with a given header and height.
8169     *
8170     * Should be called for any transactions registered by [`Filter::register_tx`] or any
8171     * transactions spending an output registered by [`Filter::register_output`]. Such transactions
8172     * appearing in the same block do not need to be included in the same call; instead, multiple
8173     * calls with additional transactions may be made so long as they are made in [chain order].
8174     *
8175     * May be called before or after [`best_block_updated`] for the corresponding block. However,
8176     * in the event of a chain reorganization, it must not be called with a `header` that is no
8177     * longer in the chain as of the last call to [`best_block_updated`].
8178     *
8179     * [chain order]: Confirm#Order
8180     * [`best_block_updated`]: Self::best_block_updated
8181     */
8182    void (*transactions_confirmed)(const void *this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
8183    /**
8184     * Processes a transaction that is no longer confirmed as result of a chain reorganization.
8185     *
8186     * Should be called for any transaction returned by [`get_relevant_txids`] if it has been
8187     * reorganized out of the best chain. Once called, the given transaction should not be returned
8188     * by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
8189     *
8190     * [`get_relevant_txids`]: Self::get_relevant_txids
8191     * [`transactions_confirmed`]: Self::transactions_confirmed
8192     */
8193    void (*transaction_unconfirmed)(const void *this_arg, const uint8_t (*txid)[32]);
8194    /**
8195     * Processes an update to the best header connected at the given height.
8196     *
8197     * Should be called when a new header is available but may be skipped for intermediary blocks
8198     * if they become available at the same time.
8199     */
8200    void (*best_block_updated)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
8201    /**
8202     * Returns transactions that should be monitored for reorganization out of the chain.
8203     *
8204     * Should include any transactions passed to [`transactions_confirmed`] that have insufficient
8205     * confirmations to be safe from a chain reorganization. Should not include any transactions
8206     * passed to [`transaction_unconfirmed`] unless later reconfirmed.
8207     *
8208     * May be called to determine the subset of transactions that must still be monitored for
8209     * reorganization. Will be idempotent between calls but may change as a result of calls to the
8210     * other interface methods. Thus, this is useful to determine which transactions may need to be
8211     * given to [`transaction_unconfirmed`].
8212     *
8213     * [`transactions_confirmed`]: Self::transactions_confirmed
8214     * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
8215     */
8216    struct LDKCVec_TxidZ (*get_relevant_txids)(const void *this_arg);
8217    /**
8218     * Frees any resources associated with this object given its this_arg pointer.
8219     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8220     */
8221    void (*free)(void *this_arg);
8222 } LDKConfirm;
8223
8224
8225
8226 /**
8227  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
8228  *
8229  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
8230  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
8231  * the return value of [`Filter::register_output`].
8232  *
8233  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
8234  * may have been spent there. See [`Filter::register_output`] for details.
8235  *
8236  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
8237  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
8238  */
8239 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
8240    /**
8241     * A pointer to the opaque Rust object.
8242     * Nearly everywhere, inner must be non-null, however in places where
8243     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8244     */
8245    LDKnativeWatchedOutput *inner;
8246    /**
8247     * Indicates that this is the only struct which contains the same pointer.
8248     * Rust functions which take ownership of an object provided via an argument require
8249     * this to be true and invalidate the object pointed to by inner.
8250     */
8251    bool is_owned;
8252 } LDKWatchedOutput;
8253
8254 /**
8255  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
8256  * channels.
8257  *
8258  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
8259  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
8260  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
8261  * receiving full blocks from a chain source, any further filtering is unnecessary.
8262  *
8263  * After an output has been registered, subsequent block retrievals from the chain source must not
8264  * exclude any transactions matching the new criteria nor any in-block descendants of such
8265  * transactions.
8266  *
8267  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
8268  * should not block on I/O. Implementations should instead queue the newly monitored data to be
8269  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
8270  * invocation that has called the `Filter` must return [`TemporaryFailure`].
8271  *
8272  * [`TemporaryFailure`]: channelmonitor::ChannelMonitorUpdateErr::TemporaryFailure
8273  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
8274  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
8275  */
8276 typedef struct LDKFilter {
8277    /**
8278     * An opaque pointer which is passed to your function implementations as an argument.
8279     * This has no meaning in the LDK, and can be NULL or any other value.
8280     */
8281    void *this_arg;
8282    /**
8283     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
8284     * a spending condition.
8285     */
8286    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
8287    /**
8288     * Registers interest in spends of a transaction output.
8289     *
8290     * Optionally, when `output.block_hash` is set, should return any transaction spending the
8291     * output that is found in the corresponding block along with its index.
8292     *
8293     * This return value is useful for Electrum clients in order to supply in-block descendant
8294     * transactions which otherwise were not included. This is not necessary for other clients if
8295     * such descendant transactions were already included (e.g., when a BIP 157 client provides the
8296     * full block).
8297     */
8298    struct LDKCOption_C2Tuple_usizeTransactionZZ (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
8299    /**
8300     * Frees any resources associated with this object given its this_arg pointer.
8301     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8302     */
8303    void (*free)(void *this_arg);
8304 } LDKFilter;
8305
8306 /**
8307  * `Persist` defines behavior for persisting channel monitors: this could mean
8308  * writing once to disk, and/or uploading to one or more backup services.
8309  *
8310  * Note that for every new monitor, you **must** persist the new `ChannelMonitor`
8311  * to disk/backups. And, on every update, you **must** persist either the
8312  * `ChannelMonitorUpdate` or the updated monitor itself. Otherwise, there is risk
8313  * of situations such as revoking a transaction, then crashing before this
8314  * revocation can be persisted, then unintentionally broadcasting a revoked
8315  * transaction and losing money. This is a risk because previous channel states
8316  * are toxic, so it's important that whatever channel state is persisted is
8317  * kept up-to-date.
8318  */
8319 typedef struct LDKPersist {
8320    /**
8321     * An opaque pointer which is passed to your function implementations as an argument.
8322     * This has no meaning in the LDK, and can be NULL or any other value.
8323     */
8324    void *this_arg;
8325    /**
8326     * Persist a new channel's data. The data can be stored any way you want, but
8327     * the identifier provided by Rust-Lightning is the channel's outpoint (and
8328     * it is up to you to maintain a correct mapping between the outpoint and the
8329     * stored channel data). Note that you **must** persist every new monitor to
8330     * disk. See the `Persist` trait documentation for more details.
8331     *
8332     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
8333     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
8334     */
8335    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint id, const struct LDKChannelMonitor *NONNULL_PTR data);
8336    /**
8337     * Update one channel's data. The provided `ChannelMonitor` has already
8338     * applied the given update.
8339     *
8340     * Note that on every update, you **must** persist either the
8341     * `ChannelMonitorUpdate` or the updated monitor itself to disk/backups. See
8342     * the `Persist` trait documentation for more details.
8343     *
8344     * If an implementer chooses to persist the updates only, they need to make
8345     * sure that all the updates are applied to the `ChannelMonitors` *before*
8346     * the set of channel monitors is given to the `ChannelManager`
8347     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
8348     * applying a monitor update to a monitor. If full `ChannelMonitors` are
8349     * persisted, then there is no need to persist individual updates.
8350     *
8351     * Note that there could be a performance tradeoff between persisting complete
8352     * channel monitors on every update vs. persisting only updates and applying
8353     * them in batches. The size of each monitor grows `O(number of state updates)`
8354     * whereas updates are small and `O(1)`.
8355     *
8356     * See [`ChannelMonitor::write`] for writing out a `ChannelMonitor`,
8357     * [`ChannelMonitorUpdate::write`] for writing out an update, and
8358     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
8359     */
8360    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);
8361    /**
8362     * Frees any resources associated with this object given its this_arg pointer.
8363     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8364     */
8365    void (*free)(void *this_arg);
8366 } LDKPersist;
8367
8368
8369
8370 /**
8371  * An implementation of [`chain::Watch`] for monitoring channels.
8372  *
8373  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
8374  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
8375  * or used independently to monitor channels remotely. See the [module-level documentation] for
8376  * details.
8377  *
8378  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
8379  * [module-level documentation]: crate::chain::chainmonitor
8380  */
8381 typedef struct MUST_USE_STRUCT LDKChainMonitor {
8382    /**
8383     * A pointer to the opaque Rust object.
8384     * Nearly everywhere, inner must be non-null, however in places where
8385     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8386     */
8387    LDKnativeChainMonitor *inner;
8388    /**
8389     * Indicates that this is the only struct which contains the same pointer.
8390     * Rust functions which take ownership of an object provided via an argument require
8391     * this to be true and invalidate the object pointed to by inner.
8392     */
8393    bool is_owned;
8394 } LDKChainMonitor;
8395
8396
8397
8398 /**
8399  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
8400  * and derives keys from that.
8401  *
8402  * Your node_id is seed/0'
8403  * ChannelMonitor closes may use seed/1'
8404  * Cooperative closes may use seed/2'
8405  * The two close keys may be needed to claim on-chain funds!
8406  */
8407 typedef struct MUST_USE_STRUCT LDKKeysManager {
8408    /**
8409     * A pointer to the opaque Rust object.
8410     * Nearly everywhere, inner must be non-null, however in places where
8411     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8412     */
8413    LDKnativeKeysManager *inner;
8414    /**
8415     * Indicates that this is the only struct which contains the same pointer.
8416     * Rust functions which take ownership of an object provided via an argument require
8417     * this to be true and invalidate the object pointed to by inner.
8418     */
8419    bool is_owned;
8420 } LDKKeysManager;
8421
8422
8423
8424 /**
8425  * Chain-related parameters used to construct a new `ChannelManager`.
8426  *
8427  * Typically, the block-specific parameters are derived from the best block hash for the network,
8428  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
8429  * are not needed when deserializing a previously constructed `ChannelManager`.
8430  */
8431 typedef struct MUST_USE_STRUCT LDKChainParameters {
8432    /**
8433     * A pointer to the opaque Rust object.
8434     * Nearly everywhere, inner must be non-null, however in places where
8435     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8436     */
8437    LDKnativeChainParameters *inner;
8438    /**
8439     * Indicates that this is the only struct which contains the same pointer.
8440     * Rust functions which take ownership of an object provided via an argument require
8441     * this to be true and invalidate the object pointed to by inner.
8442     */
8443    bool is_owned;
8444 } LDKChainParameters;
8445
8446
8447
8448 /**
8449  * Channel parameters which apply to our counterparty. These are split out from [`ChannelDetails`]
8450  * to better separate parameters.
8451  */
8452 typedef struct MUST_USE_STRUCT LDKChannelCounterparty {
8453    /**
8454     * A pointer to the opaque Rust object.
8455     * Nearly everywhere, inner must be non-null, however in places where
8456     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8457     */
8458    LDKnativeChannelCounterparty *inner;
8459    /**
8460     * Indicates that this is the only struct which contains the same pointer.
8461     * Rust functions which take ownership of an object provided via an argument require
8462     * this to be true and invalidate the object pointed to by inner.
8463     */
8464    bool is_owned;
8465 } LDKChannelCounterparty;
8466
8467 /**
8468  * A 3-byte byte array.
8469  */
8470 typedef struct LDKThreeBytes {
8471    /**
8472     * The three bytes
8473     */
8474    uint8_t data[3];
8475 } LDKThreeBytes;
8476
8477 /**
8478  * A trait to describe an object which can receive channel messages.
8479  *
8480  * Messages MAY be called in parallel when they originate from different their_node_ids, however
8481  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
8482  */
8483 typedef struct LDKChannelMessageHandler {
8484    /**
8485     * An opaque pointer which is passed to your function implementations as an argument.
8486     * This has no meaning in the LDK, and can be NULL or any other value.
8487     */
8488    void *this_arg;
8489    /**
8490     * Handle an incoming open_channel message from the given peer.
8491     */
8492    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
8493    /**
8494     * Handle an incoming accept_channel message from the given peer.
8495     */
8496    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
8497    /**
8498     * Handle an incoming funding_created message from the given peer.
8499     */
8500    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
8501    /**
8502     * Handle an incoming funding_signed message from the given peer.
8503     */
8504    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
8505    /**
8506     * Handle an incoming funding_locked message from the given peer.
8507     */
8508    void (*handle_funding_locked)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
8509    /**
8510     * Handle an incoming shutdown message from the given peer.
8511     */
8512    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);
8513    /**
8514     * Handle an incoming closing_signed message from the given peer.
8515     */
8516    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
8517    /**
8518     * Handle an incoming update_add_htlc message from the given peer.
8519     */
8520    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
8521    /**
8522     * Handle an incoming update_fulfill_htlc message from the given peer.
8523     */
8524    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
8525    /**
8526     * Handle an incoming update_fail_htlc message from the given peer.
8527     */
8528    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
8529    /**
8530     * Handle an incoming update_fail_malformed_htlc message from the given peer.
8531     */
8532    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
8533    /**
8534     * Handle an incoming commitment_signed message from the given peer.
8535     */
8536    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
8537    /**
8538     * Handle an incoming revoke_and_ack message from the given peer.
8539     */
8540    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
8541    /**
8542     * Handle an incoming update_fee message from the given peer.
8543     */
8544    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
8545    /**
8546     * Handle an incoming announcement_signatures message from the given peer.
8547     */
8548    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
8549    /**
8550     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
8551     * is believed to be possible in the future (eg they're sending us messages we don't
8552     * understand or indicate they require unknown feature bits), no_connection_possible is set
8553     * and any outstanding channels should be failed.
8554     */
8555    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
8556    /**
8557     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
8558     */
8559    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
8560    /**
8561     * Handle an incoming channel_reestablish message from the given peer.
8562     */
8563    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
8564    /**
8565     * Handle an incoming channel update from the given peer.
8566     */
8567    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
8568    /**
8569     * Handle an incoming error message from the given peer.
8570     */
8571    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
8572    /**
8573     * Implementation of MessageSendEventsProvider for this object.
8574     */
8575    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
8576    /**
8577     * Frees any resources associated with this object given its this_arg pointer.
8578     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8579     */
8580    void (*free)(void *this_arg);
8581 } LDKChannelMessageHandler;
8582
8583
8584
8585 /**
8586  * Arguments for the creation of a ChannelManager that are not deserialized.
8587  *
8588  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
8589  * is:
8590  * 1) Deserialize all stored ChannelMonitors.
8591  * 2) Deserialize the ChannelManager by filling in this struct and calling:
8592  *    <(BlockHash, ChannelManager)>::read(reader, args)
8593  *    This may result in closing some Channels if the ChannelMonitor is newer than the stored
8594  *    ChannelManager state to ensure no loss of funds. Thus, transactions may be broadcasted.
8595  * 3) If you are not fetching full blocks, register all relevant ChannelMonitor outpoints the same
8596  *    way you would handle a `chain::Filter` call using ChannelMonitor::get_outputs_to_watch() and
8597  *    ChannelMonitor::get_funding_txo().
8598  * 4) Reconnect blocks on your ChannelMonitors.
8599  * 5) Disconnect/connect blocks on the ChannelManager.
8600  * 6) Move the ChannelMonitors into your local chain::Watch.
8601  *
8602  * Note that the ordering of #4-6 is not of importance, however all three must occur before you
8603  * call any other methods on the newly-deserialized ChannelManager.
8604  *
8605  * Note that because some channels may be closed during deserialization, it is critical that you
8606  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
8607  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
8608  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
8609  * not force-close the same channels but consider them live), you may end up revoking a state for
8610  * which you've already broadcasted the transaction.
8611  */
8612 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
8613    /**
8614     * A pointer to the opaque Rust object.
8615     * Nearly everywhere, inner must be non-null, however in places where
8616     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8617     */
8618    LDKnativeChannelManagerReadArgs *inner;
8619    /**
8620     * Indicates that this is the only struct which contains the same pointer.
8621     * Rust functions which take ownership of an object provided via an argument require
8622     * this to be true and invalidate the object pointed to by inner.
8623     */
8624    bool is_owned;
8625 } LDKChannelManagerReadArgs;
8626
8627
8628
8629 /**
8630  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
8631  * This is used to convince the recipient that the channel is at a certain commitment
8632  * number even if they lost that data due to a local failure.  Of course, the peer may lie
8633  * and even later commitments may have been revoked.
8634  */
8635 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
8636    /**
8637     * A pointer to the opaque Rust object.
8638     * Nearly everywhere, inner must be non-null, however in places where
8639     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8640     */
8641    LDKnativeDataLossProtect *inner;
8642    /**
8643     * Indicates that this is the only struct which contains the same pointer.
8644     * Rust functions which take ownership of an object provided via an argument require
8645     * this to be true and invalidate the object pointed to by inner.
8646     */
8647    bool is_owned;
8648 } LDKDataLossProtect;
8649
8650 /**
8651  * A trait to describe an object which can receive routing messages.
8652  *
8653  * # Implementor DoS Warnings
8654  *
8655  * For `gossip_queries` messages there are potential DoS vectors when handling
8656  * inbound queries. Implementors using an on-disk network graph should be aware of
8657  * repeated disk I/O for queries accessing different parts of the network graph.
8658  */
8659 typedef struct LDKRoutingMessageHandler {
8660    /**
8661     * An opaque pointer which is passed to your function implementations as an argument.
8662     * This has no meaning in the LDK, and can be NULL or any other value.
8663     */
8664    void *this_arg;
8665    /**
8666     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
8667     * false or returning an Err otherwise.
8668     */
8669    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
8670    /**
8671     * Handle a channel_announcement message, returning true if it should be forwarded on, false
8672     * or returning an Err otherwise.
8673     */
8674    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
8675    /**
8676     * Handle an incoming channel_update message, returning true if it should be forwarded on,
8677     * false or returning an Err otherwise.
8678     */
8679    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
8680    /**
8681     * Handle some updates to the route graph that we learned due to an outbound failed payment.
8682     */
8683    void (*handle_htlc_fail_channel_update)(const void *this_arg, const struct LDKHTLCFailChannelUpdate *NONNULL_PTR update);
8684    /**
8685     * Gets a subset of the channel announcements and updates required to dump our routing table
8686     * to a remote node, starting at the short_channel_id indicated by starting_point and
8687     * including the batch_amount entries immediately higher in numerical value than starting_point.
8688     */
8689    struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcements)(const void *this_arg, uint64_t starting_point, uint8_t batch_amount);
8690    /**
8691     * Gets a subset of the node announcements required to dump our routing table to a remote node,
8692     * starting at the node *after* the provided publickey and including batch_amount entries
8693     * immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
8694     * If None is provided for starting_point, we start at the first node.
8695     *
8696     * Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
8697     */
8698    struct LDKCVec_NodeAnnouncementZ (*get_next_node_announcements)(const void *this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount);
8699    /**
8700     * Called when a connection is established with a peer. This can be used to
8701     * perform routing table synchronization using a strategy defined by the
8702     * implementor.
8703     */
8704    void (*sync_routing_table)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
8705    /**
8706     * Handles the reply of a query we initiated to learn about channels
8707     * for a given range of blocks. We can expect to receive one or more
8708     * replies to a single query.
8709     */
8710    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
8711    /**
8712     * Handles the reply of a query we initiated asking for routing gossip
8713     * messages for a list of channels. We should receive this message when
8714     * a node has completed its best effort to send us the pertaining routing
8715     * gossip messages.
8716     */
8717    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
8718    /**
8719     * Handles when a peer asks us to send a list of short_channel_ids
8720     * for the requested range of blocks.
8721     */
8722    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
8723    /**
8724     * Handles when a peer asks us to send routing gossip messages for a
8725     * list of short_channel_ids.
8726     */
8727    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
8728    /**
8729     * Implementation of MessageSendEventsProvider for this object.
8730     */
8731    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
8732    /**
8733     * Frees any resources associated with this object given its this_arg pointer.
8734     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8735     */
8736    void (*free)(void *this_arg);
8737 } LDKRoutingMessageHandler;
8738
8739
8740
8741 /**
8742  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
8743  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
8744  */
8745 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
8746    /**
8747     * A pointer to the opaque Rust object.
8748     * Nearly everywhere, inner must be non-null, however in places where
8749     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8750     */
8751    LDKnativeIgnoringMessageHandler *inner;
8752    /**
8753     * Indicates that this is the only struct which contains the same pointer.
8754     * Rust functions which take ownership of an object provided via an argument require
8755     * this to be true and invalidate the object pointed to by inner.
8756     */
8757    bool is_owned;
8758 } LDKIgnoringMessageHandler;
8759
8760
8761
8762 /**
8763  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
8764  * You can provide one of these as the route_handler in a MessageHandler.
8765  */
8766 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
8767    /**
8768     * A pointer to the opaque Rust object.
8769     * Nearly everywhere, inner must be non-null, however in places where
8770     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8771     */
8772    LDKnativeErroringMessageHandler *inner;
8773    /**
8774     * Indicates that this is the only struct which contains the same pointer.
8775     * Rust functions which take ownership of an object provided via an argument require
8776     * this to be true and invalidate the object pointed to by inner.
8777     */
8778    bool is_owned;
8779 } LDKErroringMessageHandler;
8780
8781
8782
8783 /**
8784  * Provides references to trait impls which handle different types of messages.
8785  */
8786 typedef struct MUST_USE_STRUCT LDKMessageHandler {
8787    /**
8788     * A pointer to the opaque Rust object.
8789     * Nearly everywhere, inner must be non-null, however in places where
8790     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8791     */
8792    LDKnativeMessageHandler *inner;
8793    /**
8794     * Indicates that this is the only struct which contains the same pointer.
8795     * Rust functions which take ownership of an object provided via an argument require
8796     * this to be true and invalidate the object pointed to by inner.
8797     */
8798    bool is_owned;
8799 } LDKMessageHandler;
8800
8801 /**
8802  * Provides an object which can be used to send data to and which uniquely identifies a connection
8803  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
8804  * implement Hash to meet the PeerManager API.
8805  *
8806  * For efficiency, Clone should be relatively cheap for this type.
8807  *
8808  * Two descriptors may compare equal (by [`cmp::Eq`] and [`hash::Hash`]) as long as the original
8809  * has been disconnected, the [`PeerManager`] has been informed of the disconnection (either by it
8810  * having triggered the disconnection or a call to [`PeerManager::socket_disconnected`]), and no
8811  * further calls to the [`PeerManager`] related to the original socket occur. This allows you to
8812  * use a file descriptor for your SocketDescriptor directly, however for simplicity you may wish
8813  * to simply use another value which is guaranteed to be globally unique instead.
8814  */
8815 typedef struct LDKSocketDescriptor {
8816    /**
8817     * An opaque pointer which is passed to your function implementations as an argument.
8818     * This has no meaning in the LDK, and can be NULL or any other value.
8819     */
8820    void *this_arg;
8821    /**
8822     * Attempts to send some data from the given slice to the peer.
8823     *
8824     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
8825     * Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
8826     * called and further write attempts may occur until that time.
8827     *
8828     * If the returned size is smaller than `data.len()`, a
8829     * [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
8830     * written. Additionally, until a `send_data` event completes fully, no further
8831     * [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
8832     * prevent denial-of-service issues, you should not read or buffer any data from the socket
8833     * until then.
8834     *
8835     * If a [`PeerManager::read_event`] call on this descriptor had previously returned true
8836     * (indicating that read events should be paused to prevent DoS in the send buffer),
8837     * `resume_read` may be set indicating that read events on this descriptor should resume. A
8838     * `resume_read` of false carries no meaning, and should not cause any action.
8839     */
8840    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
8841    /**
8842     * Disconnect the socket pointed to by this SocketDescriptor.
8843     *
8844     * You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
8845     * call (doing so is a noop).
8846     */
8847    void (*disconnect_socket)(void *this_arg);
8848    /**
8849     * Checks if two objects are equal given this object's this_arg pointer and another object.
8850     */
8851    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
8852    /**
8853     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
8854     * This is used, for example, for inclusion of this object in a hash map.
8855     */
8856    uint64_t (*hash)(const void *this_arg);
8857    /**
8858     * Called, if set, after this SocketDescriptor has been cloned into a duplicate object.
8859     * The new SocketDescriptor is provided, and should be mutated as needed to perform a
8860     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
8861     */
8862    void (*cloned)(struct LDKSocketDescriptor *NONNULL_PTR new_SocketDescriptor);
8863    /**
8864     * Frees any resources associated with this object given its this_arg pointer.
8865     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8866     */
8867    void (*free)(void *this_arg);
8868 } LDKSocketDescriptor;
8869
8870
8871
8872 /**
8873  * A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
8874  * socket events into messages which it passes on to its [`MessageHandler`].
8875  *
8876  * Locks are taken internally, so you must never assume that reentrancy from a
8877  * [`SocketDescriptor`] call back into [`PeerManager`] methods will not deadlock.
8878  *
8879  * Calls to [`read_event`] will decode relevant messages and pass them to the
8880  * [`ChannelMessageHandler`], likely doing message processing in-line. Thus, the primary form of
8881  * parallelism in Rust-Lightning is in calls to [`read_event`]. Note, however, that calls to any
8882  * [`PeerManager`] functions related to the same connection must occur only in serial, making new
8883  * calls only after previous ones have returned.
8884  *
8885  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
8886  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
8887  * essentially you should default to using a SimpleRefPeerManager, and use a
8888  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
8889  * you're using lightning-net-tokio.
8890  *
8891  * [`read_event`]: PeerManager::read_event
8892  */
8893 typedef struct MUST_USE_STRUCT LDKPeerManager {
8894    /**
8895     * A pointer to the opaque Rust object.
8896     * Nearly everywhere, inner must be non-null, however in places where
8897     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8898     */
8899    LDKnativePeerManager *inner;
8900    /**
8901     * Indicates that this is the only struct which contains the same pointer.
8902     * Rust functions which take ownership of an object provided via an argument require
8903     * this to be true and invalidate the object pointed to by inner.
8904     */
8905    bool is_owned;
8906 } LDKPeerManager;
8907
8908
8909
8910 /**
8911  * Static channel fields used to build transactions given per-commitment fields, organized by
8912  * broadcaster/countersignatory.
8913  *
8914  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
8915  * as_holder_broadcastable and as_counterparty_broadcastable functions.
8916  */
8917 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
8918    /**
8919     * A pointer to the opaque Rust object.
8920     * Nearly everywhere, inner must be non-null, however in places where
8921     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8922     */
8923    LDKnativeDirectedChannelTransactionParameters *inner;
8924    /**
8925     * Indicates that this is the only struct which contains the same pointer.
8926     * Rust functions which take ownership of an object provided via an argument require
8927     * this to be true and invalidate the object pointed to by inner.
8928     */
8929    bool is_owned;
8930 } LDKDirectedChannelTransactionParameters;
8931
8932
8933
8934 /**
8935  * A channel descriptor for a hop along a payment path.
8936  */
8937 typedef struct MUST_USE_STRUCT LDKRouteHintHop {
8938    /**
8939     * A pointer to the opaque Rust object.
8940     * Nearly everywhere, inner must be non-null, however in places where
8941     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8942     */
8943    LDKnativeRouteHintHop *inner;
8944    /**
8945     * Indicates that this is the only struct which contains the same pointer.
8946     * Rust functions which take ownership of an object provided via an argument require
8947     * this to be true and invalidate the object pointed to by inner.
8948     */
8949    bool is_owned;
8950 } LDKRouteHintHop;
8951
8952
8953
8954 /**
8955  * A simple newtype for RwLockReadGuard<'a, NetworkGraph>.
8956  * This exists only to make accessing a RwLock<NetworkGraph> possible from
8957  * the C bindings, as it can be done directly in Rust code.
8958  */
8959 typedef struct MUST_USE_STRUCT LDKLockedNetworkGraph {
8960    /**
8961     * A pointer to the opaque Rust object.
8962     * Nearly everywhere, inner must be non-null, however in places where
8963     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8964     */
8965    LDKnativeLockedNetworkGraph *inner;
8966    /**
8967     * Indicates that this is the only struct which contains the same pointer.
8968     * Rust functions which take ownership of an object provided via an argument require
8969     * this to be true and invalidate the object pointed to by inner.
8970     */
8971    bool is_owned;
8972 } LDKLockedNetworkGraph;
8973
8974
8975
8976 /**
8977  * Receives and validates network updates from peers,
8978  * stores authentic and relevant data as a network graph.
8979  * This network graph is then used for routing payments.
8980  * Provides interface to help with initial routing sync by
8981  * serving historical announcements.
8982  */
8983 typedef struct MUST_USE_STRUCT LDKNetGraphMsgHandler {
8984    /**
8985     * A pointer to the opaque Rust object.
8986     * Nearly everywhere, inner must be non-null, however in places where
8987     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8988     */
8989    LDKnativeNetGraphMsgHandler *inner;
8990    /**
8991     * Indicates that this is the only struct which contains the same pointer.
8992     * Rust functions which take ownership of an object provided via an argument require
8993     * this to be true and invalidate the object pointed to by inner.
8994     */
8995    bool is_owned;
8996 } LDKNetGraphMsgHandler;
8997
8998
8999
9000 /**
9001  * FilesystemPersister persists channel data on disk, where each channel's
9002  * data is stored in a file named after its funding outpoint.
9003  *
9004  * Warning: this module does the best it can with calls to persist data, but it
9005  * can only guarantee that the data is passed to the drive. It is up to the
9006  * drive manufacturers to do the actual persistence properly, which they often
9007  * don't (especially on consumer-grade hardware). Therefore, it is up to the
9008  * user to validate their entire storage stack, to ensure the writes are
9009  * persistent.
9010  * Corollary: especially when dealing with larger amounts of money, it is best
9011  * practice to have multiple channel data backups and not rely only on one
9012  * FilesystemPersister.
9013  */
9014 typedef struct MUST_USE_STRUCT LDKFilesystemPersister {
9015    /**
9016     * A pointer to the opaque Rust object.
9017     * Nearly everywhere, inner must be non-null, however in places where
9018     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9019     */
9020    LDKnativeFilesystemPersister *inner;
9021    /**
9022     * Indicates that this is the only struct which contains the same pointer.
9023     * Rust functions which take ownership of an object provided via an argument require
9024     * this to be true and invalidate the object pointed to by inner.
9025     */
9026    bool is_owned;
9027 } LDKFilesystemPersister;
9028
9029
9030
9031 /**
9032  * BackgroundProcessor takes care of tasks that (1) need to happen periodically to keep
9033  * Rust-Lightning running properly, and (2) either can or should be run in the background. Its
9034  * responsibilities are:
9035  * * Monitoring whether the ChannelManager needs to be re-persisted to disk, and if so,
9036  *   writing it to disk/backups by invoking the callback given to it at startup.
9037  *   ChannelManager persistence should be done in the background.
9038  * * Calling `ChannelManager::timer_tick_occurred()` and
9039  *   `PeerManager::timer_tick_occurred()` every minute (can be done in the
9040  *   background).
9041  *
9042  * Note that if ChannelManager persistence fails and the persisted manager becomes out-of-date,
9043  * then there is a risk of channels force-closing on startup when the manager realizes it's
9044  * outdated. However, as long as `ChannelMonitor` backups are sound, no funds besides those used
9045  * for unilateral chain closure fees are at risk.
9046  *BackgroundProcessor will immediately stop on drop. It should be stored until shutdown.
9047  */
9048 typedef struct MUST_USE_STRUCT LDKBackgroundProcessor {
9049    /**
9050     * A pointer to the opaque Rust object.
9051     * Nearly everywhere, inner must be non-null, however in places where
9052     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9053     */
9054    LDKnativeBackgroundProcessor *inner;
9055    /**
9056     * Indicates that this is the only struct which contains the same pointer.
9057     * Rust functions which take ownership of an object provided via an argument require
9058     * this to be true and invalidate the object pointed to by inner.
9059     */
9060    bool is_owned;
9061 } LDKBackgroundProcessor;
9062
9063 /**
9064  * Trait which handles persisting a [`ChannelManager`] to disk.
9065  *
9066  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
9067  */
9068 typedef struct LDKChannelManagerPersister {
9069    /**
9070     * An opaque pointer which is passed to your function implementations as an argument.
9071     * This has no meaning in the LDK, and can be NULL or any other value.
9072     */
9073    void *this_arg;
9074    /**
9075     * Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
9076     * (which will cause the [`BackgroundProcessor`] which called this method to exit.
9077     *
9078     * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
9079     */
9080    struct LDKCResult_NoneErrorZ (*persist_manager)(const void *this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager);
9081    /**
9082     * Frees any resources associated with this object given its this_arg pointer.
9083     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
9084     */
9085    void (*free)(void *this_arg);
9086 } LDKChannelManagerPersister;
9087
9088
9089
9090 /**
9091  * Data of the `RawInvoice` that is encoded in the data part
9092  */
9093 typedef struct MUST_USE_STRUCT LDKRawDataPart {
9094    /**
9095     * A pointer to the opaque Rust object.
9096     * Nearly everywhere, inner must be non-null, however in places where
9097     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9098     */
9099    LDKnativeRawDataPart *inner;
9100    /**
9101     * Indicates that this is the only struct which contains the same pointer.
9102     * Rust functions which take ownership of an object provided via an argument require
9103     * this to be true and invalidate the object pointed to by inner.
9104     */
9105    bool is_owned;
9106 } LDKRawDataPart;
9107
9108
9109
9110 /**
9111  * SHA-256 hash
9112  */
9113 typedef struct MUST_USE_STRUCT LDKSha256 {
9114    /**
9115     * A pointer to the opaque Rust object.
9116     * Nearly everywhere, inner must be non-null, however in places where
9117     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9118     */
9119    LDKnativeSha256 *inner;
9120    /**
9121     * Indicates that this is the only struct which contains the same pointer.
9122     * Rust functions which take ownership of an object provided via an argument require
9123     * this to be true and invalidate the object pointed to by inner.
9124     */
9125    bool is_owned;
9126 } LDKSha256;
9127
9128
9129
9130 /**
9131  * `min_final_cltv_expiry` to use for the last HTLC in the route
9132  */
9133 typedef struct MUST_USE_STRUCT LDKMinFinalCltvExpiry {
9134    /**
9135     * A pointer to the opaque Rust object.
9136     * Nearly everywhere, inner must be non-null, however in places where
9137     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9138     */
9139    LDKnativeMinFinalCltvExpiry *inner;
9140    /**
9141     * Indicates that this is the only struct which contains the same pointer.
9142     * Rust functions which take ownership of an object provided via an argument require
9143     * this to be true and invalidate the object pointed to by inner.
9144     */
9145    bool is_owned;
9146 } LDKMinFinalCltvExpiry;
9147
9148 /**
9149  * Integer in the range `0..32`
9150  */
9151 typedef struct LDKu5 {
9152    uint8_t _0;
9153 } LDKu5;
9154
9155 /**
9156  * A 20-byte byte array.
9157  */
9158 typedef struct LDKTwentyBytes {
9159    /**
9160     * The twenty bytes
9161     */
9162    uint8_t data[20];
9163 } LDKTwentyBytes;
9164
9165 /**
9166  * Fallback address in case no LN payment is possible
9167  */
9168 typedef enum LDKFallback_Tag {
9169    LDKFallback_SegWitProgram,
9170    LDKFallback_PubKeyHash,
9171    LDKFallback_ScriptHash,
9172    /**
9173     * Must be last for serialization purposes
9174     */
9175    LDKFallback_Sentinel,
9176 } LDKFallback_Tag;
9177
9178 typedef struct LDKFallback_LDKSegWitProgram_Body {
9179    struct LDKu5 version;
9180    struct LDKCVec_u8Z program;
9181 } LDKFallback_LDKSegWitProgram_Body;
9182
9183 typedef struct MUST_USE_STRUCT LDKFallback {
9184    LDKFallback_Tag tag;
9185    union {
9186       LDKFallback_LDKSegWitProgram_Body seg_wit_program;
9187       struct {
9188          struct LDKTwentyBytes pub_key_hash;
9189       };
9190       struct {
9191          struct LDKTwentyBytes script_hash;
9192       };
9193    };
9194 } LDKFallback;
9195
9196 extern const uintptr_t MAX_BUF_SIZE;
9197
9198 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
9199
9200 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
9201
9202 extern const uint32_t ANTI_REORG_DELAY;
9203
9204 extern const uint16_t BREAKDOWN_TIMEOUT;
9205
9206 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
9207
9208 extern const uint32_t MIN_FINAL_CLTV_EXPIRY;
9209
9210 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
9211
9212 extern const uint64_t DEFAULT_EXPIRY_TIME;
9213
9214 extern const uint64_t DEFAULT_MIN_FINAL_CLTV_EXPIRY;
9215
9216 extern const uint8_t TAG_PAYMENT_HASH;
9217
9218 extern const uint8_t TAG_DESCRIPTION;
9219
9220 extern const uint8_t TAG_PAYEE_PUB_KEY;
9221
9222 extern const uint8_t TAG_DESCRIPTION_HASH;
9223
9224 extern const uint8_t TAG_EXPIRY_TIME;
9225
9226 extern const uint8_t TAG_MIN_FINAL_CLTV_EXPIRY;
9227
9228 extern const uint8_t TAG_FALLBACK;
9229
9230 extern const uint8_t TAG_PRIVATE_ROUTE;
9231
9232 extern const uint8_t TAG_PAYMENT_SECRET;
9233
9234 extern const uint8_t TAG_FEATURES;
9235
9236 struct LDKStr _ldk_get_compiled_version(void);
9237
9238 struct LDKStr _ldk_c_bindings_get_compiled_version(void);
9239
9240 /**
9241  * Frees the data buffer, if data_is_owned is set and datalen > 0.
9242  */
9243 void Transaction_free(struct LDKTransaction _res);
9244
9245 /**
9246  * Convenience function for constructing a new TxOut
9247  */
9248 struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
9249
9250 /**
9251  * Frees the data pointed to by script_pubkey.
9252  */
9253 void TxOut_free(struct LDKTxOut _res);
9254
9255 /**
9256  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
9257  */
9258 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
9259
9260 /**
9261  * Frees the data buffer, if chars_is_owned is set and len > 0.
9262  */
9263 void Str_free(struct LDKStr _res);
9264
9265 /**
9266  * Creates a new CResult_SecretKeyErrorZ in the success state.
9267  */
9268 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
9269
9270 /**
9271  * Creates a new CResult_SecretKeyErrorZ in the error state.
9272  */
9273 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
9274
9275 /**
9276  * Frees any resources used by the CResult_SecretKeyErrorZ.
9277  */
9278 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
9279
9280 /**
9281  * Creates a new CResult_PublicKeyErrorZ in the success state.
9282  */
9283 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
9284
9285 /**
9286  * Creates a new CResult_PublicKeyErrorZ in the error state.
9287  */
9288 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
9289
9290 /**
9291  * Frees any resources used by the CResult_PublicKeyErrorZ.
9292  */
9293 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
9294
9295 /**
9296  * Creates a new CResult_PublicKeyErrorZ which has the same data as `orig`
9297  * but with all dynamically-allocated buffers duplicated in new buffers.
9298  */
9299 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
9300
9301 /**
9302  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
9303  */
9304 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
9305
9306 /**
9307  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
9308  */
9309 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
9310
9311 /**
9312  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
9313  */
9314 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
9315
9316 /**
9317  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
9318  * but with all dynamically-allocated buffers duplicated in new buffers.
9319  */
9320 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
9321
9322 /**
9323  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
9324  */
9325 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
9326
9327 /**
9328  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
9329  */
9330 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
9331
9332 /**
9333  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
9334  */
9335 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
9336
9337 /**
9338  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
9339  * but with all dynamically-allocated buffers duplicated in new buffers.
9340  */
9341 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
9342
9343 /**
9344  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
9345  */
9346 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
9347
9348 /**
9349  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
9350  */
9351 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
9352
9353 /**
9354  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
9355  */
9356 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
9357
9358 /**
9359  * Creates a new CResult_TxCreationKeysErrorZ which has the same data as `orig`
9360  * but with all dynamically-allocated buffers duplicated in new buffers.
9361  */
9362 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
9363
9364 /**
9365  * Constructs a new COption_u32Z containing a u32
9366  */
9367 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
9368
9369 /**
9370  * Constructs a new COption_u32Z containing nothing
9371  */
9372 struct LDKCOption_u32Z COption_u32Z_none(void);
9373
9374 /**
9375  * Frees any resources associated with the u32, if we are in the Some state
9376  */
9377 void COption_u32Z_free(struct LDKCOption_u32Z _res);
9378
9379 /**
9380  * Creates a new COption_u32Z which has the same data as `orig`
9381  * but with all dynamically-allocated buffers duplicated in new buffers.
9382  */
9383 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
9384
9385 /**
9386  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
9387  */
9388 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
9389
9390 /**
9391  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
9392  */
9393 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
9394
9395 /**
9396  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
9397  */
9398 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
9399
9400 /**
9401  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
9402  * but with all dynamically-allocated buffers duplicated in new buffers.
9403  */
9404 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
9405
9406 /**
9407  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
9408  */
9409 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
9410
9411 /**
9412  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
9413  */
9414 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
9415
9416 /**
9417  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
9418  */
9419 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
9420
9421 /**
9422  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
9423  * but with all dynamically-allocated buffers duplicated in new buffers.
9424  */
9425 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
9426
9427 /**
9428  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
9429  */
9430 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
9431
9432 /**
9433  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
9434  */
9435 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
9436
9437 /**
9438  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
9439  */
9440 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
9441
9442 /**
9443  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
9444  * but with all dynamically-allocated buffers duplicated in new buffers.
9445  */
9446 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
9447
9448 /**
9449  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9450  */
9451 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
9452
9453 /**
9454  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
9455  */
9456 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
9457
9458 /**
9459  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
9460  */
9461 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
9462
9463 /**
9464  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
9465  */
9466 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
9467
9468 /**
9469  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
9470  * but with all dynamically-allocated buffers duplicated in new buffers.
9471  */
9472 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
9473
9474 /**
9475  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
9476  */
9477 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
9478
9479 /**
9480  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
9481  */
9482 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
9483
9484 /**
9485  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
9486  */
9487 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
9488
9489 /**
9490  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
9491  * but with all dynamically-allocated buffers duplicated in new buffers.
9492  */
9493 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
9494
9495 /**
9496  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
9497  */
9498 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
9499
9500 /**
9501  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
9502  */
9503 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
9504
9505 /**
9506  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
9507  */
9508 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
9509
9510 /**
9511  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
9512  * but with all dynamically-allocated buffers duplicated in new buffers.
9513  */
9514 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
9515
9516 /**
9517  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
9518  */
9519 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
9520
9521 /**
9522  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
9523  */
9524 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
9525
9526 /**
9527  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
9528  */
9529 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
9530
9531 /**
9532  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
9533  */
9534 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
9535
9536 /**
9537  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
9538  */
9539 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
9540
9541 /**
9542  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
9543  */
9544 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
9545
9546 /**
9547  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
9548  * but with all dynamically-allocated buffers duplicated in new buffers.
9549  */
9550 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
9551
9552 /**
9553  * Creates a new CResult_NoneErrorZ in the success state.
9554  */
9555 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
9556
9557 /**
9558  * Creates a new CResult_NoneErrorZ in the error state.
9559  */
9560 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
9561
9562 /**
9563  * Frees any resources used by the CResult_NoneErrorZ.
9564  */
9565 void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
9566
9567 /**
9568  * Creates a new CResult_NoneErrorZ which has the same data as `orig`
9569  * but with all dynamically-allocated buffers duplicated in new buffers.
9570  */
9571 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
9572
9573 /**
9574  * Creates a new CResult_RouteHopDecodeErrorZ in the success state.
9575  */
9576 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
9577
9578 /**
9579  * Creates a new CResult_RouteHopDecodeErrorZ in the error state.
9580  */
9581 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
9582
9583 /**
9584  * Frees any resources used by the CResult_RouteHopDecodeErrorZ.
9585  */
9586 void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
9587
9588 /**
9589  * Creates a new CResult_RouteHopDecodeErrorZ which has the same data as `orig`
9590  * but with all dynamically-allocated buffers duplicated in new buffers.
9591  */
9592 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
9593
9594 /**
9595  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9596  */
9597 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
9598
9599 /**
9600  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9601  */
9602 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
9603
9604 /**
9605  * Creates a new CResult_RouteDecodeErrorZ in the success state.
9606  */
9607 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
9608
9609 /**
9610  * Creates a new CResult_RouteDecodeErrorZ in the error state.
9611  */
9612 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
9613
9614 /**
9615  * Frees any resources used by the CResult_RouteDecodeErrorZ.
9616  */
9617 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
9618
9619 /**
9620  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
9621  * but with all dynamically-allocated buffers duplicated in new buffers.
9622  */
9623 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
9624
9625 /**
9626  * Constructs a new COption_u64Z containing a u64
9627  */
9628 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
9629
9630 /**
9631  * Constructs a new COption_u64Z containing nothing
9632  */
9633 struct LDKCOption_u64Z COption_u64Z_none(void);
9634
9635 /**
9636  * Frees any resources associated with the u64, if we are in the Some state
9637  */
9638 void COption_u64Z_free(struct LDKCOption_u64Z _res);
9639
9640 /**
9641  * Creates a new COption_u64Z which has the same data as `orig`
9642  * but with all dynamically-allocated buffers duplicated in new buffers.
9643  */
9644 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
9645
9646 /**
9647  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9648  */
9649 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
9650
9651 /**
9652  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9653  */
9654 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
9655
9656 /**
9657  * Creates a new CResult_RouteLightningErrorZ in the success state.
9658  */
9659 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
9660
9661 /**
9662  * Creates a new CResult_RouteLightningErrorZ in the error state.
9663  */
9664 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
9665
9666 /**
9667  * Frees any resources used by the CResult_RouteLightningErrorZ.
9668  */
9669 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
9670
9671 /**
9672  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
9673  * but with all dynamically-allocated buffers duplicated in new buffers.
9674  */
9675 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
9676
9677 /**
9678  * Creates a new CResult_TxOutAccessErrorZ in the success state.
9679  */
9680 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
9681
9682 /**
9683  * Creates a new CResult_TxOutAccessErrorZ in the error state.
9684  */
9685 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
9686
9687 /**
9688  * Frees any resources used by the CResult_TxOutAccessErrorZ.
9689  */
9690 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
9691
9692 /**
9693  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
9694  * but with all dynamically-allocated buffers duplicated in new buffers.
9695  */
9696 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
9697
9698 /**
9699  * Creates a new tuple which has the same data as `orig`
9700  * but with all dynamically-allocated buffers duplicated in new buffers.
9701  */
9702 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
9703
9704 /**
9705  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
9706  */
9707 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
9708
9709 /**
9710  * Frees any resources used by the C2Tuple_usizeTransactionZ.
9711  */
9712 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
9713
9714 /**
9715  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9716  */
9717 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
9718
9719 /**
9720  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9721  */
9722 void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
9723
9724 /**
9725  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
9726  */
9727 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
9728
9729 /**
9730  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
9731  */
9732 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
9733
9734 /**
9735  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
9736  */
9737 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
9738
9739 /**
9740  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
9741  * but with all dynamically-allocated buffers duplicated in new buffers.
9742  */
9743 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
9744
9745 /**
9746  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9747  */
9748 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
9749
9750 /**
9751  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing a crate::c_types::derived::C2Tuple_usizeTransactionZ
9752  */
9753 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
9754
9755 /**
9756  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing nothing
9757  */
9758 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
9759
9760 /**
9761  * Frees any resources associated with the crate::c_types::derived::C2Tuple_usizeTransactionZ, if we are in the Some state
9762  */
9763 void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
9764
9765 /**
9766  * Creates a new COption_C2Tuple_usizeTransactionZZ which has the same data as `orig`
9767  * but with all dynamically-allocated buffers duplicated in new buffers.
9768  */
9769 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
9770
9771 /**
9772  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9773  */
9774 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
9775
9776 /**
9777  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9778  */
9779 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
9780
9781 /**
9782  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
9783  */
9784 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
9785
9786 /**
9787  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
9788  */
9789 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
9790
9791 /**
9792  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
9793  */
9794 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
9795
9796 /**
9797  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
9798  */
9799 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
9800
9801 /**
9802  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
9803  */
9804 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
9805
9806 /**
9807  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
9808  */
9809 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
9810
9811 /**
9812  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
9813  */
9814 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
9815
9816 /**
9817  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
9818  */
9819 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
9820
9821 /**
9822  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
9823  */
9824 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
9825
9826 /**
9827  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
9828  */
9829 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
9830
9831 /**
9832  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
9833  */
9834 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
9835
9836 /**
9837  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
9838  */
9839 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
9840
9841 /**
9842  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the success state.
9843  */
9844 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
9845
9846 /**
9847  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the error state.
9848  */
9849 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
9850
9851 /**
9852  * Frees any resources used by the CResult_DelayedPaymentOutputDescriptorDecodeErrorZ.
9853  */
9854 void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
9855
9856 /**
9857  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
9858  * but with all dynamically-allocated buffers duplicated in new buffers.
9859  */
9860 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
9861
9862 /**
9863  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the success state.
9864  */
9865 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
9866
9867 /**
9868  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the error state.
9869  */
9870 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
9871
9872 /**
9873  * Frees any resources used by the CResult_StaticPaymentOutputDescriptorDecodeErrorZ.
9874  */
9875 void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
9876
9877 /**
9878  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
9879  * but with all dynamically-allocated buffers duplicated in new buffers.
9880  */
9881 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
9882
9883 /**
9884  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
9885  */
9886 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
9887
9888 /**
9889  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
9890  */
9891 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
9892
9893 /**
9894  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
9895  */
9896 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
9897
9898 /**
9899  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
9900  * but with all dynamically-allocated buffers duplicated in new buffers.
9901  */
9902 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
9903
9904 /**
9905  * Creates a new tuple which has the same data as `orig`
9906  * but with all dynamically-allocated buffers duplicated in new buffers.
9907  */
9908 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
9909
9910 /**
9911  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
9912  */
9913 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
9914
9915 /**
9916  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
9917  */
9918 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
9919
9920 /**
9921  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
9922  */
9923 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
9924
9925 /**
9926  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
9927  */
9928 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
9929
9930 /**
9931  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
9932  */
9933 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
9934
9935 /**
9936  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
9937  * but with all dynamically-allocated buffers duplicated in new buffers.
9938  */
9939 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
9940
9941 /**
9942  * Creates a new CResult_SignatureNoneZ in the success state.
9943  */
9944 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
9945
9946 /**
9947  * Creates a new CResult_SignatureNoneZ in the error state.
9948  */
9949 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
9950
9951 /**
9952  * Frees any resources used by the CResult_SignatureNoneZ.
9953  */
9954 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
9955
9956 /**
9957  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
9958  * but with all dynamically-allocated buffers duplicated in new buffers.
9959  */
9960 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
9961
9962 /**
9963  * Creates a new CResult_SignDecodeErrorZ in the success state.
9964  */
9965 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
9966
9967 /**
9968  * Creates a new CResult_SignDecodeErrorZ in the error state.
9969  */
9970 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
9971
9972 /**
9973  * Frees any resources used by the CResult_SignDecodeErrorZ.
9974  */
9975 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
9976
9977 /**
9978  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
9979  * but with all dynamically-allocated buffers duplicated in new buffers.
9980  */
9981 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
9982
9983 /**
9984  * Frees the buffer pointed to by `data` if `datalen` is non-0.
9985  */
9986 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
9987
9988 /**
9989  * Creates a new CResult_RecoverableSignatureNoneZ in the success state.
9990  */
9991 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
9992
9993 /**
9994  * Creates a new CResult_RecoverableSignatureNoneZ in the error state.
9995  */
9996 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
9997
9998 /**
9999  * Frees any resources used by the CResult_RecoverableSignatureNoneZ.
10000  */
10001 void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
10002
10003 /**
10004  * Creates a new CResult_RecoverableSignatureNoneZ which has the same data as `orig`
10005  * but with all dynamically-allocated buffers duplicated in new buffers.
10006  */
10007 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
10008
10009 /**
10010  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10011  */
10012 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
10013
10014 /**
10015  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
10016  */
10017 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
10018
10019 /**
10020  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
10021  */
10022 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
10023
10024 /**
10025  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
10026  */
10027 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
10028
10029 /**
10030  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
10031  * but with all dynamically-allocated buffers duplicated in new buffers.
10032  */
10033 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
10034
10035 /**
10036  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
10037  */
10038 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
10039
10040 /**
10041  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
10042  */
10043 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
10044
10045 /**
10046  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
10047  */
10048 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
10049
10050 /**
10051  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
10052  * but with all dynamically-allocated buffers duplicated in new buffers.
10053  */
10054 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
10055
10056 /**
10057  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10058  */
10059 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
10060
10061 /**
10062  * Creates a new CResult_TransactionNoneZ in the success state.
10063  */
10064 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
10065
10066 /**
10067  * Creates a new CResult_TransactionNoneZ in the error state.
10068  */
10069 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
10070
10071 /**
10072  * Frees any resources used by the CResult_TransactionNoneZ.
10073  */
10074 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
10075
10076 /**
10077  * Creates a new CResult_TransactionNoneZ which has the same data as `orig`
10078  * but with all dynamically-allocated buffers duplicated in new buffers.
10079  */
10080 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
10081
10082 /**
10083  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
10084  */
10085 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
10086
10087 /**
10088  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
10089  */
10090 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
10091
10092 /**
10093  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10094  */
10095 void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res);
10096
10097 /**
10098  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the success state.
10099  */
10100 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o);
10101
10102 /**
10103  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the error state.
10104  */
10105 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
10106
10107 /**
10108  * Frees any resources used by the CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.
10109  */
10110 void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
10111
10112 /**
10113  * Constructs a new COption_u16Z containing a u16
10114  */
10115 struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
10116
10117 /**
10118  * Constructs a new COption_u16Z containing nothing
10119  */
10120 struct LDKCOption_u16Z COption_u16Z_none(void);
10121
10122 /**
10123  * Frees any resources associated with the u16, if we are in the Some state
10124  */
10125 void COption_u16Z_free(struct LDKCOption_u16Z _res);
10126
10127 /**
10128  * Creates a new COption_u16Z which has the same data as `orig`
10129  * but with all dynamically-allocated buffers duplicated in new buffers.
10130  */
10131 struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
10132
10133 /**
10134  * Creates a new CResult_NoneAPIErrorZ in the success state.
10135  */
10136 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
10137
10138 /**
10139  * Creates a new CResult_NoneAPIErrorZ in the error state.
10140  */
10141 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
10142
10143 /**
10144  * Frees any resources used by the CResult_NoneAPIErrorZ.
10145  */
10146 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
10147
10148 /**
10149  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
10150  * but with all dynamically-allocated buffers duplicated in new buffers.
10151  */
10152 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
10153
10154 /**
10155  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10156  */
10157 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
10158
10159 /**
10160  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10161  */
10162 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
10163
10164 /**
10165  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
10166  */
10167 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
10168
10169 /**
10170  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
10171  */
10172 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
10173
10174 /**
10175  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
10176  */
10177 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
10178
10179 /**
10180  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
10181  * but with all dynamically-allocated buffers duplicated in new buffers.
10182  */
10183 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
10184
10185 /**
10186  * Creates a new CResult_PaymentHashPaymentSendFailureZ in the success state.
10187  */
10188 struct LDKCResult_PaymentHashPaymentSendFailureZ CResult_PaymentHashPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
10189
10190 /**
10191  * Creates a new CResult_PaymentHashPaymentSendFailureZ in the error state.
10192  */
10193 struct LDKCResult_PaymentHashPaymentSendFailureZ CResult_PaymentHashPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
10194
10195 /**
10196  * Frees any resources used by the CResult_PaymentHashPaymentSendFailureZ.
10197  */
10198 void CResult_PaymentHashPaymentSendFailureZ_free(struct LDKCResult_PaymentHashPaymentSendFailureZ _res);
10199
10200 /**
10201  * Creates a new CResult_PaymentHashPaymentSendFailureZ which has the same data as `orig`
10202  * but with all dynamically-allocated buffers duplicated in new buffers.
10203  */
10204 struct LDKCResult_PaymentHashPaymentSendFailureZ CResult_PaymentHashPaymentSendFailureZ_clone(const struct LDKCResult_PaymentHashPaymentSendFailureZ *NONNULL_PTR orig);
10205
10206 /**
10207  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10208  */
10209 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
10210
10211 /**
10212  * Creates a new tuple which has the same data as `orig`
10213  * but with all dynamically-allocated buffers duplicated in new buffers.
10214  */
10215 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
10216
10217 /**
10218  * Creates a new C2Tuple_PaymentHashPaymentSecretZ from the contained elements.
10219  */
10220 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
10221
10222 /**
10223  * Frees any resources used by the C2Tuple_PaymentHashPaymentSecretZ.
10224  */
10225 void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
10226
10227 /**
10228  * Creates a new CResult_PaymentSecretAPIErrorZ in the success state.
10229  */
10230 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
10231
10232 /**
10233  * Creates a new CResult_PaymentSecretAPIErrorZ in the error state.
10234  */
10235 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
10236
10237 /**
10238  * Frees any resources used by the CResult_PaymentSecretAPIErrorZ.
10239  */
10240 void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
10241
10242 /**
10243  * Creates a new CResult_PaymentSecretAPIErrorZ which has the same data as `orig`
10244  * but with all dynamically-allocated buffers duplicated in new buffers.
10245  */
10246 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
10247
10248 /**
10249  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10250  */
10251 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
10252
10253 /**
10254  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
10255  */
10256 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
10257
10258 /**
10259  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
10260  */
10261 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
10262
10263 /**
10264  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
10265  */
10266 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
10267
10268 /**
10269  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
10270  */
10271 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
10272
10273 /**
10274  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
10275  */
10276 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
10277
10278 /**
10279  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
10280  */
10281 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
10282
10283 /**
10284  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
10285  */
10286 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
10287
10288 /**
10289  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
10290  */
10291 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
10292
10293 /**
10294  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
10295  * but with all dynamically-allocated buffers duplicated in new buffers.
10296  */
10297 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
10298
10299 /**
10300  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
10301  */
10302 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
10303
10304 /**
10305  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
10306  */
10307 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
10308
10309 /**
10310  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
10311  */
10312 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
10313
10314 /**
10315  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
10316  * but with all dynamically-allocated buffers duplicated in new buffers.
10317  */
10318 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
10319
10320 /**
10321  * Creates a new CResult_SiPrefixNoneZ in the success state.
10322  */
10323 struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_ok(enum LDKSiPrefix o);
10324
10325 /**
10326  * Creates a new CResult_SiPrefixNoneZ in the error state.
10327  */
10328 struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_err(void);
10329
10330 /**
10331  * Frees any resources used by the CResult_SiPrefixNoneZ.
10332  */
10333 void CResult_SiPrefixNoneZ_free(struct LDKCResult_SiPrefixNoneZ _res);
10334
10335 /**
10336  * Creates a new CResult_SiPrefixNoneZ which has the same data as `orig`
10337  * but with all dynamically-allocated buffers duplicated in new buffers.
10338  */
10339 struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_clone(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR orig);
10340
10341 /**
10342  * Creates a new CResult_InvoiceNoneZ in the success state.
10343  */
10344 struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_ok(struct LDKInvoice o);
10345
10346 /**
10347  * Creates a new CResult_InvoiceNoneZ in the error state.
10348  */
10349 struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_err(void);
10350
10351 /**
10352  * Frees any resources used by the CResult_InvoiceNoneZ.
10353  */
10354 void CResult_InvoiceNoneZ_free(struct LDKCResult_InvoiceNoneZ _res);
10355
10356 /**
10357  * Creates a new CResult_InvoiceNoneZ which has the same data as `orig`
10358  * but with all dynamically-allocated buffers duplicated in new buffers.
10359  */
10360 struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_clone(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR orig);
10361
10362 /**
10363  * Creates a new CResult_SignedRawInvoiceNoneZ in the success state.
10364  */
10365 struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_ok(struct LDKSignedRawInvoice o);
10366
10367 /**
10368  * Creates a new CResult_SignedRawInvoiceNoneZ in the error state.
10369  */
10370 struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_err(void);
10371
10372 /**
10373  * Frees any resources used by the CResult_SignedRawInvoiceNoneZ.
10374  */
10375 void CResult_SignedRawInvoiceNoneZ_free(struct LDKCResult_SignedRawInvoiceNoneZ _res);
10376
10377 /**
10378  * Creates a new CResult_SignedRawInvoiceNoneZ which has the same data as `orig`
10379  * but with all dynamically-allocated buffers duplicated in new buffers.
10380  */
10381 struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_clone(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR orig);
10382
10383 /**
10384  * Creates a new tuple which has the same data as `orig`
10385  * but with all dynamically-allocated buffers duplicated in new buffers.
10386  */
10387 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
10388
10389 /**
10390  * Creates a new C3Tuple_RawInvoice_u832InvoiceSignatureZ from the contained elements.
10391  */
10392 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(struct LDKRawInvoice a, struct LDKThirtyTwoBytes b, struct LDKInvoiceSignature c);
10393
10394 /**
10395  * Frees any resources used by the C3Tuple_RawInvoice_u832InvoiceSignatureZ.
10396  */
10397 void C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res);
10398
10399 /**
10400  * Creates a new CResult_PayeePubKeyErrorZ in the success state.
10401  */
10402 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_ok(struct LDKPayeePubKey o);
10403
10404 /**
10405  * Creates a new CResult_PayeePubKeyErrorZ in the error state.
10406  */
10407 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_err(enum LDKSecp256k1Error e);
10408
10409 /**
10410  * Frees any resources used by the CResult_PayeePubKeyErrorZ.
10411  */
10412 void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
10413
10414 /**
10415  * Creates a new CResult_PayeePubKeyErrorZ which has the same data as `orig`
10416  * but with all dynamically-allocated buffers duplicated in new buffers.
10417  */
10418 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
10419
10420 /**
10421  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10422  */
10423 void CVec_PrivateRouteZ_free(struct LDKCVec_PrivateRouteZ _res);
10424
10425 /**
10426  * Creates a new CResult_PositiveTimestampCreationErrorZ in the success state.
10427  */
10428 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_ok(struct LDKPositiveTimestamp o);
10429
10430 /**
10431  * Creates a new CResult_PositiveTimestampCreationErrorZ in the error state.
10432  */
10433 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_err(enum LDKCreationError e);
10434
10435 /**
10436  * Frees any resources used by the CResult_PositiveTimestampCreationErrorZ.
10437  */
10438 void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
10439
10440 /**
10441  * Creates a new CResult_PositiveTimestampCreationErrorZ which has the same data as `orig`
10442  * but with all dynamically-allocated buffers duplicated in new buffers.
10443  */
10444 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
10445
10446 /**
10447  * Creates a new CResult_NoneSemanticErrorZ in the success state.
10448  */
10449 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_ok(void);
10450
10451 /**
10452  * Creates a new CResult_NoneSemanticErrorZ in the error state.
10453  */
10454 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_err(enum LDKSemanticError e);
10455
10456 /**
10457  * Frees any resources used by the CResult_NoneSemanticErrorZ.
10458  */
10459 void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
10460
10461 /**
10462  * Creates a new CResult_NoneSemanticErrorZ which has the same data as `orig`
10463  * but with all dynamically-allocated buffers duplicated in new buffers.
10464  */
10465 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
10466
10467 /**
10468  * Creates a new CResult_InvoiceSemanticErrorZ in the success state.
10469  */
10470 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_ok(struct LDKInvoice o);
10471
10472 /**
10473  * Creates a new CResult_InvoiceSemanticErrorZ in the error state.
10474  */
10475 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_err(enum LDKSemanticError e);
10476
10477 /**
10478  * Frees any resources used by the CResult_InvoiceSemanticErrorZ.
10479  */
10480 void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
10481
10482 /**
10483  * Creates a new CResult_InvoiceSemanticErrorZ which has the same data as `orig`
10484  * but with all dynamically-allocated buffers duplicated in new buffers.
10485  */
10486 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
10487
10488 /**
10489  * Creates a new CResult_DescriptionCreationErrorZ in the success state.
10490  */
10491 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_ok(struct LDKDescription o);
10492
10493 /**
10494  * Creates a new CResult_DescriptionCreationErrorZ in the error state.
10495  */
10496 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_err(enum LDKCreationError e);
10497
10498 /**
10499  * Frees any resources used by the CResult_DescriptionCreationErrorZ.
10500  */
10501 void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
10502
10503 /**
10504  * Creates a new CResult_DescriptionCreationErrorZ which has the same data as `orig`
10505  * but with all dynamically-allocated buffers duplicated in new buffers.
10506  */
10507 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
10508
10509 /**
10510  * Creates a new CResult_ExpiryTimeCreationErrorZ in the success state.
10511  */
10512 struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_ok(struct LDKExpiryTime o);
10513
10514 /**
10515  * Creates a new CResult_ExpiryTimeCreationErrorZ in the error state.
10516  */
10517 struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_err(enum LDKCreationError e);
10518
10519 /**
10520  * Frees any resources used by the CResult_ExpiryTimeCreationErrorZ.
10521  */
10522 void CResult_ExpiryTimeCreationErrorZ_free(struct LDKCResult_ExpiryTimeCreationErrorZ _res);
10523
10524 /**
10525  * Creates a new CResult_ExpiryTimeCreationErrorZ which has the same data as `orig`
10526  * but with all dynamically-allocated buffers duplicated in new buffers.
10527  */
10528 struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_clone(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR orig);
10529
10530 /**
10531  * Creates a new CResult_PrivateRouteCreationErrorZ in the success state.
10532  */
10533 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
10534
10535 /**
10536  * Creates a new CResult_PrivateRouteCreationErrorZ in the error state.
10537  */
10538 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
10539
10540 /**
10541  * Frees any resources used by the CResult_PrivateRouteCreationErrorZ.
10542  */
10543 void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
10544
10545 /**
10546  * Creates a new CResult_PrivateRouteCreationErrorZ which has the same data as `orig`
10547  * but with all dynamically-allocated buffers duplicated in new buffers.
10548  */
10549 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
10550
10551 /**
10552  * Creates a new CResult_StringErrorZ in the success state.
10553  */
10554 struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
10555
10556 /**
10557  * Creates a new CResult_StringErrorZ in the error state.
10558  */
10559 struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
10560
10561 /**
10562  * Frees any resources used by the CResult_StringErrorZ.
10563  */
10564 void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
10565
10566 /**
10567  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
10568  */
10569 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
10570
10571 /**
10572  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
10573  */
10574 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
10575
10576 /**
10577  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
10578  */
10579 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
10580
10581 /**
10582  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
10583  * but with all dynamically-allocated buffers duplicated in new buffers.
10584  */
10585 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
10586
10587 /**
10588  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
10589  */
10590 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
10591
10592 /**
10593  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
10594  */
10595 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
10596
10597 /**
10598  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
10599  */
10600 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
10601
10602 /**
10603  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
10604  * but with all dynamically-allocated buffers duplicated in new buffers.
10605  */
10606 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
10607
10608 /**
10609  * Creates a new CResult_NoneMonitorUpdateErrorZ in the success state.
10610  */
10611 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
10612
10613 /**
10614  * Creates a new CResult_NoneMonitorUpdateErrorZ in the error state.
10615  */
10616 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e);
10617
10618 /**
10619  * Frees any resources used by the CResult_NoneMonitorUpdateErrorZ.
10620  */
10621 void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res);
10622
10623 /**
10624  * Creates a new CResult_NoneMonitorUpdateErrorZ which has the same data as `orig`
10625  * but with all dynamically-allocated buffers duplicated in new buffers.
10626  */
10627 struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
10628
10629 /**
10630  * Creates a new tuple which has the same data as `orig`
10631  * but with all dynamically-allocated buffers duplicated in new buffers.
10632  */
10633 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
10634
10635 /**
10636  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
10637  */
10638 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
10639
10640 /**
10641  * Frees any resources used by the C2Tuple_OutPointScriptZ.
10642  */
10643 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
10644
10645 /**
10646  * Creates a new tuple which has the same data as `orig`
10647  * but with all dynamically-allocated buffers duplicated in new buffers.
10648  */
10649 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
10650
10651 /**
10652  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
10653  */
10654 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
10655
10656 /**
10657  * Frees any resources used by the C2Tuple_u32ScriptZ.
10658  */
10659 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
10660
10661 /**
10662  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10663  */
10664 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
10665
10666 /**
10667  * Creates a new tuple which has the same data as `orig`
10668  * but with all dynamically-allocated buffers duplicated in new buffers.
10669  */
10670 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
10671
10672 /**
10673  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
10674  */
10675 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
10676
10677 /**
10678  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
10679  */
10680 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
10681
10682 /**
10683  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10684  */
10685 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
10686
10687 /**
10688  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10689  */
10690 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
10691
10692 /**
10693  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10694  */
10695 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
10696
10697 /**
10698  * Creates a new tuple which has the same data as `orig`
10699  * but with all dynamically-allocated buffers duplicated in new buffers.
10700  */
10701 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
10702
10703 /**
10704  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
10705  */
10706 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
10707
10708 /**
10709  * Frees any resources used by the C2Tuple_u32TxOutZ.
10710  */
10711 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
10712
10713 /**
10714  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10715  */
10716 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
10717
10718 /**
10719  * Creates a new tuple which has the same data as `orig`
10720  * but with all dynamically-allocated buffers duplicated in new buffers.
10721  */
10722 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
10723
10724 /**
10725  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
10726  */
10727 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
10728
10729 /**
10730  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
10731  */
10732 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
10733
10734 /**
10735  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10736  */
10737 void CVec_TransactionOutputsZ_free(struct LDKCVec_TransactionOutputsZ _res);
10738
10739 /**
10740  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
10741  */
10742 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
10743
10744 /**
10745  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
10746  */
10747 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
10748
10749 /**
10750  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
10751  */
10752 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
10753
10754 /**
10755  * Creates a new CResult_boolLightningErrorZ in the success state.
10756  */
10757 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
10758
10759 /**
10760  * Creates a new CResult_boolLightningErrorZ in the error state.
10761  */
10762 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
10763
10764 /**
10765  * Frees any resources used by the CResult_boolLightningErrorZ.
10766  */
10767 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
10768
10769 /**
10770  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
10771  * but with all dynamically-allocated buffers duplicated in new buffers.
10772  */
10773 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
10774
10775 /**
10776  * Creates a new tuple which has the same data as `orig`
10777  * but with all dynamically-allocated buffers duplicated in new buffers.
10778  */
10779 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
10780
10781 /**
10782  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
10783  */
10784 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
10785
10786 /**
10787  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
10788  */
10789 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
10790
10791 /**
10792  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10793  */
10794 void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
10795
10796 /**
10797  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10798  */
10799 void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
10800
10801 /**
10802  * Creates a new CResult_NoneLightningErrorZ in the success state.
10803  */
10804 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
10805
10806 /**
10807  * Creates a new CResult_NoneLightningErrorZ in the error state.
10808  */
10809 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
10810
10811 /**
10812  * Frees any resources used by the CResult_NoneLightningErrorZ.
10813  */
10814 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
10815
10816 /**
10817  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
10818  * but with all dynamically-allocated buffers duplicated in new buffers.
10819  */
10820 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
10821
10822 /**
10823  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10824  */
10825 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
10826
10827 /**
10828  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
10829  */
10830 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
10831
10832 /**
10833  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
10834  */
10835 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
10836
10837 /**
10838  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
10839  */
10840 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
10841
10842 /**
10843  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
10844  * but with all dynamically-allocated buffers duplicated in new buffers.
10845  */
10846 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
10847
10848 /**
10849  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
10850  */
10851 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
10852
10853 /**
10854  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
10855  */
10856 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
10857
10858 /**
10859  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
10860  */
10861 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
10862
10863 /**
10864  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
10865  * but with all dynamically-allocated buffers duplicated in new buffers.
10866  */
10867 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
10868
10869 /**
10870  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
10871  */
10872 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
10873
10874 /**
10875  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
10876  */
10877 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
10878
10879 /**
10880  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
10881  */
10882 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
10883
10884 /**
10885  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
10886  * but with all dynamically-allocated buffers duplicated in new buffers.
10887  */
10888 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
10889
10890 /**
10891  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the success state.
10892  */
10893 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_ok(struct LDKDirectionalChannelInfo o);
10894
10895 /**
10896  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ in the error state.
10897  */
10898 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
10899
10900 /**
10901  * Frees any resources used by the CResult_DirectionalChannelInfoDecodeErrorZ.
10902  */
10903 void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
10904
10905 /**
10906  * Creates a new CResult_DirectionalChannelInfoDecodeErrorZ which has the same data as `orig`
10907  * but with all dynamically-allocated buffers duplicated in new buffers.
10908  */
10909 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
10910
10911 /**
10912  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
10913  */
10914 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
10915
10916 /**
10917  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
10918  */
10919 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
10920
10921 /**
10922  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
10923  */
10924 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
10925
10926 /**
10927  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
10928  * but with all dynamically-allocated buffers duplicated in new buffers.
10929  */
10930 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
10931
10932 /**
10933  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
10934  */
10935 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
10936
10937 /**
10938  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
10939  */
10940 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
10941
10942 /**
10943  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
10944  */
10945 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
10946
10947 /**
10948  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
10949  * but with all dynamically-allocated buffers duplicated in new buffers.
10950  */
10951 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
10952
10953 /**
10954  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
10955  */
10956 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
10957
10958 /**
10959  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
10960  */
10961 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
10962
10963 /**
10964  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
10965  */
10966 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
10967
10968 /**
10969  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
10970  * but with all dynamically-allocated buffers duplicated in new buffers.
10971  */
10972 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
10973
10974 /**
10975  * Frees the buffer pointed to by `data` if `datalen` is non-0.
10976  */
10977 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
10978
10979 /**
10980  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
10981  */
10982 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
10983
10984 /**
10985  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
10986  */
10987 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
10988
10989 /**
10990  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
10991  */
10992 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
10993
10994 /**
10995  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
10996  * but with all dynamically-allocated buffers duplicated in new buffers.
10997  */
10998 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
10999
11000 /**
11001  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
11002  */
11003 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
11004
11005 /**
11006  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
11007  */
11008 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
11009
11010 /**
11011  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
11012  */
11013 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
11014
11015 /**
11016  * Creates a new CResult_NetworkGraphDecodeErrorZ which has the same data as `orig`
11017  * but with all dynamically-allocated buffers duplicated in new buffers.
11018  */
11019 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
11020
11021 /**
11022  * Creates a new CResult_NetAddressu8Z in the success state.
11023  */
11024 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_ok(struct LDKNetAddress o);
11025
11026 /**
11027  * Creates a new CResult_NetAddressu8Z in the error state.
11028  */
11029 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_err(uint8_t e);
11030
11031 /**
11032  * Frees any resources used by the CResult_NetAddressu8Z.
11033  */
11034 void CResult_NetAddressu8Z_free(struct LDKCResult_NetAddressu8Z _res);
11035
11036 /**
11037  * Creates a new CResult_NetAddressu8Z which has the same data as `orig`
11038  * but with all dynamically-allocated buffers duplicated in new buffers.
11039  */
11040 struct LDKCResult_NetAddressu8Z CResult_NetAddressu8Z_clone(const struct LDKCResult_NetAddressu8Z *NONNULL_PTR orig);
11041
11042 /**
11043  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the success state.
11044  */
11045 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_ok(struct LDKCResult_NetAddressu8Z o);
11046
11047 /**
11048  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ in the error state.
11049  */
11050 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_err(struct LDKDecodeError e);
11051
11052 /**
11053  * Frees any resources used by the CResult_CResult_NetAddressu8ZDecodeErrorZ.
11054  */
11055 void CResult_CResult_NetAddressu8ZDecodeErrorZ_free(struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ _res);
11056
11057 /**
11058  * Creates a new CResult_CResult_NetAddressu8ZDecodeErrorZ which has the same data as `orig`
11059  * but with all dynamically-allocated buffers duplicated in new buffers.
11060  */
11061 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ CResult_CResult_NetAddressu8ZDecodeErrorZ_clone(const struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ *NONNULL_PTR orig);
11062
11063 /**
11064  * Creates a new CResult_NetAddressDecodeErrorZ in the success state.
11065  */
11066 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
11067
11068 /**
11069  * Creates a new CResult_NetAddressDecodeErrorZ in the error state.
11070  */
11071 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
11072
11073 /**
11074  * Frees any resources used by the CResult_NetAddressDecodeErrorZ.
11075  */
11076 void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
11077
11078 /**
11079  * Creates a new CResult_NetAddressDecodeErrorZ which has the same data as `orig`
11080  * but with all dynamically-allocated buffers duplicated in new buffers.
11081  */
11082 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
11083
11084 /**
11085  * Frees the buffer pointed to by `data` if `datalen` is non-0.
11086  */
11087 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
11088
11089 /**
11090  * Frees the buffer pointed to by `data` if `datalen` is non-0.
11091  */
11092 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
11093
11094 /**
11095  * Frees the buffer pointed to by `data` if `datalen` is non-0.
11096  */
11097 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
11098
11099 /**
11100  * Frees the buffer pointed to by `data` if `datalen` is non-0.
11101  */
11102 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
11103
11104 /**
11105  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
11106  */
11107 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
11108
11109 /**
11110  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
11111  */
11112 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
11113
11114 /**
11115  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
11116  */
11117 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
11118
11119 /**
11120  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
11121  * but with all dynamically-allocated buffers duplicated in new buffers.
11122  */
11123 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
11124
11125 /**
11126  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
11127  */
11128 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
11129
11130 /**
11131  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
11132  */
11133 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
11134
11135 /**
11136  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
11137  */
11138 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
11139
11140 /**
11141  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
11142  * but with all dynamically-allocated buffers duplicated in new buffers.
11143  */
11144 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
11145
11146 /**
11147  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
11148  */
11149 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
11150
11151 /**
11152  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
11153  */
11154 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
11155
11156 /**
11157  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
11158  */
11159 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
11160
11161 /**
11162  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
11163  * but with all dynamically-allocated buffers duplicated in new buffers.
11164  */
11165 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
11166
11167 /**
11168  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
11169  */
11170 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
11171
11172 /**
11173  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
11174  */
11175 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
11176
11177 /**
11178  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
11179  */
11180 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
11181
11182 /**
11183  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
11184  * but with all dynamically-allocated buffers duplicated in new buffers.
11185  */
11186 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
11187
11188 /**
11189  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
11190  */
11191 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
11192
11193 /**
11194  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
11195  */
11196 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
11197
11198 /**
11199  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
11200  */
11201 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
11202
11203 /**
11204  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
11205  * but with all dynamically-allocated buffers duplicated in new buffers.
11206  */
11207 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
11208
11209 /**
11210  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
11211  */
11212 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
11213
11214 /**
11215  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
11216  */
11217 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
11218
11219 /**
11220  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
11221  */
11222 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
11223
11224 /**
11225  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
11226  * but with all dynamically-allocated buffers duplicated in new buffers.
11227  */
11228 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
11229
11230 /**
11231  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
11232  */
11233 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
11234
11235 /**
11236  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
11237  */
11238 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
11239
11240 /**
11241  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
11242  */
11243 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
11244
11245 /**
11246  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
11247  * but with all dynamically-allocated buffers duplicated in new buffers.
11248  */
11249 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
11250
11251 /**
11252  * Creates a new CResult_FundingLockedDecodeErrorZ in the success state.
11253  */
11254 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
11255
11256 /**
11257  * Creates a new CResult_FundingLockedDecodeErrorZ in the error state.
11258  */
11259 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
11260
11261 /**
11262  * Frees any resources used by the CResult_FundingLockedDecodeErrorZ.
11263  */
11264 void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
11265
11266 /**
11267  * Creates a new CResult_FundingLockedDecodeErrorZ which has the same data as `orig`
11268  * but with all dynamically-allocated buffers duplicated in new buffers.
11269  */
11270 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
11271
11272 /**
11273  * Creates a new CResult_InitDecodeErrorZ in the success state.
11274  */
11275 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
11276
11277 /**
11278  * Creates a new CResult_InitDecodeErrorZ in the error state.
11279  */
11280 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
11281
11282 /**
11283  * Frees any resources used by the CResult_InitDecodeErrorZ.
11284  */
11285 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
11286
11287 /**
11288  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
11289  * but with all dynamically-allocated buffers duplicated in new buffers.
11290  */
11291 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
11292
11293 /**
11294  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
11295  */
11296 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
11297
11298 /**
11299  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
11300  */
11301 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
11302
11303 /**
11304  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
11305  */
11306 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
11307
11308 /**
11309  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
11310  * but with all dynamically-allocated buffers duplicated in new buffers.
11311  */
11312 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
11313
11314 /**
11315  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
11316  */
11317 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
11318
11319 /**
11320  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
11321  */
11322 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
11323
11324 /**
11325  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
11326  */
11327 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
11328
11329 /**
11330  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
11331  * but with all dynamically-allocated buffers duplicated in new buffers.
11332  */
11333 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
11334
11335 /**
11336  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
11337  */
11338 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
11339
11340 /**
11341  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
11342  */
11343 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
11344
11345 /**
11346  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
11347  */
11348 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
11349
11350 /**
11351  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
11352  * but with all dynamically-allocated buffers duplicated in new buffers.
11353  */
11354 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
11355
11356 /**
11357  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
11358  */
11359 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
11360
11361 /**
11362  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
11363  */
11364 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
11365
11366 /**
11367  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
11368  */
11369 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
11370
11371 /**
11372  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
11373  * but with all dynamically-allocated buffers duplicated in new buffers.
11374  */
11375 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
11376
11377 /**
11378  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
11379  */
11380 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
11381
11382 /**
11383  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
11384  */
11385 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
11386
11387 /**
11388  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
11389  */
11390 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
11391
11392 /**
11393  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
11394  * but with all dynamically-allocated buffers duplicated in new buffers.
11395  */
11396 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
11397
11398 /**
11399  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
11400  */
11401 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
11402
11403 /**
11404  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
11405  */
11406 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
11407
11408 /**
11409  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
11410  */
11411 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
11412
11413 /**
11414  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
11415  * but with all dynamically-allocated buffers duplicated in new buffers.
11416  */
11417 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
11418
11419 /**
11420  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
11421  */
11422 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
11423
11424 /**
11425  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
11426  */
11427 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
11428
11429 /**
11430  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
11431  */
11432 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
11433
11434 /**
11435  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
11436  * but with all dynamically-allocated buffers duplicated in new buffers.
11437  */
11438 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
11439
11440 /**
11441  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
11442  */
11443 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
11444
11445 /**
11446  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
11447  */
11448 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
11449
11450 /**
11451  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
11452  */
11453 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
11454
11455 /**
11456  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
11457  * but with all dynamically-allocated buffers duplicated in new buffers.
11458  */
11459 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
11460
11461 /**
11462  * Creates a new CResult_PingDecodeErrorZ in the success state.
11463  */
11464 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
11465
11466 /**
11467  * Creates a new CResult_PingDecodeErrorZ in the error state.
11468  */
11469 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
11470
11471 /**
11472  * Frees any resources used by the CResult_PingDecodeErrorZ.
11473  */
11474 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
11475
11476 /**
11477  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
11478  * but with all dynamically-allocated buffers duplicated in new buffers.
11479  */
11480 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
11481
11482 /**
11483  * Creates a new CResult_PongDecodeErrorZ in the success state.
11484  */
11485 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
11486
11487 /**
11488  * Creates a new CResult_PongDecodeErrorZ in the error state.
11489  */
11490 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
11491
11492 /**
11493  * Frees any resources used by the CResult_PongDecodeErrorZ.
11494  */
11495 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
11496
11497 /**
11498  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
11499  * but with all dynamically-allocated buffers duplicated in new buffers.
11500  */
11501 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
11502
11503 /**
11504  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
11505  */
11506 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
11507
11508 /**
11509  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
11510  */
11511 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
11512
11513 /**
11514  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
11515  */
11516 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
11517
11518 /**
11519  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
11520  * but with all dynamically-allocated buffers duplicated in new buffers.
11521  */
11522 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
11523
11524 /**
11525  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
11526  */
11527 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
11528
11529 /**
11530  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
11531  */
11532 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
11533
11534 /**
11535  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
11536  */
11537 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
11538
11539 /**
11540  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
11541  * but with all dynamically-allocated buffers duplicated in new buffers.
11542  */
11543 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
11544
11545 /**
11546  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
11547  */
11548 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
11549
11550 /**
11551  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
11552  */
11553 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
11554
11555 /**
11556  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
11557  */
11558 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
11559
11560 /**
11561  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
11562  * but with all dynamically-allocated buffers duplicated in new buffers.
11563  */
11564 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
11565
11566 /**
11567  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
11568  */
11569 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
11570
11571 /**
11572  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
11573  */
11574 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
11575
11576 /**
11577  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
11578  */
11579 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
11580
11581 /**
11582  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
11583  * but with all dynamically-allocated buffers duplicated in new buffers.
11584  */
11585 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
11586
11587 /**
11588  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
11589  */
11590 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
11591
11592 /**
11593  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
11594  */
11595 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
11596
11597 /**
11598  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
11599  */
11600 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
11601
11602 /**
11603  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
11604  * but with all dynamically-allocated buffers duplicated in new buffers.
11605  */
11606 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
11607
11608 /**
11609  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
11610  */
11611 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
11612
11613 /**
11614  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
11615  */
11616 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
11617
11618 /**
11619  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
11620  */
11621 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
11622
11623 /**
11624  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
11625  * but with all dynamically-allocated buffers duplicated in new buffers.
11626  */
11627 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
11628
11629 /**
11630  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
11631  */
11632 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
11633
11634 /**
11635  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
11636  */
11637 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
11638
11639 /**
11640  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
11641  */
11642 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
11643
11644 /**
11645  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
11646  * but with all dynamically-allocated buffers duplicated in new buffers.
11647  */
11648 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
11649
11650 /**
11651  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
11652  */
11653 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
11654
11655 /**
11656  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
11657  */
11658 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
11659
11660 /**
11661  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
11662  */
11663 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
11664
11665 /**
11666  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
11667  * but with all dynamically-allocated buffers duplicated in new buffers.
11668  */
11669 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
11670
11671 /**
11672  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
11673  */
11674 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
11675
11676 /**
11677  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
11678  */
11679 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
11680
11681 /**
11682  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
11683  */
11684 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
11685
11686 /**
11687  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
11688  * but with all dynamically-allocated buffers duplicated in new buffers.
11689  */
11690 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
11691
11692 /**
11693  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
11694  */
11695 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
11696
11697 /**
11698  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
11699  */
11700 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
11701
11702 /**
11703  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
11704  */
11705 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
11706
11707 /**
11708  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
11709  * but with all dynamically-allocated buffers duplicated in new buffers.
11710  */
11711 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
11712
11713 /**
11714  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
11715  */
11716 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
11717
11718 /**
11719  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
11720  */
11721 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
11722
11723 /**
11724  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
11725  */
11726 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
11727
11728 /**
11729  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
11730  * but with all dynamically-allocated buffers duplicated in new buffers.
11731  */
11732 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
11733
11734 /**
11735  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
11736  */
11737 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
11738
11739 /**
11740  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
11741  */
11742 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
11743
11744 /**
11745  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
11746  */
11747 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
11748
11749 /**
11750  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
11751  * but with all dynamically-allocated buffers duplicated in new buffers.
11752  */
11753 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
11754
11755 /**
11756  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the success state.
11757  */
11758 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
11759
11760 /**
11761  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the error state.
11762  */
11763 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
11764
11765 /**
11766  * Frees any resources used by the CResult_InvoiceSignOrCreationErrorZ.
11767  */
11768 void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
11769
11770 /**
11771  * Creates a new CResult_InvoiceSignOrCreationErrorZ which has the same data as `orig`
11772  * but with all dynamically-allocated buffers duplicated in new buffers.
11773  */
11774 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
11775
11776 /**
11777  * Frees any resources used by the PaymentPurpose
11778  */
11779 void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
11780
11781 /**
11782  * Creates a copy of the PaymentPurpose
11783  */
11784 struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
11785
11786 /**
11787  * Utility method to constructs a new InvoicePayment-variant PaymentPurpose
11788  */
11789 struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret, uint64_t user_payment_id);
11790
11791 /**
11792  * Utility method to constructs a new SpontaneousPayment-variant PaymentPurpose
11793  */
11794 struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
11795
11796 /**
11797  * Frees any resources used by the Event
11798  */
11799 void Event_free(struct LDKEvent this_ptr);
11800
11801 /**
11802  * Creates a copy of the Event
11803  */
11804 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
11805
11806 /**
11807  * Utility method to constructs a new FundingGenerationReady-variant Event
11808  */
11809 struct LDKEvent Event_funding_generation_ready(struct LDKThirtyTwoBytes temporary_channel_id, uint64_t channel_value_satoshis, struct LDKCVec_u8Z output_script, uint64_t user_channel_id);
11810
11811 /**
11812  * Utility method to constructs a new PaymentReceived-variant Event
11813  */
11814 struct LDKEvent Event_payment_received(struct LDKThirtyTwoBytes payment_hash, uint64_t amt, struct LDKPaymentPurpose purpose);
11815
11816 /**
11817  * Utility method to constructs a new PaymentSent-variant Event
11818  */
11819 struct LDKEvent Event_payment_sent(struct LDKThirtyTwoBytes payment_preimage);
11820
11821 /**
11822  * Utility method to constructs a new PaymentFailed-variant Event
11823  */
11824 struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_hash, bool rejected_by_dest);
11825
11826 /**
11827  * Utility method to constructs a new PendingHTLCsForwardable-variant Event
11828  */
11829 struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
11830
11831 /**
11832  * Utility method to constructs a new SpendableOutputs-variant Event
11833  */
11834 struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
11835
11836 /**
11837  * Utility method to constructs a new PaymentForwarded-variant Event
11838  */
11839 struct LDKEvent Event_payment_forwarded(struct LDKCOption_u64Z fee_earned_msat, bool claim_from_onchain_tx);
11840
11841 /**
11842  * Serialize the Event object into a byte array which can be read by Event_read
11843  */
11844 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
11845
11846 /**
11847  * Frees any resources used by the MessageSendEvent
11848  */
11849 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
11850
11851 /**
11852  * Creates a copy of the MessageSendEvent
11853  */
11854 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
11855
11856 /**
11857  * Utility method to constructs a new SendAcceptChannel-variant MessageSendEvent
11858  */
11859 struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
11860
11861 /**
11862  * Utility method to constructs a new SendOpenChannel-variant MessageSendEvent
11863  */
11864 struct LDKMessageSendEvent MessageSendEvent_send_open_channel(struct LDKPublicKey node_id, struct LDKOpenChannel msg);
11865
11866 /**
11867  * Utility method to constructs a new SendFundingCreated-variant MessageSendEvent
11868  */
11869 struct LDKMessageSendEvent MessageSendEvent_send_funding_created(struct LDKPublicKey node_id, struct LDKFundingCreated msg);
11870
11871 /**
11872  * Utility method to constructs a new SendFundingSigned-variant MessageSendEvent
11873  */
11874 struct LDKMessageSendEvent MessageSendEvent_send_funding_signed(struct LDKPublicKey node_id, struct LDKFundingSigned msg);
11875
11876 /**
11877  * Utility method to constructs a new SendFundingLocked-variant MessageSendEvent
11878  */
11879 struct LDKMessageSendEvent MessageSendEvent_send_funding_locked(struct LDKPublicKey node_id, struct LDKFundingLocked msg);
11880
11881 /**
11882  * Utility method to constructs a new SendAnnouncementSignatures-variant MessageSendEvent
11883  */
11884 struct LDKMessageSendEvent MessageSendEvent_send_announcement_signatures(struct LDKPublicKey node_id, struct LDKAnnouncementSignatures msg);
11885
11886 /**
11887  * Utility method to constructs a new UpdateHTLCs-variant MessageSendEvent
11888  */
11889 struct LDKMessageSendEvent MessageSendEvent_update_htlcs(struct LDKPublicKey node_id, struct LDKCommitmentUpdate updates);
11890
11891 /**
11892  * Utility method to constructs a new SendRevokeAndACK-variant MessageSendEvent
11893  */
11894 struct LDKMessageSendEvent MessageSendEvent_send_revoke_and_ack(struct LDKPublicKey node_id, struct LDKRevokeAndACK msg);
11895
11896 /**
11897  * Utility method to constructs a new SendClosingSigned-variant MessageSendEvent
11898  */
11899 struct LDKMessageSendEvent MessageSendEvent_send_closing_signed(struct LDKPublicKey node_id, struct LDKClosingSigned msg);
11900
11901 /**
11902  * Utility method to constructs a new SendShutdown-variant MessageSendEvent
11903  */
11904 struct LDKMessageSendEvent MessageSendEvent_send_shutdown(struct LDKPublicKey node_id, struct LDKShutdown msg);
11905
11906 /**
11907  * Utility method to constructs a new SendChannelReestablish-variant MessageSendEvent
11908  */
11909 struct LDKMessageSendEvent MessageSendEvent_send_channel_reestablish(struct LDKPublicKey node_id, struct LDKChannelReestablish msg);
11910
11911 /**
11912  * Utility method to constructs a new BroadcastChannelAnnouncement-variant MessageSendEvent
11913  */
11914 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_announcement(struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
11915
11916 /**
11917  * Utility method to constructs a new BroadcastNodeAnnouncement-variant MessageSendEvent
11918  */
11919 struct LDKMessageSendEvent MessageSendEvent_broadcast_node_announcement(struct LDKNodeAnnouncement msg);
11920
11921 /**
11922  * Utility method to constructs a new BroadcastChannelUpdate-variant MessageSendEvent
11923  */
11924 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_update(struct LDKChannelUpdate msg);
11925
11926 /**
11927  * Utility method to constructs a new SendChannelUpdate-variant MessageSendEvent
11928  */
11929 struct LDKMessageSendEvent MessageSendEvent_send_channel_update(struct LDKPublicKey node_id, struct LDKChannelUpdate msg);
11930
11931 /**
11932  * Utility method to constructs a new HandleError-variant MessageSendEvent
11933  */
11934 struct LDKMessageSendEvent MessageSendEvent_handle_error(struct LDKPublicKey node_id, struct LDKErrorAction action);
11935
11936 /**
11937  * Utility method to constructs a new PaymentFailureNetworkUpdate-variant MessageSendEvent
11938  */
11939 struct LDKMessageSendEvent MessageSendEvent_payment_failure_network_update(struct LDKHTLCFailChannelUpdate update);
11940
11941 /**
11942  * Utility method to constructs a new SendChannelRangeQuery-variant MessageSendEvent
11943  */
11944 struct LDKMessageSendEvent MessageSendEvent_send_channel_range_query(struct LDKPublicKey node_id, struct LDKQueryChannelRange msg);
11945
11946 /**
11947  * Utility method to constructs a new SendShortIdsQuery-variant MessageSendEvent
11948  */
11949 struct LDKMessageSendEvent MessageSendEvent_send_short_ids_query(struct LDKPublicKey node_id, struct LDKQueryShortChannelIds msg);
11950
11951 /**
11952  * Utility method to constructs a new SendReplyChannelRange-variant MessageSendEvent
11953  */
11954 struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
11955
11956 /**
11957  * Calls the free function if one is set
11958  */
11959 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
11960
11961 /**
11962  * Calls the free function if one is set
11963  */
11964 void EventsProvider_free(struct LDKEventsProvider this_ptr);
11965
11966 /**
11967  * Calls the free function if one is set
11968  */
11969 void EventHandler_free(struct LDKEventHandler this_ptr);
11970
11971 /**
11972  * Frees any resources used by the APIError
11973  */
11974 void APIError_free(struct LDKAPIError this_ptr);
11975
11976 /**
11977  * Creates a copy of the APIError
11978  */
11979 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
11980
11981 /**
11982  * Utility method to constructs a new APIMisuseError-variant APIError
11983  */
11984 struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
11985
11986 /**
11987  * Utility method to constructs a new FeeRateTooHigh-variant APIError
11988  */
11989 struct LDKAPIError APIError_fee_rate_too_high(struct LDKStr err, uint32_t feerate);
11990
11991 /**
11992  * Utility method to constructs a new RouteError-variant APIError
11993  */
11994 struct LDKAPIError APIError_route_error(struct LDKStr err);
11995
11996 /**
11997  * Utility method to constructs a new ChannelUnavailable-variant APIError
11998  */
11999 struct LDKAPIError APIError_channel_unavailable(struct LDKStr err);
12000
12001 /**
12002  * Utility method to constructs a new MonitorUpdateFailed-variant APIError
12003  */
12004 struct LDKAPIError APIError_monitor_update_failed(void);
12005
12006 /**
12007  * Creates a digital signature of a message given a SecretKey, like the node's secret.
12008  * A receiver knowing the PublicKey (e.g. the node's id) and the message can be sure that the signature was generated by the caller.
12009  * Signatures are EC recoverable, meaning that given the message and the signature the PublicKey of the signer can be extracted.
12010  */
12011 struct LDKCResult_StringErrorZ sign(struct LDKu8slice msg, const uint8_t (*sk)[32]);
12012
12013 /**
12014  * Recovers the PublicKey of the signer of the message given the message and the signature.
12015  */
12016 struct LDKCResult_PublicKeyErrorZ recover_pk(struct LDKu8slice msg, struct LDKStr sig);
12017
12018 /**
12019  * Verifies a message was signed by a PrivateKey that derives to a given PublicKey, given a message, a signature,
12020  * and the PublicKey.
12021  */
12022 bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
12023
12024 /**
12025  * Creates a copy of the Level
12026  */
12027 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
12028
12029 /**
12030  * Utility method to constructs a new Trace-variant Level
12031  */
12032 enum LDKLevel Level_trace(void);
12033
12034 /**
12035  * Utility method to constructs a new Debug-variant Level
12036  */
12037 enum LDKLevel Level_debug(void);
12038
12039 /**
12040  * Utility method to constructs a new Info-variant Level
12041  */
12042 enum LDKLevel Level_info(void);
12043
12044 /**
12045  * Utility method to constructs a new Warn-variant Level
12046  */
12047 enum LDKLevel Level_warn(void);
12048
12049 /**
12050  * Utility method to constructs a new Error-variant Level
12051  */
12052 enum LDKLevel Level_error(void);
12053
12054 /**
12055  * Checks if two Levels contain equal inner contents.
12056  * This ignores pointers and is_owned flags and looks at the values in fields.
12057  */
12058 bool Level_eq(const enum LDKLevel *NONNULL_PTR a, const enum LDKLevel *NONNULL_PTR b);
12059
12060 /**
12061  * Checks if two Levels contain equal inner contents.
12062  */
12063 uint64_t Level_hash(const enum LDKLevel *NONNULL_PTR o);
12064
12065 /**
12066  * Returns the most verbose logging level.
12067  */
12068 MUST_USE_RES enum LDKLevel Level_max(void);
12069
12070 /**
12071  * Calls the free function if one is set
12072  */
12073 void Logger_free(struct LDKLogger this_ptr);
12074
12075 /**
12076  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
12077  */
12078 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
12079
12080 /**
12081  * Confirmations we will wait for before considering the channel locked in.
12082  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
12083  * equivalent limit applied to outbound channels).
12084  *
12085  * Default value: 6.
12086  */
12087 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
12088
12089 /**
12090  * Confirmations we will wait for before considering the channel locked in.
12091  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
12092  * equivalent limit applied to outbound channels).
12093  *
12094  * Default value: 6.
12095  */
12096 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
12097
12098 /**
12099  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
12100  * the number of blocks we have to punish our counterparty if they broadcast a revoked
12101  * transaction).
12102  *
12103  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
12104  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
12105  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
12106  * possibly with time in between to RBF the spending transaction).
12107  *
12108  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
12109  * case of an honest unilateral channel close, which implicitly decrease the economic value of
12110  * our channel.
12111  *
12112  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
12113  * can tweak config to ask for more security, not less.
12114  */
12115 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
12116
12117 /**
12118  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
12119  * the number of blocks we have to punish our counterparty if they broadcast a revoked
12120  * transaction).
12121  *
12122  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
12123  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
12124  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
12125  * possibly with time in between to RBF the spending transaction).
12126  *
12127  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
12128  * case of an honest unilateral channel close, which implicitly decrease the economic value of
12129  * our channel.
12130  *
12131  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
12132  * can tweak config to ask for more security, not less.
12133  */
12134 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
12135
12136 /**
12137  * Set to the smallest value HTLC we will accept to process.
12138  *
12139  * This value is sent to our counterparty on channel-open and we close the channel any time
12140  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
12141  *
12142  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
12143  * by the protocol.
12144  */
12145 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
12146
12147 /**
12148  * Set to the smallest value HTLC we will accept to process.
12149  *
12150  * This value is sent to our counterparty on channel-open and we close the channel any time
12151  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
12152  *
12153  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
12154  * by the protocol.
12155  */
12156 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
12157
12158 /**
12159  * Constructs a new ChannelHandshakeConfig given each field
12160  */
12161 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);
12162
12163 /**
12164  * Creates a copy of the ChannelHandshakeConfig
12165  */
12166 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
12167
12168 /**
12169  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
12170  */
12171 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
12172
12173 /**
12174  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
12175  */
12176 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
12177
12178 /**
12179  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
12180  * only applies to inbound channels.
12181  *
12182  * Default value: 0.
12183  */
12184 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12185
12186 /**
12187  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
12188  * only applies to inbound channels.
12189  *
12190  * Default value: 0.
12191  */
12192 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
12193
12194 /**
12195  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
12196  * you to limit the maximum minimum-size they can require.
12197  *
12198  * Default value: u64::max_value.
12199  */
12200 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12201
12202 /**
12203  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
12204  * you to limit the maximum minimum-size they can require.
12205  *
12206  * Default value: u64::max_value.
12207  */
12208 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
12209
12210 /**
12211  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
12212  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
12213  *
12214  * Default value: 0.
12215  */
12216 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12217
12218 /**
12219  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
12220  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
12221  *
12222  * Default value: 0.
12223  */
12224 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
12225
12226 /**
12227  * The remote node will require we keep a certain amount in direct payment to ourselves at all
12228  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
12229  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
12230  *
12231  * Default value: u64::max_value.
12232  */
12233 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12234
12235 /**
12236  * The remote node will require we keep a certain amount in direct payment to ourselves at all
12237  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
12238  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
12239  *
12240  * Default value: u64::max_value.
12241  */
12242 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
12243
12244 /**
12245  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
12246  * time. This allows you to set a minimum such value.
12247  *
12248  * Default value: 0.
12249  */
12250 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12251
12252 /**
12253  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
12254  * time. This allows you to set a minimum such value.
12255  *
12256  * Default value: 0.
12257  */
12258 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
12259
12260 /**
12261  * Before a channel is usable the funding transaction will need to be confirmed by at least a
12262  * certain number of blocks, specified by the node which is not the funder (as the funder can
12263  * assume they aren't going to double-spend themselves).
12264  * This config allows you to set a limit on the maximum amount of time to wait.
12265  *
12266  * Default value: 144, or roughly one day and only applies to outbound channels.
12267  */
12268 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12269
12270 /**
12271  * Before a channel is usable the funding transaction will need to be confirmed by at least a
12272  * certain number of blocks, specified by the node which is not the funder (as the funder can
12273  * assume they aren't going to double-spend themselves).
12274  * This config allows you to set a limit on the maximum amount of time to wait.
12275  *
12276  * Default value: 144, or roughly one day and only applies to outbound channels.
12277  */
12278 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
12279
12280 /**
12281  * Set to force an incoming channel to match our announced channel preference in
12282  * [`ChannelConfig::announced_channel`].
12283  *
12284  * For a node which is not online reliably, this should be set to true and
12285  * [`ChannelConfig::announced_channel`] set to false, ensuring that no announced (aka public)
12286  * channels will ever be opened.
12287  *
12288  * Default value: true.
12289  */
12290 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12291
12292 /**
12293  * Set to force an incoming channel to match our announced channel preference in
12294  * [`ChannelConfig::announced_channel`].
12295  *
12296  * For a node which is not online reliably, this should be set to true and
12297  * [`ChannelConfig::announced_channel`] set to false, ensuring that no announced (aka public)
12298  * channels will ever be opened.
12299  *
12300  * Default value: true.
12301  */
12302 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
12303
12304 /**
12305  * Set to the amount of time we're willing to wait to claim money back to us.
12306  *
12307  * Not checking this value would be a security issue, as our peer would be able to set it to
12308  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
12309  *
12310  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
12311  * reduce the loss of having useless locked funds (if your peer accepts)
12312  */
12313 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
12314
12315 /**
12316  * Set to the amount of time we're willing to wait to claim money back to us.
12317  *
12318  * Not checking this value would be a security issue, as our peer would be able to set it to
12319  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
12320  *
12321  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
12322  * reduce the loss of having useless locked funds (if your peer accepts)
12323  */
12324 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
12325
12326 /**
12327  * Constructs a new ChannelHandshakeLimits given each field
12328  */
12329 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, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
12330
12331 /**
12332  * Creates a copy of the ChannelHandshakeLimits
12333  */
12334 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
12335
12336 /**
12337  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
12338  */
12339 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
12340
12341 /**
12342  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
12343  */
12344 void ChannelConfig_free(struct LDKChannelConfig this_obj);
12345
12346 /**
12347  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
12348  * over the channel.
12349  * This may be allowed to change at runtime in a later update, however doing so must result in
12350  * update messages sent to notify all nodes of our updated relay fee.
12351  *
12352  * Default value: 0.
12353  */
12354 uint32_t ChannelConfig_get_forwarding_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
12355
12356 /**
12357  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
12358  * over the channel.
12359  * This may be allowed to change at runtime in a later update, however doing so must result in
12360  * update messages sent to notify all nodes of our updated relay fee.
12361  *
12362  * Default value: 0.
12363  */
12364 void ChannelConfig_set_forwarding_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
12365
12366 /**
12367  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
12368  * excess of [`forwarding_fee_proportional_millionths`].
12369  * This may be allowed to change at runtime in a later update, however doing so must result in
12370  * update messages sent to notify all nodes of our updated relay fee.
12371  *
12372  * The default value of a single satoshi roughly matches the market rate on many routing nodes
12373  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
12374  * this node.
12375  *
12376  * Default value: 1000.
12377  *
12378  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
12379  */
12380 uint32_t ChannelConfig_get_forwarding_fee_base_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
12381
12382 /**
12383  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
12384  * excess of [`forwarding_fee_proportional_millionths`].
12385  * This may be allowed to change at runtime in a later update, however doing so must result in
12386  * update messages sent to notify all nodes of our updated relay fee.
12387  *
12388  * The default value of a single satoshi roughly matches the market rate on many routing nodes
12389  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
12390  * this node.
12391  *
12392  * Default value: 1000.
12393  *
12394  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
12395  */
12396 void ChannelConfig_set_forwarding_fee_base_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
12397
12398 /**
12399  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
12400  * the channel this config applies to.
12401  *
12402  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
12403  * HTLC balance when a channel appears on-chain whereas
12404  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
12405  * (non-HTLC-encumbered) balance.
12406  *
12407  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
12408  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
12409  * commitment transaction at least once per this many blocks (minus some margin to allow us
12410  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
12411  * the spending transaction).
12412  *
12413  * Default value: 72 (12 hours at an average of 6 blocks/hour).
12414  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
12415  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
12416  *
12417  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
12418  */
12419 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
12420
12421 /**
12422  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
12423  * the channel this config applies to.
12424  *
12425  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
12426  * HTLC balance when a channel appears on-chain whereas
12427  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
12428  * (non-HTLC-encumbered) balance.
12429  *
12430  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
12431  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
12432  * commitment transaction at least once per this many blocks (minus some margin to allow us
12433  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
12434  * the spending transaction).
12435  *
12436  * Default value: 72 (12 hours at an average of 6 blocks/hour).
12437  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
12438  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
12439  *
12440  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
12441  */
12442 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
12443
12444 /**
12445  * Set to announce the channel publicly and notify all nodes that they can route via this
12446  * channel.
12447  *
12448  * This should only be set to true for nodes which expect to be online reliably.
12449  *
12450  * As the node which funds a channel picks this value this will only apply for new outbound
12451  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
12452  *
12453  * This cannot be changed after the initial channel handshake.
12454  *
12455  * Default value: false.
12456  */
12457 bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
12458
12459 /**
12460  * Set to announce the channel publicly and notify all nodes that they can route via this
12461  * channel.
12462  *
12463  * This should only be set to true for nodes which expect to be online reliably.
12464  *
12465  * As the node which funds a channel picks this value this will only apply for new outbound
12466  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
12467  *
12468  * This cannot be changed after the initial channel handshake.
12469  *
12470  * Default value: false.
12471  */
12472 void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
12473
12474 /**
12475  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
12476  * supports it, they will then enforce the mutual-close output to us matches what we provided
12477  * at intialization, preventing us from closing to an alternate pubkey.
12478  *
12479  * This is set to true by default to provide a slight increase in security, though ultimately
12480  * any attacker who is able to take control of a channel can just as easily send the funds via
12481  * lightning payments, so we never require that our counterparties support this option.
12482  *
12483  * This cannot be changed after a channel has been initialized.
12484  *
12485  * Default value: true.
12486  */
12487 bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
12488
12489 /**
12490  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
12491  * supports it, they will then enforce the mutual-close output to us matches what we provided
12492  * at intialization, preventing us from closing to an alternate pubkey.
12493  *
12494  * This is set to true by default to provide a slight increase in security, though ultimately
12495  * any attacker who is able to take control of a channel can just as easily send the funds via
12496  * lightning payments, so we never require that our counterparties support this option.
12497  *
12498  * This cannot be changed after a channel has been initialized.
12499  *
12500  * Default value: true.
12501  */
12502 void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
12503
12504 /**
12505  * Constructs a new ChannelConfig given each field
12506  */
12507 MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t forwarding_fee_proportional_millionths_arg, uint32_t forwarding_fee_base_msat_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg);
12508
12509 /**
12510  * Creates a copy of the ChannelConfig
12511  */
12512 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
12513
12514 /**
12515  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
12516  */
12517 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
12518
12519 /**
12520  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
12521  */
12522 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
12523
12524 /**
12525  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
12526  */
12527 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
12528
12529 /**
12530  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
12531  */
12532 void UserConfig_free(struct LDKUserConfig this_obj);
12533
12534 /**
12535  * Channel config that we propose to our counterparty.
12536  */
12537 struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
12538
12539 /**
12540  * Channel config that we propose to our counterparty.
12541  */
12542 void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
12543
12544 /**
12545  * Limits applied to our counterparty's proposed channel config settings.
12546  */
12547 struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
12548
12549 /**
12550  * Limits applied to our counterparty's proposed channel config settings.
12551  */
12552 void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
12553
12554 /**
12555  * Channel config which affects behavior during channel lifetime.
12556  */
12557 struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
12558
12559 /**
12560  * Channel config which affects behavior during channel lifetime.
12561  */
12562 void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
12563
12564 /**
12565  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
12566  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
12567  * node which is not online reliably.
12568  *
12569  * For nodes which are not online reliably, you should set all channels to *not* be announced
12570  * (using [`ChannelConfig::announced_channel`] and
12571  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
12572  * ensure you are not exposed to any forwarding risk.
12573  *
12574  * Note that because you cannot change a channel's announced state after creation, there is no
12575  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
12576  * from a publicly-announced forwarding node to a private non-forwarding node you must close
12577  * all your channels and open new ones. For privacy, you should also change your node_id
12578  * (swapping all private and public key material for new ones) at that time.
12579  *
12580  * Default value: false.
12581  */
12582 bool UserConfig_get_accept_forwards_to_priv_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
12583
12584 /**
12585  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
12586  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
12587  * node which is not online reliably.
12588  *
12589  * For nodes which are not online reliably, you should set all channels to *not* be announced
12590  * (using [`ChannelConfig::announced_channel`] and
12591  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
12592  * ensure you are not exposed to any forwarding risk.
12593  *
12594  * Note that because you cannot change a channel's announced state after creation, there is no
12595  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
12596  * from a publicly-announced forwarding node to a private non-forwarding node you must close
12597  * all your channels and open new ones. For privacy, you should also change your node_id
12598  * (swapping all private and public key material for new ones) at that time.
12599  *
12600  * Default value: false.
12601  */
12602 void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
12603
12604 /**
12605  * Constructs a new UserConfig given each field
12606  */
12607 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, bool accept_forwards_to_priv_channels_arg);
12608
12609 /**
12610  * Creates a copy of the UserConfig
12611  */
12612 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
12613
12614 /**
12615  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
12616  */
12617 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
12618
12619 /**
12620  * Frees any resources used by the BestBlock, if is_owned is set and inner is non-NULL.
12621  */
12622 void BestBlock_free(struct LDKBestBlock this_obj);
12623
12624 /**
12625  * Creates a copy of the BestBlock
12626  */
12627 struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
12628
12629 /**
12630  * Constructs a `BestBlock` that represents the genesis block at height 0 of the given
12631  * network.
12632  */
12633 MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
12634
12635 /**
12636  * Returns a `BestBlock` as identified by the given block hash and height.
12637  */
12638 MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
12639
12640 /**
12641  * Returns the best block hash.
12642  */
12643 MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
12644
12645 /**
12646  * Returns the best block height.
12647  */
12648 MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
12649
12650 /**
12651  * Creates a copy of the AccessError
12652  */
12653 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
12654
12655 /**
12656  * Utility method to constructs a new UnknownChain-variant AccessError
12657  */
12658 enum LDKAccessError AccessError_unknown_chain(void);
12659
12660 /**
12661  * Utility method to constructs a new UnknownTx-variant AccessError
12662  */
12663 enum LDKAccessError AccessError_unknown_tx(void);
12664
12665 /**
12666  * Calls the free function if one is set
12667  */
12668 void Access_free(struct LDKAccess this_ptr);
12669
12670 /**
12671  * Calls the free function if one is set
12672  */
12673 void Listen_free(struct LDKListen this_ptr);
12674
12675 /**
12676  * Calls the free function if one is set
12677  */
12678 void Confirm_free(struct LDKConfirm this_ptr);
12679
12680 /**
12681  * Calls the free function if one is set
12682  */
12683 void Watch_free(struct LDKWatch this_ptr);
12684
12685 /**
12686  * Calls the free function if one is set
12687  */
12688 void Filter_free(struct LDKFilter this_ptr);
12689
12690 /**
12691  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
12692  */
12693 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
12694
12695 /**
12696  * First block where the transaction output may have been spent.
12697  *
12698  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
12699  */
12700 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
12701
12702 /**
12703  * First block where the transaction output may have been spent.
12704  *
12705  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
12706  */
12707 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
12708
12709 /**
12710  * Outpoint identifying the transaction output.
12711  */
12712 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
12713
12714 /**
12715  * Outpoint identifying the transaction output.
12716  */
12717 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
12718
12719 /**
12720  * Spending condition of the transaction output.
12721  */
12722 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
12723
12724 /**
12725  * Spending condition of the transaction output.
12726  */
12727 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
12728
12729 /**
12730  * Constructs a new WatchedOutput given each field
12731  */
12732 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
12733
12734 /**
12735  * Creates a copy of the WatchedOutput
12736  */
12737 struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
12738
12739 /**
12740  * Checks if two WatchedOutputs contain equal inner contents.
12741  */
12742 uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
12743
12744 /**
12745  * Calls the free function if one is set
12746  */
12747 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
12748
12749 /**
12750  * Creates a copy of the ConfirmationTarget
12751  */
12752 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
12753
12754 /**
12755  * Utility method to constructs a new Background-variant ConfirmationTarget
12756  */
12757 enum LDKConfirmationTarget ConfirmationTarget_background(void);
12758
12759 /**
12760  * Utility method to constructs a new Normal-variant ConfirmationTarget
12761  */
12762 enum LDKConfirmationTarget ConfirmationTarget_normal(void);
12763
12764 /**
12765  * Utility method to constructs a new HighPriority-variant ConfirmationTarget
12766  */
12767 enum LDKConfirmationTarget ConfirmationTarget_high_priority(void);
12768
12769 /**
12770  * Calls the free function if one is set
12771  */
12772 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
12773
12774 /**
12775  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
12776  */
12777 void ChainMonitor_free(struct LDKChainMonitor this_obj);
12778
12779 /**
12780  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
12781  *
12782  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
12783  * will call back to it indicating transactions and outputs of interest. This allows clients to
12784  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
12785  * always need to fetch full blocks absent another means for determining which blocks contain
12786  * transactions relevant to the watched channels.
12787  *
12788  * Note that chain_source (or a relevant inner pointer) may be NULL or all-0s to represent None
12789  */
12790 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKFilter *chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
12791
12792 /**
12793  * Constructs a new Listen which calls the relevant methods on this_arg.
12794  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
12795  */
12796 struct LDKListen ChainMonitor_as_Listen(const struct LDKChainMonitor *NONNULL_PTR this_arg);
12797
12798 /**
12799  * Constructs a new Confirm which calls the relevant methods on this_arg.
12800  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
12801  */
12802 struct LDKConfirm ChainMonitor_as_Confirm(const struct LDKChainMonitor *NONNULL_PTR this_arg);
12803
12804 /**
12805  * Constructs a new Watch which calls the relevant methods on this_arg.
12806  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
12807  */
12808 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
12809
12810 /**
12811  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
12812  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
12813  */
12814 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
12815
12816 /**
12817  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
12818  */
12819 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
12820
12821 /**
12822  * The sequence number of this update. Updates *must* be replayed in-order according to this
12823  * sequence number (and updates may panic if they are not). The update_id values are strictly
12824  * increasing and increase by one for each new update, with one exception specified below.
12825  *
12826  * This sequence number is also used to track up to which points updates which returned
12827  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
12828  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
12829  *
12830  * The only instance where update_id values are not strictly increasing is the case where we
12831  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
12832  * its docs for more details.
12833  */
12834 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
12835
12836 /**
12837  * The sequence number of this update. Updates *must* be replayed in-order according to this
12838  * sequence number (and updates may panic if they are not). The update_id values are strictly
12839  * increasing and increase by one for each new update, with one exception specified below.
12840  *
12841  * This sequence number is also used to track up to which points updates which returned
12842  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
12843  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
12844  *
12845  * The only instance where update_id values are not strictly increasing is the case where we
12846  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
12847  * its docs for more details.
12848  */
12849 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
12850
12851 /**
12852  * Creates a copy of the ChannelMonitorUpdate
12853  */
12854 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
12855
12856 /**
12857  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
12858  */
12859 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
12860
12861 /**
12862  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
12863  */
12864 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
12865
12866 /**
12867  * Creates a copy of the ChannelMonitorUpdateErr
12868  */
12869 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
12870
12871 /**
12872  * Utility method to constructs a new TemporaryFailure-variant ChannelMonitorUpdateErr
12873  */
12874 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_temporary_failure(void);
12875
12876 /**
12877  * Utility method to constructs a new PermanentFailure-variant ChannelMonitorUpdateErr
12878  */
12879 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_permanent_failure(void);
12880
12881 /**
12882  * Frees any resources used by the MonitorUpdateError, if is_owned is set and inner is non-NULL.
12883  */
12884 void MonitorUpdateError_free(struct LDKMonitorUpdateError this_obj);
12885
12886 /**
12887  * Creates a copy of the MonitorUpdateError
12888  */
12889 struct LDKMonitorUpdateError MonitorUpdateError_clone(const struct LDKMonitorUpdateError *NONNULL_PTR orig);
12890
12891 /**
12892  * Frees any resources used by the MonitorEvent
12893  */
12894 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
12895
12896 /**
12897  * Creates a copy of the MonitorEvent
12898  */
12899 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
12900
12901 /**
12902  * Utility method to constructs a new HTLCEvent-variant MonitorEvent
12903  */
12904 struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
12905
12906 /**
12907  * Utility method to constructs a new CommitmentTxBroadcasted-variant MonitorEvent
12908  */
12909 struct LDKMonitorEvent MonitorEvent_commitment_tx_broadcasted(struct LDKOutPoint a);
12910
12911 /**
12912  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
12913  */
12914 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
12915
12916 /**
12917  * Creates a copy of the HTLCUpdate
12918  */
12919 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
12920
12921 /**
12922  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
12923  */
12924 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
12925
12926 /**
12927  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
12928  */
12929 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
12930
12931 /**
12932  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
12933  */
12934 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
12935
12936 /**
12937  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
12938  */
12939 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
12940
12941 /**
12942  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
12943  * itself.
12944  *
12945  * panics if the given update is not the next update by update_id.
12946  */
12947 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);
12948
12949 /**
12950  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
12951  * ChannelMonitor.
12952  */
12953 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
12954
12955 /**
12956  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
12957  */
12958 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
12959
12960 /**
12961  * Gets a list of txids, with their output scripts (in the order they appear in the
12962  * transaction), which we must learn about spends of via block_connected().
12963  */
12964 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
12965
12966 /**
12967  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
12968  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
12969  * have been registered.
12970  */
12971 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
12972
12973 /**
12974  * Get the list of HTLCs who's status has been updated on chain. This should be called by
12975  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
12976  */
12977 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
12978
12979 /**
12980  * Gets the list of pending events which were generated by previous actions, clearing the list
12981  * in the process.
12982  *
12983  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
12984  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
12985  * no internal locking in ChannelMonitors.
12986  */
12987 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
12988
12989 /**
12990  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
12991  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
12992  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
12993  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
12994  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
12995  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
12996  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
12997  * out-of-band the other node operator to coordinate with him if option is available to you.
12998  * In any-case, choice is up to the user.
12999  */
13000 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);
13001
13002 /**
13003  * Processes transactions in a newly connected block, which may result in any of the following:
13004  * - update the monitor's state against resolved HTLCs
13005  * - punish the counterparty in the case of seeing a revoked commitment transaction
13006  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
13007  * - detect settled outputs for later spending
13008  * - schedule and bump any in-flight claims
13009  *
13010  * Returns any new outputs to watch from `txdata`; after called, these are also included in
13011  * [`get_outputs_to_watch`].
13012  *
13013  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
13014  */
13015 MUST_USE_RES struct LDKCVec_TransactionOutputsZ 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);
13016
13017 /**
13018  * Determines if the disconnected block contained any transactions of interest and updates
13019  * appropriately.
13020  */
13021 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);
13022
13023 /**
13024  * Processes transactions confirmed in a block with the given header and height, returning new
13025  * outputs to watch. See [`block_connected`] for details.
13026  *
13027  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
13028  * blocks. See [`chain::Confirm`] for calling expectations.
13029  *
13030  * [`block_connected`]: Self::block_connected
13031  */
13032 MUST_USE_RES struct LDKCVec_TransactionOutputsZ ChannelMonitor_transactions_confirmed(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);
13033
13034 /**
13035  * Processes a transaction that was reorganized out of the chain.
13036  *
13037  * Used instead of [`block_disconnected`] by clients that are notified of transactions rather
13038  * than blocks. See [`chain::Confirm`] for calling expectations.
13039  *
13040  * [`block_disconnected`]: Self::block_disconnected
13041  */
13042 void ChannelMonitor_transaction_unconfirmed(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const uint8_t (*txid)[32], struct LDKBroadcasterInterface broadcaster, struct LDKFeeEstimator fee_estimator, struct LDKLogger logger);
13043
13044 /**
13045  * Updates the monitor with the current best chain tip, returning new outputs to watch. See
13046  * [`block_connected`] for details.
13047  *
13048  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
13049  * blocks. See [`chain::Confirm`] for calling expectations.
13050  *
13051  * [`block_connected`]: Self::block_connected
13052  */
13053 MUST_USE_RES struct LDKCVec_TransactionOutputsZ ChannelMonitor_best_block_updated(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);
13054
13055 /**
13056  * Returns the set of txids that should be monitored for re-organization out of the chain.
13057  */
13058 MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
13059
13060 /**
13061  * Gets the latest best block which was connected either via the [`chain::Listen`] or
13062  * [`chain::Confirm`] interfaces.
13063  */
13064 MUST_USE_RES struct LDKBestBlock ChannelMonitor_current_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
13065
13066 /**
13067  * Calls the free function if one is set
13068  */
13069 void Persist_free(struct LDKPersist this_ptr);
13070
13071 /**
13072  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
13073  */
13074 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
13075
13076 /**
13077  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
13078  */
13079 void OutPoint_free(struct LDKOutPoint this_obj);
13080
13081 /**
13082  * The referenced transaction's txid.
13083  */
13084 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
13085
13086 /**
13087  * The referenced transaction's txid.
13088  */
13089 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13090
13091 /**
13092  * The index of the referenced output in its transaction's vout.
13093  */
13094 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
13095
13096 /**
13097  * The index of the referenced output in its transaction's vout.
13098  */
13099 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
13100
13101 /**
13102  * Constructs a new OutPoint given each field
13103  */
13104 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
13105
13106 /**
13107  * Creates a copy of the OutPoint
13108  */
13109 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
13110
13111 /**
13112  * Checks if two OutPoints contain equal inner contents.
13113  * This ignores pointers and is_owned flags and looks at the values in fields.
13114  * Two objects with NULL inner values will be considered "equal" here.
13115  */
13116 bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
13117
13118 /**
13119  * Checks if two OutPoints contain equal inner contents.
13120  */
13121 uint64_t OutPoint_hash(const struct LDKOutPoint *NONNULL_PTR o);
13122
13123 /**
13124  * Convert an `OutPoint` to a lightning channel id.
13125  */
13126 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
13127
13128 /**
13129  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
13130  */
13131 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
13132
13133 /**
13134  * Read a OutPoint from a byte array, created by OutPoint_write
13135  */
13136 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
13137
13138 /**
13139  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
13140  */
13141 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
13142
13143 /**
13144  * The outpoint which is spendable
13145  */
13146 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13147
13148 /**
13149  * The outpoint which is spendable
13150  */
13151 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
13152
13153 /**
13154  * Per commitment point to derive delayed_payment_key by key holder
13155  */
13156 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13157
13158 /**
13159  * Per commitment point to derive delayed_payment_key by key holder
13160  */
13161 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13162
13163 /**
13164  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
13165  * the witness_script.
13166  */
13167 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13168
13169 /**
13170  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
13171  * the witness_script.
13172  */
13173 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
13174
13175 /**
13176  * The output which is referenced by the given outpoint
13177  */
13178 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
13179
13180 /**
13181  * The revocation point specific to the commitment transaction which was broadcast. Used to
13182  * derive the witnessScript for this output.
13183  */
13184 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13185
13186 /**
13187  * The revocation point specific to the commitment transaction which was broadcast. Used to
13188  * derive the witnessScript for this output.
13189  */
13190 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13191
13192 /**
13193  * Arbitrary identification information returned by a call to
13194  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
13195  * the channel to spend the output.
13196  */
13197 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
13198
13199 /**
13200  * Arbitrary identification information returned by a call to
13201  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
13202  * the channel to spend the output.
13203  */
13204 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13205
13206 /**
13207  * The value of the channel which this output originated from, possibly indirectly.
13208  */
13209 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13210
13211 /**
13212  * The value of the channel which this output originated from, possibly indirectly.
13213  */
13214 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
13215
13216 /**
13217  * Constructs a new DelayedPaymentOutputDescriptor given each field
13218  */
13219 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);
13220
13221 /**
13222  * Creates a copy of the DelayedPaymentOutputDescriptor
13223  */
13224 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
13225
13226 /**
13227  * Serialize the DelayedPaymentOutputDescriptor object into a byte array which can be read by DelayedPaymentOutputDescriptor_read
13228  */
13229 struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
13230
13231 /**
13232  * Read a DelayedPaymentOutputDescriptor from a byte array, created by DelayedPaymentOutputDescriptor_write
13233  */
13234 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ DelayedPaymentOutputDescriptor_read(struct LDKu8slice ser);
13235
13236 /**
13237  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
13238  */
13239 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
13240
13241 /**
13242  * The outpoint which is spendable
13243  */
13244 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13245
13246 /**
13247  * The outpoint which is spendable
13248  */
13249 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
13250
13251 /**
13252  * The output which is referenced by the given outpoint
13253  */
13254 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
13255
13256 /**
13257  * Arbitrary identification information returned by a call to
13258  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
13259  * the channel to spend the output.
13260  */
13261 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
13262
13263 /**
13264  * Arbitrary identification information returned by a call to
13265  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
13266  * the channel to spend the output.
13267  */
13268 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13269
13270 /**
13271  * The value of the channel which this transactions spends.
13272  */
13273 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
13274
13275 /**
13276  * The value of the channel which this transactions spends.
13277  */
13278 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
13279
13280 /**
13281  * Constructs a new StaticPaymentOutputDescriptor given each field
13282  */
13283 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);
13284
13285 /**
13286  * Creates a copy of the StaticPaymentOutputDescriptor
13287  */
13288 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
13289
13290 /**
13291  * Serialize the StaticPaymentOutputDescriptor object into a byte array which can be read by StaticPaymentOutputDescriptor_read
13292  */
13293 struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
13294
13295 /**
13296  * Read a StaticPaymentOutputDescriptor from a byte array, created by StaticPaymentOutputDescriptor_write
13297  */
13298 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ StaticPaymentOutputDescriptor_read(struct LDKu8slice ser);
13299
13300 /**
13301  * Frees any resources used by the SpendableOutputDescriptor
13302  */
13303 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
13304
13305 /**
13306  * Creates a copy of the SpendableOutputDescriptor
13307  */
13308 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
13309
13310 /**
13311  * Utility method to constructs a new StaticOutput-variant SpendableOutputDescriptor
13312  */
13313 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
13314
13315 /**
13316  * Utility method to constructs a new DelayedPaymentOutput-variant SpendableOutputDescriptor
13317  */
13318 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_delayed_payment_output(struct LDKDelayedPaymentOutputDescriptor a);
13319
13320 /**
13321  * Utility method to constructs a new StaticPaymentOutput-variant SpendableOutputDescriptor
13322  */
13323 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_payment_output(struct LDKStaticPaymentOutputDescriptor a);
13324
13325 /**
13326  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
13327  */
13328 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
13329
13330 /**
13331  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
13332  */
13333 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
13334
13335 /**
13336  * Calls the free function if one is set
13337  */
13338 void BaseSign_free(struct LDKBaseSign this_ptr);
13339
13340 /**
13341  * Creates a copy of a Sign
13342  */
13343 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
13344
13345 /**
13346  * Calls the free function if one is set
13347  */
13348 void Sign_free(struct LDKSign this_ptr);
13349
13350 /**
13351  * Calls the free function if one is set
13352  */
13353 void KeysInterface_free(struct LDKKeysInterface this_ptr);
13354
13355 /**
13356  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
13357  */
13358 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
13359
13360 /**
13361  * Private key of anchor tx
13362  */
13363 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
13364
13365 /**
13366  * Private key of anchor tx
13367  */
13368 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
13369
13370 /**
13371  * Holder secret key for blinded revocation pubkey
13372  */
13373 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
13374
13375 /**
13376  * Holder secret key for blinded revocation pubkey
13377  */
13378 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
13379
13380 /**
13381  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
13382  */
13383 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
13384
13385 /**
13386  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
13387  */
13388 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
13389
13390 /**
13391  * Holder secret key used in HTLC tx
13392  */
13393 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
13394
13395 /**
13396  * Holder secret key used in HTLC tx
13397  */
13398 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
13399
13400 /**
13401  * Holder htlc secret key used in commitment tx htlc outputs
13402  */
13403 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
13404
13405 /**
13406  * Holder htlc secret key used in commitment tx htlc outputs
13407  */
13408 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
13409
13410 /**
13411  * Commitment seed
13412  */
13413 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
13414
13415 /**
13416  * Commitment seed
13417  */
13418 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13419
13420 /**
13421  * Creates a copy of the InMemorySigner
13422  */
13423 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
13424
13425 /**
13426  * Create a new InMemorySigner
13427  */
13428 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);
13429
13430 /**
13431  * Counterparty pubkeys.
13432  * Will panic if ready_channel wasn't called.
13433  */
13434 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13435
13436 /**
13437  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
13438  * transactions, ie the amount of time that we have to wait to recover our funds if we
13439  * broadcast a transaction.
13440  * Will panic if ready_channel wasn't called.
13441  */
13442 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13443
13444 /**
13445  * The contest_delay value specified by us and applied on transactions broadcastable
13446  * by our counterparty, ie the amount of time that they have to wait to recover their funds
13447  * if they broadcast a transaction.
13448  * Will panic if ready_channel wasn't called.
13449  */
13450 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13451
13452 /**
13453  * Whether the holder is the initiator
13454  * Will panic if ready_channel wasn't called.
13455  */
13456 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13457
13458 /**
13459  * Funding outpoint
13460  * Will panic if ready_channel wasn't called.
13461  */
13462 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13463
13464 /**
13465  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
13466  * building transactions.
13467  *
13468  * Will panic if ready_channel wasn't called.
13469  */
13470 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13471
13472 /**
13473  * Sign the single input of spend_tx at index `input_idx` which spends the output
13474  * described by descriptor, returning the witness stack for the input.
13475  *
13476  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
13477  * or is not spending the outpoint described by `descriptor.outpoint`.
13478  */
13479 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);
13480
13481 /**
13482  * Sign the single input of spend_tx at index `input_idx` which spends the output
13483  * described by descriptor, returning the witness stack for the input.
13484  *
13485  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
13486  * is not spending the outpoint described by `descriptor.outpoint`, or does not have a
13487  * sequence set to `descriptor.to_self_delay`.
13488  */
13489 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);
13490
13491 /**
13492  * Constructs a new BaseSign which calls the relevant methods on this_arg.
13493  * This copies the `inner` pointer in this_arg and thus the returned BaseSign must be freed before this_arg is
13494  */
13495 struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13496
13497 /**
13498  * Constructs a new Sign which calls the relevant methods on this_arg.
13499  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
13500  */
13501 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
13502
13503 /**
13504  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
13505  */
13506 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
13507
13508 /**
13509  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
13510  */
13511 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser);
13512
13513 /**
13514  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
13515  */
13516 void KeysManager_free(struct LDKKeysManager this_obj);
13517
13518 /**
13519  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
13520  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
13521  * starting_time isn't strictly required to actually be a time, but it must absolutely,
13522  * without a doubt, be unique to this instance. ie if you start multiple times with the same
13523  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
13524  * simply use the current time (with very high precision).
13525  *
13526  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
13527  * obviously, starting_time should be unique every time you reload the library - it is only
13528  * used to generate new ephemeral key data (which will be stored by the individual channel if
13529  * necessary).
13530  *
13531  * Note that the seed is required to recover certain on-chain funds independent of
13532  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
13533  * channel, and some on-chain during-closing funds.
13534  *
13535  * Note that until the 0.1 release there is no guarantee of backward compatibility between
13536  * versions. Once the library is more fully supported, the docs will be updated to include a
13537  * detailed description of the guarantee.
13538  */
13539 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
13540
13541 /**
13542  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
13543  *
13544  * Key derivation parameters are accessible through a per-channel secrets
13545  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
13546  * onchain output detection for which a corresponding delayed_payment_key must be derived.
13547  */
13548 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]);
13549
13550 /**
13551  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
13552  * output to the given change destination (if sufficient change value remains). The
13553  * transaction will have a feerate, at least, of the given value.
13554  *
13555  * Returns `Err(())` if the output value is greater than the input value minus required fee or
13556  * if a descriptor was duplicated.
13557  *
13558  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
13559  *
13560  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
13561  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
13562  */
13563 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);
13564
13565 /**
13566  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
13567  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
13568  */
13569 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
13570
13571 /**
13572  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
13573  */
13574 void ChannelManager_free(struct LDKChannelManager this_obj);
13575
13576 /**
13577  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
13578  */
13579 void ChainParameters_free(struct LDKChainParameters this_obj);
13580
13581 /**
13582  * The network for determining the `chain_hash` in Lightning messages.
13583  */
13584 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
13585
13586 /**
13587  * The network for determining the `chain_hash` in Lightning messages.
13588  */
13589 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
13590
13591 /**
13592  * The hash and height of the latest block successfully connected.
13593  *
13594  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
13595  */
13596 struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
13597
13598 /**
13599  * The hash and height of the latest block successfully connected.
13600  *
13601  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
13602  */
13603 void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
13604
13605 /**
13606  * Constructs a new ChainParameters given each field
13607  */
13608 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
13609
13610 /**
13611  * Creates a copy of the ChainParameters
13612  */
13613 struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
13614
13615 /**
13616  * Frees any resources used by the ChannelCounterparty, if is_owned is set and inner is non-NULL.
13617  */
13618 void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
13619
13620 /**
13621  * The node_id of our counterparty
13622  */
13623 struct LDKPublicKey ChannelCounterparty_get_node_id(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
13624
13625 /**
13626  * The node_id of our counterparty
13627  */
13628 void ChannelCounterparty_set_node_id(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKPublicKey val);
13629
13630 /**
13631  * The Features the channel counterparty provided upon last connection.
13632  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
13633  * many routing-relevant features are present in the init context.
13634  */
13635 struct LDKInitFeatures ChannelCounterparty_get_features(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
13636
13637 /**
13638  * The Features the channel counterparty provided upon last connection.
13639  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
13640  * many routing-relevant features are present in the init context.
13641  */
13642 void ChannelCounterparty_set_features(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
13643
13644 /**
13645  * The value, in satoshis, that must always be held in the channel for our counterparty. This
13646  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
13647  * claiming at least this value on chain.
13648  *
13649  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
13650  *
13651  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
13652  */
13653 uint64_t ChannelCounterparty_get_unspendable_punishment_reserve(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
13654
13655 /**
13656  * The value, in satoshis, that must always be held in the channel for our counterparty. This
13657  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
13658  * claiming at least this value on chain.
13659  *
13660  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
13661  *
13662  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
13663  */
13664 void ChannelCounterparty_set_unspendable_punishment_reserve(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, uint64_t val);
13665
13666 /**
13667  * Creates a copy of the ChannelCounterparty
13668  */
13669 struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
13670
13671 /**
13672  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
13673  */
13674 void ChannelDetails_free(struct LDKChannelDetails this_obj);
13675
13676 /**
13677  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
13678  * thereafter this is the txid of the funding transaction xor the funding transaction output).
13679  * Note that this means this value is *not* persistent - it can change once during the
13680  * lifetime of the channel.
13681  */
13682 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
13683
13684 /**
13685  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
13686  * thereafter this is the txid of the funding transaction xor the funding transaction output).
13687  * Note that this means this value is *not* persistent - it can change once during the
13688  * lifetime of the channel.
13689  */
13690 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
13691
13692 /**
13693  * Parameters which apply to our counterparty. See individual fields for more information.
13694  */
13695 struct LDKChannelCounterparty ChannelDetails_get_counterparty(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13696
13697 /**
13698  * Parameters which apply to our counterparty. See individual fields for more information.
13699  */
13700 void ChannelDetails_set_counterparty(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelCounterparty val);
13701
13702 /**
13703  * The Channel's funding transaction output, if we've negotiated the funding transaction with
13704  * our counterparty already.
13705  *
13706  * Note that, if this has been set, `channel_id` will be equivalent to
13707  * `funding_txo.unwrap().to_channel_id()`.
13708  *
13709  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
13710  */
13711 struct LDKOutPoint ChannelDetails_get_funding_txo(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13712
13713 /**
13714  * The Channel's funding transaction output, if we've negotiated the funding transaction with
13715  * our counterparty already.
13716  *
13717  * Note that, if this has been set, `channel_id` will be equivalent to
13718  * `funding_txo.unwrap().to_channel_id()`.
13719  *
13720  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
13721  */
13722 void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
13723
13724 /**
13725  * The position of the funding transaction in the chain. None if the funding transaction has
13726  * not yet been confirmed and the channel fully opened.
13727  */
13728 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13729
13730 /**
13731  * The position of the funding transaction in the chain. None if the funding transaction has
13732  * not yet been confirmed and the channel fully opened.
13733  */
13734 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
13735
13736 /**
13737  * The value, in satoshis, of this channel as appears in the funding output
13738  */
13739 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13740
13741 /**
13742  * The value, in satoshis, of this channel as appears in the funding output
13743  */
13744 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
13745
13746 /**
13747  * The value, in satoshis, that must always be held in the channel for us. This value ensures
13748  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
13749  * this value on chain.
13750  *
13751  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
13752  *
13753  * This value will be `None` for outbound channels until the counterparty accepts the channel.
13754  *
13755  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
13756  */
13757 struct LDKCOption_u64Z ChannelDetails_get_unspendable_punishment_reserve(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13758
13759 /**
13760  * The value, in satoshis, that must always be held in the channel for us. This value ensures
13761  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
13762  * this value on chain.
13763  *
13764  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
13765  *
13766  * This value will be `None` for outbound channels until the counterparty accepts the channel.
13767  *
13768  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
13769  */
13770 void ChannelDetails_set_unspendable_punishment_reserve(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
13771
13772 /**
13773  * The user_id passed in to create_channel, or 0 if the channel was inbound.
13774  */
13775 uint64_t ChannelDetails_get_user_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13776
13777 /**
13778  * The user_id passed in to create_channel, or 0 if the channel was inbound.
13779  */
13780 void ChannelDetails_set_user_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
13781
13782 /**
13783  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
13784  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
13785  * available for inclusion in new outbound HTLCs). This further does not include any pending
13786  * outgoing HTLCs which are awaiting some other resolution to be sent.
13787  *
13788  * This value is not exact. Due to various in-flight changes, feerate changes, and our
13789  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
13790  * should be able to spend nearly this amount.
13791  */
13792 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13793
13794 /**
13795  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
13796  * any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
13797  * available for inclusion in new outbound HTLCs). This further does not include any pending
13798  * outgoing HTLCs which are awaiting some other resolution to be sent.
13799  *
13800  * This value is not exact. Due to various in-flight changes, feerate changes, and our
13801  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
13802  * should be able to spend nearly this amount.
13803  */
13804 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
13805
13806 /**
13807  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
13808  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
13809  * available for inclusion in new inbound HTLCs).
13810  * Note that there are some corner cases not fully handled here, so the actual available
13811  * inbound capacity may be slightly higher than this.
13812  *
13813  * This value is not exact. Due to various in-flight changes, feerate changes, and our
13814  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
13815  * However, our counterparty should be able to spend nearly this amount.
13816  */
13817 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13818
13819 /**
13820  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
13821  * include any pending HTLCs which are not yet fully resolved (and, thus, who's balance is not
13822  * available for inclusion in new inbound HTLCs).
13823  * Note that there are some corner cases not fully handled here, so the actual available
13824  * inbound capacity may be slightly higher than this.
13825  *
13826  * This value is not exact. Due to various in-flight changes, feerate changes, and our
13827  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
13828  * However, our counterparty should be able to spend nearly this amount.
13829  */
13830 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
13831
13832 /**
13833  * The number of required confirmations on the funding transaction before the funding will be
13834  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
13835  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
13836  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
13837  * [`ChannelHandshakeLimits::max_minimum_depth`].
13838  *
13839  * This value will be `None` for outbound channels until the counterparty accepts the channel.
13840  *
13841  * [`is_outbound`]: ChannelDetails::is_outbound
13842  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
13843  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
13844  */
13845 struct LDKCOption_u32Z ChannelDetails_get_confirmations_required(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13846
13847 /**
13848  * The number of required confirmations on the funding transaction before the funding will be
13849  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
13850  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
13851  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
13852  * [`ChannelHandshakeLimits::max_minimum_depth`].
13853  *
13854  * This value will be `None` for outbound channels until the counterparty accepts the channel.
13855  *
13856  * [`is_outbound`]: ChannelDetails::is_outbound
13857  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
13858  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
13859  */
13860 void ChannelDetails_set_confirmations_required(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
13861
13862 /**
13863  * The number of blocks (after our commitment transaction confirms) that we will need to wait
13864  * until we can claim our funds after we force-close the channel. During this time our
13865  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
13866  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
13867  * time to claim our non-HTLC-encumbered funds.
13868  *
13869  * This value will be `None` for outbound channels until the counterparty accepts the channel.
13870  */
13871 struct LDKCOption_u16Z ChannelDetails_get_force_close_spend_delay(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13872
13873 /**
13874  * The number of blocks (after our commitment transaction confirms) that we will need to wait
13875  * until we can claim our funds after we force-close the channel. During this time our
13876  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
13877  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
13878  * time to claim our non-HTLC-encumbered funds.
13879  *
13880  * This value will be `None` for outbound channels until the counterparty accepts the channel.
13881  */
13882 void ChannelDetails_set_force_close_spend_delay(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u16Z val);
13883
13884 /**
13885  * True if the channel was initiated (and thus funded) by us.
13886  */
13887 bool ChannelDetails_get_is_outbound(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13888
13889 /**
13890  * True if the channel was initiated (and thus funded) by us.
13891  */
13892 void ChannelDetails_set_is_outbound(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
13893
13894 /**
13895  * True if the channel is confirmed, funding_locked messages have been exchanged, and the
13896  * channel is not currently being shut down. `funding_locked` message exchange implies the
13897  * required confirmation count has been reached (and we were connected to the peer at some
13898  * point after the funding transaction received enough confirmations). The required
13899  * confirmation count is provided in [`confirmations_required`].
13900  *
13901  * [`confirmations_required`]: ChannelDetails::confirmations_required
13902  */
13903 bool ChannelDetails_get_is_funding_locked(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13904
13905 /**
13906  * True if the channel is confirmed, funding_locked messages have been exchanged, and the
13907  * channel is not currently being shut down. `funding_locked` message exchange implies the
13908  * required confirmation count has been reached (and we were connected to the peer at some
13909  * point after the funding transaction received enough confirmations). The required
13910  * confirmation count is provided in [`confirmations_required`].
13911  *
13912  * [`confirmations_required`]: ChannelDetails::confirmations_required
13913  */
13914 void ChannelDetails_set_is_funding_locked(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
13915
13916 /**
13917  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
13918  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
13919  *
13920  * This is a strict superset of `is_funding_locked`.
13921  */
13922 bool ChannelDetails_get_is_usable(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13923
13924 /**
13925  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
13926  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
13927  *
13928  * This is a strict superset of `is_funding_locked`.
13929  */
13930 void ChannelDetails_set_is_usable(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
13931
13932 /**
13933  * True if this channel is (or will be) publicly-announced.
13934  */
13935 bool ChannelDetails_get_is_public(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
13936
13937 /**
13938  * True if this channel is (or will be) publicly-announced.
13939  */
13940 void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
13941
13942 /**
13943  * Constructs a new ChannelDetails given each field
13944  */
13945 MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKCOption_u64Z short_channel_id_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_id_arg, uint64_t outbound_capacity_msat_arg, uint64_t inbound_capacity_msat_arg, struct LDKCOption_u32Z confirmations_required_arg, struct LDKCOption_u16Z force_close_spend_delay_arg, bool is_outbound_arg, bool is_funding_locked_arg, bool is_usable_arg, bool is_public_arg);
13946
13947 /**
13948  * Creates a copy of the ChannelDetails
13949  */
13950 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
13951
13952 /**
13953  * Frees any resources used by the PaymentSendFailure
13954  */
13955 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
13956
13957 /**
13958  * Creates a copy of the PaymentSendFailure
13959  */
13960 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
13961
13962 /**
13963  * Utility method to constructs a new ParameterError-variant PaymentSendFailure
13964  */
13965 struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
13966
13967 /**
13968  * Utility method to constructs a new PathParameterError-variant PaymentSendFailure
13969  */
13970 struct LDKPaymentSendFailure PaymentSendFailure_path_parameter_error(struct LDKCVec_CResult_NoneAPIErrorZZ a);
13971
13972 /**
13973  * Utility method to constructs a new AllFailedRetrySafe-variant PaymentSendFailure
13974  */
13975 struct LDKPaymentSendFailure PaymentSendFailure_all_failed_retry_safe(struct LDKCVec_APIErrorZ a);
13976
13977 /**
13978  * Utility method to constructs a new PartialFailure-variant PaymentSendFailure
13979  */
13980 struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ a);
13981
13982 /**
13983  * Constructs a new ChannelManager to hold several channels and route between them.
13984  *
13985  * This is the main \"logic hub\" for all channel-related actions, and implements
13986  * ChannelMessageHandler.
13987  *
13988  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
13989  *
13990  * panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
13991  *
13992  * Users need to notify the new ChannelManager when a new block is connected or
13993  * disconnected using its `block_connected` and `block_disconnected` methods, starting
13994  * from after `params.latest_hash`.
13995  */
13996 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);
13997
13998 /**
13999  * Gets the current configuration applied to all new channels,  as
14000  */
14001 MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
14002
14003 /**
14004  * Creates a new outbound channel to the given remote node and with the given value.
14005  *
14006  * user_id will be provided back as user_channel_id in FundingGenerationReady events to allow
14007  * tracking of which events correspond with which create_channel call. Note that the
14008  * user_channel_id defaults to 0 for inbound channels, so you may wish to avoid using 0 for
14009  * user_id here. user_id has no meaning inside of LDK, it is simply copied to events and
14010  * otherwise ignored.
14011  *
14012  * If successful, will generate a SendOpenChannel message event, so you should probably poll
14013  * PeerManager::process_events afterwards.
14014  *
14015  * Raises APIError::APIMisuseError when channel_value_satoshis > 2**24 or push_msat is
14016  * greater than channel_value_satoshis * 1k or channel_value_satoshis is < 1000.
14017  *
14018  * Note that we do not check if you are currently connected to the given peer. If no
14019  * connection is available, the outbound `open_channel` message may fail to send, resulting in
14020  * the channel eventually being silently forgotten.
14021  *
14022  * Note that override_config (or a relevant inner pointer) may be NULL or all-0s to represent None
14023  */
14024 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);
14025
14026 /**
14027  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
14028  * more information.
14029  */
14030 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
14031
14032 /**
14033  * Gets the list of usable channels, in random order. Useful as an argument to
14034  * get_route to ensure non-announced channels are used.
14035  *
14036  * These are guaranteed to have their [`ChannelDetails::is_usable`] value set to true, see the
14037  * documentation for [`ChannelDetails::is_usable`] for more info on exactly what the criteria
14038  * are.
14039  */
14040 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
14041
14042 /**
14043  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
14044  * will be accepted on the given channel, and after additional timeout/the closing of all
14045  * pending HTLCs, the channel will be closed on chain.
14046  *
14047  * May generate a SendShutdown message event on success, which should be relayed.
14048  */
14049 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
14050
14051 /**
14052  * Force closes a channel, immediately broadcasting the latest local commitment transaction to
14053  * the chain and rejecting new HTLCs on the given channel. Fails if channel_id is unknown to the manager.
14054  */
14055 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
14056
14057 /**
14058  * Force close all channels, immediately broadcasting the latest local commitment transaction
14059  * for each to the chain and rejecting new HTLCs on each.
14060  */
14061 void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
14062
14063 /**
14064  * Sends a payment along a given route.
14065  *
14066  * Value parameters are provided via the last hop in route, see documentation for RouteHop
14067  * fields for more info.
14068  *
14069  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
14070  * payment), we don't do anything to stop you! We always try to ensure that if the provided
14071  * next hop knows the preimage to payment_hash they can claim an additional amount as
14072  * specified in the last hop in the route! Thus, you should probably do your own
14073  * payment_preimage tracking (which you should already be doing as they represent \"proof of
14074  * payment\") and prevent double-sends yourself.
14075  *
14076  * May generate SendHTLCs message(s) event on success, which should be relayed.
14077  *
14078  * Each path may have a different return value, and PaymentSendValue may return a Vec with
14079  * each entry matching the corresponding-index entry in the route paths, see
14080  * PaymentSendFailure for more info.
14081  *
14082  * In general, a path may raise:
14083  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
14084  *    node public key) is specified.
14085  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
14086  *    (including due to previous monitor update failure or new permanent monitor update
14087  *    failure).
14088  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
14089  *    relevant updates.
14090  *
14091  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
14092  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
14093  * different route unless you intend to pay twice!
14094  *
14095  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
14096  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
14097  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
14098  * must not contain multiple paths as multi-path payments require a recipient-provided
14099  * payment_secret.
14100  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
14101  * bit set (either as required or as available). If multiple paths are present in the Route,
14102  * we assume the invoice had the basic_mpp feature set.
14103  *
14104  * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
14105  */
14106 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);
14107
14108 /**
14109  * Send a spontaneous payment, which is a payment that does not require the recipient to have
14110  * generated an invoice. Optionally, you may specify the preimage. If you do choose to specify
14111  * the preimage, it must be a cryptographically secure random value that no intermediate node
14112  * would be able to guess -- otherwise, an intermediate node may claim the payment and it will
14113  * never reach the recipient.
14114  *
14115  * Similar to regular payments, you MUST NOT reuse a `payment_preimage` value. See
14116  * [`send_payment`] for more information about the risks of duplicate preimage usage.
14117  *
14118  * [`send_payment`]: Self::send_payment
14119  *
14120  * Note that payment_preimage (or a relevant inner pointer) may be NULL or all-0s to represent None
14121  */
14122 MUST_USE_RES struct LDKCResult_PaymentHashPaymentSendFailureZ ChannelManager_send_spontaneous_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
14123
14124 /**
14125  * Call this upon creation of a funding transaction for the given channel.
14126  *
14127  * Returns an [`APIError::APIMisuseError`] if the funding_transaction spent non-SegWit outputs
14128  * or if no output was found which matches the parameters in [`Event::FundingGenerationReady`].
14129  *
14130  * Panics if a funding transaction has already been provided for this channel.
14131  *
14132  * May panic if the output found in the funding transaction is duplicative with some other
14133  * channel (note that this should be trivially prevented by using unique funding transaction
14134  * keys per-channel).
14135  *
14136  * Do NOT broadcast the funding transaction yourself. When we have safely received our
14137  * counterparty's signature the funding transaction will automatically be broadcast via the
14138  * [`BroadcasterInterface`] provided when this `ChannelManager` was constructed.
14139  *
14140  * Note that this includes RBF or similar transaction replacement strategies - lightning does
14141  * not currently support replacing a funding transaction on an existing channel. Instead,
14142  * create a new channel with a conflicting funding transaction.
14143  *
14144  * [`Event::FundingGenerationReady`]: crate::util::events::Event::FundingGenerationReady
14145  */
14146 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);
14147
14148 /**
14149  * Regenerates channel_announcements and generates a signed node_announcement from the given
14150  * arguments, providing them in corresponding events via
14151  * [`get_and_clear_pending_msg_events`], if at least one public channel has been confirmed
14152  * on-chain. This effectively re-broadcasts all channel announcements and sends our node
14153  * announcement to ensure that the lightning P2P network is aware of the channels we have and
14154  * our network addresses.
14155  *
14156  * `rgb` is a node \"color\" and `alias` is a printable human-readable string to describe this
14157  * node to humans. They carry no in-protocol meaning.
14158  *
14159  * `addresses` represent the set (possibly empty) of socket addresses on which this node
14160  * accepts incoming connections. These will be included in the node_announcement, publicly
14161  * tying these addresses together and to this node. If you wish to preserve user privacy,
14162  * addresses should likely contain only Tor Onion addresses.
14163  *
14164  * Panics if `addresses` is absurdly large (more than 500).
14165  *
14166  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
14167  */
14168 void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
14169
14170 /**
14171  * Processes HTLCs which are pending waiting on random forward delay.
14172  *
14173  * Should only really ever be called in response to a PendingHTLCsForwardable event.
14174  * Will likely generate further events.
14175  */
14176 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
14177
14178 /**
14179  * If a peer is disconnected we mark any channels with that peer as 'disabled'.
14180  * After some time, if channels are still disabled we need to broadcast a ChannelUpdate
14181  * to inform the network about the uselessness of these channels.
14182  *
14183  * This method handles all the details, and must be called roughly once per minute.
14184  *
14185  * Note that in some rare cases this may generate a `chain::Watch::update_channel` call.
14186  */
14187 void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
14188
14189 /**
14190  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
14191  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
14192  * along the path (including in our own channel on which we received it).
14193  * Returns false if no payment was found to fail backwards, true if the process of failing the
14194  * HTLC backwards has been started.
14195  */
14196 MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
14197
14198 /**
14199  * Provides a payment preimage in response to a PaymentReceived event, returning true and
14200  * generating message events for the net layer to claim the payment, if possible. Thus, you
14201  * should probably kick the net layer to go send messages if this returns true!
14202  *
14203  * Note that if you did not set an `amount_msat` when calling [`create_inbound_payment`] or
14204  * [`create_inbound_payment_for_hash`] you must check that the amount in the `PaymentReceived`
14205  * event matches your expectation. If you fail to do so and call this method, you may provide
14206  * the sender \"proof-of-payment\" when they did not fulfill the full expected payment.
14207  *
14208  * May panic if called except in response to a PaymentReceived event.
14209  *
14210  * [`create_inbound_payment`]: Self::create_inbound_payment
14211  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
14212  */
14213 MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage);
14214
14215 /**
14216  * Gets the node_id held by this ChannelManager
14217  */
14218 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
14219
14220 /**
14221  * Restores a single, given channel to normal operation after a
14222  * ChannelMonitorUpdateErr::TemporaryFailure was returned from a channel monitor update
14223  * operation.
14224  *
14225  * All ChannelMonitor updates up to and including highest_applied_update_id must have been
14226  * fully committed in every copy of the given channels' ChannelMonitors.
14227  *
14228  * Note that there is no effect to calling with a highest_applied_update_id other than the
14229  * current latest ChannelMonitorUpdate and one call to this function after multiple
14230  * ChannelMonitorUpdateErr::TemporaryFailures is fine. The highest_applied_update_id field
14231  * exists largely only to prevent races between this and concurrent update_monitor calls.
14232  *
14233  * Thus, the anticipated use is, at a high level:
14234  *  1) You register a chain::Watch with this ChannelManager,
14235  *  2) it stores each update to disk, and begins updating any remote (eg watchtower) copies of
14236  *     said ChannelMonitors as it can, returning ChannelMonitorUpdateErr::TemporaryFailures
14237  *     any time it cannot do so instantly,
14238  *  3) update(s) are applied to each remote copy of a ChannelMonitor,
14239  *  4) once all remote copies are updated, you call this function with the update_id that
14240  *     completed, and once it is the latest the Channel will be re-enabled.
14241  */
14242 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);
14243
14244 /**
14245  * Gets a payment secret and payment hash for use in an invoice given to a third party wishing
14246  * to pay us.
14247  *
14248  * This differs from [`create_inbound_payment_for_hash`] only in that it generates the
14249  * [`PaymentHash`] and [`PaymentPreimage`] for you, returning the first and storing the second.
14250  *
14251  * The [`PaymentPreimage`] will ultimately be returned to you in the [`PaymentReceived`], which
14252  * will have the [`PaymentReceived::payment_preimage`] field filled in. That should then be
14253  * passed directly to [`claim_funds`].
14254  *
14255  * See [`create_inbound_payment_for_hash`] for detailed documentation on behavior and requirements.
14256  *
14257  * [`claim_funds`]: Self::claim_funds
14258  * [`PaymentReceived`]: events::Event::PaymentReceived
14259  * [`PaymentReceived::payment_preimage`]: events::Event::PaymentReceived::payment_preimage
14260  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
14261  */
14262 MUST_USE_RES struct LDKC2Tuple_PaymentHashPaymentSecretZ ChannelManager_create_inbound_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs, uint64_t user_payment_id);
14263
14264 /**
14265  * Gets a [`PaymentSecret`] for a given [`PaymentHash`], for which the payment preimage is
14266  * stored external to LDK.
14267  *
14268  * A [`PaymentReceived`] event will only be generated if the [`PaymentSecret`] matches a
14269  * payment secret fetched via this method or [`create_inbound_payment`], and which is at least
14270  * the `min_value_msat` provided here, if one is provided.
14271  *
14272  * The [`PaymentHash`] (and corresponding [`PaymentPreimage`]) must be globally unique. This
14273  * method may return an Err if another payment with the same payment_hash is still pending.
14274  *
14275  * `user_payment_id` will be provided back in [`PaymentPurpose::InvoicePayment::user_payment_id`] events to
14276  * allow tracking of which events correspond with which calls to this and
14277  * [`create_inbound_payment`]. `user_payment_id` has no meaning inside of LDK, it is simply
14278  * copied to events and otherwise ignored. It may be used to correlate PaymentReceived events
14279  * with invoice metadata stored elsewhere.
14280  *
14281  * `min_value_msat` should be set if the invoice being generated contains a value. Any payment
14282  * received for the returned [`PaymentHash`] will be required to be at least `min_value_msat`
14283  * before a [`PaymentReceived`] event will be generated, ensuring that we do not provide the
14284  * sender \"proof-of-payment\" unless they have paid the required amount.
14285  *
14286  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
14287  * in excess of the current time. This should roughly match the expiry time set in the invoice.
14288  * After this many seconds, we will remove the inbound payment, resulting in any attempts to
14289  * pay the invoice failing. The BOLT spec suggests 3,600 secs as a default validity time for
14290  * invoices when no timeout is set.
14291  *
14292  * Note that we use block header time to time-out pending inbound payments (with some margin
14293  * to compensate for the inaccuracy of block header timestamps). Thus, in practice we will
14294  * accept a payment and generate a [`PaymentReceived`] event for some time after the expiry.
14295  * If you need exact expiry semantics, you should enforce them upon receipt of
14296  * [`PaymentReceived`].
14297  *
14298  * Pending inbound payments are stored in memory and in serialized versions of this
14299  * [`ChannelManager`]. If potentially unbounded numbers of inbound payments may exist and
14300  * space is limited, you may wish to rate-limit inbound payment creation.
14301  *
14302  * May panic if `invoice_expiry_delta_secs` is greater than one year.
14303  *
14304  * Note that invoices generated for inbound payments should have their `min_final_cltv_expiry`
14305  * set to at least [`MIN_FINAL_CLTV_EXPIRY`].
14306  *
14307  * [`create_inbound_payment`]: Self::create_inbound_payment
14308  * [`PaymentReceived`]: events::Event::PaymentReceived
14309  * [`PaymentPurpose::InvoicePayment::user_payment_id`]: events::PaymentPurpose::InvoicePayment::user_payment_id
14310  */
14311 MUST_USE_RES struct LDKCResult_PaymentSecretAPIErrorZ ChannelManager_create_inbound_payment_for_hash(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs, uint64_t user_payment_id);
14312
14313 /**
14314  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
14315  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
14316  */
14317 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
14318
14319 /**
14320  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
14321  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
14322  */
14323 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
14324
14325 /**
14326  * Constructs a new Listen which calls the relevant methods on this_arg.
14327  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
14328  */
14329 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
14330
14331 /**
14332  * Constructs a new Confirm which calls the relevant methods on this_arg.
14333  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
14334  */
14335 struct LDKConfirm ChannelManager_as_Confirm(const struct LDKChannelManager *NONNULL_PTR this_arg);
14336
14337 /**
14338  * Blocks until ChannelManager needs to be persisted or a timeout is reached. It returns a bool
14339  * indicating whether persistence is necessary. Only one listener on
14340  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
14341  * up.
14342  * Note that the feature `allow_wallclock_use` must be enabled to use this function.
14343  */
14344 MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
14345
14346 /**
14347  * Blocks until ChannelManager needs to be persisted. Only one listener on
14348  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
14349  * up.
14350  */
14351 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
14352
14353 /**
14354  * Gets the latest best block which was connected either via the [`chain::Listen`] or
14355  * [`chain::Confirm`] interfaces.
14356  */
14357 MUST_USE_RES struct LDKBestBlock ChannelManager_current_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg);
14358
14359 /**
14360  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
14361  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
14362  */
14363 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
14364
14365 /**
14366  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
14367  */
14368 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
14369
14370 /**
14371  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
14372  */
14373 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
14374
14375 /**
14376  * The keys provider which will give us relevant keys. Some keys will be loaded during
14377  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
14378  * signing data.
14379  */
14380 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
14381
14382 /**
14383  * The keys provider which will give us relevant keys. Some keys will be loaded during
14384  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
14385  * signing data.
14386  */
14387 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
14388
14389 /**
14390  * The fee_estimator for use in the ChannelManager in the future.
14391  *
14392  * No calls to the FeeEstimator will be made during deserialization.
14393  */
14394 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
14395
14396 /**
14397  * The fee_estimator for use in the ChannelManager in the future.
14398  *
14399  * No calls to the FeeEstimator will be made during deserialization.
14400  */
14401 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
14402
14403 /**
14404  * The chain::Watch for use in the ChannelManager in the future.
14405  *
14406  * No calls to the chain::Watch will be made during deserialization. It is assumed that
14407  * you have deserialized ChannelMonitors separately and will add them to your
14408  * chain::Watch after deserializing this ChannelManager.
14409  */
14410 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
14411
14412 /**
14413  * The chain::Watch for use in the ChannelManager in the future.
14414  *
14415  * No calls to the chain::Watch will be made during deserialization. It is assumed that
14416  * you have deserialized ChannelMonitors separately and will add them to your
14417  * chain::Watch after deserializing this ChannelManager.
14418  */
14419 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
14420
14421 /**
14422  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
14423  * used to broadcast the latest local commitment transactions of channels which must be
14424  * force-closed during deserialization.
14425  */
14426 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
14427
14428 /**
14429  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
14430  * used to broadcast the latest local commitment transactions of channels which must be
14431  * force-closed during deserialization.
14432  */
14433 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
14434
14435 /**
14436  * The Logger for use in the ChannelManager and which may be used to log information during
14437  * deserialization.
14438  */
14439 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
14440
14441 /**
14442  * The Logger for use in the ChannelManager and which may be used to log information during
14443  * deserialization.
14444  */
14445 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
14446
14447 /**
14448  * Default settings used for new channels. Any existing channels will continue to use the
14449  * runtime settings which were stored when the ChannelManager was serialized.
14450  */
14451 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
14452
14453 /**
14454  * Default settings used for new channels. Any existing channels will continue to use the
14455  * runtime settings which were stored when the ChannelManager was serialized.
14456  */
14457 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
14458
14459 /**
14460  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
14461  * HashMap for you. This is primarily useful for C bindings where it is not practical to
14462  * populate a HashMap directly from C.
14463  */
14464 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);
14465
14466 /**
14467  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
14468  */
14469 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
14470
14471 /**
14472  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
14473  */
14474 void DecodeError_free(struct LDKDecodeError this_obj);
14475
14476 /**
14477  * Creates a copy of the DecodeError
14478  */
14479 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
14480
14481 /**
14482  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
14483  */
14484 void Init_free(struct LDKInit this_obj);
14485
14486 /**
14487  * The relevant features which the sender supports
14488  */
14489 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
14490
14491 /**
14492  * The relevant features which the sender supports
14493  */
14494 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
14495
14496 /**
14497  * Constructs a new Init given each field
14498  */
14499 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
14500
14501 /**
14502  * Creates a copy of the Init
14503  */
14504 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
14505
14506 /**
14507  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
14508  */
14509 void ErrorMessage_free(struct LDKErrorMessage this_obj);
14510
14511 /**
14512  * The channel ID involved in the error
14513  */
14514 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
14515
14516 /**
14517  * The channel ID involved in the error
14518  */
14519 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14520
14521 /**
14522  * A possibly human-readable error description.
14523  * The string should be sanitized before it is used (e.g. emitted to logs
14524  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
14525  * vulnerability in the terminal emulator or the logging subsystem.
14526  */
14527 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
14528
14529 /**
14530  * A possibly human-readable error description.
14531  * The string should be sanitized before it is used (e.g. emitted to logs
14532  * or printed to stdout).  Otherwise, a well crafted error message may trigger a security
14533  * vulnerability in the terminal emulator or the logging subsystem.
14534  */
14535 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKStr val);
14536
14537 /**
14538  * Constructs a new ErrorMessage given each field
14539  */
14540 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
14541
14542 /**
14543  * Creates a copy of the ErrorMessage
14544  */
14545 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
14546
14547 /**
14548  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
14549  */
14550 void Ping_free(struct LDKPing this_obj);
14551
14552 /**
14553  * The desired response length
14554  */
14555 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
14556
14557 /**
14558  * The desired response length
14559  */
14560 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
14561
14562 /**
14563  * The ping packet size.
14564  * This field is not sent on the wire. byteslen zeros are sent.
14565  */
14566 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
14567
14568 /**
14569  * The ping packet size.
14570  * This field is not sent on the wire. byteslen zeros are sent.
14571  */
14572 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
14573
14574 /**
14575  * Constructs a new Ping given each field
14576  */
14577 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
14578
14579 /**
14580  * Creates a copy of the Ping
14581  */
14582 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
14583
14584 /**
14585  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
14586  */
14587 void Pong_free(struct LDKPong this_obj);
14588
14589 /**
14590  * The pong packet size.
14591  * This field is not sent on the wire. byteslen zeros are sent.
14592  */
14593 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
14594
14595 /**
14596  * The pong packet size.
14597  * This field is not sent on the wire. byteslen zeros are sent.
14598  */
14599 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
14600
14601 /**
14602  * Constructs a new Pong given each field
14603  */
14604 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
14605
14606 /**
14607  * Creates a copy of the Pong
14608  */
14609 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
14610
14611 /**
14612  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
14613  */
14614 void OpenChannel_free(struct LDKOpenChannel this_obj);
14615
14616 /**
14617  * The genesis hash of the blockchain where the channel is to be opened
14618  */
14619 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
14620
14621 /**
14622  * The genesis hash of the blockchain where the channel is to be opened
14623  */
14624 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14625
14626 /**
14627  * A temporary channel ID, until the funding outpoint is announced
14628  */
14629 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
14630
14631 /**
14632  * A temporary channel ID, until the funding outpoint is announced
14633  */
14634 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14635
14636 /**
14637  * The channel value
14638  */
14639 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14640
14641 /**
14642  * The channel value
14643  */
14644 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
14645
14646 /**
14647  * The amount to push to the counterparty as part of the open, in milli-satoshi
14648  */
14649 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14650
14651 /**
14652  * The amount to push to the counterparty as part of the open, in milli-satoshi
14653  */
14654 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
14655
14656 /**
14657  * The threshold below which outputs on transactions broadcast by sender will be omitted
14658  */
14659 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14660
14661 /**
14662  * The threshold below which outputs on transactions broadcast by sender will be omitted
14663  */
14664 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
14665
14666 /**
14667  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
14668  */
14669 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14670
14671 /**
14672  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
14673  */
14674 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
14675
14676 /**
14677  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
14678  */
14679 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14680
14681 /**
14682  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
14683  */
14684 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
14685
14686 /**
14687  * The minimum HTLC size incoming to sender, in milli-satoshi
14688  */
14689 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14690
14691 /**
14692  * The minimum HTLC size incoming to sender, in milli-satoshi
14693  */
14694 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
14695
14696 /**
14697  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
14698  */
14699 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14700
14701 /**
14702  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
14703  */
14704 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
14705
14706 /**
14707  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
14708  */
14709 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14710
14711 /**
14712  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
14713  */
14714 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
14715
14716 /**
14717  * The maximum number of inbound HTLCs towards sender
14718  */
14719 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14720
14721 /**
14722  * The maximum number of inbound HTLCs towards sender
14723  */
14724 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
14725
14726 /**
14727  * The sender's key controlling the funding transaction
14728  */
14729 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14730
14731 /**
14732  * The sender's key controlling the funding transaction
14733  */
14734 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14735
14736 /**
14737  * Used to derive a revocation key for transactions broadcast by counterparty
14738  */
14739 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14740
14741 /**
14742  * Used to derive a revocation key for transactions broadcast by counterparty
14743  */
14744 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14745
14746 /**
14747  * A payment key to sender for transactions broadcast by counterparty
14748  */
14749 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14750
14751 /**
14752  * A payment key to sender for transactions broadcast by counterparty
14753  */
14754 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14755
14756 /**
14757  * Used to derive a payment key to sender for transactions broadcast by sender
14758  */
14759 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14760
14761 /**
14762  * Used to derive a payment key to sender for transactions broadcast by sender
14763  */
14764 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14765
14766 /**
14767  * Used to derive an HTLC payment key to sender
14768  */
14769 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14770
14771 /**
14772  * Used to derive an HTLC payment key to sender
14773  */
14774 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14775
14776 /**
14777  * The first to-be-broadcast-by-sender transaction's per commitment point
14778  */
14779 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14780
14781 /**
14782  * The first to-be-broadcast-by-sender transaction's per commitment point
14783  */
14784 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14785
14786 /**
14787  * Channel flags
14788  */
14789 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
14790
14791 /**
14792  * Channel flags
14793  */
14794 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
14795
14796 /**
14797  * Creates a copy of the OpenChannel
14798  */
14799 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
14800
14801 /**
14802  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
14803  */
14804 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
14805
14806 /**
14807  * A temporary channel ID, until the funding outpoint is announced
14808  */
14809 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
14810
14811 /**
14812  * A temporary channel ID, until the funding outpoint is announced
14813  */
14814 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14815
14816 /**
14817  * The threshold below which outputs on transactions broadcast by sender will be omitted
14818  */
14819 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14820
14821 /**
14822  * The threshold below which outputs on transactions broadcast by sender will be omitted
14823  */
14824 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
14825
14826 /**
14827  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
14828  */
14829 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14830
14831 /**
14832  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
14833  */
14834 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
14835
14836 /**
14837  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
14838  */
14839 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14840
14841 /**
14842  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
14843  */
14844 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
14845
14846 /**
14847  * The minimum HTLC size incoming to sender, in milli-satoshi
14848  */
14849 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14850
14851 /**
14852  * The minimum HTLC size incoming to sender, in milli-satoshi
14853  */
14854 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
14855
14856 /**
14857  * Minimum depth of the funding transaction before the channel is considered open
14858  */
14859 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14860
14861 /**
14862  * Minimum depth of the funding transaction before the channel is considered open
14863  */
14864 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
14865
14866 /**
14867  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
14868  */
14869 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14870
14871 /**
14872  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
14873  */
14874 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
14875
14876 /**
14877  * The maximum number of inbound HTLCs towards sender
14878  */
14879 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14880
14881 /**
14882  * The maximum number of inbound HTLCs towards sender
14883  */
14884 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
14885
14886 /**
14887  * The sender's key controlling the funding transaction
14888  */
14889 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14890
14891 /**
14892  * The sender's key controlling the funding transaction
14893  */
14894 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14895
14896 /**
14897  * Used to derive a revocation key for transactions broadcast by counterparty
14898  */
14899 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14900
14901 /**
14902  * Used to derive a revocation key for transactions broadcast by counterparty
14903  */
14904 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14905
14906 /**
14907  * A payment key to sender for transactions broadcast by counterparty
14908  */
14909 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14910
14911 /**
14912  * A payment key to sender for transactions broadcast by counterparty
14913  */
14914 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14915
14916 /**
14917  * Used to derive a payment key to sender for transactions broadcast by sender
14918  */
14919 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14920
14921 /**
14922  * Used to derive a payment key to sender for transactions broadcast by sender
14923  */
14924 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14925
14926 /**
14927  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
14928  */
14929 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14930
14931 /**
14932  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
14933  */
14934 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14935
14936 /**
14937  * The first to-be-broadcast-by-sender transaction's per commitment point
14938  */
14939 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
14940
14941 /**
14942  * The first to-be-broadcast-by-sender transaction's per commitment point
14943  */
14944 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
14945
14946 /**
14947  * Creates a copy of the AcceptChannel
14948  */
14949 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
14950
14951 /**
14952  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
14953  */
14954 void FundingCreated_free(struct LDKFundingCreated this_obj);
14955
14956 /**
14957  * A temporary channel ID, until the funding is established
14958  */
14959 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
14960
14961 /**
14962  * A temporary channel ID, until the funding is established
14963  */
14964 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14965
14966 /**
14967  * The funding transaction ID
14968  */
14969 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
14970
14971 /**
14972  * The funding transaction ID
14973  */
14974 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
14975
14976 /**
14977  * The specific output index funding this channel
14978  */
14979 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
14980
14981 /**
14982  * The specific output index funding this channel
14983  */
14984 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
14985
14986 /**
14987  * The signature of the channel initiator (funder) on the funding transaction
14988  */
14989 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
14990
14991 /**
14992  * The signature of the channel initiator (funder) on the funding transaction
14993  */
14994 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
14995
14996 /**
14997  * Constructs a new FundingCreated given each field
14998  */
14999 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);
15000
15001 /**
15002  * Creates a copy of the FundingCreated
15003  */
15004 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
15005
15006 /**
15007  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
15008  */
15009 void FundingSigned_free(struct LDKFundingSigned this_obj);
15010
15011 /**
15012  * The channel ID
15013  */
15014 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
15015
15016 /**
15017  * The channel ID
15018  */
15019 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15020
15021 /**
15022  * The signature of the channel acceptor (fundee) on the funding transaction
15023  */
15024 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
15025
15026 /**
15027  * The signature of the channel acceptor (fundee) on the funding transaction
15028  */
15029 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
15030
15031 /**
15032  * Constructs a new FundingSigned given each field
15033  */
15034 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
15035
15036 /**
15037  * Creates a copy of the FundingSigned
15038  */
15039 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
15040
15041 /**
15042  * Frees any resources used by the FundingLocked, if is_owned is set and inner is non-NULL.
15043  */
15044 void FundingLocked_free(struct LDKFundingLocked this_obj);
15045
15046 /**
15047  * The channel ID
15048  */
15049 const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32];
15050
15051 /**
15052  * The channel ID
15053  */
15054 void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15055
15056 /**
15057  * The per-commitment point of the second commitment transaction
15058  */
15059 struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
15060
15061 /**
15062  * The per-commitment point of the second commitment transaction
15063  */
15064 void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15065
15066 /**
15067  * Constructs a new FundingLocked given each field
15068  */
15069 MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
15070
15071 /**
15072  * Creates a copy of the FundingLocked
15073  */
15074 struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
15075
15076 /**
15077  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
15078  */
15079 void Shutdown_free(struct LDKShutdown this_obj);
15080
15081 /**
15082  * The channel ID
15083  */
15084 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
15085
15086 /**
15087  * The channel ID
15088  */
15089 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15090
15091 /**
15092  * The destination of this peer's funds on closing.
15093  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
15094  */
15095 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
15096
15097 /**
15098  * The destination of this peer's funds on closing.
15099  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
15100  */
15101 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
15102
15103 /**
15104  * Constructs a new Shutdown given each field
15105  */
15106 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
15107
15108 /**
15109  * Creates a copy of the Shutdown
15110  */
15111 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
15112
15113 /**
15114  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
15115  */
15116 void ClosingSigned_free(struct LDKClosingSigned this_obj);
15117
15118 /**
15119  * The channel ID
15120  */
15121 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
15122
15123 /**
15124  * The channel ID
15125  */
15126 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15127
15128 /**
15129  * The proposed total fee for the closing transaction
15130  */
15131 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
15132
15133 /**
15134  * The proposed total fee for the closing transaction
15135  */
15136 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
15137
15138 /**
15139  * A signature on the closing transaction
15140  */
15141 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
15142
15143 /**
15144  * A signature on the closing transaction
15145  */
15146 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
15147
15148 /**
15149  * Constructs a new ClosingSigned given each field
15150  */
15151 MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg);
15152
15153 /**
15154  * Creates a copy of the ClosingSigned
15155  */
15156 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
15157
15158 /**
15159  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
15160  */
15161 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
15162
15163 /**
15164  * The channel ID
15165  */
15166 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
15167
15168 /**
15169  * The channel ID
15170  */
15171 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15172
15173 /**
15174  * The HTLC ID
15175  */
15176 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
15177
15178 /**
15179  * The HTLC ID
15180  */
15181 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
15182
15183 /**
15184  * The HTLC value in milli-satoshi
15185  */
15186 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
15187
15188 /**
15189  * The HTLC value in milli-satoshi
15190  */
15191 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
15192
15193 /**
15194  * The payment hash, the pre-image of which controls HTLC redemption
15195  */
15196 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
15197
15198 /**
15199  * The payment hash, the pre-image of which controls HTLC redemption
15200  */
15201 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15202
15203 /**
15204  * The expiry height of the HTLC
15205  */
15206 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
15207
15208 /**
15209  * The expiry height of the HTLC
15210  */
15211 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
15212
15213 /**
15214  * Creates a copy of the UpdateAddHTLC
15215  */
15216 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
15217
15218 /**
15219  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
15220  */
15221 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
15222
15223 /**
15224  * The channel ID
15225  */
15226 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
15227
15228 /**
15229  * The channel ID
15230  */
15231 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15232
15233 /**
15234  * The HTLC ID
15235  */
15236 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
15237
15238 /**
15239  * The HTLC ID
15240  */
15241 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
15242
15243 /**
15244  * The pre-image of the payment hash, allowing HTLC redemption
15245  */
15246 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
15247
15248 /**
15249  * The pre-image of the payment hash, allowing HTLC redemption
15250  */
15251 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15252
15253 /**
15254  * Constructs a new UpdateFulfillHTLC given each field
15255  */
15256 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
15257
15258 /**
15259  * Creates a copy of the UpdateFulfillHTLC
15260  */
15261 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
15262
15263 /**
15264  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
15265  */
15266 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
15267
15268 /**
15269  * The channel ID
15270  */
15271 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
15272
15273 /**
15274  * The channel ID
15275  */
15276 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15277
15278 /**
15279  * The HTLC ID
15280  */
15281 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
15282
15283 /**
15284  * The HTLC ID
15285  */
15286 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
15287
15288 /**
15289  * Creates a copy of the UpdateFailHTLC
15290  */
15291 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
15292
15293 /**
15294  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
15295  */
15296 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
15297
15298 /**
15299  * The channel ID
15300  */
15301 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
15302
15303 /**
15304  * The channel ID
15305  */
15306 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15307
15308 /**
15309  * The HTLC ID
15310  */
15311 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
15312
15313 /**
15314  * The HTLC ID
15315  */
15316 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
15317
15318 /**
15319  * The failure code
15320  */
15321 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
15322
15323 /**
15324  * The failure code
15325  */
15326 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
15327
15328 /**
15329  * Creates a copy of the UpdateFailMalformedHTLC
15330  */
15331 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
15332
15333 /**
15334  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
15335  */
15336 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
15337
15338 /**
15339  * The channel ID
15340  */
15341 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
15342
15343 /**
15344  * The channel ID
15345  */
15346 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15347
15348 /**
15349  * A signature on the commitment transaction
15350  */
15351 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
15352
15353 /**
15354  * A signature on the commitment transaction
15355  */
15356 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
15357
15358 /**
15359  * Signatures on the HTLC transactions
15360  */
15361 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
15362
15363 /**
15364  * Constructs a new CommitmentSigned given each field
15365  */
15366 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
15367
15368 /**
15369  * Creates a copy of the CommitmentSigned
15370  */
15371 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
15372
15373 /**
15374  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
15375  */
15376 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
15377
15378 /**
15379  * The channel ID
15380  */
15381 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
15382
15383 /**
15384  * The channel ID
15385  */
15386 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15387
15388 /**
15389  * The secret corresponding to the per-commitment point
15390  */
15391 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
15392
15393 /**
15394  * The secret corresponding to the per-commitment point
15395  */
15396 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15397
15398 /**
15399  * The next sender-broadcast commitment transaction's per-commitment point
15400  */
15401 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
15402
15403 /**
15404  * The next sender-broadcast commitment transaction's per-commitment point
15405  */
15406 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15407
15408 /**
15409  * Constructs a new RevokeAndACK given each field
15410  */
15411 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);
15412
15413 /**
15414  * Creates a copy of the RevokeAndACK
15415  */
15416 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
15417
15418 /**
15419  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
15420  */
15421 void UpdateFee_free(struct LDKUpdateFee this_obj);
15422
15423 /**
15424  * The channel ID
15425  */
15426 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
15427
15428 /**
15429  * The channel ID
15430  */
15431 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15432
15433 /**
15434  * Fee rate per 1000-weight of the transaction
15435  */
15436 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
15437
15438 /**
15439  * Fee rate per 1000-weight of the transaction
15440  */
15441 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
15442
15443 /**
15444  * Constructs a new UpdateFee given each field
15445  */
15446 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
15447
15448 /**
15449  * Creates a copy of the UpdateFee
15450  */
15451 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
15452
15453 /**
15454  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
15455  */
15456 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
15457
15458 /**
15459  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
15460  * belonging to the recipient
15461  */
15462 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
15463
15464 /**
15465  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
15466  * belonging to the recipient
15467  */
15468 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15469
15470 /**
15471  * The sender's per-commitment point for their current commitment transaction
15472  */
15473 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
15474
15475 /**
15476  * The sender's per-commitment point for their current commitment transaction
15477  */
15478 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15479
15480 /**
15481  * Constructs a new DataLossProtect given each field
15482  */
15483 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
15484
15485 /**
15486  * Creates a copy of the DataLossProtect
15487  */
15488 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
15489
15490 /**
15491  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
15492  */
15493 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
15494
15495 /**
15496  * The channel ID
15497  */
15498 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
15499
15500 /**
15501  * The channel ID
15502  */
15503 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15504
15505 /**
15506  * The next commitment number for the sender
15507  */
15508 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
15509
15510 /**
15511  * The next commitment number for the sender
15512  */
15513 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
15514
15515 /**
15516  * The next commitment number for the recipient
15517  */
15518 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
15519
15520 /**
15521  * The next commitment number for the recipient
15522  */
15523 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
15524
15525 /**
15526  * Creates a copy of the ChannelReestablish
15527  */
15528 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
15529
15530 /**
15531  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
15532  */
15533 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
15534
15535 /**
15536  * The channel ID
15537  */
15538 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
15539
15540 /**
15541  * The channel ID
15542  */
15543 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15544
15545 /**
15546  * The short channel ID
15547  */
15548 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
15549
15550 /**
15551  * The short channel ID
15552  */
15553 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
15554
15555 /**
15556  * A signature by the node key
15557  */
15558 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
15559
15560 /**
15561  * A signature by the node key
15562  */
15563 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
15564
15565 /**
15566  * A signature by the funding key
15567  */
15568 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
15569
15570 /**
15571  * A signature by the funding key
15572  */
15573 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
15574
15575 /**
15576  * Constructs a new AnnouncementSignatures given each field
15577  */
15578 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);
15579
15580 /**
15581  * Creates a copy of the AnnouncementSignatures
15582  */
15583 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
15584
15585 /**
15586  * Frees any resources used by the NetAddress
15587  */
15588 void NetAddress_free(struct LDKNetAddress this_ptr);
15589
15590 /**
15591  * Creates a copy of the NetAddress
15592  */
15593 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
15594
15595 /**
15596  * Utility method to constructs a new IPv4-variant NetAddress
15597  */
15598 struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
15599
15600 /**
15601  * Utility method to constructs a new IPv6-variant NetAddress
15602  */
15603 struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
15604
15605 /**
15606  * Utility method to constructs a new OnionV2-variant NetAddress
15607  */
15608 struct LDKNetAddress NetAddress_onion_v2(struct LDKTenBytes addr, uint16_t port);
15609
15610 /**
15611  * Utility method to constructs a new OnionV3-variant NetAddress
15612  */
15613 struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
15614
15615 /**
15616  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
15617  */
15618 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
15619
15620 /**
15621  * Read a Result from a byte array, created by Result_write
15622  */
15623 struct LDKCResult_CResult_NetAddressu8ZDecodeErrorZ Result_read(struct LDKu8slice ser);
15624
15625 /**
15626  * Read a NetAddress from a byte array, created by NetAddress_write
15627  */
15628 struct LDKCResult_NetAddressDecodeErrorZ NetAddress_read(struct LDKu8slice ser);
15629
15630 /**
15631  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
15632  */
15633 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
15634
15635 /**
15636  * The advertised features
15637  */
15638 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
15639
15640 /**
15641  * The advertised features
15642  */
15643 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
15644
15645 /**
15646  * A strictly monotonic announcement counter, with gaps allowed
15647  */
15648 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
15649
15650 /**
15651  * A strictly monotonic announcement counter, with gaps allowed
15652  */
15653 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
15654
15655 /**
15656  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
15657  * to this node).
15658  */
15659 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
15660
15661 /**
15662  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
15663  * to this node).
15664  */
15665 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15666
15667 /**
15668  * An RGB color for UI purposes
15669  */
15670 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
15671
15672 /**
15673  * An RGB color for UI purposes
15674  */
15675 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
15676
15677 /**
15678  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
15679  * of uniqueness.
15680  */
15681 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
15682
15683 /**
15684  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
15685  * of uniqueness.
15686  */
15687 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15688
15689 /**
15690  * List of addresses on which this node is reachable
15691  */
15692 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
15693
15694 /**
15695  * Creates a copy of the UnsignedNodeAnnouncement
15696  */
15697 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
15698
15699 /**
15700  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
15701  */
15702 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
15703
15704 /**
15705  * The signature by the node key
15706  */
15707 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
15708
15709 /**
15710  * The signature by the node key
15711  */
15712 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
15713
15714 /**
15715  * The actual content of the announcement
15716  */
15717 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
15718
15719 /**
15720  * The actual content of the announcement
15721  */
15722 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
15723
15724 /**
15725  * Constructs a new NodeAnnouncement given each field
15726  */
15727 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
15728
15729 /**
15730  * Creates a copy of the NodeAnnouncement
15731  */
15732 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
15733
15734 /**
15735  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
15736  */
15737 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
15738
15739 /**
15740  * The advertised channel features
15741  */
15742 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
15743
15744 /**
15745  * The advertised channel features
15746  */
15747 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
15748
15749 /**
15750  * The genesis hash of the blockchain where the channel is to be opened
15751  */
15752 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
15753
15754 /**
15755  * The genesis hash of the blockchain where the channel is to be opened
15756  */
15757 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15758
15759 /**
15760  * The short channel ID
15761  */
15762 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
15763
15764 /**
15765  * The short channel ID
15766  */
15767 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
15768
15769 /**
15770  * One of the two node_ids which are endpoints of this channel
15771  */
15772 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
15773
15774 /**
15775  * One of the two node_ids which are endpoints of this channel
15776  */
15777 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15778
15779 /**
15780  * The other of the two node_ids which are endpoints of this channel
15781  */
15782 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
15783
15784 /**
15785  * The other of the two node_ids which are endpoints of this channel
15786  */
15787 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15788
15789 /**
15790  * The funding key for the first node
15791  */
15792 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
15793
15794 /**
15795  * The funding key for the first node
15796  */
15797 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15798
15799 /**
15800  * The funding key for the second node
15801  */
15802 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
15803
15804 /**
15805  * The funding key for the second node
15806  */
15807 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
15808
15809 /**
15810  * Creates a copy of the UnsignedChannelAnnouncement
15811  */
15812 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
15813
15814 /**
15815  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
15816  */
15817 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
15818
15819 /**
15820  * Authentication of the announcement by the first public node
15821  */
15822 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
15823
15824 /**
15825  * Authentication of the announcement by the first public node
15826  */
15827 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
15828
15829 /**
15830  * Authentication of the announcement by the second public node
15831  */
15832 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
15833
15834 /**
15835  * Authentication of the announcement by the second public node
15836  */
15837 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
15838
15839 /**
15840  * Proof of funding UTXO ownership by the first public node
15841  */
15842 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
15843
15844 /**
15845  * Proof of funding UTXO ownership by the first public node
15846  */
15847 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
15848
15849 /**
15850  * Proof of funding UTXO ownership by the second public node
15851  */
15852 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
15853
15854 /**
15855  * Proof of funding UTXO ownership by the second public node
15856  */
15857 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
15858
15859 /**
15860  * The actual announcement
15861  */
15862 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
15863
15864 /**
15865  * The actual announcement
15866  */
15867 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
15868
15869 /**
15870  * Constructs a new ChannelAnnouncement given each field
15871  */
15872 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);
15873
15874 /**
15875  * Creates a copy of the ChannelAnnouncement
15876  */
15877 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
15878
15879 /**
15880  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
15881  */
15882 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
15883
15884 /**
15885  * The genesis hash of the blockchain where the channel is to be opened
15886  */
15887 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
15888
15889 /**
15890  * The genesis hash of the blockchain where the channel is to be opened
15891  */
15892 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
15893
15894 /**
15895  * The short channel ID
15896  */
15897 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15898
15899 /**
15900  * The short channel ID
15901  */
15902 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
15903
15904 /**
15905  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
15906  */
15907 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15908
15909 /**
15910  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
15911  */
15912 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
15913
15914 /**
15915  * Channel flags
15916  */
15917 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15918
15919 /**
15920  * Channel flags
15921  */
15922 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
15923
15924 /**
15925  * The number of blocks such that if:
15926  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
15927  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
15928  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
15929  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
15930  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
15931  * forwarding. Note that the HTLC sender is the one who originally sets this value when
15932  * constructing the route.
15933  */
15934 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15935
15936 /**
15937  * The number of blocks such that if:
15938  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
15939  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
15940  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
15941  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
15942  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
15943  * forwarding. Note that the HTLC sender is the one who originally sets this value when
15944  * constructing the route.
15945  */
15946 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
15947
15948 /**
15949  * The minimum HTLC size incoming to sender, in milli-satoshi
15950  */
15951 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15952
15953 /**
15954  * The minimum HTLC size incoming to sender, in milli-satoshi
15955  */
15956 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
15957
15958 /**
15959  * The base HTLC fee charged by sender, in milli-satoshi
15960  */
15961 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15962
15963 /**
15964  * The base HTLC fee charged by sender, in milli-satoshi
15965  */
15966 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
15967
15968 /**
15969  * The amount to fee multiplier, in micro-satoshi
15970  */
15971 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
15972
15973 /**
15974  * The amount to fee multiplier, in micro-satoshi
15975  */
15976 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
15977
15978 /**
15979  * Creates a copy of the UnsignedChannelUpdate
15980  */
15981 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
15982
15983 /**
15984  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
15985  */
15986 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
15987
15988 /**
15989  * A signature of the channel update
15990  */
15991 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
15992
15993 /**
15994  * A signature of the channel update
15995  */
15996 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
15997
15998 /**
15999  * The actual channel update
16000  */
16001 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
16002
16003 /**
16004  * The actual channel update
16005  */
16006 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
16007
16008 /**
16009  * Constructs a new ChannelUpdate given each field
16010  */
16011 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
16012
16013 /**
16014  * Creates a copy of the ChannelUpdate
16015  */
16016 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
16017
16018 /**
16019  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
16020  */
16021 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
16022
16023 /**
16024  * The genesis hash of the blockchain being queried
16025  */
16026 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
16027
16028 /**
16029  * The genesis hash of the blockchain being queried
16030  */
16031 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
16032
16033 /**
16034  * The height of the first block for the channel UTXOs being queried
16035  */
16036 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
16037
16038 /**
16039  * The height of the first block for the channel UTXOs being queried
16040  */
16041 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
16042
16043 /**
16044  * The number of blocks to include in the query results
16045  */
16046 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
16047
16048 /**
16049  * The number of blocks to include in the query results
16050  */
16051 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
16052
16053 /**
16054  * Constructs a new QueryChannelRange given each field
16055  */
16056 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
16057
16058 /**
16059  * Creates a copy of the QueryChannelRange
16060  */
16061 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
16062
16063 /**
16064  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
16065  */
16066 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
16067
16068 /**
16069  * The genesis hash of the blockchain being queried
16070  */
16071 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
16072
16073 /**
16074  * The genesis hash of the blockchain being queried
16075  */
16076 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
16077
16078 /**
16079  * The height of the first block in the range of the reply
16080  */
16081 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
16082
16083 /**
16084  * The height of the first block in the range of the reply
16085  */
16086 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
16087
16088 /**
16089  * The number of blocks included in the range of the reply
16090  */
16091 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
16092
16093 /**
16094  * The number of blocks included in the range of the reply
16095  */
16096 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
16097
16098 /**
16099  * True when this is the final reply for a query
16100  */
16101 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
16102
16103 /**
16104  * True when this is the final reply for a query
16105  */
16106 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
16107
16108 /**
16109  * The short_channel_ids in the channel range
16110  */
16111 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
16112
16113 /**
16114  * Constructs a new ReplyChannelRange given each field
16115  */
16116 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);
16117
16118 /**
16119  * Creates a copy of the ReplyChannelRange
16120  */
16121 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
16122
16123 /**
16124  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
16125  */
16126 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
16127
16128 /**
16129  * The genesis hash of the blockchain being queried
16130  */
16131 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
16132
16133 /**
16134  * The genesis hash of the blockchain being queried
16135  */
16136 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
16137
16138 /**
16139  * The short_channel_ids that are being queried
16140  */
16141 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
16142
16143 /**
16144  * Constructs a new QueryShortChannelIds given each field
16145  */
16146 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
16147
16148 /**
16149  * Creates a copy of the QueryShortChannelIds
16150  */
16151 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
16152
16153 /**
16154  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
16155  */
16156 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
16157
16158 /**
16159  * The genesis hash of the blockchain that was queried
16160  */
16161 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
16162
16163 /**
16164  * The genesis hash of the blockchain that was queried
16165  */
16166 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
16167
16168 /**
16169  * Indicates if the query recipient maintains up-to-date channel
16170  * information for the chain_hash
16171  */
16172 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
16173
16174 /**
16175  * Indicates if the query recipient maintains up-to-date channel
16176  * information for the chain_hash
16177  */
16178 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
16179
16180 /**
16181  * Constructs a new ReplyShortChannelIdsEnd given each field
16182  */
16183 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
16184
16185 /**
16186  * Creates a copy of the ReplyShortChannelIdsEnd
16187  */
16188 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
16189
16190 /**
16191  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
16192  */
16193 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
16194
16195 /**
16196  * The genesis hash of the blockchain for channel and node information
16197  */
16198 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
16199
16200 /**
16201  * The genesis hash of the blockchain for channel and node information
16202  */
16203 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
16204
16205 /**
16206  * The starting unix timestamp
16207  */
16208 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
16209
16210 /**
16211  * The starting unix timestamp
16212  */
16213 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
16214
16215 /**
16216  * The range of information in seconds
16217  */
16218 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
16219
16220 /**
16221  * The range of information in seconds
16222  */
16223 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
16224
16225 /**
16226  * Constructs a new GossipTimestampFilter given each field
16227  */
16228 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
16229
16230 /**
16231  * Creates a copy of the GossipTimestampFilter
16232  */
16233 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
16234
16235 /**
16236  * Frees any resources used by the ErrorAction
16237  */
16238 void ErrorAction_free(struct LDKErrorAction this_ptr);
16239
16240 /**
16241  * Creates a copy of the ErrorAction
16242  */
16243 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
16244
16245 /**
16246  * Utility method to constructs a new DisconnectPeer-variant ErrorAction
16247  */
16248 struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
16249
16250 /**
16251  * Utility method to constructs a new IgnoreError-variant ErrorAction
16252  */
16253 struct LDKErrorAction ErrorAction_ignore_error(void);
16254
16255 /**
16256  * Utility method to constructs a new IgnoreAndLog-variant ErrorAction
16257  */
16258 struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
16259
16260 /**
16261  * Utility method to constructs a new SendErrorMessage-variant ErrorAction
16262  */
16263 struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
16264
16265 /**
16266  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
16267  */
16268 void LightningError_free(struct LDKLightningError this_obj);
16269
16270 /**
16271  * A human-readable message describing the error
16272  */
16273 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
16274
16275 /**
16276  * A human-readable message describing the error
16277  */
16278 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKStr val);
16279
16280 /**
16281  * The action which should be taken against the offending peer.
16282  */
16283 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
16284
16285 /**
16286  * The action which should be taken against the offending peer.
16287  */
16288 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
16289
16290 /**
16291  * Constructs a new LightningError given each field
16292  */
16293 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
16294
16295 /**
16296  * Creates a copy of the LightningError
16297  */
16298 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
16299
16300 /**
16301  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
16302  */
16303 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
16304
16305 /**
16306  * update_add_htlc messages which should be sent
16307  */
16308 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
16309
16310 /**
16311  * update_fulfill_htlc messages which should be sent
16312  */
16313 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
16314
16315 /**
16316  * update_fail_htlc messages which should be sent
16317  */
16318 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
16319
16320 /**
16321  * update_fail_malformed_htlc messages which should be sent
16322  */
16323 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
16324
16325 /**
16326  * An update_fee message which should be sent
16327  *
16328  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
16329  */
16330 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
16331
16332 /**
16333  * An update_fee message which should be sent
16334  *
16335  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
16336  */
16337 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
16338
16339 /**
16340  * Finally, the commitment_signed message which should be sent
16341  */
16342 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
16343
16344 /**
16345  * Finally, the commitment_signed message which should be sent
16346  */
16347 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
16348
16349 /**
16350  * Constructs a new CommitmentUpdate given each field
16351  */
16352 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);
16353
16354 /**
16355  * Creates a copy of the CommitmentUpdate
16356  */
16357 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
16358
16359 /**
16360  * Frees any resources used by the HTLCFailChannelUpdate
16361  */
16362 void HTLCFailChannelUpdate_free(struct LDKHTLCFailChannelUpdate this_ptr);
16363
16364 /**
16365  * Creates a copy of the HTLCFailChannelUpdate
16366  */
16367 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_clone(const struct LDKHTLCFailChannelUpdate *NONNULL_PTR orig);
16368
16369 /**
16370  * Utility method to constructs a new ChannelUpdateMessage-variant HTLCFailChannelUpdate
16371  */
16372 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_channel_update_message(struct LDKChannelUpdate msg);
16373
16374 /**
16375  * Utility method to constructs a new ChannelClosed-variant HTLCFailChannelUpdate
16376  */
16377 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_channel_closed(uint64_t short_channel_id, bool is_permanent);
16378
16379 /**
16380  * Utility method to constructs a new NodeFailure-variant HTLCFailChannelUpdate
16381  */
16382 struct LDKHTLCFailChannelUpdate HTLCFailChannelUpdate_node_failure(struct LDKPublicKey node_id, bool is_permanent);
16383
16384 /**
16385  * Calls the free function if one is set
16386  */
16387 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
16388
16389 /**
16390  * Calls the free function if one is set
16391  */
16392 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
16393
16394 /**
16395  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
16396  */
16397 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
16398
16399 /**
16400  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
16401  */
16402 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
16403
16404 /**
16405  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
16406  */
16407 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
16408
16409 /**
16410  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
16411  */
16412 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
16413
16414 /**
16415  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
16416  */
16417 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
16418
16419 /**
16420  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
16421  */
16422 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
16423
16424 /**
16425  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
16426  */
16427 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
16428
16429 /**
16430  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
16431  */
16432 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
16433
16434 /**
16435  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
16436  */
16437 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
16438
16439 /**
16440  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
16441  */
16442 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
16443
16444 /**
16445  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
16446  */
16447 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
16448
16449 /**
16450  * Read a FundingCreated from a byte array, created by FundingCreated_write
16451  */
16452 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
16453
16454 /**
16455  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
16456  */
16457 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
16458
16459 /**
16460  * Read a FundingSigned from a byte array, created by FundingSigned_write
16461  */
16462 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
16463
16464 /**
16465  * Serialize the FundingLocked object into a byte array which can be read by FundingLocked_read
16466  */
16467 struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
16468
16469 /**
16470  * Read a FundingLocked from a byte array, created by FundingLocked_write
16471  */
16472 struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser);
16473
16474 /**
16475  * Serialize the Init object into a byte array which can be read by Init_read
16476  */
16477 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
16478
16479 /**
16480  * Read a Init from a byte array, created by Init_write
16481  */
16482 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
16483
16484 /**
16485  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
16486  */
16487 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
16488
16489 /**
16490  * Read a OpenChannel from a byte array, created by OpenChannel_write
16491  */
16492 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
16493
16494 /**
16495  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
16496  */
16497 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
16498
16499 /**
16500  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
16501  */
16502 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
16503
16504 /**
16505  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
16506  */
16507 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
16508
16509 /**
16510  * Read a Shutdown from a byte array, created by Shutdown_write
16511  */
16512 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
16513
16514 /**
16515  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
16516  */
16517 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
16518
16519 /**
16520  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
16521  */
16522 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
16523
16524 /**
16525  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
16526  */
16527 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
16528
16529 /**
16530  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
16531  */
16532 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
16533
16534 /**
16535  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
16536  */
16537 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
16538
16539 /**
16540  * Read a UpdateFee from a byte array, created by UpdateFee_write
16541  */
16542 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
16543
16544 /**
16545  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
16546  */
16547 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
16548
16549 /**
16550  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
16551  */
16552 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
16553
16554 /**
16555  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
16556  */
16557 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
16558
16559 /**
16560  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
16561  */
16562 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
16563
16564 /**
16565  * Serialize the Ping object into a byte array which can be read by Ping_read
16566  */
16567 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
16568
16569 /**
16570  * Read a Ping from a byte array, created by Ping_write
16571  */
16572 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
16573
16574 /**
16575  * Serialize the Pong object into a byte array which can be read by Pong_read
16576  */
16577 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
16578
16579 /**
16580  * Read a Pong from a byte array, created by Pong_write
16581  */
16582 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
16583
16584 /**
16585  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
16586  */
16587 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
16588
16589 /**
16590  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
16591  */
16592 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
16593
16594 /**
16595  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
16596  */
16597 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
16598
16599 /**
16600  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
16601  */
16602 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
16603
16604 /**
16605  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
16606  */
16607 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
16608
16609 /**
16610  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
16611  */
16612 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
16613
16614 /**
16615  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
16616  */
16617 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
16618
16619 /**
16620  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
16621  */
16622 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
16623
16624 /**
16625  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
16626  */
16627 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
16628
16629 /**
16630  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
16631  */
16632 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
16633
16634 /**
16635  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
16636  */
16637 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
16638
16639 /**
16640  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
16641  */
16642 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
16643
16644 /**
16645  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
16646  */
16647 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
16648
16649 /**
16650  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
16651  */
16652 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
16653
16654 /**
16655  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
16656  */
16657 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
16658
16659 /**
16660  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
16661  */
16662 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
16663
16664 /**
16665  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
16666  */
16667 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
16668
16669 /**
16670  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
16671  */
16672 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
16673
16674 /**
16675  *\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
16676  */
16677 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
16678
16679 /**
16680  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
16681  */
16682 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
16683
16684 /**
16685  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
16686  */
16687 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
16688
16689 /**
16690  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
16691  */
16692 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
16693
16694 /**
16695  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
16696  */
16697 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
16698
16699 /**
16700  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
16701  */
16702 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
16703
16704 /**
16705  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
16706  */
16707 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
16708
16709 /**
16710  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
16711  */
16712 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
16713
16714 /**
16715  * Constructs a new IgnoringMessageHandler given each field
16716  */
16717 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
16718
16719 /**
16720  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
16721  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
16722  */
16723 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
16724
16725 /**
16726  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
16727  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
16728  */
16729 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
16730
16731 /**
16732  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
16733  */
16734 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
16735
16736 /**
16737  * Constructs a new ErroringMessageHandler
16738  */
16739 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
16740
16741 /**
16742  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
16743  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
16744  */
16745 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
16746
16747 /**
16748  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
16749  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
16750  */
16751 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
16752
16753 /**
16754  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
16755  */
16756 void MessageHandler_free(struct LDKMessageHandler this_obj);
16757
16758 /**
16759  * A message handler which handles messages specific to channels. Usually this is just a
16760  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
16761  *
16762  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
16763  */
16764 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
16765
16766 /**
16767  * A message handler which handles messages specific to channels. Usually this is just a
16768  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
16769  *
16770  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
16771  */
16772 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
16773
16774 /**
16775  * A message handler which handles messages updating our knowledge of the network channel
16776  * graph. Usually this is just a [`NetGraphMsgHandler`] object or an
16777  * [`IgnoringMessageHandler`].
16778  *
16779  * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
16780  */
16781 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
16782
16783 /**
16784  * A message handler which handles messages updating our knowledge of the network channel
16785  * graph. Usually this is just a [`NetGraphMsgHandler`] object or an
16786  * [`IgnoringMessageHandler`].
16787  *
16788  * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
16789  */
16790 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
16791
16792 /**
16793  * Constructs a new MessageHandler given each field
16794  */
16795 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
16796
16797 /**
16798  * Creates a copy of a SocketDescriptor
16799  */
16800 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
16801
16802 /**
16803  * Calls the free function if one is set
16804  */
16805 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
16806
16807 /**
16808  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
16809  */
16810 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
16811
16812 /**
16813  * Used to indicate that we probably can't make any future connections to this peer, implying
16814  * we should go ahead and force-close any channels we have with it.
16815  */
16816 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
16817
16818 /**
16819  * Used to indicate that we probably can't make any future connections to this peer, implying
16820  * we should go ahead and force-close any channels we have with it.
16821  */
16822 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
16823
16824 /**
16825  * Constructs a new PeerHandleError given each field
16826  */
16827 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
16828
16829 /**
16830  * Creates a copy of the PeerHandleError
16831  */
16832 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
16833
16834 /**
16835  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
16836  */
16837 void PeerManager_free(struct LDKPeerManager this_obj);
16838
16839 /**
16840  * Constructs a new PeerManager with the given message handlers and node_id secret key
16841  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
16842  * cryptographically secure random bytes.
16843  */
16844 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);
16845
16846 /**
16847  * Get the list of node ids for peers which have completed the initial handshake.
16848  *
16849  * For outbound connections, this will be the same as the their_node_id parameter passed in to
16850  * new_outbound_connection, however entries will only appear once the initial handshake has
16851  * completed and we are sure the remote peer has the private key for the given node_id.
16852  */
16853 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
16854
16855 /**
16856  * Indicates a new outbound connection has been established to a node with the given node_id.
16857  * Note that if an Err is returned here you MUST NOT call socket_disconnected for the new
16858  * descriptor but must disconnect the connection immediately.
16859  *
16860  * Returns a small number of bytes to send to the remote node (currently always 50).
16861  *
16862  * Panics if descriptor is duplicative with some other descriptor which has not yet been
16863  * [`socket_disconnected()`].
16864  *
16865  * [`socket_disconnected()`]: PeerManager::socket_disconnected
16866  */
16867 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);
16868
16869 /**
16870  * Indicates a new inbound connection has been established.
16871  *
16872  * May refuse the connection by returning an Err, but will never write bytes to the remote end
16873  * (outbound connector always speaks first). Note that if an Err is returned here you MUST NOT
16874  * call socket_disconnected for the new descriptor but must disconnect the connection
16875  * immediately.
16876  *
16877  * Panics if descriptor is duplicative with some other descriptor which has not yet been
16878  * [`socket_disconnected()`].
16879  *
16880  * [`socket_disconnected()`]: PeerManager::socket_disconnected
16881  */
16882 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
16883
16884 /**
16885  * Indicates that there is room to write data to the given socket descriptor.
16886  *
16887  * May return an Err to indicate that the connection should be closed.
16888  *
16889  * May call [`send_data`] on the descriptor passed in (or an equal descriptor) before
16890  * returning. Thus, be very careful with reentrancy issues! The invariants around calling
16891  * [`write_buffer_space_avail`] in case a write did not fully complete must still hold - be
16892  * ready to call `[write_buffer_space_avail`] again if a write call generated here isn't
16893  * sufficient!
16894  *
16895  * [`send_data`]: SocketDescriptor::send_data
16896  * [`write_buffer_space_avail`]: PeerManager::write_buffer_space_avail
16897  */
16898 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
16899
16900 /**
16901  * Indicates that data was read from the given socket descriptor.
16902  *
16903  * May return an Err to indicate that the connection should be closed.
16904  *
16905  * Will *not* call back into [`send_data`] on any descriptors to avoid reentrancy complexity.
16906  * Thus, however, you should call [`process_events`] after any `read_event` to generate
16907  * [`send_data`] calls to handle responses.
16908  *
16909  * If `Ok(true)` is returned, further read_events should not be triggered until a
16910  * [`send_data`] call on this descriptor has `resume_read` set (preventing DoS issues in the
16911  * send buffer).
16912  *
16913  * [`send_data`]: SocketDescriptor::send_data
16914  * [`process_events`]: PeerManager::process_events
16915  */
16916 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);
16917
16918 /**
16919  * Checks for any events generated by our handlers and processes them. Includes sending most
16920  * response messages as well as messages generated by calls to handler functions directly (eg
16921  * functions like [`ChannelManager::process_pending_htlc_forwards`] or [`send_payment`]).
16922  *
16923  * May call [`send_data`] on [`SocketDescriptor`]s. Thus, be very careful with reentrancy
16924  * issues!
16925  *
16926  * [`send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
16927  * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
16928  * [`send_data`]: SocketDescriptor::send_data
16929  */
16930 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
16931
16932 /**
16933  * Indicates that the given socket descriptor's connection is now closed.
16934  */
16935 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
16936
16937 /**
16938  * Disconnect a peer given its node id.
16939  *
16940  * Set `no_connection_possible` to true to prevent any further connection with this peer,
16941  * force-closing any channels we have with it.
16942  *
16943  * If a peer is connected, this will call [`disconnect_socket`] on the descriptor for the
16944  * peer. Thus, be very careful about reentrancy issues.
16945  *
16946  * [`disconnect_socket`]: SocketDescriptor::disconnect_socket
16947  */
16948 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
16949
16950 /**
16951  * This function should be called roughly once every 30 seconds.
16952  * It will send pings to each peer and disconnect those which did not respond to the last
16953  * round of pings.
16954  *
16955  * May call [`send_data`] on all [`SocketDescriptor`]s. Thus, be very careful with reentrancy
16956  * issues!
16957  *
16958  * [`send_data`]: SocketDescriptor::send_data
16959  */
16960 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
16961
16962 /**
16963  * Build the commitment secret from the seed and the commitment number
16964  */
16965 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
16966
16967 /**
16968  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
16969  * from the base secret and the per_commitment_point.
16970  *
16971  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
16972  * generated (ie our own).
16973  */
16974 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
16975
16976 /**
16977  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
16978  * from the base point and the per_commitment_key. This is the public equivalent of
16979  * derive_private_key - using only public keys to derive a public key instead of private keys.
16980  *
16981  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
16982  * generated (ie our own).
16983  */
16984 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
16985
16986 /**
16987  * Derives a per-commitment-transaction revocation key from its constituent parts.
16988  *
16989  * Only the cheating participant owns a valid witness to propagate a revoked
16990  * commitment transaction, thus per_commitment_secret always come from cheater
16991  * and revocation_base_secret always come from punisher, which is the broadcaster
16992  * of the transaction spending with this key knowledge.
16993  *
16994  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
16995  * generated (ie our own).
16996  */
16997 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
16998
16999 /**
17000  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
17001  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
17002  * public key instead of private keys.
17003  *
17004  * Only the cheating participant owns a valid witness to propagate a revoked
17005  * commitment transaction, thus per_commitment_point always come from cheater
17006  * and revocation_base_point always come from punisher, which is the broadcaster
17007  * of the transaction spending with this key knowledge.
17008  *
17009  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
17010  * generated (ie our own).
17011  */
17012 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
17013
17014 /**
17015  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
17016  */
17017 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
17018
17019 /**
17020  * The broadcaster's per-commitment public key which was used to derive the other keys.
17021  */
17022 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
17023
17024 /**
17025  * The broadcaster's per-commitment public key which was used to derive the other keys.
17026  */
17027 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17028
17029 /**
17030  * The revocation key which is used to allow the broadcaster of the commitment
17031  * transaction to provide their counterparty the ability to punish them if they broadcast
17032  * an old state.
17033  */
17034 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
17035
17036 /**
17037  * The revocation key which is used to allow the broadcaster of the commitment
17038  * transaction to provide their counterparty the ability to punish them if they broadcast
17039  * an old state.
17040  */
17041 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17042
17043 /**
17044  * Broadcaster's HTLC Key
17045  */
17046 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
17047
17048 /**
17049  * Broadcaster's HTLC Key
17050  */
17051 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17052
17053 /**
17054  * Countersignatory's HTLC Key
17055  */
17056 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
17057
17058 /**
17059  * Countersignatory's HTLC Key
17060  */
17061 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17062
17063 /**
17064  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
17065  */
17066 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
17067
17068 /**
17069  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
17070  */
17071 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17072
17073 /**
17074  * Constructs a new TxCreationKeys given each field
17075  */
17076 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);
17077
17078 /**
17079  * Creates a copy of the TxCreationKeys
17080  */
17081 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
17082
17083 /**
17084  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
17085  */
17086 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
17087
17088 /**
17089  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
17090  */
17091 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
17092
17093 /**
17094  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
17095  */
17096 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
17097
17098 /**
17099  * The public key which is used to sign all commitment transactions, as it appears in the
17100  * on-chain channel lock-in 2-of-2 multisig output.
17101  */
17102 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
17103
17104 /**
17105  * The public key which is used to sign all commitment transactions, as it appears in the
17106  * on-chain channel lock-in 2-of-2 multisig output.
17107  */
17108 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17109
17110 /**
17111  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
17112  * revocation keys. This is combined with the per-commitment-secret generated by the
17113  * counterparty to create a secret which the counterparty can reveal to revoke previous
17114  * states.
17115  */
17116 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
17117
17118 /**
17119  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
17120  * revocation keys. This is combined with the per-commitment-secret generated by the
17121  * counterparty to create a secret which the counterparty can reveal to revoke previous
17122  * states.
17123  */
17124 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17125
17126 /**
17127  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
17128  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
17129  * static across every commitment transaction.
17130  */
17131 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
17132
17133 /**
17134  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
17135  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
17136  * static across every commitment transaction.
17137  */
17138 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17139
17140 /**
17141  * The base point which is used (with derive_public_key) to derive a per-commitment payment
17142  * public key which receives non-HTLC-encumbered funds which are only available for spending
17143  * after some delay (or can be claimed via the revocation path).
17144  */
17145 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
17146
17147 /**
17148  * The base point which is used (with derive_public_key) to derive a per-commitment payment
17149  * public key which receives non-HTLC-encumbered funds which are only available for spending
17150  * after some delay (or can be claimed via the revocation path).
17151  */
17152 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17153
17154 /**
17155  * The base point which is used (with derive_public_key) to derive a per-commitment public key
17156  * which is used to encumber HTLC-in-flight outputs.
17157  */
17158 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
17159
17160 /**
17161  * The base point which is used (with derive_public_key) to derive a per-commitment public key
17162  * which is used to encumber HTLC-in-flight outputs.
17163  */
17164 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17165
17166 /**
17167  * Constructs a new ChannelPublicKeys given each field
17168  */
17169 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);
17170
17171 /**
17172  * Creates a copy of the ChannelPublicKeys
17173  */
17174 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
17175
17176 /**
17177  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
17178  */
17179 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
17180
17181 /**
17182  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
17183  */
17184 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
17185
17186 /**
17187  * Create per-state keys from channel base points and the per-commitment point.
17188  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
17189  */
17190 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);
17191
17192 /**
17193  * Generate per-state keys from channel static keys.
17194  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
17195  */
17196 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);
17197
17198 /**
17199  * A script either spendable by the revocation
17200  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
17201  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
17202  */
17203 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
17204
17205 /**
17206  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
17207  */
17208 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
17209
17210 /**
17211  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
17212  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
17213  * need to compare this value to whether the commitment transaction in question is that of
17214  * the counterparty or our own.
17215  */
17216 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
17217
17218 /**
17219  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
17220  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
17221  * need to compare this value to whether the commitment transaction in question is that of
17222  * the counterparty or our own.
17223  */
17224 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
17225
17226 /**
17227  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
17228  * this divided by 1000.
17229  */
17230 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
17231
17232 /**
17233  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
17234  * this divided by 1000.
17235  */
17236 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
17237
17238 /**
17239  * The CLTV lock-time at which this HTLC expires.
17240  */
17241 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
17242
17243 /**
17244  * The CLTV lock-time at which this HTLC expires.
17245  */
17246 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
17247
17248 /**
17249  * The hash of the preimage which unlocks this HTLC.
17250  */
17251 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
17252
17253 /**
17254  * The hash of the preimage which unlocks this HTLC.
17255  */
17256 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
17257
17258 /**
17259  * The position within the commitment transactions' outputs. This may be None if the value is
17260  * below the dust limit (in which case no output appears in the commitment transaction and the
17261  * value is spent to additional transaction fees).
17262  */
17263 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
17264
17265 /**
17266  * The position within the commitment transactions' outputs. This may be None if the value is
17267  * below the dust limit (in which case no output appears in the commitment transaction and the
17268  * value is spent to additional transaction fees).
17269  */
17270 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
17271
17272 /**
17273  * Constructs a new HTLCOutputInCommitment given each field
17274  */
17275 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);
17276
17277 /**
17278  * Creates a copy of the HTLCOutputInCommitment
17279  */
17280 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
17281
17282 /**
17283  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
17284  */
17285 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
17286
17287 /**
17288  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
17289  */
17290 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
17291
17292 /**
17293  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
17294  * does not need to have its previous_output_index filled.
17295  */
17296 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, const struct LDKTxCreationKeys *NONNULL_PTR keys);
17297
17298 /**
17299  * Gets the redeemscript for a funding output from the two funding public keys.
17300  * Note that the order of funding public keys does not matter.
17301  */
17302 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
17303
17304 /**
17305  * Builds an unsigned HTLC-Success or HTLC-Timeout transaction from the given channel and HTLC
17306  * parameters. This is used by [`TrustedCommitmentTransaction::get_htlc_sigs`] to fetch the
17307  * transaction which needs signing, and can be used to construct an HTLC transaction which is
17308  * broadcastable given a counterparty HTLC signature.
17309  *
17310  * Panics if htlc.transaction_output_index.is_none() (as such HTLCs do not appear in the
17311  * commitment transaction).
17312  */
17313 struct LDKTransaction build_htlc_transaction(const uint8_t (*commitment_txid)[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);
17314
17315 /**
17316  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
17317  */
17318 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
17319
17320 /**
17321  * Holder public keys
17322  */
17323 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
17324
17325 /**
17326  * Holder public keys
17327  */
17328 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
17329
17330 /**
17331  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
17332  */
17333 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
17334
17335 /**
17336  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
17337  */
17338 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
17339
17340 /**
17341  * Whether the holder is the initiator of this channel.
17342  * This is an input to the commitment number obscure factor computation.
17343  */
17344 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
17345
17346 /**
17347  * Whether the holder is the initiator of this channel.
17348  * This is an input to the commitment number obscure factor computation.
17349  */
17350 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
17351
17352 /**
17353  * The late-bound counterparty channel transaction parameters.
17354  * These parameters are populated at the point in the protocol where the counterparty provides them.
17355  *
17356  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
17357  */
17358 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
17359
17360 /**
17361  * The late-bound counterparty channel transaction parameters.
17362  * These parameters are populated at the point in the protocol where the counterparty provides them.
17363  *
17364  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
17365  */
17366 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
17367
17368 /**
17369  * The late-bound funding outpoint
17370  *
17371  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
17372  */
17373 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
17374
17375 /**
17376  * The late-bound funding outpoint
17377  *
17378  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
17379  */
17380 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
17381
17382 /**
17383  * Constructs a new ChannelTransactionParameters given each field
17384  */
17385 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);
17386
17387 /**
17388  * Creates a copy of the ChannelTransactionParameters
17389  */
17390 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
17391
17392 /**
17393  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
17394  */
17395 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
17396
17397 /**
17398  * Counter-party public keys
17399  */
17400 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
17401
17402 /**
17403  * Counter-party public keys
17404  */
17405 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
17406
17407 /**
17408  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
17409  */
17410 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
17411
17412 /**
17413  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
17414  */
17415 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
17416
17417 /**
17418  * Constructs a new CounterpartyChannelTransactionParameters given each field
17419  */
17420 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
17421
17422 /**
17423  * Creates a copy of the CounterpartyChannelTransactionParameters
17424  */
17425 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
17426
17427 /**
17428  * Whether the late bound parameters are populated.
17429  */
17430 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
17431
17432 /**
17433  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
17434  * given that the holder is the broadcaster.
17435  *
17436  * self.is_populated() must be true before calling this function.
17437  */
17438 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
17439
17440 /**
17441  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
17442  * given that the counterparty is the broadcaster.
17443  *
17444  * self.is_populated() must be true before calling this function.
17445  */
17446 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
17447
17448 /**
17449  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
17450  */
17451 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
17452
17453 /**
17454  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
17455  */
17456 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
17457
17458 /**
17459  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
17460  */
17461 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
17462
17463 /**
17464  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
17465  */
17466 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
17467
17468 /**
17469  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
17470  */
17471 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
17472
17473 /**
17474  * Get the channel pubkeys for the broadcaster
17475  */
17476 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
17477
17478 /**
17479  * Get the channel pubkeys for the countersignatory
17480  */
17481 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
17482
17483 /**
17484  * Get the contest delay applicable to the transactions.
17485  * Note that the contest delay was selected by the countersignatory.
17486  */
17487 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
17488
17489 /**
17490  * Whether the channel is outbound from the broadcaster.
17491  *
17492  * The boolean representing the side that initiated the channel is
17493  * an input to the commitment number obscure factor computation.
17494  */
17495 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
17496
17497 /**
17498  * The funding outpoint
17499  */
17500 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
17501
17502 /**
17503  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
17504  */
17505 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
17506
17507 /**
17508  * Our counterparty's signature for the transaction
17509  */
17510 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
17511
17512 /**
17513  * Our counterparty's signature for the transaction
17514  */
17515 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
17516
17517 /**
17518  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
17519  */
17520 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
17521
17522 /**
17523  * Creates a copy of the HolderCommitmentTransaction
17524  */
17525 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
17526
17527 /**
17528  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
17529  */
17530 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
17531
17532 /**
17533  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
17534  */
17535 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
17536
17537 /**
17538  * Create a new holder transaction with the given counterparty signatures.
17539  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
17540  */
17541 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);
17542
17543 /**
17544  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
17545  */
17546 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
17547
17548 /**
17549  * The commitment transaction
17550  */
17551 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
17552
17553 /**
17554  * The commitment transaction
17555  */
17556 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
17557
17558 /**
17559  * The txid for the commitment transaction.
17560  *
17561  * This is provided as a performance optimization, instead of calling transaction.txid()
17562  * multiple times.
17563  */
17564 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
17565
17566 /**
17567  * The txid for the commitment transaction.
17568  *
17569  * This is provided as a performance optimization, instead of calling transaction.txid()
17570  * multiple times.
17571  */
17572 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
17573
17574 /**
17575  * Constructs a new BuiltCommitmentTransaction given each field
17576  */
17577 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
17578
17579 /**
17580  * Creates a copy of the BuiltCommitmentTransaction
17581  */
17582 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
17583
17584 /**
17585  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
17586  */
17587 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
17588
17589 /**
17590  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
17591  */
17592 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
17593
17594 /**
17595  * Get the SIGHASH_ALL sighash value of the transaction.
17596  *
17597  * This can be used to verify a signature.
17598  */
17599 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);
17600
17601 /**
17602  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
17603  * because we are about to broadcast a holder transaction.
17604  */
17605 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);
17606
17607 /**
17608  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
17609  */
17610 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
17611
17612 /**
17613  * Creates a copy of the CommitmentTransaction
17614  */
17615 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
17616
17617 /**
17618  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
17619  */
17620 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
17621
17622 /**
17623  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
17624  */
17625 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
17626
17627 /**
17628  * The backwards-counting commitment number
17629  */
17630 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
17631
17632 /**
17633  * The value to be sent to the broadcaster
17634  */
17635 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
17636
17637 /**
17638  * The value to be sent to the counterparty
17639  */
17640 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
17641
17642 /**
17643  * The feerate paid per 1000-weight-unit in this commitment transaction.
17644  */
17645 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
17646
17647 /**
17648  * Trust our pre-built transaction and derived transaction creation public keys.
17649  *
17650  * Applies a wrapper which allows access to these fields.
17651  *
17652  * This should only be used if you fully trust the builder of this object.  It should not
17653  *\tbe used by an external signer - instead use the verify function.
17654  */
17655 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
17656
17657 /**
17658  * Verify our pre-built transaction and derived transaction creation public keys.
17659  *
17660  * Applies a wrapper which allows access to these fields.
17661  *
17662  * An external validating signer must call this method before signing
17663  * or using the built transaction.
17664  */
17665 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);
17666
17667 /**
17668  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
17669  */
17670 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
17671
17672 /**
17673  * The transaction ID of the built Bitcoin transaction
17674  */
17675 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
17676
17677 /**
17678  * The pre-built Bitcoin commitment transaction
17679  */
17680 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
17681
17682 /**
17683  * The pre-calculated transaction creation public keys.
17684  */
17685 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
17686
17687 /**
17688  * Get a signature for each HTLC which was included in the commitment transaction (ie for
17689  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
17690  *
17691  * The returned Vec has one entry for each HTLC, and in the same order.
17692  */
17693 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);
17694
17695 /**
17696  * Commitment transaction numbers which appear in the transactions themselves are XOR'd with a
17697  * shared secret first. This prevents on-chain observers from discovering how many commitment
17698  * transactions occurred in a channel before it was closed.
17699  *
17700  * This function gets the shared secret from relevant channel public keys and can be used to
17701  * \"decrypt\" the commitment transaction number given a commitment transaction on-chain.
17702  */
17703 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
17704
17705 /**
17706  * Checks if two InitFeaturess contain equal inner contents.
17707  * This ignores pointers and is_owned flags and looks at the values in fields.
17708  * Two objects with NULL inner values will be considered "equal" here.
17709  */
17710 bool InitFeatures_eq(const struct LDKInitFeatures *NONNULL_PTR a, const struct LDKInitFeatures *NONNULL_PTR b);
17711
17712 /**
17713  * Checks if two NodeFeaturess contain equal inner contents.
17714  * This ignores pointers and is_owned flags and looks at the values in fields.
17715  * Two objects with NULL inner values will be considered "equal" here.
17716  */
17717 bool NodeFeatures_eq(const struct LDKNodeFeatures *NONNULL_PTR a, const struct LDKNodeFeatures *NONNULL_PTR b);
17718
17719 /**
17720  * Checks if two ChannelFeaturess contain equal inner contents.
17721  * This ignores pointers and is_owned flags and looks at the values in fields.
17722  * Two objects with NULL inner values will be considered "equal" here.
17723  */
17724 bool ChannelFeatures_eq(const struct LDKChannelFeatures *NONNULL_PTR a, const struct LDKChannelFeatures *NONNULL_PTR b);
17725
17726 /**
17727  * Checks if two InvoiceFeaturess contain equal inner contents.
17728  * This ignores pointers and is_owned flags and looks at the values in fields.
17729  * Two objects with NULL inner values will be considered "equal" here.
17730  */
17731 bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
17732
17733 /**
17734  * Creates a copy of the InitFeatures
17735  */
17736 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
17737
17738 /**
17739  * Creates a copy of the NodeFeatures
17740  */
17741 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
17742
17743 /**
17744  * Creates a copy of the ChannelFeatures
17745  */
17746 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
17747
17748 /**
17749  * Creates a copy of the InvoiceFeatures
17750  */
17751 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
17752
17753 /**
17754  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
17755  */
17756 void InitFeatures_free(struct LDKInitFeatures this_obj);
17757
17758 /**
17759  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
17760  */
17761 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
17762
17763 /**
17764  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
17765  */
17766 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
17767
17768 /**
17769  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
17770  */
17771 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
17772
17773 /**
17774  * Create a blank Features with no features set
17775  */
17776 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
17777
17778 /**
17779  * Creates a Features with the bits set which are known by the implementation
17780  */
17781 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
17782
17783 /**
17784  * Create a blank Features with no features set
17785  */
17786 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
17787
17788 /**
17789  * Creates a Features with the bits set which are known by the implementation
17790  */
17791 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
17792
17793 /**
17794  * Create a blank Features with no features set
17795  */
17796 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
17797
17798 /**
17799  * Creates a Features with the bits set which are known by the implementation
17800  */
17801 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
17802
17803 /**
17804  * Create a blank Features with no features set
17805  */
17806 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
17807
17808 /**
17809  * Creates a Features with the bits set which are known by the implementation
17810  */
17811 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
17812
17813 /**
17814  * Returns whether the `payment_secret` feature is supported.
17815  */
17816 MUST_USE_RES bool InitFeatures_supports_payment_secret(const struct LDKInitFeatures *NONNULL_PTR this_arg);
17817
17818 /**
17819  * Returns whether the `payment_secret` feature is supported.
17820  */
17821 MUST_USE_RES bool NodeFeatures_supports_payment_secret(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
17822
17823 /**
17824  * Returns whether the `payment_secret` feature is supported.
17825  */
17826 MUST_USE_RES bool InvoiceFeatures_supports_payment_secret(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
17827
17828 /**
17829  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
17830  */
17831 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
17832
17833 /**
17834  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
17835  */
17836 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
17837
17838 /**
17839  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
17840  */
17841 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
17842
17843 /**
17844  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
17845  */
17846 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
17847
17848 /**
17849  * Read a InitFeatures from a byte array, created by InitFeatures_write
17850  */
17851 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
17852
17853 /**
17854  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
17855  */
17856 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
17857
17858 /**
17859  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
17860  */
17861 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
17862
17863 /**
17864  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
17865  */
17866 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
17867
17868 /**
17869  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
17870  */
17871 void RouteHop_free(struct LDKRouteHop this_obj);
17872
17873 /**
17874  * The node_id of the node at this hop.
17875  */
17876 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
17877
17878 /**
17879  * The node_id of the node at this hop.
17880  */
17881 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
17882
17883 /**
17884  * The node_announcement features of the node at this hop. For the last hop, these may be
17885  * amended to match the features present in the invoice this node generated.
17886  */
17887 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
17888
17889 /**
17890  * The node_announcement features of the node at this hop. For the last hop, these may be
17891  * amended to match the features present in the invoice this node generated.
17892  */
17893 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
17894
17895 /**
17896  * The channel that should be used from the previous hop to reach this node.
17897  */
17898 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
17899
17900 /**
17901  * The channel that should be used from the previous hop to reach this node.
17902  */
17903 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
17904
17905 /**
17906  * The channel_announcement features of the channel that should be used from the previous hop
17907  * to reach this node.
17908  */
17909 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
17910
17911 /**
17912  * The channel_announcement features of the channel that should be used from the previous hop
17913  * to reach this node.
17914  */
17915 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
17916
17917 /**
17918  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
17919  * For the last hop, this should be the full value of the payment (might be more than
17920  * requested if we had to match htlc_minimum_msat).
17921  */
17922 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
17923
17924 /**
17925  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
17926  * For the last hop, this should be the full value of the payment (might be more than
17927  * requested if we had to match htlc_minimum_msat).
17928  */
17929 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
17930
17931 /**
17932  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
17933  * expected at the destination, in excess of the current block height.
17934  */
17935 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
17936
17937 /**
17938  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
17939  * expected at the destination, in excess of the current block height.
17940  */
17941 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
17942
17943 /**
17944  * Constructs a new RouteHop given each field
17945  */
17946 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);
17947
17948 /**
17949  * Creates a copy of the RouteHop
17950  */
17951 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
17952
17953 /**
17954  * Serialize the RouteHop object into a byte array which can be read by RouteHop_read
17955  */
17956 struct LDKCVec_u8Z RouteHop_write(const struct LDKRouteHop *NONNULL_PTR obj);
17957
17958 /**
17959  * Read a RouteHop from a byte array, created by RouteHop_write
17960  */
17961 struct LDKCResult_RouteHopDecodeErrorZ RouteHop_read(struct LDKu8slice ser);
17962
17963 /**
17964  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
17965  */
17966 void Route_free(struct LDKRoute this_obj);
17967
17968 /**
17969  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
17970  * last RouteHop in each path must be the same.
17971  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
17972  * destination. Thus, this must always be at least length one. While the maximum length of any
17973  * given path is variable, keeping the length of any path to less than 20 should currently
17974  * ensure it is viable.
17975  */
17976 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
17977
17978 /**
17979  * Constructs a new Route given each field
17980  */
17981 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg);
17982
17983 /**
17984  * Creates a copy of the Route
17985  */
17986 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
17987
17988 /**
17989  * Serialize the Route object into a byte array which can be read by Route_read
17990  */
17991 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
17992
17993 /**
17994  * Read a Route from a byte array, created by Route_write
17995  */
17996 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
17997
17998 /**
17999  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
18000  */
18001 void RouteHint_free(struct LDKRouteHint this_obj);
18002
18003 /**
18004  * Checks if two RouteHints contain equal inner contents.
18005  * This ignores pointers and is_owned flags and looks at the values in fields.
18006  * Two objects with NULL inner values will be considered "equal" here.
18007  */
18008 bool RouteHint_eq(const struct LDKRouteHint *NONNULL_PTR a, const struct LDKRouteHint *NONNULL_PTR b);
18009
18010 /**
18011  * Creates a copy of the RouteHint
18012  */
18013 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
18014
18015 /**
18016  * Frees any resources used by the RouteHintHop, if is_owned is set and inner is non-NULL.
18017  */
18018 void RouteHintHop_free(struct LDKRouteHintHop this_obj);
18019
18020 /**
18021  * The node_id of the non-target end of the route
18022  */
18023 struct LDKPublicKey RouteHintHop_get_src_node_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
18024
18025 /**
18026  * The node_id of the non-target end of the route
18027  */
18028 void RouteHintHop_set_src_node_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18029
18030 /**
18031  * The short_channel_id of this channel
18032  */
18033 uint64_t RouteHintHop_get_short_channel_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
18034
18035 /**
18036  * The short_channel_id of this channel
18037  */
18038 void RouteHintHop_set_short_channel_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint64_t val);
18039
18040 /**
18041  * The fees which must be paid to use this channel
18042  */
18043 struct LDKRoutingFees RouteHintHop_get_fees(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
18044
18045 /**
18046  * The fees which must be paid to use this channel
18047  */
18048 void RouteHintHop_set_fees(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
18049
18050 /**
18051  * The difference in CLTV values between this node and the next node.
18052  */
18053 uint16_t RouteHintHop_get_cltv_expiry_delta(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
18054
18055 /**
18056  * The difference in CLTV values between this node and the next node.
18057  */
18058 void RouteHintHop_set_cltv_expiry_delta(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint16_t val);
18059
18060 /**
18061  * The minimum value, in msat, which must be relayed to the next hop.
18062  */
18063 struct LDKCOption_u64Z RouteHintHop_get_htlc_minimum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
18064
18065 /**
18066  * The minimum value, in msat, which must be relayed to the next hop.
18067  */
18068 void RouteHintHop_set_htlc_minimum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
18069
18070 /**
18071  * The maximum value in msat available for routing with a single HTLC.
18072  */
18073 struct LDKCOption_u64Z RouteHintHop_get_htlc_maximum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
18074
18075 /**
18076  * The maximum value in msat available for routing with a single HTLC.
18077  */
18078 void RouteHintHop_set_htlc_maximum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
18079
18080 /**
18081  * Constructs a new RouteHintHop given each field
18082  */
18083 MUST_USE_RES struct LDKRouteHintHop RouteHintHop_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);
18084
18085 /**
18086  * Checks if two RouteHintHops contain equal inner contents.
18087  * This ignores pointers and is_owned flags and looks at the values in fields.
18088  * Two objects with NULL inner values will be considered "equal" here.
18089  */
18090 bool RouteHintHop_eq(const struct LDKRouteHintHop *NONNULL_PTR a, const struct LDKRouteHintHop *NONNULL_PTR b);
18091
18092 /**
18093  * Creates a copy of the RouteHintHop
18094  */
18095 struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
18096
18097 /**
18098  * Gets a keysend route from us (payer) to the given target node (payee). This is needed because
18099  * keysend payments do not have an invoice from which to pull the payee's supported features, which
18100  * makes it tricky to otherwise supply the `payee_features` parameter of `get_route`.
18101  *
18102  * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
18103  */
18104 struct LDKCResult_RouteLightningErrorZ get_keysend_route(struct LDKPublicKey our_node_id, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKPublicKey payee, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKCVec_RouteHintZ last_hops, uint64_t final_value_msat, uint32_t final_cltv, struct LDKLogger logger);
18105
18106 /**
18107  * Gets a route from us (payer) to the given target node (payee).
18108  *
18109  * If the payee provided features in their invoice, they should be provided via payee_features.
18110  * Without this, MPP will only be used if the payee's features are available in the network graph.
18111  *
18112  * Private routing paths between a public node and the target may be included in `last_hops`.
18113  * Currently, only the last hop in each path is considered.
18114  *
18115  * If some channels aren't announced, it may be useful to fill in a first_hops with the
18116  * results from a local ChannelManager::list_usable_channels() call. If it is filled in, our
18117  * view of our local channels (from net_graph_msg_handler) will be ignored, and only those
18118  * in first_hops will be used.
18119  *
18120  * Panics if first_hops contains channels without short_channel_ids
18121  * (ChannelManager::list_usable_channels will never include such channels).
18122  *
18123  * The fees on channels from us to next-hops are ignored (as they are assumed to all be
18124  * equal), however the enabled/disabled bit on such channels as well as the
18125  * htlc_minimum_msat/htlc_maximum_msat *are* checked as they may change based on the receiving node.
18126  *
18127  * Note that payee_features (or a relevant inner pointer) may be NULL or all-0s to represent None
18128  * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
18129  */
18130 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);
18131
18132 /**
18133  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
18134  */
18135 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
18136
18137 /**
18138  * Creates a copy of the NetworkGraph
18139  */
18140 struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
18141
18142 /**
18143  * Frees any resources used by the LockedNetworkGraph, if is_owned is set and inner is non-NULL.
18144  */
18145 void LockedNetworkGraph_free(struct LDKLockedNetworkGraph this_obj);
18146
18147 /**
18148  * Frees any resources used by the NetGraphMsgHandler, if is_owned is set and inner is non-NULL.
18149  */
18150 void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
18151
18152 /**
18153  * Creates a new tracker of the actual state of the network of channels and nodes,
18154  * assuming a fresh network graph.
18155  * Chain monitor is used to make sure announced channels exist on-chain,
18156  * channel data is correct, and that the announcement is signed with
18157  * channel owners' keys.
18158  *
18159  * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
18160  */
18161 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(struct LDKThirtyTwoBytes genesis_hash, struct LDKAccess *chain_access, struct LDKLogger logger);
18162
18163 /**
18164  * Creates a new tracker of the actual state of the network of channels and nodes,
18165  * assuming an existing Network Graph.
18166  *
18167  * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
18168  */
18169 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_from_net_graph(struct LDKAccess *chain_access, struct LDKLogger logger, struct LDKNetworkGraph network_graph);
18170
18171 /**
18172  * Adds a provider used to check new announcements. Does not affect
18173  * existing announcements unless they are updated.
18174  * Add, update or remove the provider would replace the current one.
18175  *
18176  * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
18177  */
18178 void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKAccess *chain_access);
18179
18180 /**
18181  * Take a read lock on the network_graph and return it in the C-bindings
18182  * newtype helper. This is likely only useful when called via the C
18183  * bindings as you can call `self.network_graph.read().unwrap()` in Rust
18184  * yourself.
18185  */
18186 MUST_USE_RES struct LDKLockedNetworkGraph NetGraphMsgHandler_read_locked_graph(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
18187
18188 /**
18189  * Get a reference to the NetworkGraph which this read-lock contains.
18190  */
18191 MUST_USE_RES struct LDKNetworkGraph LockedNetworkGraph_graph(const struct LDKLockedNetworkGraph *NONNULL_PTR this_arg);
18192
18193 /**
18194  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
18195  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
18196  */
18197 struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
18198
18199 /**
18200  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
18201  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
18202  */
18203 struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
18204
18205 /**
18206  * Frees any resources used by the DirectionalChannelInfo, if is_owned is set and inner is non-NULL.
18207  */
18208 void DirectionalChannelInfo_free(struct LDKDirectionalChannelInfo this_obj);
18209
18210 /**
18211  * When the last update to the channel direction was issued.
18212  * Value is opaque, as set in the announcement.
18213  */
18214 uint32_t DirectionalChannelInfo_get_last_update(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18215
18216 /**
18217  * When the last update to the channel direction was issued.
18218  * Value is opaque, as set in the announcement.
18219  */
18220 void DirectionalChannelInfo_set_last_update(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint32_t val);
18221
18222 /**
18223  * Whether the channel can be currently used for payments (in this one direction).
18224  */
18225 bool DirectionalChannelInfo_get_enabled(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18226
18227 /**
18228  * Whether the channel can be currently used for payments (in this one direction).
18229  */
18230 void DirectionalChannelInfo_set_enabled(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, bool val);
18231
18232 /**
18233  * The difference in CLTV values that you must have when routing through this channel.
18234  */
18235 uint16_t DirectionalChannelInfo_get_cltv_expiry_delta(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18236
18237 /**
18238  * The difference in CLTV values that you must have when routing through this channel.
18239  */
18240 void DirectionalChannelInfo_set_cltv_expiry_delta(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint16_t val);
18241
18242 /**
18243  * The minimum value, which must be relayed to the next hop via the channel
18244  */
18245 uint64_t DirectionalChannelInfo_get_htlc_minimum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18246
18247 /**
18248  * The minimum value, which must be relayed to the next hop via the channel
18249  */
18250 void DirectionalChannelInfo_set_htlc_minimum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, uint64_t val);
18251
18252 /**
18253  * The maximum value which may be relayed to the next hop via the channel.
18254  */
18255 struct LDKCOption_u64Z DirectionalChannelInfo_get_htlc_maximum_msat(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18256
18257 /**
18258  * The maximum value which may be relayed to the next hop via the channel.
18259  */
18260 void DirectionalChannelInfo_set_htlc_maximum_msat(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
18261
18262 /**
18263  * Fees charged when the channel is used for routing
18264  */
18265 struct LDKRoutingFees DirectionalChannelInfo_get_fees(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18266
18267 /**
18268  * Fees charged when the channel is used for routing
18269  */
18270 void DirectionalChannelInfo_set_fees(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
18271
18272 /**
18273  * Most recent update for the channel received from the network
18274  * Mostly redundant with the data we store in fields explicitly.
18275  * Everything else is useful only for sending out for initial routing sync.
18276  * Not stored if contains excess data to prevent DoS.
18277  *
18278  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18279  */
18280 struct LDKChannelUpdate DirectionalChannelInfo_get_last_update_message(const struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr);
18281
18282 /**
18283  * Most recent update for the channel received from the network
18284  * Mostly redundant with the data we store in fields explicitly.
18285  * Everything else is useful only for sending out for initial routing sync.
18286  * Not stored if contains excess data to prevent DoS.
18287  *
18288  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18289  */
18290 void DirectionalChannelInfo_set_last_update_message(struct LDKDirectionalChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
18291
18292 /**
18293  * Constructs a new DirectionalChannelInfo given each field
18294  */
18295 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);
18296
18297 /**
18298  * Creates a copy of the DirectionalChannelInfo
18299  */
18300 struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig);
18301
18302 /**
18303  * Serialize the DirectionalChannelInfo object into a byte array which can be read by DirectionalChannelInfo_read
18304  */
18305 struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj);
18306
18307 /**
18308  * Read a DirectionalChannelInfo from a byte array, created by DirectionalChannelInfo_write
18309  */
18310 struct LDKCResult_DirectionalChannelInfoDecodeErrorZ DirectionalChannelInfo_read(struct LDKu8slice ser);
18311
18312 /**
18313  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
18314  */
18315 void ChannelInfo_free(struct LDKChannelInfo this_obj);
18316
18317 /**
18318  * Protocol features of a channel communicated during its announcement
18319  */
18320 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18321
18322 /**
18323  * Protocol features of a channel communicated during its announcement
18324  */
18325 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
18326
18327 /**
18328  * Source node of the first direction of a channel
18329  */
18330 struct LDKPublicKey ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18331
18332 /**
18333  * Source node of the first direction of a channel
18334  */
18335 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18336
18337 /**
18338  * Details about the first direction of a channel
18339  *
18340  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18341  */
18342 struct LDKDirectionalChannelInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18343
18344 /**
18345  * Details about the first direction of a channel
18346  *
18347  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18348  */
18349 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
18350
18351 /**
18352  * Source node of the second direction of a channel
18353  */
18354 struct LDKPublicKey ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18355
18356 /**
18357  * Source node of the second direction of a channel
18358  */
18359 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18360
18361 /**
18362  * Details about the second direction of a channel
18363  *
18364  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18365  */
18366 struct LDKDirectionalChannelInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18367
18368 /**
18369  * Details about the second direction of a channel
18370  *
18371  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18372  */
18373 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKDirectionalChannelInfo val);
18374
18375 /**
18376  * The channel capacity as seen on-chain, if chain lookup is available.
18377  */
18378 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18379
18380 /**
18381  * The channel capacity as seen on-chain, if chain lookup is available.
18382  */
18383 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
18384
18385 /**
18386  * An initial announcement of the channel
18387  * Mostly redundant with the data we store in fields explicitly.
18388  * Everything else is useful only for sending out for initial routing sync.
18389  * Not stored if contains excess data to prevent DoS.
18390  *
18391  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18392  */
18393 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
18394
18395 /**
18396  * An initial announcement of the channel
18397  * Mostly redundant with the data we store in fields explicitly.
18398  * Everything else is useful only for sending out for initial routing sync.
18399  * Not stored if contains excess data to prevent DoS.
18400  *
18401  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18402  */
18403 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
18404
18405 /**
18406  * Constructs a new ChannelInfo given each field
18407  */
18408 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);
18409
18410 /**
18411  * Creates a copy of the ChannelInfo
18412  */
18413 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
18414
18415 /**
18416  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
18417  */
18418 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
18419
18420 /**
18421  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
18422  */
18423 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
18424
18425 /**
18426  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
18427  */
18428 void RoutingFees_free(struct LDKRoutingFees this_obj);
18429
18430 /**
18431  * Flat routing fee in satoshis
18432  */
18433 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
18434
18435 /**
18436  * Flat routing fee in satoshis
18437  */
18438 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
18439
18440 /**
18441  * Liquidity-based routing fee in millionths of a routed amount.
18442  * In other words, 10000 is 1%.
18443  */
18444 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
18445
18446 /**
18447  * Liquidity-based routing fee in millionths of a routed amount.
18448  * In other words, 10000 is 1%.
18449  */
18450 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
18451
18452 /**
18453  * Constructs a new RoutingFees given each field
18454  */
18455 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
18456
18457 /**
18458  * Checks if two RoutingFeess contain equal inner contents.
18459  * This ignores pointers and is_owned flags and looks at the values in fields.
18460  * Two objects with NULL inner values will be considered "equal" here.
18461  */
18462 bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
18463
18464 /**
18465  * Creates a copy of the RoutingFees
18466  */
18467 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
18468
18469 /**
18470  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
18471  */
18472 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
18473
18474 /**
18475  * Read a RoutingFees from a byte array, created by RoutingFees_write
18476  */
18477 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
18478
18479 /**
18480  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
18481  */
18482 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
18483
18484 /**
18485  * Protocol features the node announced support for
18486  */
18487 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
18488
18489 /**
18490  * Protocol features the node announced support for
18491  */
18492 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
18493
18494 /**
18495  * When the last known update to the node state was issued.
18496  * Value is opaque, as set in the announcement.
18497  */
18498 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
18499
18500 /**
18501  * When the last known update to the node state was issued.
18502  * Value is opaque, as set in the announcement.
18503  */
18504 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
18505
18506 /**
18507  * Color assigned to the node
18508  */
18509 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
18510
18511 /**
18512  * Color assigned to the node
18513  */
18514 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
18515
18516 /**
18517  * Moniker assigned to the node.
18518  * May be invalid or malicious (eg control chars),
18519  * should not be exposed to the user.
18520  */
18521 const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
18522
18523 /**
18524  * Moniker assigned to the node.
18525  * May be invalid or malicious (eg control chars),
18526  * should not be exposed to the user.
18527  */
18528 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18529
18530 /**
18531  * Internet-level addresses via which one can connect to the node
18532  */
18533 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
18534
18535 /**
18536  * An initial announcement of the node
18537  * Mostly redundant with the data we store in fields explicitly.
18538  * Everything else is useful only for sending out for initial routing sync.
18539  * Not stored if contains excess data to prevent DoS.
18540  *
18541  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18542  */
18543 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
18544
18545 /**
18546  * An initial announcement of the node
18547  * Mostly redundant with the data we store in fields explicitly.
18548  * Everything else is useful only for sending out for initial routing sync.
18549  * Not stored if contains excess data to prevent DoS.
18550  *
18551  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18552  */
18553 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
18554
18555 /**
18556  * Constructs a new NodeAnnouncementInfo given each field
18557  */
18558 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);
18559
18560 /**
18561  * Creates a copy of the NodeAnnouncementInfo
18562  */
18563 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
18564
18565 /**
18566  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
18567  */
18568 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
18569
18570 /**
18571  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
18572  */
18573 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
18574
18575 /**
18576  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
18577  */
18578 void NodeInfo_free(struct LDKNodeInfo this_obj);
18579
18580 /**
18581  * All valid channels a node has announced
18582  */
18583 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
18584
18585 /**
18586  * Lowest fees enabling routing via any of the enabled, known channels to a node.
18587  * The two fields (flat and proportional fee) are independent,
18588  * meaning they don't have to refer to the same channel.
18589  *
18590  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18591  */
18592 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
18593
18594 /**
18595  * Lowest fees enabling routing via any of the enabled, known channels to a node.
18596  * The two fields (flat and proportional fee) are independent,
18597  * meaning they don't have to refer to the same channel.
18598  *
18599  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18600  */
18601 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
18602
18603 /**
18604  * More information about a node from node_announcement.
18605  * Optional because we store a Node entry after learning about it from
18606  * a channel announcement, but before receiving a node announcement.
18607  *
18608  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18609  */
18610 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
18611
18612 /**
18613  * More information about a node from node_announcement.
18614  * Optional because we store a Node entry after learning about it from
18615  * a channel announcement, but before receiving a node announcement.
18616  *
18617  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18618  */
18619 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
18620
18621 /**
18622  * Constructs a new NodeInfo given each field
18623  */
18624 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
18625
18626 /**
18627  * Creates a copy of the NodeInfo
18628  */
18629 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
18630
18631 /**
18632  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
18633  */
18634 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
18635
18636 /**
18637  * Read a NodeInfo from a byte array, created by NodeInfo_write
18638  */
18639 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
18640
18641 /**
18642  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
18643  */
18644 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
18645
18646 /**
18647  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
18648  */
18649 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
18650
18651 /**
18652  * Creates a new, empty, network graph.
18653  */
18654 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
18655
18656 /**
18657  * For an already known node (from channel announcements), update its stored properties from a
18658  * given node announcement.
18659  *
18660  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
18661  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
18662  * routing messages from a source using a protocol other than the lightning P2P protocol.
18663  */
18664 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
18665
18666 /**
18667  * For an already known node (from channel announcements), update its stored properties from a
18668  * given node announcement without verifying the associated signatures. Because we aren't
18669  * given the associated signatures here we cannot relay the node announcement to any of our
18670  * peers.
18671  */
18672 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
18673
18674 /**
18675  * Store or update channel info from a channel announcement.
18676  *
18677  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
18678  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
18679  * routing messages from a source using a protocol other than the lightning P2P protocol.
18680  *
18681  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
18682  * the corresponding UTXO exists on chain and is correctly-formatted.
18683  *
18684  * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
18685  */
18686 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);
18687
18688 /**
18689  * Store or update channel info from a channel announcement without verifying the associated
18690  * signatures. Because we aren't given the associated signatures here we cannot relay the
18691  * channel announcement to any of our peers.
18692  *
18693  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
18694  * the corresponding UTXO exists on chain and is correctly-formatted.
18695  *
18696  * Note that chain_access (or a relevant inner pointer) may be NULL or all-0s to represent None
18697  */
18698 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);
18699
18700 /**
18701  * Close a channel if a corresponding HTLC fail was sent.
18702  * If permanent, removes a channel from the local storage.
18703  * May cause the removal of nodes too, if this was their last channel.
18704  * If not permanent, makes channels unavailable for routing.
18705  */
18706 void NetworkGraph_close_channel_from_update(struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
18707
18708 /**
18709  * For an already known (from announcement) channel, update info about one of the directions
18710  * of the channel.
18711  *
18712  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
18713  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
18714  * routing messages from a source using a protocol other than the lightning P2P protocol.
18715  */
18716 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
18717
18718 /**
18719  * For an already known (from announcement) channel, update info about one of the directions
18720  * of the channel without verifying the associated signatures. Because we aren't given the
18721  * associated signatures here we cannot relay the channel update to any of our peers.
18722  */
18723 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
18724
18725 /**
18726  * Frees any resources used by the FilesystemPersister, if is_owned is set and inner is non-NULL.
18727  */
18728 void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
18729
18730 /**
18731  * Initialize a new FilesystemPersister and set the path to the individual channels'
18732  * files.
18733  */
18734 MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKStr path_to_channel_data);
18735
18736 /**
18737  * Get the directory which was provided when this persister was initialized.
18738  */
18739 MUST_USE_RES struct LDKStr FilesystemPersister_get_data_dir(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
18740
18741 /**
18742  * Writes the provided `ChannelManager` to the path provided at `FilesystemPersister`
18743  * initialization, within a file called \"manager\".
18744  */
18745 MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_manager(struct LDKStr data_dir, const struct LDKChannelManager *NONNULL_PTR manager);
18746
18747 /**
18748  * Read `ChannelMonitor`s from disk.
18749  */
18750 MUST_USE_RES struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ FilesystemPersister_read_channelmonitors(const struct LDKFilesystemPersister *NONNULL_PTR this_arg, struct LDKKeysInterface keys_manager);
18751
18752 /**
18753  * Constructs a new Persist which calls the relevant methods on this_arg.
18754  * This copies the `inner` pointer in this_arg and thus the returned Persist must be freed before this_arg is
18755  */
18756 struct LDKPersist FilesystemPersister_as_Persist(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
18757
18758 /**
18759  * Frees any resources used by the BackgroundProcessor, if is_owned is set and inner is non-NULL.
18760  */
18761 void BackgroundProcessor_free(struct LDKBackgroundProcessor this_obj);
18762
18763 /**
18764  * Calls the free function if one is set
18765  */
18766 void ChannelManagerPersister_free(struct LDKChannelManagerPersister this_ptr);
18767
18768 /**
18769  * Start a background thread that takes care of responsibilities enumerated in the [top-level
18770  * documentation].
18771  *
18772  * The thread runs indefinitely unless the object is dropped, [`stop`] is called, or
18773  * `persist_manager` returns an error. In case of an error, the error is retrieved by calling
18774  * either [`join`] or [`stop`].
18775  *
18776  * Typically, users should either implement [`ChannelManagerPersister`] to never return an
18777  * error or call [`join`] and handle any error that may arise. For the latter case, the
18778  * `BackgroundProcessor` must be restarted by calling `start` again after handling the error.
18779  *
18780  * `persist_manager` is responsible for writing out the [`ChannelManager`] to disk, and/or
18781  * uploading to one or more backup services. See [`ChannelManager::write`] for writing out a
18782  * [`ChannelManager`]. See [`FilesystemPersister::persist_manager`] for Rust-Lightning's
18783  * provided implementation.
18784  *
18785  * [top-level documentation]: Self
18786  * [`join`]: Self::join
18787  * [`stop`]: Self::stop
18788  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
18789  * [`ChannelManager::write`]: lightning::ln::channelmanager::ChannelManager#impl-Writeable
18790  * [`FilesystemPersister::persist_manager`]: lightning_persister::FilesystemPersister::persist_manager
18791  */
18792 MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKChannelManagerPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger);
18793
18794 /**
18795  * Join `BackgroundProcessor`'s thread, returning any error that occurred while persisting
18796  * [`ChannelManager`].
18797  *
18798  * # Panics
18799  *
18800  * This function panics if the background thread has panicked such as while persisting or
18801  * handling events.
18802  *
18803  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
18804  */
18805 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_join(struct LDKBackgroundProcessor this_arg);
18806
18807 /**
18808  * Stop `BackgroundProcessor`'s thread, returning any error that occurred while persisting
18809  * [`ChannelManager`].
18810  *
18811  * # Panics
18812  *
18813  * This function panics if the background thread has panicked such as while persisting or
18814  * handling events.
18815  *
18816  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
18817  */
18818 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_stop(struct LDKBackgroundProcessor this_arg);
18819
18820 /**
18821  * **Call this function on startup to ensure that all assumptions about the platform are valid.**
18822  *
18823  * Unfortunately we have to make assumptions about the upper bounds of the `SystemTime` type on
18824  * your platform which we can't fully verify at compile time and which isn't part of it's contract.
18825  * To our best knowledge our assumptions hold for all platforms officially supported by rust, but
18826  * since this check is fast we recommend to do it anyway.
18827  *
18828  * If this function fails this is considered a bug. Please open an issue describing your
18829  * platform and stating your current system time.
18830  *
18831  * # Panics
18832  * If the check fails this function panics. By calling this function on startup you ensure that
18833  * this wont happen at an arbitrary later point in time.
18834  */
18835 void check_platform(void);
18836
18837 /**
18838  * Frees any resources used by the Invoice, if is_owned is set and inner is non-NULL.
18839  */
18840 void Invoice_free(struct LDKInvoice this_obj);
18841
18842 /**
18843  * Checks if two Invoices contain equal inner contents.
18844  * This ignores pointers and is_owned flags and looks at the values in fields.
18845  * Two objects with NULL inner values will be considered "equal" here.
18846  */
18847 bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
18848
18849 /**
18850  * Creates a copy of the Invoice
18851  */
18852 struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
18853
18854 /**
18855  * Frees any resources used by the SignedRawInvoice, if is_owned is set and inner is non-NULL.
18856  */
18857 void SignedRawInvoice_free(struct LDKSignedRawInvoice this_obj);
18858
18859 /**
18860  * Checks if two SignedRawInvoices contain equal inner contents.
18861  * This ignores pointers and is_owned flags and looks at the values in fields.
18862  * Two objects with NULL inner values will be considered "equal" here.
18863  */
18864 bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
18865
18866 /**
18867  * Creates a copy of the SignedRawInvoice
18868  */
18869 struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
18870
18871 /**
18872  * Frees any resources used by the RawInvoice, if is_owned is set and inner is non-NULL.
18873  */
18874 void RawInvoice_free(struct LDKRawInvoice this_obj);
18875
18876 /**
18877  * data part
18878  */
18879 struct LDKRawDataPart RawInvoice_get_data(const struct LDKRawInvoice *NONNULL_PTR this_ptr);
18880
18881 /**
18882  * data part
18883  */
18884 void RawInvoice_set_data(struct LDKRawInvoice *NONNULL_PTR this_ptr, struct LDKRawDataPart val);
18885
18886 /**
18887  * Checks if two RawInvoices contain equal inner contents.
18888  * This ignores pointers and is_owned flags and looks at the values in fields.
18889  * Two objects with NULL inner values will be considered "equal" here.
18890  */
18891 bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
18892
18893 /**
18894  * Creates a copy of the RawInvoice
18895  */
18896 struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
18897
18898 /**
18899  * Frees any resources used by the RawDataPart, if is_owned is set and inner is non-NULL.
18900  */
18901 void RawDataPart_free(struct LDKRawDataPart this_obj);
18902
18903 /**
18904  * generation time of the invoice
18905  */
18906 struct LDKPositiveTimestamp RawDataPart_get_timestamp(const struct LDKRawDataPart *NONNULL_PTR this_ptr);
18907
18908 /**
18909  * generation time of the invoice
18910  */
18911 void RawDataPart_set_timestamp(struct LDKRawDataPart *NONNULL_PTR this_ptr, struct LDKPositiveTimestamp val);
18912
18913 /**
18914  * Checks if two RawDataParts contain equal inner contents.
18915  * This ignores pointers and is_owned flags and looks at the values in fields.
18916  * Two objects with NULL inner values will be considered "equal" here.
18917  */
18918 bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
18919
18920 /**
18921  * Creates a copy of the RawDataPart
18922  */
18923 struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
18924
18925 /**
18926  * Frees any resources used by the PositiveTimestamp, if is_owned is set and inner is non-NULL.
18927  */
18928 void PositiveTimestamp_free(struct LDKPositiveTimestamp this_obj);
18929
18930 /**
18931  * Checks if two PositiveTimestamps contain equal inner contents.
18932  * This ignores pointers and is_owned flags and looks at the values in fields.
18933  * Two objects with NULL inner values will be considered "equal" here.
18934  */
18935 bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
18936
18937 /**
18938  * Creates a copy of the PositiveTimestamp
18939  */
18940 struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
18941
18942 /**
18943  * Creates a copy of the SiPrefix
18944  */
18945 enum LDKSiPrefix SiPrefix_clone(const enum LDKSiPrefix *NONNULL_PTR orig);
18946
18947 /**
18948  * Utility method to constructs a new Milli-variant SiPrefix
18949  */
18950 enum LDKSiPrefix SiPrefix_milli(void);
18951
18952 /**
18953  * Utility method to constructs a new Micro-variant SiPrefix
18954  */
18955 enum LDKSiPrefix SiPrefix_micro(void);
18956
18957 /**
18958  * Utility method to constructs a new Nano-variant SiPrefix
18959  */
18960 enum LDKSiPrefix SiPrefix_nano(void);
18961
18962 /**
18963  * Utility method to constructs a new Pico-variant SiPrefix
18964  */
18965 enum LDKSiPrefix SiPrefix_pico(void);
18966
18967 /**
18968  * Checks if two SiPrefixs contain equal inner contents.
18969  * This ignores pointers and is_owned flags and looks at the values in fields.
18970  */
18971 bool SiPrefix_eq(const enum LDKSiPrefix *NONNULL_PTR a, const enum LDKSiPrefix *NONNULL_PTR b);
18972
18973 /**
18974  * Returns the multiplier to go from a BTC value to picoBTC implied by this SiPrefix.
18975  * This is effectively 10^12 * the prefix multiplier
18976  */
18977 MUST_USE_RES uint64_t SiPrefix_multiplier(const enum LDKSiPrefix *NONNULL_PTR this_arg);
18978
18979 /**
18980  * Creates a copy of the Currency
18981  */
18982 enum LDKCurrency Currency_clone(const enum LDKCurrency *NONNULL_PTR orig);
18983
18984 /**
18985  * Utility method to constructs a new Bitcoin-variant Currency
18986  */
18987 enum LDKCurrency Currency_bitcoin(void);
18988
18989 /**
18990  * Utility method to constructs a new BitcoinTestnet-variant Currency
18991  */
18992 enum LDKCurrency Currency_bitcoin_testnet(void);
18993
18994 /**
18995  * Utility method to constructs a new Regtest-variant Currency
18996  */
18997 enum LDKCurrency Currency_regtest(void);
18998
18999 /**
19000  * Utility method to constructs a new Simnet-variant Currency
19001  */
19002 enum LDKCurrency Currency_simnet(void);
19003
19004 /**
19005  * Utility method to constructs a new Signet-variant Currency
19006  */
19007 enum LDKCurrency Currency_signet(void);
19008
19009 /**
19010  * Checks if two Currencys contain equal inner contents.
19011  * This ignores pointers and is_owned flags and looks at the values in fields.
19012  */
19013 bool Currency_eq(const enum LDKCurrency *NONNULL_PTR a, const enum LDKCurrency *NONNULL_PTR b);
19014
19015 /**
19016  * Frees any resources used by the Sha256, if is_owned is set and inner is non-NULL.
19017  */
19018 void Sha256_free(struct LDKSha256 this_obj);
19019
19020 /**
19021  * Checks if two Sha256s contain equal inner contents.
19022  * This ignores pointers and is_owned flags and looks at the values in fields.
19023  * Two objects with NULL inner values will be considered "equal" here.
19024  */
19025 bool Sha256_eq(const struct LDKSha256 *NONNULL_PTR a, const struct LDKSha256 *NONNULL_PTR b);
19026
19027 /**
19028  * Creates a copy of the Sha256
19029  */
19030 struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
19031
19032 /**
19033  * Frees any resources used by the Description, if is_owned is set and inner is non-NULL.
19034  */
19035 void Description_free(struct LDKDescription this_obj);
19036
19037 /**
19038  * Checks if two Descriptions contain equal inner contents.
19039  * This ignores pointers and is_owned flags and looks at the values in fields.
19040  * Two objects with NULL inner values will be considered "equal" here.
19041  */
19042 bool Description_eq(const struct LDKDescription *NONNULL_PTR a, const struct LDKDescription *NONNULL_PTR b);
19043
19044 /**
19045  * Creates a copy of the Description
19046  */
19047 struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
19048
19049 /**
19050  * Frees any resources used by the PayeePubKey, if is_owned is set and inner is non-NULL.
19051  */
19052 void PayeePubKey_free(struct LDKPayeePubKey this_obj);
19053
19054 /**
19055  * Checks if two PayeePubKeys contain equal inner contents.
19056  * This ignores pointers and is_owned flags and looks at the values in fields.
19057  * Two objects with NULL inner values will be considered "equal" here.
19058  */
19059 bool PayeePubKey_eq(const struct LDKPayeePubKey *NONNULL_PTR a, const struct LDKPayeePubKey *NONNULL_PTR b);
19060
19061 /**
19062  * Creates a copy of the PayeePubKey
19063  */
19064 struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
19065
19066 /**
19067  * Frees any resources used by the ExpiryTime, if is_owned is set and inner is non-NULL.
19068  */
19069 void ExpiryTime_free(struct LDKExpiryTime this_obj);
19070
19071 /**
19072  * Checks if two ExpiryTimes contain equal inner contents.
19073  * This ignores pointers and is_owned flags and looks at the values in fields.
19074  * Two objects with NULL inner values will be considered "equal" here.
19075  */
19076 bool ExpiryTime_eq(const struct LDKExpiryTime *NONNULL_PTR a, const struct LDKExpiryTime *NONNULL_PTR b);
19077
19078 /**
19079  * Creates a copy of the ExpiryTime
19080  */
19081 struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
19082
19083 /**
19084  * Frees any resources used by the MinFinalCltvExpiry, if is_owned is set and inner is non-NULL.
19085  */
19086 void MinFinalCltvExpiry_free(struct LDKMinFinalCltvExpiry this_obj);
19087
19088 /**
19089  * Checks if two MinFinalCltvExpirys contain equal inner contents.
19090  * This ignores pointers and is_owned flags and looks at the values in fields.
19091  * Two objects with NULL inner values will be considered "equal" here.
19092  */
19093 bool MinFinalCltvExpiry_eq(const struct LDKMinFinalCltvExpiry *NONNULL_PTR a, const struct LDKMinFinalCltvExpiry *NONNULL_PTR b);
19094
19095 /**
19096  * Creates a copy of the MinFinalCltvExpiry
19097  */
19098 struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
19099
19100 /**
19101  * Frees any resources used by the Fallback
19102  */
19103 void Fallback_free(struct LDKFallback this_ptr);
19104
19105 /**
19106  * Creates a copy of the Fallback
19107  */
19108 struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
19109
19110 /**
19111  * Utility method to constructs a new SegWitProgram-variant Fallback
19112  */
19113 struct LDKFallback Fallback_seg_wit_program(struct LDKu5 version, struct LDKCVec_u8Z program);
19114
19115 /**
19116  * Utility method to constructs a new PubKeyHash-variant Fallback
19117  */
19118 struct LDKFallback Fallback_pub_key_hash(struct LDKTwentyBytes a);
19119
19120 /**
19121  * Utility method to constructs a new ScriptHash-variant Fallback
19122  */
19123 struct LDKFallback Fallback_script_hash(struct LDKTwentyBytes a);
19124
19125 /**
19126  * Checks if two Fallbacks contain equal inner contents.
19127  * This ignores pointers and is_owned flags and looks at the values in fields.
19128  */
19129 bool Fallback_eq(const struct LDKFallback *NONNULL_PTR a, const struct LDKFallback *NONNULL_PTR b);
19130
19131 /**
19132  * Frees any resources used by the InvoiceSignature, if is_owned is set and inner is non-NULL.
19133  */
19134 void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
19135
19136 /**
19137  * Checks if two InvoiceSignatures contain equal inner contents.
19138  * This ignores pointers and is_owned flags and looks at the values in fields.
19139  * Two objects with NULL inner values will be considered "equal" here.
19140  */
19141 bool InvoiceSignature_eq(const struct LDKInvoiceSignature *NONNULL_PTR a, const struct LDKInvoiceSignature *NONNULL_PTR b);
19142
19143 /**
19144  * Creates a copy of the InvoiceSignature
19145  */
19146 struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
19147
19148 /**
19149  * Frees any resources used by the PrivateRoute, if is_owned is set and inner is non-NULL.
19150  */
19151 void PrivateRoute_free(struct LDKPrivateRoute this_obj);
19152
19153 /**
19154  * Checks if two PrivateRoutes contain equal inner contents.
19155  * This ignores pointers and is_owned flags and looks at the values in fields.
19156  * Two objects with NULL inner values will be considered "equal" here.
19157  */
19158 bool PrivateRoute_eq(const struct LDKPrivateRoute *NONNULL_PTR a, const struct LDKPrivateRoute *NONNULL_PTR b);
19159
19160 /**
19161  * Creates a copy of the PrivateRoute
19162  */
19163 struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
19164
19165 /**
19166  * Disassembles the `SignedRawInvoice` into its three parts:
19167  *  1. raw invoice
19168  *  2. hash of the raw invoice
19169  *  3. signature
19170  */
19171 MUST_USE_RES struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ SignedRawInvoice_into_parts(struct LDKSignedRawInvoice this_arg);
19172
19173 /**
19174  * The `RawInvoice` which was signed.
19175  */
19176 MUST_USE_RES struct LDKRawInvoice SignedRawInvoice_raw_invoice(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
19177
19178 /**
19179  * The hash of the `RawInvoice` that was signed.
19180  */
19181 MUST_USE_RES const uint8_t (*SignedRawInvoice_hash(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg))[32];
19182
19183 /**
19184  * InvoiceSignature for the invoice.
19185  */
19186 MUST_USE_RES struct LDKInvoiceSignature SignedRawInvoice_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
19187
19188 /**
19189  * Recovers the public key used for signing the invoice from the recoverable signature.
19190  */
19191 MUST_USE_RES struct LDKCResult_PayeePubKeyErrorZ SignedRawInvoice_recover_payee_pub_key(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
19192
19193 /**
19194  * Checks if the signature is valid for the included payee public key or if none exists if it's
19195  * valid for the recovered signature (which should always be true?).
19196  */
19197 MUST_USE_RES bool SignedRawInvoice_check_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
19198
19199 /**
19200  * Calculate the hash of the encoded `RawInvoice`
19201  */
19202 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19203
19204 /**
19205  *
19206  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19207  */
19208 MUST_USE_RES struct LDKSha256 RawInvoice_payment_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19209
19210 /**
19211  *
19212  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19213  */
19214 MUST_USE_RES struct LDKDescription RawInvoice_description(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19215
19216 /**
19217  *
19218  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19219  */
19220 MUST_USE_RES struct LDKPayeePubKey RawInvoice_payee_pub_key(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19221
19222 /**
19223  *
19224  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19225  */
19226 MUST_USE_RES struct LDKSha256 RawInvoice_description_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19227
19228 /**
19229  *
19230  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19231  */
19232 MUST_USE_RES struct LDKExpiryTime RawInvoice_expiry_time(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19233
19234 /**
19235  *
19236  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19237  */
19238 MUST_USE_RES struct LDKMinFinalCltvExpiry RawInvoice_min_final_cltv_expiry(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19239
19240 /**
19241  *
19242  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19243  */
19244 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_payment_secret(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19245
19246 /**
19247  *
19248  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19249  */
19250 MUST_USE_RES struct LDKInvoiceFeatures RawInvoice_features(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19251
19252 MUST_USE_RES struct LDKCVec_PrivateRouteZ RawInvoice_private_routes(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19253
19254 MUST_USE_RES struct LDKCOption_u64Z RawInvoice_amount_pico_btc(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19255
19256 MUST_USE_RES enum LDKCurrency RawInvoice_currency(const struct LDKRawInvoice *NONNULL_PTR this_arg);
19257
19258 /**
19259  * Create a new `PositiveTimestamp` from a unix timestamp in the Range
19260  * `0...SYSTEM_TIME_MAX_UNIX_TIMESTAMP - MAX_EXPIRY_TIME`, otherwise return a
19261  * `CreationError::TimestampOutOfBounds`.
19262  */
19263 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_unix_timestamp(uint64_t unix_seconds);
19264
19265 /**
19266  * Create a new `PositiveTimestamp` from a `SystemTime` with a corresponding unix timestamp in
19267  * the Range `0...SYSTEM_TIME_MAX_UNIX_TIMESTAMP - MAX_EXPIRY_TIME`, otherwise return a
19268  * `CreationError::TimestampOutOfBounds`.
19269  */
19270 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_system_time(uint64_t time);
19271
19272 /**
19273  * Returns the UNIX timestamp representing the stored time
19274  */
19275 MUST_USE_RES uint64_t PositiveTimestamp_as_unix_timestamp(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
19276
19277 /**
19278  * Returns a reference to the internal `SystemTime` time representation
19279  */
19280 MUST_USE_RES uint64_t PositiveTimestamp_as_time(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
19281
19282 /**
19283  * Transform the `Invoice` into it's unchecked version
19284  */
19285 MUST_USE_RES struct LDKSignedRawInvoice Invoice_into_signed_raw(struct LDKInvoice this_arg);
19286
19287 /**
19288  * Check that the invoice is signed correctly and that key recovery works
19289  */
19290 MUST_USE_RES struct LDKCResult_NoneSemanticErrorZ Invoice_check_signature(const struct LDKInvoice *NONNULL_PTR this_arg);
19291
19292 /**
19293  * Constructs an `Invoice` from a `SignedRawInvoice` by checking all its invariants.
19294  * ```
19295  * use lightning_invoice::*;
19296  *
19297  * let invoice = \"lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdp\\
19298  * \tl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d7\\
19299  * \t3gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ec\\
19300  * \tky03ylcqca784w\";
19301  *
19302  * let signed = invoice.parse::<SignedRawInvoice>().unwrap();
19303  *
19304  * assert!(Invoice::from_signed(signed).is_ok());
19305  * ```
19306  */
19307 MUST_USE_RES struct LDKCResult_InvoiceSemanticErrorZ Invoice_from_signed(struct LDKSignedRawInvoice signed_invoice);
19308
19309 /**
19310  * Returns the `Invoice`'s timestamp (should equal it's creation time)
19311  */
19312 MUST_USE_RES uint64_t Invoice_timestamp(const struct LDKInvoice *NONNULL_PTR this_arg);
19313
19314 /**
19315  * Returns the hash to which we will receive the preimage on completion of the payment
19316  */
19317 MUST_USE_RES const uint8_t (*Invoice_payment_hash(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
19318
19319 /**
19320  * Get the payee's public key if one was included in the invoice
19321  *
19322  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19323  */
19324 MUST_USE_RES struct LDKPublicKey Invoice_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
19325
19326 /**
19327  * Get the payment secret if one was included in the invoice
19328  *
19329  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19330  */
19331 MUST_USE_RES struct LDKThirtyTwoBytes Invoice_payment_secret(const struct LDKInvoice *NONNULL_PTR this_arg);
19332
19333 /**
19334  * Get the invoice features if they were included in the invoice
19335  *
19336  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19337  */
19338 MUST_USE_RES struct LDKInvoiceFeatures Invoice_features(const struct LDKInvoice *NONNULL_PTR this_arg);
19339
19340 /**
19341  * Recover the payee's public key (only to be used if none was included in the invoice)
19342  */
19343 MUST_USE_RES struct LDKPublicKey Invoice_recover_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
19344
19345 /**
19346  * Returns the invoice's expiry time, if present, otherwise [`DEFAULT_EXPIRY_TIME`].
19347  */
19348 MUST_USE_RES uint64_t Invoice_expiry_time(const struct LDKInvoice *NONNULL_PTR this_arg);
19349
19350 /**
19351  * Returns the invoice's `min_final_cltv_expiry` time, if present, otherwise
19352  * [`DEFAULT_MIN_FINAL_CLTV_EXPIRY`].
19353  */
19354 MUST_USE_RES uint64_t Invoice_min_final_cltv_expiry(const struct LDKInvoice *NONNULL_PTR this_arg);
19355
19356 /**
19357  * Returns a list of all routes included in the invoice
19358  */
19359 MUST_USE_RES struct LDKCVec_PrivateRouteZ Invoice_private_routes(const struct LDKInvoice *NONNULL_PTR this_arg);
19360
19361 /**
19362  * Returns a list of all routes included in the invoice as the underlying hints
19363  */
19364 MUST_USE_RES struct LDKCVec_RouteHintZ Invoice_route_hints(const struct LDKInvoice *NONNULL_PTR this_arg);
19365
19366 /**
19367  * Returns the currency for which the invoice was issued
19368  */
19369 MUST_USE_RES enum LDKCurrency Invoice_currency(const struct LDKInvoice *NONNULL_PTR this_arg);
19370
19371 /**
19372  * Returns the amount if specified in the invoice as pico <currency>.
19373  */
19374 MUST_USE_RES struct LDKCOption_u64Z Invoice_amount_pico_btc(const struct LDKInvoice *NONNULL_PTR this_arg);
19375
19376 /**
19377  * Creates a new `Description` if `description` is at most 1023 __bytes__ long,
19378  * returns `CreationError::DescriptionTooLong` otherwise
19379  *
19380  * Please note that single characters may use more than one byte due to UTF8 encoding.
19381  */
19382 MUST_USE_RES struct LDKCResult_DescriptionCreationErrorZ Description_new(struct LDKStr description);
19383
19384 /**
19385  * Returns the underlying description `String`
19386  */
19387 MUST_USE_RES struct LDKStr Description_into_inner(struct LDKDescription this_arg);
19388
19389 /**
19390  * Construct an `ExpiryTime` from seconds. If there exists a `PositiveTimestamp` which would
19391  * overflow on adding the `EpiryTime` to it then this function will return a
19392  * `CreationError::ExpiryTimeOutOfBounds`.
19393  */
19394 MUST_USE_RES struct LDKCResult_ExpiryTimeCreationErrorZ ExpiryTime_from_seconds(uint64_t seconds);
19395
19396 /**
19397  * Construct an `ExpiryTime` from a `Duration`. If there exists a `PositiveTimestamp` which
19398  * would overflow on adding the `EpiryTime` to it then this function will return a
19399  * `CreationError::ExpiryTimeOutOfBounds`.
19400  */
19401 MUST_USE_RES struct LDKCResult_ExpiryTimeCreationErrorZ ExpiryTime_from_duration(uint64_t duration);
19402
19403 /**
19404  * Returns the expiry time in seconds
19405  */
19406 MUST_USE_RES uint64_t ExpiryTime_as_seconds(const struct LDKExpiryTime *NONNULL_PTR this_arg);
19407
19408 /**
19409  * Returns a reference to the underlying `Duration` (=expiry time)
19410  */
19411 MUST_USE_RES uint64_t ExpiryTime_as_duration(const struct LDKExpiryTime *NONNULL_PTR this_arg);
19412
19413 /**
19414  * Creates a new (partial) route from a list of hops
19415  */
19416 MUST_USE_RES struct LDKCResult_PrivateRouteCreationErrorZ PrivateRoute_new(struct LDKRouteHint hops);
19417
19418 /**
19419  * Returns the underlying list of hops
19420  */
19421 MUST_USE_RES struct LDKRouteHint PrivateRoute_into_inner(struct LDKPrivateRoute this_arg);
19422
19423 /**
19424  * Creates a copy of the CreationError
19425  */
19426 enum LDKCreationError CreationError_clone(const enum LDKCreationError *NONNULL_PTR orig);
19427
19428 /**
19429  * Utility method to constructs a new DescriptionTooLong-variant CreationError
19430  */
19431 enum LDKCreationError CreationError_description_too_long(void);
19432
19433 /**
19434  * Utility method to constructs a new RouteTooLong-variant CreationError
19435  */
19436 enum LDKCreationError CreationError_route_too_long(void);
19437
19438 /**
19439  * Utility method to constructs a new TimestampOutOfBounds-variant CreationError
19440  */
19441 enum LDKCreationError CreationError_timestamp_out_of_bounds(void);
19442
19443 /**
19444  * Utility method to constructs a new ExpiryTimeOutOfBounds-variant CreationError
19445  */
19446 enum LDKCreationError CreationError_expiry_time_out_of_bounds(void);
19447
19448 /**
19449  * Checks if two CreationErrors contain equal inner contents.
19450  * This ignores pointers and is_owned flags and looks at the values in fields.
19451  */
19452 bool CreationError_eq(const enum LDKCreationError *NONNULL_PTR a, const enum LDKCreationError *NONNULL_PTR b);
19453
19454 /**
19455  * Get the string representation of a CreationError object
19456  */
19457 struct LDKStr CreationError_to_str(const enum LDKCreationError *NONNULL_PTR o);
19458
19459 /**
19460  * Creates a copy of the SemanticError
19461  */
19462 enum LDKSemanticError SemanticError_clone(const enum LDKSemanticError *NONNULL_PTR orig);
19463
19464 /**
19465  * Utility method to constructs a new NoPaymentHash-variant SemanticError
19466  */
19467 enum LDKSemanticError SemanticError_no_payment_hash(void);
19468
19469 /**
19470  * Utility method to constructs a new MultiplePaymentHashes-variant SemanticError
19471  */
19472 enum LDKSemanticError SemanticError_multiple_payment_hashes(void);
19473
19474 /**
19475  * Utility method to constructs a new NoDescription-variant SemanticError
19476  */
19477 enum LDKSemanticError SemanticError_no_description(void);
19478
19479 /**
19480  * Utility method to constructs a new MultipleDescriptions-variant SemanticError
19481  */
19482 enum LDKSemanticError SemanticError_multiple_descriptions(void);
19483
19484 /**
19485  * Utility method to constructs a new MultiplePaymentSecrets-variant SemanticError
19486  */
19487 enum LDKSemanticError SemanticError_multiple_payment_secrets(void);
19488
19489 /**
19490  * Utility method to constructs a new InvalidFeatures-variant SemanticError
19491  */
19492 enum LDKSemanticError SemanticError_invalid_features(void);
19493
19494 /**
19495  * Utility method to constructs a new InvalidRecoveryId-variant SemanticError
19496  */
19497 enum LDKSemanticError SemanticError_invalid_recovery_id(void);
19498
19499 /**
19500  * Utility method to constructs a new InvalidSignature-variant SemanticError
19501  */
19502 enum LDKSemanticError SemanticError_invalid_signature(void);
19503
19504 /**
19505  * Checks if two SemanticErrors contain equal inner contents.
19506  * This ignores pointers and is_owned flags and looks at the values in fields.
19507  */
19508 bool SemanticError_eq(const enum LDKSemanticError *NONNULL_PTR a, const enum LDKSemanticError *NONNULL_PTR b);
19509
19510 /**
19511  * Get the string representation of a SemanticError object
19512  */
19513 struct LDKStr SemanticError_to_str(const enum LDKSemanticError *NONNULL_PTR o);
19514
19515 /**
19516  * Frees any resources used by the SignOrCreationError
19517  */
19518 void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
19519
19520 /**
19521  * Creates a copy of the SignOrCreationError
19522  */
19523 struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
19524
19525 /**
19526  * Utility method to constructs a new SignError-variant SignOrCreationError
19527  */
19528 struct LDKSignOrCreationError SignOrCreationError_sign_error(void);
19529
19530 /**
19531  * Utility method to constructs a new CreationError-variant SignOrCreationError
19532  */
19533 struct LDKSignOrCreationError SignOrCreationError_creation_error(enum LDKCreationError a);
19534
19535 /**
19536  * Checks if two SignOrCreationErrors contain equal inner contents.
19537  * This ignores pointers and is_owned flags and looks at the values in fields.
19538  */
19539 bool SignOrCreationError_eq(const struct LDKSignOrCreationError *NONNULL_PTR a, const struct LDKSignOrCreationError *NONNULL_PTR b);
19540
19541 /**
19542  * Get the string representation of a SignOrCreationError object
19543  */
19544 struct LDKStr SignOrCreationError_to_str(const struct LDKSignOrCreationError *NONNULL_PTR o);
19545
19546 /**
19547  * Utility to construct an invoice. Generally, unless you want to do something like a custom
19548  * cltv_expiry, this is what you should be using to create an invoice. The reason being, this
19549  * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
19550  * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
19551  * that the payment secret is valid when the invoice is paid.
19552  */
19553 struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKStr description);
19554
19555 /**
19556  * Read a SiPrefix object from a string
19557  */
19558 struct LDKCResult_SiPrefixNoneZ SiPrefix_from_str(struct LDKStr s);
19559
19560 /**
19561  * Read a Invoice object from a string
19562  */
19563 struct LDKCResult_InvoiceNoneZ Invoice_from_str(struct LDKStr s);
19564
19565 /**
19566  * Read a SignedRawInvoice object from a string
19567  */
19568 struct LDKCResult_SignedRawInvoiceNoneZ SignedRawInvoice_from_str(struct LDKStr s);
19569
19570 /**
19571  * Get the string representation of a Invoice object
19572  */
19573 struct LDKStr Invoice_to_str(const struct LDKInvoice *NONNULL_PTR o);
19574
19575 /**
19576  * Get the string representation of a SignedRawInvoice object
19577  */
19578 struct LDKStr SignedRawInvoice_to_str(const struct LDKSignedRawInvoice *NONNULL_PTR o);
19579
19580 /**
19581  * Get the string representation of a Currency object
19582  */
19583 struct LDKStr Currency_to_str(const enum LDKCurrency *NONNULL_PTR o);
19584
19585 /**
19586  * Get the string representation of a SiPrefix object
19587  */
19588 struct LDKStr SiPrefix_to_str(const enum LDKSiPrefix *NONNULL_PTR o);
19589
19590 #endif /* LDK_C_BINDINGS_H */
19591
19592 #include "ldk_ver.h"