Update auto-generated bindings with FromStr errors
[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.20.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 enum which can either contain a  or not
33  */
34 typedef enum LDKCOption_NoneZ {
35    /**
36     * When we're in this state, this COption_NoneZ contains a
37     */
38    LDKCOption_NoneZ_Some,
39    /**
40     * When we're in this state, this COption_NoneZ contains nothing
41     */
42    LDKCOption_NoneZ_None,
43    /**
44     * Must be last for serialization purposes
45     */
46    LDKCOption_NoneZ_Sentinel,
47 } LDKCOption_NoneZ;
48
49 /**
50  * An error enum representing a failure to persist a channel monitor update.
51  */
52 typedef enum LDKChannelMonitorUpdateErr {
53    /**
54     * Used to indicate a temporary failure (eg connection to a watchtower or remote backup of
55     * our state failed, but is expected to succeed at some point in the future).
56     *
57     * Such a failure will \"freeze\" a channel, preventing us from revoking old states or
58     * submitting new commitment transactions to the counterparty. Once the update(s) that failed
59     * have been successfully applied, a [`MonitorEvent::UpdateCompleted`] event should be returned
60     * via [`Watch::release_pending_monitor_events`] which will then restore the channel to an
61     * operational state.
62     *
63     * Note that a given ChannelManager will *never* re-generate a given ChannelMonitorUpdate. If
64     * you return a TemporaryFailure you must ensure that it is written to disk safely before
65     * writing out the latest ChannelManager state.
66     *
67     * Even when a channel has been \"frozen\" updates to the ChannelMonitor can continue to occur
68     * (eg if an inbound HTLC which we forwarded was claimed upstream resulting in us attempting
69     * to claim it on this channel) and those updates must be applied wherever they can be. At
70     * least one such updated ChannelMonitor must be persisted otherwise PermanentFailure should
71     * be returned to get things on-chain ASAP using only the in-memory copy. Obviously updates to
72     * the channel which would invalidate previous ChannelMonitors are not made when a channel has
73     * been \"frozen\".
74     *
75     * Note that even if updates made after TemporaryFailure succeed you must still provide a
76     * [`MonitorEvent::UpdateCompleted`] to ensure you have the latest monitor and re-enable
77     * normal channel operation. Note that this is normally generated through a call to
78     * [`ChainMonitor::channel_monitor_updated`].
79     *
80     * Note that the update being processed here will not be replayed for you when you return a
81     * [`MonitorEvent::UpdateCompleted`] event via [`Watch::release_pending_monitor_events`], so
82     * you must store the update itself on your own local disk prior to returning a
83     * TemporaryFailure. You may, of course, employ a journaling approach, storing only the
84     * ChannelMonitorUpdate on disk without updating the monitor itself, replaying the journal at
85     * reload-time.
86     *
87     * For deployments where a copy of ChannelMonitors and other local state are backed up in a
88     * remote location (with local copies persisted immediately), it is anticipated that all
89     * updates will return TemporaryFailure until the remote copies could be updated.
90     *
91     * [`ChainMonitor::channel_monitor_updated`]: chainmonitor::ChainMonitor::channel_monitor_updated
92     */
93    LDKChannelMonitorUpdateErr_TemporaryFailure,
94    /**
95     * Used to indicate no further channel monitor updates will be allowed (eg we've moved on to a
96     * different watchtower and cannot update with all watchtowers that were previously informed
97     * of this channel).
98     *
99     * At reception of this error, ChannelManager will force-close the channel and return at
100     * least a final ChannelMonitorUpdate::ChannelForceClosed which must be delivered to at
101     * least one ChannelMonitor copy. Revocation secret MUST NOT be released and offchain channel
102     * update must be rejected.
103     *
104     * This failure may also signal a failure to update the local persisted copy of one of
105     * the channel monitor instance.
106     *
107     * Note that even when you fail a holder commitment transaction update, you must store the
108     * update to ensure you can claim from it in case of a duplicate copy of this ChannelMonitor
109     * broadcasts it (e.g distributed channel-monitor deployment)
110     *
111     * In case of distributed watchtowers deployment, the new version must be written to disk, as
112     * state may have been stored but rejected due to a block forcing a commitment broadcast. This
113     * storage is used to claim outputs of rejected state confirmed onchain by another watchtower,
114     * lagging behind on block processing.
115     */
116    LDKChannelMonitorUpdateErr_PermanentFailure,
117    /**
118     * Must be last for serialization purposes
119     */
120    LDKChannelMonitorUpdateErr_Sentinel,
121 } LDKChannelMonitorUpdateErr;
122
123 /**
124  * An enum that represents the speed at which we want a transaction to confirm used for feerate
125  * estimation.
126  */
127 typedef enum LDKConfirmationTarget {
128    /**
129     * We are happy with this transaction confirming slowly when feerate drops some.
130     */
131    LDKConfirmationTarget_Background,
132    /**
133     * We'd like this transaction to confirm without major delay, but 12-18 blocks is fine.
134     */
135    LDKConfirmationTarget_Normal,
136    /**
137     * We'd like this transaction to confirm in the next few blocks.
138     */
139    LDKConfirmationTarget_HighPriority,
140    /**
141     * Must be last for serialization purposes
142     */
143    LDKConfirmationTarget_Sentinel,
144 } LDKConfirmationTarget;
145
146 /**
147  * Errors that may occur when constructing a new `RawInvoice` or `Invoice`
148  */
149 typedef enum LDKCreationError {
150    /**
151     * The supplied description string was longer than 639 __bytes__ (see [`Description::new(…)`](./struct.Description.html#method.new))
152     */
153    LDKCreationError_DescriptionTooLong,
154    /**
155     * The specified route has too many hops and can't be encoded
156     */
157    LDKCreationError_RouteTooLong,
158    /**
159     * The Unix timestamp of the supplied date is less than zero or greater than 35-bits
160     */
161    LDKCreationError_TimestampOutOfBounds,
162    /**
163     * The supplied millisatoshi amount was greater than the total bitcoin supply.
164     */
165    LDKCreationError_InvalidAmount,
166    /**
167     * Route hints were required for this invoice and were missing. Applies to
168     * [phantom invoices].
169     *
170     * [phantom invoices]: crate::utils::create_phantom_invoice
171     */
172    LDKCreationError_MissingRouteHints,
173    /**
174     * Must be last for serialization purposes
175     */
176    LDKCreationError_Sentinel,
177 } LDKCreationError;
178
179 /**
180  * Enum representing the crypto currencies (or networks) supported by this library
181  */
182 typedef enum LDKCurrency {
183    /**
184     * Bitcoin mainnet
185     */
186    LDKCurrency_Bitcoin,
187    /**
188     * Bitcoin testnet
189     */
190    LDKCurrency_BitcoinTestnet,
191    /**
192     * Bitcoin regtest
193     */
194    LDKCurrency_Regtest,
195    /**
196     * Bitcoin simnet
197     */
198    LDKCurrency_Simnet,
199    /**
200     * Bitcoin signet
201     */
202    LDKCurrency_Signet,
203    /**
204     * Must be last for serialization purposes
205     */
206    LDKCurrency_Sentinel,
207 } LDKCurrency;
208
209 /**
210  * Represents an IO Error. Note that some information is lost in the conversion from Rust.
211  */
212 typedef enum LDKIOError {
213    LDKIOError_NotFound,
214    LDKIOError_PermissionDenied,
215    LDKIOError_ConnectionRefused,
216    LDKIOError_ConnectionReset,
217    LDKIOError_ConnectionAborted,
218    LDKIOError_NotConnected,
219    LDKIOError_AddrInUse,
220    LDKIOError_AddrNotAvailable,
221    LDKIOError_BrokenPipe,
222    LDKIOError_AlreadyExists,
223    LDKIOError_WouldBlock,
224    LDKIOError_InvalidInput,
225    LDKIOError_InvalidData,
226    LDKIOError_TimedOut,
227    LDKIOError_WriteZero,
228    LDKIOError_Interrupted,
229    LDKIOError_Other,
230    LDKIOError_UnexpectedEof,
231    /**
232     * Must be last for serialization purposes
233     */
234    LDKIOError_Sentinel,
235 } LDKIOError;
236
237 /**
238  * An enum representing the available verbosity levels of the logger.
239  */
240 typedef enum LDKLevel {
241    /**
242     * Designates extremely verbose information, including gossip-induced messages
243     */
244    LDKLevel_Gossip,
245    /**
246     * Designates very low priority, often extremely verbose, information
247     */
248    LDKLevel_Trace,
249    /**
250     * Designates lower priority information
251     */
252    LDKLevel_Debug,
253    /**
254     * Designates useful information
255     */
256    LDKLevel_Info,
257    /**
258     * Designates hazardous situations
259     */
260    LDKLevel_Warn,
261    /**
262     * Designates very serious errors
263     */
264    LDKLevel_Error,
265    /**
266     * Must be last for serialization purposes
267     */
268    LDKLevel_Sentinel,
269 } LDKLevel;
270
271 /**
272  * An enum representing the possible Bitcoin or test networks which we can run on
273  */
274 typedef enum LDKNetwork {
275    /**
276     * The main Bitcoin blockchain.
277     */
278    LDKNetwork_Bitcoin,
279    /**
280     * The testnet3 blockchain.
281     */
282    LDKNetwork_Testnet,
283    /**
284     * A local test blockchain.
285     */
286    LDKNetwork_Regtest,
287    /**
288     * A blockchain on which blocks are signed instead of mined.
289     */
290    LDKNetwork_Signet,
291    /**
292     * Must be last for serialization purposes
293     */
294    LDKNetwork_Sentinel,
295 } LDKNetwork;
296
297 /**
298  * Specifies the recipient of an invoice, to indicate to [`KeysInterface::sign_invoice`] what node
299  * secret key should be used to sign the invoice.
300  */
301 typedef enum LDKRecipient {
302    /**
303     * The invoice should be signed with the local node secret key.
304     */
305    LDKRecipient_Node,
306    /**
307     * The invoice should be signed with the phantom node secret key. This secret key must be the
308     * same for all nodes participating in the [phantom node payment].
309     *
310     * [phantom node payment]: PhantomKeysManager
311     */
312    LDKRecipient_PhantomNode,
313    /**
314     * Must be last for serialization purposes
315     */
316    LDKRecipient_Sentinel,
317 } LDKRecipient;
318
319 /**
320  * Represents an error returned from libsecp256k1 during validation of some secp256k1 data
321  */
322 typedef enum LDKSecp256k1Error {
323    /**
324     * Signature failed verification
325     */
326    LDKSecp256k1Error_IncorrectSignature,
327    /**
328     * Badly sized message ("messages" are actually fixed-sized digests; see the MESSAGE_SIZE constant)
329     */
330    LDKSecp256k1Error_InvalidMessage,
331    /**
332     * Bad public key
333     */
334    LDKSecp256k1Error_InvalidPublicKey,
335    /**
336     * Bad signature
337     */
338    LDKSecp256k1Error_InvalidSignature,
339    /**
340     * Bad secret key
341     */
342    LDKSecp256k1Error_InvalidSecretKey,
343    /**
344     * Bad recovery id
345     */
346    LDKSecp256k1Error_InvalidRecoveryId,
347    /**
348     * Invalid tweak for add_assign or mul_assign
349     */
350    LDKSecp256k1Error_InvalidTweak,
351    /**
352     * tweak_add_check failed on an xonly public key
353     */
354    LDKSecp256k1Error_TweakCheckFailed,
355    /**
356     * Didn't pass enough memory to context creation with preallocated memory
357     */
358    LDKSecp256k1Error_NotEnoughMemory,
359    /**
360     * Must be last for serialization purposes
361     */
362    LDKSecp256k1Error_Sentinel,
363 } LDKSecp256k1Error;
364
365 /**
366  * Errors that may occur when converting a `RawInvoice` to an `Invoice`. They relate to the
367  * requirements sections in BOLT #11
368  */
369 typedef enum LDKSemanticError {
370    /**
371     * The invoice is missing the mandatory payment hash
372     */
373    LDKSemanticError_NoPaymentHash,
374    /**
375     * The invoice has multiple payment hashes which isn't allowed
376     */
377    LDKSemanticError_MultiplePaymentHashes,
378    /**
379     * No description or description hash are part of the invoice
380     */
381    LDKSemanticError_NoDescription,
382    /**
383     * The invoice contains multiple descriptions and/or description hashes which isn't allowed
384     */
385    LDKSemanticError_MultipleDescriptions,
386    /**
387     * The invoice is missing the mandatory payment secret, which all modern lightning nodes
388     * should provide.
389     */
390    LDKSemanticError_NoPaymentSecret,
391    /**
392     * The invoice contains multiple payment secrets
393     */
394    LDKSemanticError_MultiplePaymentSecrets,
395    /**
396     * The invoice's features are invalid
397     */
398    LDKSemanticError_InvalidFeatures,
399    /**
400     * The recovery id doesn't fit the signature/pub key
401     */
402    LDKSemanticError_InvalidRecoveryId,
403    /**
404     * The invoice's signature is invalid
405     */
406    LDKSemanticError_InvalidSignature,
407    /**
408     * The invoice's amount was not a whole number of millisatoshis
409     */
410    LDKSemanticError_ImpreciseAmount,
411    /**
412     * Must be last for serialization purposes
413     */
414    LDKSemanticError_Sentinel,
415 } LDKSemanticError;
416
417 /**
418  * SI prefixes for the human readable part
419  */
420 typedef enum LDKSiPrefix {
421    /**
422     * 10^-3
423     */
424    LDKSiPrefix_Milli,
425    /**
426     * 10^-6
427     */
428    LDKSiPrefix_Micro,
429    /**
430     * 10^-9
431     */
432    LDKSiPrefix_Nano,
433    /**
434     * 10^-12
435     */
436    LDKSiPrefix_Pico,
437    /**
438     * Must be last for serialization purposes
439     */
440    LDKSiPrefix_Sentinel,
441 } LDKSiPrefix;
442
443 /**
444  * A Rust str object, ie a reference to a UTF8-valid string.
445  * This is *not* null-terminated so cannot be used directly as a C string!
446  */
447 typedef struct LDKStr {
448    /**
449     * A pointer to the string's bytes, in UTF8 encoding
450     */
451    const uint8_t *chars;
452    /**
453     * The number of bytes (not characters!) pointed to by `chars`
454     */
455    uintptr_t len;
456    /**
457     * Whether the data pointed to by `chars` should be freed or not.
458     */
459    bool chars_is_owned;
460 } LDKStr;
461
462 /**
463  * A serialized transaction, in (pointer, length) form.
464  *
465  * This type optionally owns its own memory, and thus the semantics around access change based on
466  * the `data_is_owned` flag. If `data_is_owned` is set, you must call `Transaction_free` to free
467  * the underlying buffer before the object goes out of scope. If `data_is_owned` is not set, any
468  * access to the buffer after the scope in which the object was provided to you is invalid. eg,
469  * access after you return from the call in which a `!data_is_owned` `Transaction` is provided to
470  * you would be invalid.
471  *
472  * Note that, while it may change in the future, because transactions on the Rust side are stored
473  * in a deserialized form, all `Transaction`s generated on the Rust side will have `data_is_owned`
474  * set. Similarly, while it may change in the future, all `Transaction`s you pass to Rust may have
475  * `data_is_owned` either set or unset at your discretion.
476  */
477 typedef struct LDKTransaction {
478    /**
479     * The serialized transaction data.
480     *
481     * This is non-const for your convenience, an object passed to Rust is never written to.
482     */
483    uint8_t *data;
484    /**
485     * The length of the serialized transaction
486     */
487    uintptr_t datalen;
488    /**
489     * Whether the data pointed to by `data` should be freed or not.
490     */
491    bool data_is_owned;
492 } LDKTransaction;
493
494 /**
495  * A dynamically-allocated array of u8s of arbitrary size.
496  * This corresponds to std::vector in C++
497  */
498 typedef struct LDKCVec_u8Z {
499    /**
500     * The elements in the array.
501     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
502     */
503    uint8_t *data;
504    /**
505     * The number of elements pointed to by `data`.
506     */
507    uintptr_t datalen;
508 } LDKCVec_u8Z;
509
510 /**
511  * A transaction output including a scriptPubKey and value.
512  * This type *does* own its own memory, so must be free'd appropriately.
513  */
514 typedef struct LDKTxOut {
515    /**
516     * The script_pubkey in this output
517     */
518    struct LDKCVec_u8Z script_pubkey;
519    /**
520     * The value, in satoshis, of this output
521     */
522    uint64_t value;
523 } LDKTxOut;
524
525 /**
526  * The contents of CResult_NoneNoneZ
527  */
528 typedef union LDKCResult_NoneNoneZPtr {
529    /**
530     * Note that this value is always NULL, as there are no contents in the OK variant
531     */
532    void *result;
533    /**
534     * Note that this value is always NULL, as there are no contents in the Err variant
535     */
536    void *err;
537 } LDKCResult_NoneNoneZPtr;
538
539 /**
540  * A CResult_NoneNoneZ represents the result of a fallible operation,
541  * containing a () on success and a () on failure.
542  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
543  */
544 typedef struct LDKCResult_NoneNoneZ {
545    /**
546     * The contents of this CResult_NoneNoneZ, accessible via either
547     * `err` or `result` depending on the state of `result_ok`.
548     */
549    union LDKCResult_NoneNoneZPtr contents;
550    /**
551     * Whether this CResult_NoneNoneZ represents a success state.
552     */
553    bool result_ok;
554 } LDKCResult_NoneNoneZ;
555
556
557
558 /**
559  * Implements the per-commitment secret storage scheme from
560  * [BOLT 3](https://github.com/lightningnetwork/lightning-rfc/blob/dcbf8583976df087c79c3ce0b535311212e6812d/03-transactions.md#efficient-per-commitment-secret-storage).
561  *
562  * Allows us to keep track of all of the revocation secrets of our counterparty in just 50*32 bytes
563  * or so.
564  */
565 typedef struct MUST_USE_STRUCT LDKCounterpartyCommitmentSecrets {
566    /**
567     * A pointer to the opaque Rust object.
568     * Nearly everywhere, inner must be non-null, however in places where
569     * the Rust equivalent takes an Option, it may be set to null to indicate None.
570     */
571    LDKnativeCounterpartyCommitmentSecrets *inner;
572    /**
573     * Indicates that this is the only struct which contains the same pointer.
574     * Rust functions which take ownership of an object provided via an argument require
575     * this to be true and invalidate the object pointed to by inner.
576     */
577    bool is_owned;
578 } LDKCounterpartyCommitmentSecrets;
579
580
581
582 /**
583  * An error in decoding a message or struct.
584  */
585 typedef struct MUST_USE_STRUCT LDKDecodeError {
586    /**
587     * A pointer to the opaque Rust object.
588     * Nearly everywhere, inner must be non-null, however in places where
589     * the Rust equivalent takes an Option, it may be set to null to indicate None.
590     */
591    LDKnativeDecodeError *inner;
592    /**
593     * Indicates that this is the only struct which contains the same pointer.
594     * Rust functions which take ownership of an object provided via an argument require
595     * this to be true and invalidate the object pointed to by inner.
596     */
597    bool is_owned;
598 } LDKDecodeError;
599
600 /**
601  * The contents of CResult_CounterpartyCommitmentSecretsDecodeErrorZ
602  */
603 typedef union LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZPtr {
604    /**
605     * A pointer to the contents in the success state.
606     * Reading from this pointer when `result_ok` is not set is undefined.
607     */
608    struct LDKCounterpartyCommitmentSecrets *result;
609    /**
610     * A pointer to the contents in the error state.
611     * Reading from this pointer when `result_ok` is set is undefined.
612     */
613    struct LDKDecodeError *err;
614 } LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZPtr;
615
616 /**
617  * A CResult_CounterpartyCommitmentSecretsDecodeErrorZ represents the result of a fallible operation,
618  * containing a crate::lightning::ln::chan_utils::CounterpartyCommitmentSecrets on success and a crate::lightning::ln::msgs::DecodeError on failure.
619  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
620  */
621 typedef struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ {
622    /**
623     * The contents of this CResult_CounterpartyCommitmentSecretsDecodeErrorZ, accessible via either
624     * `err` or `result` depending on the state of `result_ok`.
625     */
626    union LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZPtr contents;
627    /**
628     * Whether this CResult_CounterpartyCommitmentSecretsDecodeErrorZ represents a success state.
629     */
630    bool result_ok;
631 } LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ;
632
633 /**
634  * Represents a valid secp256k1 secret key serialized as a 32 byte array.
635  */
636 typedef struct LDKSecretKey {
637    /**
638     * The bytes of the secret key
639     */
640    uint8_t bytes[32];
641 } LDKSecretKey;
642
643 /**
644  * The contents of CResult_SecretKeyErrorZ
645  */
646 typedef union LDKCResult_SecretKeyErrorZPtr {
647    /**
648     * A pointer to the contents in the success state.
649     * Reading from this pointer when `result_ok` is not set is undefined.
650     */
651    struct LDKSecretKey *result;
652    /**
653     * A pointer to the contents in the error state.
654     * Reading from this pointer when `result_ok` is set is undefined.
655     */
656    enum LDKSecp256k1Error *err;
657 } LDKCResult_SecretKeyErrorZPtr;
658
659 /**
660  * A CResult_SecretKeyErrorZ represents the result of a fallible operation,
661  * containing a crate::c_types::SecretKey on success and a crate::c_types::Secp256k1Error on failure.
662  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
663  */
664 typedef struct LDKCResult_SecretKeyErrorZ {
665    /**
666     * The contents of this CResult_SecretKeyErrorZ, accessible via either
667     * `err` or `result` depending on the state of `result_ok`.
668     */
669    union LDKCResult_SecretKeyErrorZPtr contents;
670    /**
671     * Whether this CResult_SecretKeyErrorZ represents a success state.
672     */
673    bool result_ok;
674 } LDKCResult_SecretKeyErrorZ;
675
676 /**
677  * Represents a valid secp256k1 public key serialized in "compressed form" as a 33 byte array.
678  */
679 typedef struct LDKPublicKey {
680    /**
681     * The bytes of the public key
682     */
683    uint8_t compressed_form[33];
684 } LDKPublicKey;
685
686 /**
687  * The contents of CResult_PublicKeyErrorZ
688  */
689 typedef union LDKCResult_PublicKeyErrorZPtr {
690    /**
691     * A pointer to the contents in the success state.
692     * Reading from this pointer when `result_ok` is not set is undefined.
693     */
694    struct LDKPublicKey *result;
695    /**
696     * A pointer to the contents in the error state.
697     * Reading from this pointer when `result_ok` is set is undefined.
698     */
699    enum LDKSecp256k1Error *err;
700 } LDKCResult_PublicKeyErrorZPtr;
701
702 /**
703  * A CResult_PublicKeyErrorZ represents the result of a fallible operation,
704  * containing a crate::c_types::PublicKey on success and a crate::c_types::Secp256k1Error on failure.
705  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
706  */
707 typedef struct LDKCResult_PublicKeyErrorZ {
708    /**
709     * The contents of this CResult_PublicKeyErrorZ, accessible via either
710     * `err` or `result` depending on the state of `result_ok`.
711     */
712    union LDKCResult_PublicKeyErrorZPtr contents;
713    /**
714     * Whether this CResult_PublicKeyErrorZ represents a success state.
715     */
716    bool result_ok;
717 } LDKCResult_PublicKeyErrorZ;
718
719
720
721 /**
722  * The set of public keys which are used in the creation of one commitment transaction.
723  * These are derived from the channel base keys and per-commitment data.
724  *
725  * A broadcaster key is provided from potential broadcaster of the computed transaction.
726  * A countersignatory key is coming from a protocol participant unable to broadcast the
727  * transaction.
728  *
729  * These keys are assumed to be good, either because the code derived them from
730  * channel basepoints via the new function, or they were obtained via
731  * CommitmentTransaction.trust().keys() because we trusted the source of the
732  * pre-calculated keys.
733  */
734 typedef struct MUST_USE_STRUCT LDKTxCreationKeys {
735    /**
736     * A pointer to the opaque Rust object.
737     * Nearly everywhere, inner must be non-null, however in places where
738     * the Rust equivalent takes an Option, it may be set to null to indicate None.
739     */
740    LDKnativeTxCreationKeys *inner;
741    /**
742     * Indicates that this is the only struct which contains the same pointer.
743     * Rust functions which take ownership of an object provided via an argument require
744     * this to be true and invalidate the object pointed to by inner.
745     */
746    bool is_owned;
747 } LDKTxCreationKeys;
748
749 /**
750  * The contents of CResult_TxCreationKeysDecodeErrorZ
751  */
752 typedef union LDKCResult_TxCreationKeysDecodeErrorZPtr {
753    /**
754     * A pointer to the contents in the success state.
755     * Reading from this pointer when `result_ok` is not set is undefined.
756     */
757    struct LDKTxCreationKeys *result;
758    /**
759     * A pointer to the contents in the error state.
760     * Reading from this pointer when `result_ok` is set is undefined.
761     */
762    struct LDKDecodeError *err;
763 } LDKCResult_TxCreationKeysDecodeErrorZPtr;
764
765 /**
766  * A CResult_TxCreationKeysDecodeErrorZ represents the result of a fallible operation,
767  * containing a crate::lightning::ln::chan_utils::TxCreationKeys on success and a crate::lightning::ln::msgs::DecodeError on failure.
768  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
769  */
770 typedef struct LDKCResult_TxCreationKeysDecodeErrorZ {
771    /**
772     * The contents of this CResult_TxCreationKeysDecodeErrorZ, accessible via either
773     * `err` or `result` depending on the state of `result_ok`.
774     */
775    union LDKCResult_TxCreationKeysDecodeErrorZPtr contents;
776    /**
777     * Whether this CResult_TxCreationKeysDecodeErrorZ represents a success state.
778     */
779    bool result_ok;
780 } LDKCResult_TxCreationKeysDecodeErrorZ;
781
782
783
784 /**
785  * One counterparty's public keys which do not change over the life of a channel.
786  */
787 typedef struct MUST_USE_STRUCT LDKChannelPublicKeys {
788    /**
789     * A pointer to the opaque Rust object.
790     * Nearly everywhere, inner must be non-null, however in places where
791     * the Rust equivalent takes an Option, it may be set to null to indicate None.
792     */
793    LDKnativeChannelPublicKeys *inner;
794    /**
795     * Indicates that this is the only struct which contains the same pointer.
796     * Rust functions which take ownership of an object provided via an argument require
797     * this to be true and invalidate the object pointed to by inner.
798     */
799    bool is_owned;
800 } LDKChannelPublicKeys;
801
802 /**
803  * The contents of CResult_ChannelPublicKeysDecodeErrorZ
804  */
805 typedef union LDKCResult_ChannelPublicKeysDecodeErrorZPtr {
806    /**
807     * A pointer to the contents in the success state.
808     * Reading from this pointer when `result_ok` is not set is undefined.
809     */
810    struct LDKChannelPublicKeys *result;
811    /**
812     * A pointer to the contents in the error state.
813     * Reading from this pointer when `result_ok` is set is undefined.
814     */
815    struct LDKDecodeError *err;
816 } LDKCResult_ChannelPublicKeysDecodeErrorZPtr;
817
818 /**
819  * A CResult_ChannelPublicKeysDecodeErrorZ represents the result of a fallible operation,
820  * containing a crate::lightning::ln::chan_utils::ChannelPublicKeys on success and a crate::lightning::ln::msgs::DecodeError on failure.
821  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
822  */
823 typedef struct LDKCResult_ChannelPublicKeysDecodeErrorZ {
824    /**
825     * The contents of this CResult_ChannelPublicKeysDecodeErrorZ, accessible via either
826     * `err` or `result` depending on the state of `result_ok`.
827     */
828    union LDKCResult_ChannelPublicKeysDecodeErrorZPtr contents;
829    /**
830     * Whether this CResult_ChannelPublicKeysDecodeErrorZ represents a success state.
831     */
832    bool result_ok;
833 } LDKCResult_ChannelPublicKeysDecodeErrorZ;
834
835 /**
836  * The contents of CResult_TxCreationKeysErrorZ
837  */
838 typedef union LDKCResult_TxCreationKeysErrorZPtr {
839    /**
840     * A pointer to the contents in the success state.
841     * Reading from this pointer when `result_ok` is not set is undefined.
842     */
843    struct LDKTxCreationKeys *result;
844    /**
845     * A pointer to the contents in the error state.
846     * Reading from this pointer when `result_ok` is set is undefined.
847     */
848    enum LDKSecp256k1Error *err;
849 } LDKCResult_TxCreationKeysErrorZPtr;
850
851 /**
852  * A CResult_TxCreationKeysErrorZ represents the result of a fallible operation,
853  * containing a crate::lightning::ln::chan_utils::TxCreationKeys on success and a crate::c_types::Secp256k1Error on failure.
854  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
855  */
856 typedef struct LDKCResult_TxCreationKeysErrorZ {
857    /**
858     * The contents of this CResult_TxCreationKeysErrorZ, accessible via either
859     * `err` or `result` depending on the state of `result_ok`.
860     */
861    union LDKCResult_TxCreationKeysErrorZPtr contents;
862    /**
863     * Whether this CResult_TxCreationKeysErrorZ represents a success state.
864     */
865    bool result_ok;
866 } LDKCResult_TxCreationKeysErrorZ;
867
868 /**
869  * An enum which can either contain a u32 or not
870  */
871 typedef enum LDKCOption_u32Z_Tag {
872    /**
873     * When we're in this state, this COption_u32Z contains a u32
874     */
875    LDKCOption_u32Z_Some,
876    /**
877     * When we're in this state, this COption_u32Z contains nothing
878     */
879    LDKCOption_u32Z_None,
880    /**
881     * Must be last for serialization purposes
882     */
883    LDKCOption_u32Z_Sentinel,
884 } LDKCOption_u32Z_Tag;
885
886 typedef struct LDKCOption_u32Z {
887    LDKCOption_u32Z_Tag tag;
888    union {
889       struct {
890          uint32_t some;
891       };
892    };
893 } LDKCOption_u32Z;
894
895
896
897 /**
898  * Information about an HTLC as it appears in a commitment transaction
899  */
900 typedef struct MUST_USE_STRUCT LDKHTLCOutputInCommitment {
901    /**
902     * A pointer to the opaque Rust object.
903     * Nearly everywhere, inner must be non-null, however in places where
904     * the Rust equivalent takes an Option, it may be set to null to indicate None.
905     */
906    LDKnativeHTLCOutputInCommitment *inner;
907    /**
908     * Indicates that this is the only struct which contains the same pointer.
909     * Rust functions which take ownership of an object provided via an argument require
910     * this to be true and invalidate the object pointed to by inner.
911     */
912    bool is_owned;
913 } LDKHTLCOutputInCommitment;
914
915 /**
916  * The contents of CResult_HTLCOutputInCommitmentDecodeErrorZ
917  */
918 typedef union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr {
919    /**
920     * A pointer to the contents in the success state.
921     * Reading from this pointer when `result_ok` is not set is undefined.
922     */
923    struct LDKHTLCOutputInCommitment *result;
924    /**
925     * A pointer to the contents in the error state.
926     * Reading from this pointer when `result_ok` is set is undefined.
927     */
928    struct LDKDecodeError *err;
929 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr;
930
931 /**
932  * A CResult_HTLCOutputInCommitmentDecodeErrorZ represents the result of a fallible operation,
933  * containing a crate::lightning::ln::chan_utils::HTLCOutputInCommitment on success and a crate::lightning::ln::msgs::DecodeError on failure.
934  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
935  */
936 typedef struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ {
937    /**
938     * The contents of this CResult_HTLCOutputInCommitmentDecodeErrorZ, accessible via either
939     * `err` or `result` depending on the state of `result_ok`.
940     */
941    union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr contents;
942    /**
943     * Whether this CResult_HTLCOutputInCommitmentDecodeErrorZ represents a success state.
944     */
945    bool result_ok;
946 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZ;
947
948
949
950 /**
951  * Late-bound per-channel counterparty data used to build transactions.
952  */
953 typedef struct MUST_USE_STRUCT LDKCounterpartyChannelTransactionParameters {
954    /**
955     * A pointer to the opaque Rust object.
956     * Nearly everywhere, inner must be non-null, however in places where
957     * the Rust equivalent takes an Option, it may be set to null to indicate None.
958     */
959    LDKnativeCounterpartyChannelTransactionParameters *inner;
960    /**
961     * Indicates that this is the only struct which contains the same pointer.
962     * Rust functions which take ownership of an object provided via an argument require
963     * this to be true and invalidate the object pointed to by inner.
964     */
965    bool is_owned;
966 } LDKCounterpartyChannelTransactionParameters;
967
968 /**
969  * The contents of CResult_CounterpartyChannelTransactionParametersDecodeErrorZ
970  */
971 typedef union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr {
972    /**
973     * A pointer to the contents in the success state.
974     * Reading from this pointer when `result_ok` is not set is undefined.
975     */
976    struct LDKCounterpartyChannelTransactionParameters *result;
977    /**
978     * A pointer to the contents in the error state.
979     * Reading from this pointer when `result_ok` is set is undefined.
980     */
981    struct LDKDecodeError *err;
982 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr;
983
984 /**
985  * A CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
986  * containing a crate::lightning::ln::chan_utils::CounterpartyChannelTransactionParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
987  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
988  */
989 typedef struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
990    /**
991     * The contents of this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ, accessible via either
992     * `err` or `result` depending on the state of `result_ok`.
993     */
994    union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr contents;
995    /**
996     * Whether this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents a success state.
997     */
998    bool result_ok;
999 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
1000
1001
1002
1003 /**
1004  * Per-channel data used to build transactions in conjunction with the per-commitment data (CommitmentTransaction).
1005  * The fields are organized by holder/counterparty.
1006  *
1007  * Normally, this is converted to the broadcaster/countersignatory-organized DirectedChannelTransactionParameters
1008  * before use, via the as_holder_broadcastable and as_counterparty_broadcastable functions.
1009  */
1010 typedef struct MUST_USE_STRUCT LDKChannelTransactionParameters {
1011    /**
1012     * A pointer to the opaque Rust object.
1013     * Nearly everywhere, inner must be non-null, however in places where
1014     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1015     */
1016    LDKnativeChannelTransactionParameters *inner;
1017    /**
1018     * Indicates that this is the only struct which contains the same pointer.
1019     * Rust functions which take ownership of an object provided via an argument require
1020     * this to be true and invalidate the object pointed to by inner.
1021     */
1022    bool is_owned;
1023 } LDKChannelTransactionParameters;
1024
1025 /**
1026  * The contents of CResult_ChannelTransactionParametersDecodeErrorZ
1027  */
1028 typedef union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr {
1029    /**
1030     * A pointer to the contents in the success state.
1031     * Reading from this pointer when `result_ok` is not set is undefined.
1032     */
1033    struct LDKChannelTransactionParameters *result;
1034    /**
1035     * A pointer to the contents in the error state.
1036     * Reading from this pointer when `result_ok` is set is undefined.
1037     */
1038    struct LDKDecodeError *err;
1039 } LDKCResult_ChannelTransactionParametersDecodeErrorZPtr;
1040
1041 /**
1042  * A CResult_ChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
1043  * containing a crate::lightning::ln::chan_utils::ChannelTransactionParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
1044  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1045  */
1046 typedef struct LDKCResult_ChannelTransactionParametersDecodeErrorZ {
1047    /**
1048     * The contents of this CResult_ChannelTransactionParametersDecodeErrorZ, accessible via either
1049     * `err` or `result` depending on the state of `result_ok`.
1050     */
1051    union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr contents;
1052    /**
1053     * Whether this CResult_ChannelTransactionParametersDecodeErrorZ represents a success state.
1054     */
1055    bool result_ok;
1056 } LDKCResult_ChannelTransactionParametersDecodeErrorZ;
1057
1058 /**
1059  * Represents a secp256k1 signature serialized as two 32-byte numbers
1060  */
1061 typedef struct LDKSignature {
1062    /**
1063     * The bytes of the signature in "compact" form
1064     */
1065    uint8_t compact_form[64];
1066 } LDKSignature;
1067
1068 /**
1069  * A dynamically-allocated array of crate::c_types::Signatures of arbitrary size.
1070  * This corresponds to std::vector in C++
1071  */
1072 typedef struct LDKCVec_SignatureZ {
1073    /**
1074     * The elements in the array.
1075     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1076     */
1077    struct LDKSignature *data;
1078    /**
1079     * The number of elements pointed to by `data`.
1080     */
1081    uintptr_t datalen;
1082 } LDKCVec_SignatureZ;
1083
1084
1085
1086 /**
1087  * Information needed to build and sign a holder's commitment transaction.
1088  *
1089  * The transaction is only signed once we are ready to broadcast.
1090  */
1091 typedef struct MUST_USE_STRUCT LDKHolderCommitmentTransaction {
1092    /**
1093     * A pointer to the opaque Rust object.
1094     * Nearly everywhere, inner must be non-null, however in places where
1095     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1096     */
1097    LDKnativeHolderCommitmentTransaction *inner;
1098    /**
1099     * Indicates that this is the only struct which contains the same pointer.
1100     * Rust functions which take ownership of an object provided via an argument require
1101     * this to be true and invalidate the object pointed to by inner.
1102     */
1103    bool is_owned;
1104 } LDKHolderCommitmentTransaction;
1105
1106 /**
1107  * The contents of CResult_HolderCommitmentTransactionDecodeErrorZ
1108  */
1109 typedef union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr {
1110    /**
1111     * A pointer to the contents in the success state.
1112     * Reading from this pointer when `result_ok` is not set is undefined.
1113     */
1114    struct LDKHolderCommitmentTransaction *result;
1115    /**
1116     * A pointer to the contents in the error state.
1117     * Reading from this pointer when `result_ok` is set is undefined.
1118     */
1119    struct LDKDecodeError *err;
1120 } LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr;
1121
1122 /**
1123  * A CResult_HolderCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1124  * containing a crate::lightning::ln::chan_utils::HolderCommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1125  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1126  */
1127 typedef struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ {
1128    /**
1129     * The contents of this CResult_HolderCommitmentTransactionDecodeErrorZ, accessible via either
1130     * `err` or `result` depending on the state of `result_ok`.
1131     */
1132    union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr contents;
1133    /**
1134     * Whether this CResult_HolderCommitmentTransactionDecodeErrorZ represents a success state.
1135     */
1136    bool result_ok;
1137 } LDKCResult_HolderCommitmentTransactionDecodeErrorZ;
1138
1139
1140
1141 /**
1142  * A pre-built Bitcoin commitment transaction and its txid.
1143  */
1144 typedef struct MUST_USE_STRUCT LDKBuiltCommitmentTransaction {
1145    /**
1146     * A pointer to the opaque Rust object.
1147     * Nearly everywhere, inner must be non-null, however in places where
1148     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1149     */
1150    LDKnativeBuiltCommitmentTransaction *inner;
1151    /**
1152     * Indicates that this is the only struct which contains the same pointer.
1153     * Rust functions which take ownership of an object provided via an argument require
1154     * this to be true and invalidate the object pointed to by inner.
1155     */
1156    bool is_owned;
1157 } LDKBuiltCommitmentTransaction;
1158
1159 /**
1160  * The contents of CResult_BuiltCommitmentTransactionDecodeErrorZ
1161  */
1162 typedef union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr {
1163    /**
1164     * A pointer to the contents in the success state.
1165     * Reading from this pointer when `result_ok` is not set is undefined.
1166     */
1167    struct LDKBuiltCommitmentTransaction *result;
1168    /**
1169     * A pointer to the contents in the error state.
1170     * Reading from this pointer when `result_ok` is set is undefined.
1171     */
1172    struct LDKDecodeError *err;
1173 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr;
1174
1175 /**
1176  * A CResult_BuiltCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1177  * containing a crate::lightning::ln::chan_utils::BuiltCommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1178  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1179  */
1180 typedef struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ {
1181    /**
1182     * The contents of this CResult_BuiltCommitmentTransactionDecodeErrorZ, accessible via either
1183     * `err` or `result` depending on the state of `result_ok`.
1184     */
1185    union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr contents;
1186    /**
1187     * Whether this CResult_BuiltCommitmentTransactionDecodeErrorZ represents a success state.
1188     */
1189    bool result_ok;
1190 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZ;
1191
1192
1193
1194 /**
1195  * A wrapper on ClosingTransaction indicating that the built bitcoin
1196  * transaction is trusted.
1197  *
1198  * See trust() and verify() functions on CommitmentTransaction.
1199  *
1200  * This structure implements Deref.
1201  */
1202 typedef struct MUST_USE_STRUCT LDKTrustedClosingTransaction {
1203    /**
1204     * A pointer to the opaque Rust object.
1205     * Nearly everywhere, inner must be non-null, however in places where
1206     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1207     */
1208    LDKnativeTrustedClosingTransaction *inner;
1209    /**
1210     * Indicates that this is the only struct which contains the same pointer.
1211     * Rust functions which take ownership of an object provided via an argument require
1212     * this to be true and invalidate the object pointed to by inner.
1213     */
1214    bool is_owned;
1215 } LDKTrustedClosingTransaction;
1216
1217 /**
1218  * The contents of CResult_TrustedClosingTransactionNoneZ
1219  */
1220 typedef union LDKCResult_TrustedClosingTransactionNoneZPtr {
1221    /**
1222     * A pointer to the contents in the success state.
1223     * Reading from this pointer when `result_ok` is not set is undefined.
1224     */
1225    struct LDKTrustedClosingTransaction *result;
1226    /**
1227     * Note that this value is always NULL, as there are no contents in the Err variant
1228     */
1229    void *err;
1230 } LDKCResult_TrustedClosingTransactionNoneZPtr;
1231
1232 /**
1233  * A CResult_TrustedClosingTransactionNoneZ represents the result of a fallible operation,
1234  * containing a crate::lightning::ln::chan_utils::TrustedClosingTransaction on success and a () on failure.
1235  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1236  */
1237 typedef struct LDKCResult_TrustedClosingTransactionNoneZ {
1238    /**
1239     * The contents of this CResult_TrustedClosingTransactionNoneZ, accessible via either
1240     * `err` or `result` depending on the state of `result_ok`.
1241     */
1242    union LDKCResult_TrustedClosingTransactionNoneZPtr contents;
1243    /**
1244     * Whether this CResult_TrustedClosingTransactionNoneZ represents a success state.
1245     */
1246    bool result_ok;
1247 } LDKCResult_TrustedClosingTransactionNoneZ;
1248
1249
1250
1251 /**
1252  * This class tracks the per-transaction information needed to build a commitment transaction and will
1253  * actually build it and sign.  It is used for holder transactions that we sign only when needed
1254  * and for transactions we sign for the counterparty.
1255  *
1256  * This class can be used inside a signer implementation to generate a signature given the relevant
1257  * secret key.
1258  */
1259 typedef struct MUST_USE_STRUCT LDKCommitmentTransaction {
1260    /**
1261     * A pointer to the opaque Rust object.
1262     * Nearly everywhere, inner must be non-null, however in places where
1263     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1264     */
1265    LDKnativeCommitmentTransaction *inner;
1266    /**
1267     * Indicates that this is the only struct which contains the same pointer.
1268     * Rust functions which take ownership of an object provided via an argument require
1269     * this to be true and invalidate the object pointed to by inner.
1270     */
1271    bool is_owned;
1272 } LDKCommitmentTransaction;
1273
1274 /**
1275  * The contents of CResult_CommitmentTransactionDecodeErrorZ
1276  */
1277 typedef union LDKCResult_CommitmentTransactionDecodeErrorZPtr {
1278    /**
1279     * A pointer to the contents in the success state.
1280     * Reading from this pointer when `result_ok` is not set is undefined.
1281     */
1282    struct LDKCommitmentTransaction *result;
1283    /**
1284     * A pointer to the contents in the error state.
1285     * Reading from this pointer when `result_ok` is set is undefined.
1286     */
1287    struct LDKDecodeError *err;
1288 } LDKCResult_CommitmentTransactionDecodeErrorZPtr;
1289
1290 /**
1291  * A CResult_CommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1292  * containing a crate::lightning::ln::chan_utils::CommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1293  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1294  */
1295 typedef struct LDKCResult_CommitmentTransactionDecodeErrorZ {
1296    /**
1297     * The contents of this CResult_CommitmentTransactionDecodeErrorZ, accessible via either
1298     * `err` or `result` depending on the state of `result_ok`.
1299     */
1300    union LDKCResult_CommitmentTransactionDecodeErrorZPtr contents;
1301    /**
1302     * Whether this CResult_CommitmentTransactionDecodeErrorZ represents a success state.
1303     */
1304    bool result_ok;
1305 } LDKCResult_CommitmentTransactionDecodeErrorZ;
1306
1307
1308
1309 /**
1310  * A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin
1311  * transaction and the transaction creation keys) are trusted.
1312  *
1313  * See trust() and verify() functions on CommitmentTransaction.
1314  *
1315  * This structure implements Deref.
1316  */
1317 typedef struct MUST_USE_STRUCT LDKTrustedCommitmentTransaction {
1318    /**
1319     * A pointer to the opaque Rust object.
1320     * Nearly everywhere, inner must be non-null, however in places where
1321     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1322     */
1323    LDKnativeTrustedCommitmentTransaction *inner;
1324    /**
1325     * Indicates that this is the only struct which contains the same pointer.
1326     * Rust functions which take ownership of an object provided via an argument require
1327     * this to be true and invalidate the object pointed to by inner.
1328     */
1329    bool is_owned;
1330 } LDKTrustedCommitmentTransaction;
1331
1332 /**
1333  * The contents of CResult_TrustedCommitmentTransactionNoneZ
1334  */
1335 typedef union LDKCResult_TrustedCommitmentTransactionNoneZPtr {
1336    /**
1337     * A pointer to the contents in the success state.
1338     * Reading from this pointer when `result_ok` is not set is undefined.
1339     */
1340    struct LDKTrustedCommitmentTransaction *result;
1341    /**
1342     * Note that this value is always NULL, as there are no contents in the Err variant
1343     */
1344    void *err;
1345 } LDKCResult_TrustedCommitmentTransactionNoneZPtr;
1346
1347 /**
1348  * A CResult_TrustedCommitmentTransactionNoneZ represents the result of a fallible operation,
1349  * containing a crate::lightning::ln::chan_utils::TrustedCommitmentTransaction on success and a () on failure.
1350  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1351  */
1352 typedef struct LDKCResult_TrustedCommitmentTransactionNoneZ {
1353    /**
1354     * The contents of this CResult_TrustedCommitmentTransactionNoneZ, accessible via either
1355     * `err` or `result` depending on the state of `result_ok`.
1356     */
1357    union LDKCResult_TrustedCommitmentTransactionNoneZPtr contents;
1358    /**
1359     * Whether this CResult_TrustedCommitmentTransactionNoneZ represents a success state.
1360     */
1361    bool result_ok;
1362 } LDKCResult_TrustedCommitmentTransactionNoneZ;
1363
1364 /**
1365  * The contents of CResult_CVec_SignatureZNoneZ
1366  */
1367 typedef union LDKCResult_CVec_SignatureZNoneZPtr {
1368    /**
1369     * A pointer to the contents in the success state.
1370     * Reading from this pointer when `result_ok` is not set is undefined.
1371     */
1372    struct LDKCVec_SignatureZ *result;
1373    /**
1374     * Note that this value is always NULL, as there are no contents in the Err variant
1375     */
1376    void *err;
1377 } LDKCResult_CVec_SignatureZNoneZPtr;
1378
1379 /**
1380  * A CResult_CVec_SignatureZNoneZ represents the result of a fallible operation,
1381  * containing a crate::c_types::derived::CVec_SignatureZ on success and a () on failure.
1382  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1383  */
1384 typedef struct LDKCResult_CVec_SignatureZNoneZ {
1385    /**
1386     * The contents of this CResult_CVec_SignatureZNoneZ, accessible via either
1387     * `err` or `result` depending on the state of `result_ok`.
1388     */
1389    union LDKCResult_CVec_SignatureZNoneZPtr contents;
1390    /**
1391     * Whether this CResult_CVec_SignatureZNoneZ represents a success state.
1392     */
1393    bool result_ok;
1394 } LDKCResult_CVec_SignatureZNoneZ;
1395
1396
1397
1398 /**
1399  * A script pubkey for shutting down a channel as defined by [BOLT #2].
1400  *
1401  * [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md
1402  */
1403 typedef struct MUST_USE_STRUCT LDKShutdownScript {
1404    /**
1405     * A pointer to the opaque Rust object.
1406     * Nearly everywhere, inner must be non-null, however in places where
1407     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1408     */
1409    LDKnativeShutdownScript *inner;
1410    /**
1411     * Indicates that this is the only struct which contains the same pointer.
1412     * Rust functions which take ownership of an object provided via an argument require
1413     * this to be true and invalidate the object pointed to by inner.
1414     */
1415    bool is_owned;
1416 } LDKShutdownScript;
1417
1418 /**
1419  * The contents of CResult_ShutdownScriptDecodeErrorZ
1420  */
1421 typedef union LDKCResult_ShutdownScriptDecodeErrorZPtr {
1422    /**
1423     * A pointer to the contents in the success state.
1424     * Reading from this pointer when `result_ok` is not set is undefined.
1425     */
1426    struct LDKShutdownScript *result;
1427    /**
1428     * A pointer to the contents in the error state.
1429     * Reading from this pointer when `result_ok` is set is undefined.
1430     */
1431    struct LDKDecodeError *err;
1432 } LDKCResult_ShutdownScriptDecodeErrorZPtr;
1433
1434 /**
1435  * A CResult_ShutdownScriptDecodeErrorZ represents the result of a fallible operation,
1436  * containing a crate::lightning::ln::script::ShutdownScript on success and a crate::lightning::ln::msgs::DecodeError on failure.
1437  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1438  */
1439 typedef struct LDKCResult_ShutdownScriptDecodeErrorZ {
1440    /**
1441     * The contents of this CResult_ShutdownScriptDecodeErrorZ, accessible via either
1442     * `err` or `result` depending on the state of `result_ok`.
1443     */
1444    union LDKCResult_ShutdownScriptDecodeErrorZPtr contents;
1445    /**
1446     * Whether this CResult_ShutdownScriptDecodeErrorZ represents a success state.
1447     */
1448    bool result_ok;
1449 } LDKCResult_ShutdownScriptDecodeErrorZ;
1450
1451
1452
1453 /**
1454  * An error occurring when converting from [`Script`] to [`ShutdownScript`].
1455  */
1456 typedef struct MUST_USE_STRUCT LDKInvalidShutdownScript {
1457    /**
1458     * A pointer to the opaque Rust object.
1459     * Nearly everywhere, inner must be non-null, however in places where
1460     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1461     */
1462    LDKnativeInvalidShutdownScript *inner;
1463    /**
1464     * Indicates that this is the only struct which contains the same pointer.
1465     * Rust functions which take ownership of an object provided via an argument require
1466     * this to be true and invalidate the object pointed to by inner.
1467     */
1468    bool is_owned;
1469 } LDKInvalidShutdownScript;
1470
1471 /**
1472  * The contents of CResult_ShutdownScriptInvalidShutdownScriptZ
1473  */
1474 typedef union LDKCResult_ShutdownScriptInvalidShutdownScriptZPtr {
1475    /**
1476     * A pointer to the contents in the success state.
1477     * Reading from this pointer when `result_ok` is not set is undefined.
1478     */
1479    struct LDKShutdownScript *result;
1480    /**
1481     * A pointer to the contents in the error state.
1482     * Reading from this pointer when `result_ok` is set is undefined.
1483     */
1484    struct LDKInvalidShutdownScript *err;
1485 } LDKCResult_ShutdownScriptInvalidShutdownScriptZPtr;
1486
1487 /**
1488  * A CResult_ShutdownScriptInvalidShutdownScriptZ represents the result of a fallible operation,
1489  * containing a crate::lightning::ln::script::ShutdownScript on success and a crate::lightning::ln::script::InvalidShutdownScript on failure.
1490  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1491  */
1492 typedef struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ {
1493    /**
1494     * The contents of this CResult_ShutdownScriptInvalidShutdownScriptZ, accessible via either
1495     * `err` or `result` depending on the state of `result_ok`.
1496     */
1497    union LDKCResult_ShutdownScriptInvalidShutdownScriptZPtr contents;
1498    /**
1499     * Whether this CResult_ShutdownScriptInvalidShutdownScriptZ represents a success state.
1500     */
1501    bool result_ok;
1502 } LDKCResult_ShutdownScriptInvalidShutdownScriptZ;
1503
1504 /**
1505  * The contents of CResult_NoneErrorZ
1506  */
1507 typedef union LDKCResult_NoneErrorZPtr {
1508    /**
1509     * Note that this value is always NULL, as there are no contents in the OK variant
1510     */
1511    void *result;
1512    /**
1513     * A pointer to the contents in the error state.
1514     * Reading from this pointer when `result_ok` is set is undefined.
1515     */
1516    enum LDKIOError *err;
1517 } LDKCResult_NoneErrorZPtr;
1518
1519 /**
1520  * A CResult_NoneErrorZ represents the result of a fallible operation,
1521  * containing a () on success and a crate::c_types::IOError on failure.
1522  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1523  */
1524 typedef struct LDKCResult_NoneErrorZ {
1525    /**
1526     * The contents of this CResult_NoneErrorZ, accessible via either
1527     * `err` or `result` depending on the state of `result_ok`.
1528     */
1529    union LDKCResult_NoneErrorZPtr contents;
1530    /**
1531     * Whether this CResult_NoneErrorZ represents a success state.
1532     */
1533    bool result_ok;
1534 } LDKCResult_NoneErrorZ;
1535
1536
1537
1538 /**
1539  * A hop in a route
1540  */
1541 typedef struct MUST_USE_STRUCT LDKRouteHop {
1542    /**
1543     * A pointer to the opaque Rust object.
1544     * Nearly everywhere, inner must be non-null, however in places where
1545     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1546     */
1547    LDKnativeRouteHop *inner;
1548    /**
1549     * Indicates that this is the only struct which contains the same pointer.
1550     * Rust functions which take ownership of an object provided via an argument require
1551     * this to be true and invalidate the object pointed to by inner.
1552     */
1553    bool is_owned;
1554 } LDKRouteHop;
1555
1556 /**
1557  * The contents of CResult_RouteHopDecodeErrorZ
1558  */
1559 typedef union LDKCResult_RouteHopDecodeErrorZPtr {
1560    /**
1561     * A pointer to the contents in the success state.
1562     * Reading from this pointer when `result_ok` is not set is undefined.
1563     */
1564    struct LDKRouteHop *result;
1565    /**
1566     * A pointer to the contents in the error state.
1567     * Reading from this pointer when `result_ok` is set is undefined.
1568     */
1569    struct LDKDecodeError *err;
1570 } LDKCResult_RouteHopDecodeErrorZPtr;
1571
1572 /**
1573  * A CResult_RouteHopDecodeErrorZ represents the result of a fallible operation,
1574  * containing a crate::lightning::routing::router::RouteHop on success and a crate::lightning::ln::msgs::DecodeError on failure.
1575  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1576  */
1577 typedef struct LDKCResult_RouteHopDecodeErrorZ {
1578    /**
1579     * The contents of this CResult_RouteHopDecodeErrorZ, accessible via either
1580     * `err` or `result` depending on the state of `result_ok`.
1581     */
1582    union LDKCResult_RouteHopDecodeErrorZPtr contents;
1583    /**
1584     * Whether this CResult_RouteHopDecodeErrorZ represents a success state.
1585     */
1586    bool result_ok;
1587 } LDKCResult_RouteHopDecodeErrorZ;
1588
1589 /**
1590  * A dynamically-allocated array of crate::lightning::routing::router::RouteHops of arbitrary size.
1591  * This corresponds to std::vector in C++
1592  */
1593 typedef struct LDKCVec_RouteHopZ {
1594    /**
1595     * The elements in the array.
1596     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1597     */
1598    struct LDKRouteHop *data;
1599    /**
1600     * The number of elements pointed to by `data`.
1601     */
1602    uintptr_t datalen;
1603 } LDKCVec_RouteHopZ;
1604
1605 /**
1606  * A dynamically-allocated array of crate::c_types::derived::CVec_RouteHopZs of arbitrary size.
1607  * This corresponds to std::vector in C++
1608  */
1609 typedef struct LDKCVec_CVec_RouteHopZZ {
1610    /**
1611     * The elements in the array.
1612     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1613     */
1614    struct LDKCVec_RouteHopZ *data;
1615    /**
1616     * The number of elements pointed to by `data`.
1617     */
1618    uintptr_t datalen;
1619 } LDKCVec_CVec_RouteHopZZ;
1620
1621
1622
1623 /**
1624  * A route directs a payment from the sender (us) to the recipient. If the recipient supports MPP,
1625  * it can take multiple paths. Each path is composed of one or more hops through the network.
1626  */
1627 typedef struct MUST_USE_STRUCT LDKRoute {
1628    /**
1629     * A pointer to the opaque Rust object.
1630     * Nearly everywhere, inner must be non-null, however in places where
1631     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1632     */
1633    LDKnativeRoute *inner;
1634    /**
1635     * Indicates that this is the only struct which contains the same pointer.
1636     * Rust functions which take ownership of an object provided via an argument require
1637     * this to be true and invalidate the object pointed to by inner.
1638     */
1639    bool is_owned;
1640 } LDKRoute;
1641
1642 /**
1643  * The contents of CResult_RouteDecodeErrorZ
1644  */
1645 typedef union LDKCResult_RouteDecodeErrorZPtr {
1646    /**
1647     * A pointer to the contents in the success state.
1648     * Reading from this pointer when `result_ok` is not set is undefined.
1649     */
1650    struct LDKRoute *result;
1651    /**
1652     * A pointer to the contents in the error state.
1653     * Reading from this pointer when `result_ok` is set is undefined.
1654     */
1655    struct LDKDecodeError *err;
1656 } LDKCResult_RouteDecodeErrorZPtr;
1657
1658 /**
1659  * A CResult_RouteDecodeErrorZ represents the result of a fallible operation,
1660  * containing a crate::lightning::routing::router::Route on success and a crate::lightning::ln::msgs::DecodeError on failure.
1661  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1662  */
1663 typedef struct LDKCResult_RouteDecodeErrorZ {
1664    /**
1665     * The contents of this CResult_RouteDecodeErrorZ, accessible via either
1666     * `err` or `result` depending on the state of `result_ok`.
1667     */
1668    union LDKCResult_RouteDecodeErrorZPtr contents;
1669    /**
1670     * Whether this CResult_RouteDecodeErrorZ represents a success state.
1671     */
1672    bool result_ok;
1673 } LDKCResult_RouteDecodeErrorZ;
1674
1675
1676
1677 /**
1678  * Parameters needed to find a [`Route`].
1679  *
1680  * Passed to [`find_route`] and also provided in [`Event::PaymentPathFailed`] for retrying a failed
1681  * payment path.
1682  *
1683  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
1684  */
1685 typedef struct MUST_USE_STRUCT LDKRouteParameters {
1686    /**
1687     * A pointer to the opaque Rust object.
1688     * Nearly everywhere, inner must be non-null, however in places where
1689     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1690     */
1691    LDKnativeRouteParameters *inner;
1692    /**
1693     * Indicates that this is the only struct which contains the same pointer.
1694     * Rust functions which take ownership of an object provided via an argument require
1695     * this to be true and invalidate the object pointed to by inner.
1696     */
1697    bool is_owned;
1698 } LDKRouteParameters;
1699
1700 /**
1701  * The contents of CResult_RouteParametersDecodeErrorZ
1702  */
1703 typedef union LDKCResult_RouteParametersDecodeErrorZPtr {
1704    /**
1705     * A pointer to the contents in the success state.
1706     * Reading from this pointer when `result_ok` is not set is undefined.
1707     */
1708    struct LDKRouteParameters *result;
1709    /**
1710     * A pointer to the contents in the error state.
1711     * Reading from this pointer when `result_ok` is set is undefined.
1712     */
1713    struct LDKDecodeError *err;
1714 } LDKCResult_RouteParametersDecodeErrorZPtr;
1715
1716 /**
1717  * A CResult_RouteParametersDecodeErrorZ represents the result of a fallible operation,
1718  * containing a crate::lightning::routing::router::RouteParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
1719  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1720  */
1721 typedef struct LDKCResult_RouteParametersDecodeErrorZ {
1722    /**
1723     * The contents of this CResult_RouteParametersDecodeErrorZ, accessible via either
1724     * `err` or `result` depending on the state of `result_ok`.
1725     */
1726    union LDKCResult_RouteParametersDecodeErrorZPtr contents;
1727    /**
1728     * Whether this CResult_RouteParametersDecodeErrorZ represents a success state.
1729     */
1730    bool result_ok;
1731 } LDKCResult_RouteParametersDecodeErrorZ;
1732
1733
1734
1735 /**
1736  * A list of hops along a payment path terminating with a channel to the recipient.
1737  */
1738 typedef struct MUST_USE_STRUCT LDKRouteHint {
1739    /**
1740     * A pointer to the opaque Rust object.
1741     * Nearly everywhere, inner must be non-null, however in places where
1742     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1743     */
1744    LDKnativeRouteHint *inner;
1745    /**
1746     * Indicates that this is the only struct which contains the same pointer.
1747     * Rust functions which take ownership of an object provided via an argument require
1748     * this to be true and invalidate the object pointed to by inner.
1749     */
1750    bool is_owned;
1751 } LDKRouteHint;
1752
1753 /**
1754  * A dynamically-allocated array of crate::lightning::routing::router::RouteHints of arbitrary size.
1755  * This corresponds to std::vector in C++
1756  */
1757 typedef struct LDKCVec_RouteHintZ {
1758    /**
1759     * The elements in the array.
1760     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1761     */
1762    struct LDKRouteHint *data;
1763    /**
1764     * The number of elements pointed to by `data`.
1765     */
1766    uintptr_t datalen;
1767 } LDKCVec_RouteHintZ;
1768
1769 /**
1770  * An enum which can either contain a u64 or not
1771  */
1772 typedef enum LDKCOption_u64Z_Tag {
1773    /**
1774     * When we're in this state, this COption_u64Z contains a u64
1775     */
1776    LDKCOption_u64Z_Some,
1777    /**
1778     * When we're in this state, this COption_u64Z contains nothing
1779     */
1780    LDKCOption_u64Z_None,
1781    /**
1782     * Must be last for serialization purposes
1783     */
1784    LDKCOption_u64Z_Sentinel,
1785 } LDKCOption_u64Z_Tag;
1786
1787 typedef struct LDKCOption_u64Z {
1788    LDKCOption_u64Z_Tag tag;
1789    union {
1790       struct {
1791          uint64_t some;
1792       };
1793    };
1794 } LDKCOption_u64Z;
1795
1796
1797
1798 /**
1799  * The recipient of a payment.
1800  */
1801 typedef struct MUST_USE_STRUCT LDKPaymentParameters {
1802    /**
1803     * A pointer to the opaque Rust object.
1804     * Nearly everywhere, inner must be non-null, however in places where
1805     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1806     */
1807    LDKnativePaymentParameters *inner;
1808    /**
1809     * Indicates that this is the only struct which contains the same pointer.
1810     * Rust functions which take ownership of an object provided via an argument require
1811     * this to be true and invalidate the object pointed to by inner.
1812     */
1813    bool is_owned;
1814 } LDKPaymentParameters;
1815
1816 /**
1817  * The contents of CResult_PaymentParametersDecodeErrorZ
1818  */
1819 typedef union LDKCResult_PaymentParametersDecodeErrorZPtr {
1820    /**
1821     * A pointer to the contents in the success state.
1822     * Reading from this pointer when `result_ok` is not set is undefined.
1823     */
1824    struct LDKPaymentParameters *result;
1825    /**
1826     * A pointer to the contents in the error state.
1827     * Reading from this pointer when `result_ok` is set is undefined.
1828     */
1829    struct LDKDecodeError *err;
1830 } LDKCResult_PaymentParametersDecodeErrorZPtr;
1831
1832 /**
1833  * A CResult_PaymentParametersDecodeErrorZ represents the result of a fallible operation,
1834  * containing a crate::lightning::routing::router::PaymentParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
1835  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1836  */
1837 typedef struct LDKCResult_PaymentParametersDecodeErrorZ {
1838    /**
1839     * The contents of this CResult_PaymentParametersDecodeErrorZ, accessible via either
1840     * `err` or `result` depending on the state of `result_ok`.
1841     */
1842    union LDKCResult_PaymentParametersDecodeErrorZPtr contents;
1843    /**
1844     * Whether this CResult_PaymentParametersDecodeErrorZ represents a success state.
1845     */
1846    bool result_ok;
1847 } LDKCResult_PaymentParametersDecodeErrorZ;
1848
1849
1850
1851 /**
1852  * A channel descriptor for a hop along a payment path.
1853  */
1854 typedef struct MUST_USE_STRUCT LDKRouteHintHop {
1855    /**
1856     * A pointer to the opaque Rust object.
1857     * Nearly everywhere, inner must be non-null, however in places where
1858     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1859     */
1860    LDKnativeRouteHintHop *inner;
1861    /**
1862     * Indicates that this is the only struct which contains the same pointer.
1863     * Rust functions which take ownership of an object provided via an argument require
1864     * this to be true and invalidate the object pointed to by inner.
1865     */
1866    bool is_owned;
1867 } LDKRouteHintHop;
1868
1869 /**
1870  * A dynamically-allocated array of crate::lightning::routing::router::RouteHintHops of arbitrary size.
1871  * This corresponds to std::vector in C++
1872  */
1873 typedef struct LDKCVec_RouteHintHopZ {
1874    /**
1875     * The elements in the array.
1876     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1877     */
1878    struct LDKRouteHintHop *data;
1879    /**
1880     * The number of elements pointed to by `data`.
1881     */
1882    uintptr_t datalen;
1883 } LDKCVec_RouteHintHopZ;
1884
1885 /**
1886  * The contents of CResult_RouteHintDecodeErrorZ
1887  */
1888 typedef union LDKCResult_RouteHintDecodeErrorZPtr {
1889    /**
1890     * A pointer to the contents in the success state.
1891     * Reading from this pointer when `result_ok` is not set is undefined.
1892     */
1893    struct LDKRouteHint *result;
1894    /**
1895     * A pointer to the contents in the error state.
1896     * Reading from this pointer when `result_ok` is set is undefined.
1897     */
1898    struct LDKDecodeError *err;
1899 } LDKCResult_RouteHintDecodeErrorZPtr;
1900
1901 /**
1902  * A CResult_RouteHintDecodeErrorZ represents the result of a fallible operation,
1903  * containing a crate::lightning::routing::router::RouteHint on success and a crate::lightning::ln::msgs::DecodeError on failure.
1904  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1905  */
1906 typedef struct LDKCResult_RouteHintDecodeErrorZ {
1907    /**
1908     * The contents of this CResult_RouteHintDecodeErrorZ, accessible via either
1909     * `err` or `result` depending on the state of `result_ok`.
1910     */
1911    union LDKCResult_RouteHintDecodeErrorZPtr contents;
1912    /**
1913     * Whether this CResult_RouteHintDecodeErrorZ represents a success state.
1914     */
1915    bool result_ok;
1916 } LDKCResult_RouteHintDecodeErrorZ;
1917
1918 /**
1919  * The contents of CResult_RouteHintHopDecodeErrorZ
1920  */
1921 typedef union LDKCResult_RouteHintHopDecodeErrorZPtr {
1922    /**
1923     * A pointer to the contents in the success state.
1924     * Reading from this pointer when `result_ok` is not set is undefined.
1925     */
1926    struct LDKRouteHintHop *result;
1927    /**
1928     * A pointer to the contents in the error state.
1929     * Reading from this pointer when `result_ok` is set is undefined.
1930     */
1931    struct LDKDecodeError *err;
1932 } LDKCResult_RouteHintHopDecodeErrorZPtr;
1933
1934 /**
1935  * A CResult_RouteHintHopDecodeErrorZ represents the result of a fallible operation,
1936  * containing a crate::lightning::routing::router::RouteHintHop on success and a crate::lightning::ln::msgs::DecodeError on failure.
1937  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1938  */
1939 typedef struct LDKCResult_RouteHintHopDecodeErrorZ {
1940    /**
1941     * The contents of this CResult_RouteHintHopDecodeErrorZ, accessible via either
1942     * `err` or `result` depending on the state of `result_ok`.
1943     */
1944    union LDKCResult_RouteHintHopDecodeErrorZPtr contents;
1945    /**
1946     * Whether this CResult_RouteHintHopDecodeErrorZ represents a success state.
1947     */
1948    bool result_ok;
1949 } LDKCResult_RouteHintHopDecodeErrorZ;
1950
1951
1952
1953 /**
1954  * Details of a channel, as returned by ChannelManager::list_channels and ChannelManager::list_usable_channels
1955  */
1956 typedef struct MUST_USE_STRUCT LDKChannelDetails {
1957    /**
1958     * A pointer to the opaque Rust object.
1959     * Nearly everywhere, inner must be non-null, however in places where
1960     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1961     */
1962    LDKnativeChannelDetails *inner;
1963    /**
1964     * Indicates that this is the only struct which contains the same pointer.
1965     * Rust functions which take ownership of an object provided via an argument require
1966     * this to be true and invalidate the object pointed to by inner.
1967     */
1968    bool is_owned;
1969 } LDKChannelDetails;
1970
1971 /**
1972  * A dynamically-allocated array of crate::lightning::ln::channelmanager::ChannelDetailss of arbitrary size.
1973  * This corresponds to std::vector in C++
1974  */
1975 typedef struct LDKCVec_ChannelDetailsZ {
1976    /**
1977     * The elements in the array.
1978     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1979     */
1980    struct LDKChannelDetails *data;
1981    /**
1982     * The number of elements pointed to by `data`.
1983     */
1984    uintptr_t datalen;
1985 } LDKCVec_ChannelDetailsZ;
1986
1987
1988
1989 /**
1990  * An Err type for failure to process messages.
1991  */
1992 typedef struct MUST_USE_STRUCT LDKLightningError {
1993    /**
1994     * A pointer to the opaque Rust object.
1995     * Nearly everywhere, inner must be non-null, however in places where
1996     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1997     */
1998    LDKnativeLightningError *inner;
1999    /**
2000     * Indicates that this is the only struct which contains the same pointer.
2001     * Rust functions which take ownership of an object provided via an argument require
2002     * this to be true and invalidate the object pointed to by inner.
2003     */
2004    bool is_owned;
2005 } LDKLightningError;
2006
2007 /**
2008  * The contents of CResult_RouteLightningErrorZ
2009  */
2010 typedef union LDKCResult_RouteLightningErrorZPtr {
2011    /**
2012     * A pointer to the contents in the success state.
2013     * Reading from this pointer when `result_ok` is not set is undefined.
2014     */
2015    struct LDKRoute *result;
2016    /**
2017     * A pointer to the contents in the error state.
2018     * Reading from this pointer when `result_ok` is set is undefined.
2019     */
2020    struct LDKLightningError *err;
2021 } LDKCResult_RouteLightningErrorZPtr;
2022
2023 /**
2024  * A CResult_RouteLightningErrorZ represents the result of a fallible operation,
2025  * containing a crate::lightning::routing::router::Route on success and a crate::lightning::ln::msgs::LightningError on failure.
2026  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2027  */
2028 typedef struct LDKCResult_RouteLightningErrorZ {
2029    /**
2030     * The contents of this CResult_RouteLightningErrorZ, accessible via either
2031     * `err` or `result` depending on the state of `result_ok`.
2032     */
2033    union LDKCResult_RouteLightningErrorZPtr contents;
2034    /**
2035     * Whether this CResult_RouteLightningErrorZ represents a success state.
2036     */
2037    bool result_ok;
2038 } LDKCResult_RouteLightningErrorZ;
2039
2040 /**
2041  * The contents of CResult_TxOutAccessErrorZ
2042  */
2043 typedef union LDKCResult_TxOutAccessErrorZPtr {
2044    /**
2045     * A pointer to the contents in the success state.
2046     * Reading from this pointer when `result_ok` is not set is undefined.
2047     */
2048    struct LDKTxOut *result;
2049    /**
2050     * A pointer to the contents in the error state.
2051     * Reading from this pointer when `result_ok` is set is undefined.
2052     */
2053    enum LDKAccessError *err;
2054 } LDKCResult_TxOutAccessErrorZPtr;
2055
2056 /**
2057  * A CResult_TxOutAccessErrorZ represents the result of a fallible operation,
2058  * containing a crate::c_types::TxOut on success and a crate::lightning::chain::AccessError on failure.
2059  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2060  */
2061 typedef struct LDKCResult_TxOutAccessErrorZ {
2062    /**
2063     * The contents of this CResult_TxOutAccessErrorZ, accessible via either
2064     * `err` or `result` depending on the state of `result_ok`.
2065     */
2066    union LDKCResult_TxOutAccessErrorZPtr contents;
2067    /**
2068     * Whether this CResult_TxOutAccessErrorZ represents a success state.
2069     */
2070    bool result_ok;
2071 } LDKCResult_TxOutAccessErrorZ;
2072
2073 /**
2074  * A tuple of 2 elements. See the individual fields for the types contained.
2075  */
2076 typedef struct LDKC2Tuple_usizeTransactionZ {
2077    /**
2078     * The element at position 0
2079     */
2080    uintptr_t a;
2081    /**
2082     * The element at position 1
2083     */
2084    struct LDKTransaction b;
2085 } LDKC2Tuple_usizeTransactionZ;
2086
2087 /**
2088  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_usizeTransactionZs of arbitrary size.
2089  * This corresponds to std::vector in C++
2090  */
2091 typedef struct LDKCVec_C2Tuple_usizeTransactionZZ {
2092    /**
2093     * The elements in the array.
2094     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2095     */
2096    struct LDKC2Tuple_usizeTransactionZ *data;
2097    /**
2098     * The number of elements pointed to by `data`.
2099     */
2100    uintptr_t datalen;
2101 } LDKCVec_C2Tuple_usizeTransactionZZ;
2102
2103 /**
2104  * Arbitrary 32 bytes, which could represent one of a few different things. You probably want to
2105  * look up the corresponding function in rust-lightning's docs.
2106  */
2107 typedef struct LDKThirtyTwoBytes {
2108    /**
2109     * The thirty-two bytes
2110     */
2111    uint8_t data[32];
2112 } LDKThirtyTwoBytes;
2113
2114 /**
2115  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
2116  * This corresponds to std::vector in C++
2117  */
2118 typedef struct LDKCVec_TxidZ {
2119    /**
2120     * The elements in the array.
2121     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2122     */
2123    struct LDKThirtyTwoBytes *data;
2124    /**
2125     * The number of elements pointed to by `data`.
2126     */
2127    uintptr_t datalen;
2128 } LDKCVec_TxidZ;
2129
2130 /**
2131  * The contents of CResult_NoneChannelMonitorUpdateErrZ
2132  */
2133 typedef union LDKCResult_NoneChannelMonitorUpdateErrZPtr {
2134    /**
2135     * Note that this value is always NULL, as there are no contents in the OK variant
2136     */
2137    void *result;
2138    /**
2139     * A pointer to the contents in the error state.
2140     * Reading from this pointer when `result_ok` is set is undefined.
2141     */
2142    enum LDKChannelMonitorUpdateErr *err;
2143 } LDKCResult_NoneChannelMonitorUpdateErrZPtr;
2144
2145 /**
2146  * A CResult_NoneChannelMonitorUpdateErrZ represents the result of a fallible operation,
2147  * containing a () on success and a crate::lightning::chain::ChannelMonitorUpdateErr on failure.
2148  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2149  */
2150 typedef struct LDKCResult_NoneChannelMonitorUpdateErrZ {
2151    /**
2152     * The contents of this CResult_NoneChannelMonitorUpdateErrZ, accessible via either
2153     * `err` or `result` depending on the state of `result_ok`.
2154     */
2155    union LDKCResult_NoneChannelMonitorUpdateErrZPtr contents;
2156    /**
2157     * Whether this CResult_NoneChannelMonitorUpdateErrZ represents a success state.
2158     */
2159    bool result_ok;
2160 } LDKCResult_NoneChannelMonitorUpdateErrZ;
2161
2162
2163
2164 /**
2165  * Simple structure sent back by `chain::Watch` when an HTLC from a forward channel is detected on
2166  * chain. Used to update the corresponding HTLC in the backward channel. Failing to pass the
2167  * preimage claim backward will lead to loss of funds.
2168  */
2169 typedef struct MUST_USE_STRUCT LDKHTLCUpdate {
2170    /**
2171     * A pointer to the opaque Rust object.
2172     * Nearly everywhere, inner must be non-null, however in places where
2173     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2174     */
2175    LDKnativeHTLCUpdate *inner;
2176    /**
2177     * Indicates that this is the only struct which contains the same pointer.
2178     * Rust functions which take ownership of an object provided via an argument require
2179     * this to be true and invalidate the object pointed to by inner.
2180     */
2181    bool is_owned;
2182 } LDKHTLCUpdate;
2183
2184
2185
2186 /**
2187  * A reference to a transaction output.
2188  *
2189  * Differs from bitcoin::blockdata::transaction::OutPoint as the index is a u16 instead of u32
2190  * due to LN's restrictions on index values. Should reduce (possibly) unsafe conversions this way.
2191  */
2192 typedef struct MUST_USE_STRUCT LDKOutPoint {
2193    /**
2194     * A pointer to the opaque Rust object.
2195     * Nearly everywhere, inner must be non-null, however in places where
2196     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2197     */
2198    LDKnativeOutPoint *inner;
2199    /**
2200     * Indicates that this is the only struct which contains the same pointer.
2201     * Rust functions which take ownership of an object provided via an argument require
2202     * this to be true and invalidate the object pointed to by inner.
2203     */
2204    bool is_owned;
2205 } LDKOutPoint;
2206
2207 /**
2208  * An event to be processed by the ChannelManager.
2209  */
2210 typedef enum LDKMonitorEvent_Tag {
2211    /**
2212     * A monitor event containing an HTLCUpdate.
2213     */
2214    LDKMonitorEvent_HTLCEvent,
2215    /**
2216     * A monitor event that the Channel's commitment transaction was confirmed.
2217     */
2218    LDKMonitorEvent_CommitmentTxConfirmed,
2219    /**
2220     * Indicates a [`ChannelMonitor`] update has completed. See
2221     * [`ChannelMonitorUpdateErr::TemporaryFailure`] for more information on how this is used.
2222     *
2223     * [`ChannelMonitorUpdateErr::TemporaryFailure`]: super::ChannelMonitorUpdateErr::TemporaryFailure
2224     */
2225    LDKMonitorEvent_UpdateCompleted,
2226    /**
2227     * Indicates a [`ChannelMonitor`] update has failed. See
2228     * [`ChannelMonitorUpdateErr::PermanentFailure`] for more information on how this is used.
2229     *
2230     * [`ChannelMonitorUpdateErr::PermanentFailure`]: super::ChannelMonitorUpdateErr::PermanentFailure
2231     */
2232    LDKMonitorEvent_UpdateFailed,
2233    /**
2234     * Must be last for serialization purposes
2235     */
2236    LDKMonitorEvent_Sentinel,
2237 } LDKMonitorEvent_Tag;
2238
2239 typedef struct LDKMonitorEvent_LDKUpdateCompleted_Body {
2240    /**
2241     * The funding outpoint of the [`ChannelMonitor`] that was updated
2242     */
2243    struct LDKOutPoint funding_txo;
2244    /**
2245     * The Update ID from [`ChannelMonitorUpdate::update_id`] which was applied or
2246     * [`ChannelMonitor::get_latest_update_id`].
2247     *
2248     * Note that this should only be set to a given update's ID if all previous updates for the
2249     * same [`ChannelMonitor`] have been applied and persisted.
2250     */
2251    uint64_t monitor_update_id;
2252 } LDKMonitorEvent_LDKUpdateCompleted_Body;
2253
2254 typedef struct MUST_USE_STRUCT LDKMonitorEvent {
2255    LDKMonitorEvent_Tag tag;
2256    union {
2257       struct {
2258          struct LDKHTLCUpdate htlc_event;
2259       };
2260       struct {
2261          struct LDKOutPoint commitment_tx_confirmed;
2262       };
2263       LDKMonitorEvent_LDKUpdateCompleted_Body update_completed;
2264       struct {
2265          struct LDKOutPoint update_failed;
2266       };
2267    };
2268 } LDKMonitorEvent;
2269
2270 /**
2271  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::MonitorEvents of arbitrary size.
2272  * This corresponds to std::vector in C++
2273  */
2274 typedef struct LDKCVec_MonitorEventZ {
2275    /**
2276     * The elements in the array.
2277     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2278     */
2279    struct LDKMonitorEvent *data;
2280    /**
2281     * The number of elements pointed to by `data`.
2282     */
2283    uintptr_t datalen;
2284 } LDKCVec_MonitorEventZ;
2285
2286 /**
2287  * An enum which can either contain a crate::c_types::derived::C2Tuple_usizeTransactionZ or not
2288  */
2289 typedef enum LDKCOption_C2Tuple_usizeTransactionZZ_Tag {
2290    /**
2291     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains a crate::c_types::derived::C2Tuple_usizeTransactionZ
2292     */
2293    LDKCOption_C2Tuple_usizeTransactionZZ_Some,
2294    /**
2295     * When we're in this state, this COption_C2Tuple_usizeTransactionZZ contains nothing
2296     */
2297    LDKCOption_C2Tuple_usizeTransactionZZ_None,
2298    /**
2299     * Must be last for serialization purposes
2300     */
2301    LDKCOption_C2Tuple_usizeTransactionZZ_Sentinel,
2302 } LDKCOption_C2Tuple_usizeTransactionZZ_Tag;
2303
2304 typedef struct LDKCOption_C2Tuple_usizeTransactionZZ {
2305    LDKCOption_C2Tuple_usizeTransactionZZ_Tag tag;
2306    union {
2307       struct {
2308          struct LDKC2Tuple_usizeTransactionZ some;
2309       };
2310    };
2311 } LDKCOption_C2Tuple_usizeTransactionZZ;
2312
2313 /**
2314  * The reason the channel was closed. See individual variants more details.
2315  */
2316 typedef enum LDKClosureReason_Tag {
2317    /**
2318     * Closure generated from receiving a peer error message.
2319     *
2320     * Our counterparty may have broadcasted their latest commitment state, and we have
2321     * as well.
2322     */
2323    LDKClosureReason_CounterpartyForceClosed,
2324    /**
2325     * Closure generated from [`ChannelManager::force_close_channel`], called by the user.
2326     *
2327     * [`ChannelManager::force_close_channel`]: crate::ln::channelmanager::ChannelManager::force_close_channel.
2328     */
2329    LDKClosureReason_HolderForceClosed,
2330    /**
2331     * The channel was closed after negotiating a cooperative close and we've now broadcasted
2332     * the cooperative close transaction. Note the shutdown may have been initiated by us.
2333     */
2334    LDKClosureReason_CooperativeClosure,
2335    /**
2336     * A commitment transaction was confirmed on chain, closing the channel. Most likely this
2337     * commitment transaction came from our counterparty, but it may also have come from
2338     * a copy of our own `ChannelMonitor`.
2339     */
2340    LDKClosureReason_CommitmentTxConfirmed,
2341    /**
2342     * The funding transaction failed to confirm in a timely manner on an inbound channel.
2343     */
2344    LDKClosureReason_FundingTimedOut,
2345    /**
2346     * Closure generated from processing an event, likely a HTLC forward/relay/reception.
2347     */
2348    LDKClosureReason_ProcessingError,
2349    /**
2350     * The `PeerManager` informed us that we've disconnected from the peer. We close channels
2351     * if the `PeerManager` informed us that it is unlikely we'll be able to connect to the
2352     * peer again in the future or if the peer disconnected before we finished negotiating
2353     * the channel open. The first case may be caused by incompatible features which our
2354     * counterparty, or we, require.
2355     */
2356    LDKClosureReason_DisconnectedPeer,
2357    /**
2358     * Closure generated from `ChannelManager::read` if the ChannelMonitor is newer than
2359     * the ChannelManager deserialized.
2360     */
2361    LDKClosureReason_OutdatedChannelManager,
2362    /**
2363     * Must be last for serialization purposes
2364     */
2365    LDKClosureReason_Sentinel,
2366 } LDKClosureReason_Tag;
2367
2368 typedef struct LDKClosureReason_LDKCounterpartyForceClosed_Body {
2369    /**
2370     * The error which the peer sent us.
2371     *
2372     * The string should be sanitized before it is used (e.g emitted to logs
2373     * or printed to stdout). Otherwise, a well crafted error message may exploit
2374     * a security vulnerability in the terminal emulator or the logging subsystem.
2375     */
2376    struct LDKStr peer_msg;
2377 } LDKClosureReason_LDKCounterpartyForceClosed_Body;
2378
2379 typedef struct LDKClosureReason_LDKProcessingError_Body {
2380    /**
2381     * A developer-readable error message which we generated.
2382     */
2383    struct LDKStr err;
2384 } LDKClosureReason_LDKProcessingError_Body;
2385
2386 typedef struct MUST_USE_STRUCT LDKClosureReason {
2387    LDKClosureReason_Tag tag;
2388    union {
2389       LDKClosureReason_LDKCounterpartyForceClosed_Body counterparty_force_closed;
2390       LDKClosureReason_LDKProcessingError_Body processing_error;
2391    };
2392 } LDKClosureReason;
2393
2394 /**
2395  * An enum which can either contain a crate::lightning::util::events::ClosureReason or not
2396  */
2397 typedef enum LDKCOption_ClosureReasonZ_Tag {
2398    /**
2399     * When we're in this state, this COption_ClosureReasonZ contains a crate::lightning::util::events::ClosureReason
2400     */
2401    LDKCOption_ClosureReasonZ_Some,
2402    /**
2403     * When we're in this state, this COption_ClosureReasonZ contains nothing
2404     */
2405    LDKCOption_ClosureReasonZ_None,
2406    /**
2407     * Must be last for serialization purposes
2408     */
2409    LDKCOption_ClosureReasonZ_Sentinel,
2410 } LDKCOption_ClosureReasonZ_Tag;
2411
2412 typedef struct LDKCOption_ClosureReasonZ {
2413    LDKCOption_ClosureReasonZ_Tag tag;
2414    union {
2415       struct {
2416          struct LDKClosureReason some;
2417       };
2418    };
2419 } LDKCOption_ClosureReasonZ;
2420
2421 /**
2422  * The contents of CResult_COption_ClosureReasonZDecodeErrorZ
2423  */
2424 typedef union LDKCResult_COption_ClosureReasonZDecodeErrorZPtr {
2425    /**
2426     * A pointer to the contents in the success state.
2427     * Reading from this pointer when `result_ok` is not set is undefined.
2428     */
2429    struct LDKCOption_ClosureReasonZ *result;
2430    /**
2431     * A pointer to the contents in the error state.
2432     * Reading from this pointer when `result_ok` is set is undefined.
2433     */
2434    struct LDKDecodeError *err;
2435 } LDKCResult_COption_ClosureReasonZDecodeErrorZPtr;
2436
2437 /**
2438  * A CResult_COption_ClosureReasonZDecodeErrorZ represents the result of a fallible operation,
2439  * containing a crate::c_types::derived::COption_ClosureReasonZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
2440  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2441  */
2442 typedef struct LDKCResult_COption_ClosureReasonZDecodeErrorZ {
2443    /**
2444     * The contents of this CResult_COption_ClosureReasonZDecodeErrorZ, accessible via either
2445     * `err` or `result` depending on the state of `result_ok`.
2446     */
2447    union LDKCResult_COption_ClosureReasonZDecodeErrorZPtr contents;
2448    /**
2449     * Whether this CResult_COption_ClosureReasonZDecodeErrorZ represents a success state.
2450     */
2451    bool result_ok;
2452 } LDKCResult_COption_ClosureReasonZDecodeErrorZ;
2453
2454
2455
2456 /**
2457  * A channel_update message to be sent or received from a peer
2458  */
2459 typedef struct MUST_USE_STRUCT LDKChannelUpdate {
2460    /**
2461     * A pointer to the opaque Rust object.
2462     * Nearly everywhere, inner must be non-null, however in places where
2463     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2464     */
2465    LDKnativeChannelUpdate *inner;
2466    /**
2467     * Indicates that this is the only struct which contains the same pointer.
2468     * Rust functions which take ownership of an object provided via an argument require
2469     * this to be true and invalidate the object pointed to by inner.
2470     */
2471    bool is_owned;
2472 } LDKChannelUpdate;
2473
2474 /**
2475  * Update to the [`NetworkGraph`] based on payment failure information conveyed via the Onion
2476  * return packet by a node along the route. See [BOLT #4] for details.
2477  *
2478  * [BOLT #4]: https://github.com/lightningnetwork/lightning-rfc/blob/master/04-onion-routing.md
2479  */
2480 typedef enum LDKNetworkUpdate_Tag {
2481    /**
2482     * An error indicating a `channel_update` messages should be applied via
2483     * [`NetworkGraph::update_channel`].
2484     */
2485    LDKNetworkUpdate_ChannelUpdateMessage,
2486    /**
2487     * An error indicating only that a channel has been closed, which should be applied via
2488     * [`NetworkGraph::close_channel_from_update`].
2489     */
2490    LDKNetworkUpdate_ChannelClosed,
2491    /**
2492     * An error indicating only that a node has failed, which should be applied via
2493     * [`NetworkGraph::fail_node`].
2494     */
2495    LDKNetworkUpdate_NodeFailure,
2496    /**
2497     * Must be last for serialization purposes
2498     */
2499    LDKNetworkUpdate_Sentinel,
2500 } LDKNetworkUpdate_Tag;
2501
2502 typedef struct LDKNetworkUpdate_LDKChannelUpdateMessage_Body {
2503    /**
2504     * The update to apply via [`NetworkGraph::update_channel`].
2505     */
2506    struct LDKChannelUpdate msg;
2507 } LDKNetworkUpdate_LDKChannelUpdateMessage_Body;
2508
2509 typedef struct LDKNetworkUpdate_LDKChannelClosed_Body {
2510    /**
2511     * The short channel id of the closed channel.
2512     */
2513    uint64_t short_channel_id;
2514    /**
2515     * Whether the channel should be permanently removed or temporarily disabled until a new
2516     * `channel_update` message is received.
2517     */
2518    bool is_permanent;
2519 } LDKNetworkUpdate_LDKChannelClosed_Body;
2520
2521 typedef struct LDKNetworkUpdate_LDKNodeFailure_Body {
2522    /**
2523     * The node id of the failed node.
2524     */
2525    struct LDKPublicKey node_id;
2526    /**
2527     * Whether the node should be permanently removed from consideration or can be restored
2528     * when a new `channel_update` message is received.
2529     */
2530    bool is_permanent;
2531 } LDKNetworkUpdate_LDKNodeFailure_Body;
2532
2533 typedef struct MUST_USE_STRUCT LDKNetworkUpdate {
2534    LDKNetworkUpdate_Tag tag;
2535    union {
2536       LDKNetworkUpdate_LDKChannelUpdateMessage_Body channel_update_message;
2537       LDKNetworkUpdate_LDKChannelClosed_Body channel_closed;
2538       LDKNetworkUpdate_LDKNodeFailure_Body node_failure;
2539    };
2540 } LDKNetworkUpdate;
2541
2542 /**
2543  * An enum which can either contain a crate::lightning::routing::network_graph::NetworkUpdate or not
2544  */
2545 typedef enum LDKCOption_NetworkUpdateZ_Tag {
2546    /**
2547     * When we're in this state, this COption_NetworkUpdateZ contains a crate::lightning::routing::network_graph::NetworkUpdate
2548     */
2549    LDKCOption_NetworkUpdateZ_Some,
2550    /**
2551     * When we're in this state, this COption_NetworkUpdateZ contains nothing
2552     */
2553    LDKCOption_NetworkUpdateZ_None,
2554    /**
2555     * Must be last for serialization purposes
2556     */
2557    LDKCOption_NetworkUpdateZ_Sentinel,
2558 } LDKCOption_NetworkUpdateZ_Tag;
2559
2560 typedef struct LDKCOption_NetworkUpdateZ {
2561    LDKCOption_NetworkUpdateZ_Tag tag;
2562    union {
2563       struct {
2564          struct LDKNetworkUpdate some;
2565       };
2566    };
2567 } LDKCOption_NetworkUpdateZ;
2568
2569
2570
2571 /**
2572  * Information about a spendable output to a P2WSH script. See
2573  * SpendableOutputDescriptor::DelayedPaymentOutput for more details on how to spend this.
2574  */
2575 typedef struct MUST_USE_STRUCT LDKDelayedPaymentOutputDescriptor {
2576    /**
2577     * A pointer to the opaque Rust object.
2578     * Nearly everywhere, inner must be non-null, however in places where
2579     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2580     */
2581    LDKnativeDelayedPaymentOutputDescriptor *inner;
2582    /**
2583     * Indicates that this is the only struct which contains the same pointer.
2584     * Rust functions which take ownership of an object provided via an argument require
2585     * this to be true and invalidate the object pointed to by inner.
2586     */
2587    bool is_owned;
2588 } LDKDelayedPaymentOutputDescriptor;
2589
2590
2591
2592 /**
2593  * Information about a spendable output to our \"payment key\". See
2594  * SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this.
2595  */
2596 typedef struct MUST_USE_STRUCT LDKStaticPaymentOutputDescriptor {
2597    /**
2598     * A pointer to the opaque Rust object.
2599     * Nearly everywhere, inner must be non-null, however in places where
2600     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2601     */
2602    LDKnativeStaticPaymentOutputDescriptor *inner;
2603    /**
2604     * Indicates that this is the only struct which contains the same pointer.
2605     * Rust functions which take ownership of an object provided via an argument require
2606     * this to be true and invalidate the object pointed to by inner.
2607     */
2608    bool is_owned;
2609 } LDKStaticPaymentOutputDescriptor;
2610
2611 /**
2612  * When on-chain outputs are created by rust-lightning (which our counterparty is not able to
2613  * claim at any point in the future) an event is generated which you must track and be able to
2614  * spend on-chain. The information needed to do this is provided in this enum, including the
2615  * outpoint describing which txid and output index is available, the full output which exists at
2616  * that txid/index, and any keys or other information required to sign.
2617  */
2618 typedef enum LDKSpendableOutputDescriptor_Tag {
2619    /**
2620     * An output to a script which was provided via KeysInterface directly, either from
2621     * `get_destination_script()` or `get_shutdown_scriptpubkey()`, thus you should already know
2622     * how to spend it. No secret keys are provided as rust-lightning was never given any key.
2623     * These may include outputs from a transaction punishing our counterparty or claiming an HTLC
2624     * on-chain using the payment preimage or after it has timed out.
2625     */
2626    LDKSpendableOutputDescriptor_StaticOutput,
2627    /**
2628     * An output to a P2WSH script which can be spent with a single signature after a CSV delay.
2629     *
2630     * The witness in the spending input should be:
2631     * <BIP 143 signature> <empty vector> (MINIMALIF standard rule) <provided witnessScript>
2632     *
2633     * Note that the nSequence field in the spending input must be set to to_self_delay
2634     * (which means the transaction is not broadcastable until at least to_self_delay
2635     * blocks after the outpoint confirms).
2636     *
2637     * These are generally the result of a \"revocable\" output to us, spendable only by us unless
2638     * it is an output from an old state which we broadcast (which should never happen).
2639     *
2640     * To derive the delayed_payment key which is used to sign for this input, you must pass the
2641     * holder delayed_payment_base_key (ie the private key which corresponds to the pubkey in
2642     * Sign::pubkeys().delayed_payment_basepoint) and the provided per_commitment_point to
2643     * chan_utils::derive_private_key. The public key can be generated without the secret key
2644     * using chan_utils::derive_public_key and only the delayed_payment_basepoint which appears in
2645     * Sign::pubkeys().
2646     *
2647     * To derive the revocation_pubkey provided here (which is used in the witness
2648     * script generation), you must pass the counterparty revocation_basepoint (which appears in the
2649     * call to Sign::ready_channel) and the provided per_commitment point
2650     * to chan_utils::derive_public_revocation_key.
2651     *
2652     * The witness script which is hashed and included in the output script_pubkey may be
2653     * regenerated by passing the revocation_pubkey (derived as above), our delayed_payment pubkey
2654     * (derived as above), and the to_self_delay contained here to
2655     * chan_utils::get_revokeable_redeemscript.
2656     */
2657    LDKSpendableOutputDescriptor_DelayedPaymentOutput,
2658    /**
2659     * An output to a P2WPKH, spendable exclusively by our payment key (ie the private key which
2660     * corresponds to the public key in Sign::pubkeys().payment_point).
2661     * The witness in the spending input, is, thus, simply:
2662     * <BIP 143 signature> <payment key>
2663     *
2664     * These are generally the result of our counterparty having broadcast the current state,
2665     * allowing us to claim the non-HTLC-encumbered outputs immediately.
2666     */
2667    LDKSpendableOutputDescriptor_StaticPaymentOutput,
2668    /**
2669     * Must be last for serialization purposes
2670     */
2671    LDKSpendableOutputDescriptor_Sentinel,
2672 } LDKSpendableOutputDescriptor_Tag;
2673
2674 typedef struct LDKSpendableOutputDescriptor_LDKStaticOutput_Body {
2675    /**
2676     * The outpoint which is spendable
2677     */
2678    struct LDKOutPoint outpoint;
2679    /**
2680     * The output which is referenced by the given outpoint.
2681     */
2682    struct LDKTxOut output;
2683 } LDKSpendableOutputDescriptor_LDKStaticOutput_Body;
2684
2685 typedef struct MUST_USE_STRUCT LDKSpendableOutputDescriptor {
2686    LDKSpendableOutputDescriptor_Tag tag;
2687    union {
2688       LDKSpendableOutputDescriptor_LDKStaticOutput_Body static_output;
2689       struct {
2690          struct LDKDelayedPaymentOutputDescriptor delayed_payment_output;
2691       };
2692       struct {
2693          struct LDKStaticPaymentOutputDescriptor static_payment_output;
2694       };
2695    };
2696 } LDKSpendableOutputDescriptor;
2697
2698 /**
2699  * A dynamically-allocated array of crate::lightning::chain::keysinterface::SpendableOutputDescriptors of arbitrary size.
2700  * This corresponds to std::vector in C++
2701  */
2702 typedef struct LDKCVec_SpendableOutputDescriptorZ {
2703    /**
2704     * The elements in the array.
2705     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2706     */
2707    struct LDKSpendableOutputDescriptor *data;
2708    /**
2709     * The number of elements pointed to by `data`.
2710     */
2711    uintptr_t datalen;
2712 } LDKCVec_SpendableOutputDescriptorZ;
2713
2714 /**
2715  * Some information provided on receipt of payment depends on whether the payment received is a
2716  * spontaneous payment or a \"conventional\" lightning payment that's paying an invoice.
2717  */
2718 typedef enum LDKPaymentPurpose_Tag {
2719    /**
2720     * Information for receiving a payment that we generated an invoice for.
2721     */
2722    LDKPaymentPurpose_InvoicePayment,
2723    /**
2724     * Because this is a spontaneous payment, the payer generated their own preimage rather than us
2725     * (the payee) providing a preimage.
2726     */
2727    LDKPaymentPurpose_SpontaneousPayment,
2728    /**
2729     * Must be last for serialization purposes
2730     */
2731    LDKPaymentPurpose_Sentinel,
2732 } LDKPaymentPurpose_Tag;
2733
2734 typedef struct LDKPaymentPurpose_LDKInvoicePayment_Body {
2735    /**
2736     * The preimage to the payment_hash, if the payment hash (and secret) were fetched via
2737     * [`ChannelManager::create_inbound_payment`]. If provided, this can be handed directly to
2738     * [`ChannelManager::claim_funds`].
2739     *
2740     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
2741     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
2742     *
2743     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2744     */
2745    struct LDKThirtyTwoBytes payment_preimage;
2746    /**
2747     * The \"payment secret\". This authenticates the sender to the recipient, preventing a
2748     * number of deanonymization attacks during the routing process.
2749     * It is provided here for your reference, however its accuracy is enforced directly by
2750     * [`ChannelManager`] using the values you previously provided to
2751     * [`ChannelManager::create_inbound_payment`] or
2752     * [`ChannelManager::create_inbound_payment_for_hash`].
2753     *
2754     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2755     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
2756     * [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
2757     */
2758    struct LDKThirtyTwoBytes payment_secret;
2759 } LDKPaymentPurpose_LDKInvoicePayment_Body;
2760
2761 typedef struct MUST_USE_STRUCT LDKPaymentPurpose {
2762    LDKPaymentPurpose_Tag tag;
2763    union {
2764       LDKPaymentPurpose_LDKInvoicePayment_Body invoice_payment;
2765       struct {
2766          struct LDKThirtyTwoBytes spontaneous_payment;
2767       };
2768    };
2769 } LDKPaymentPurpose;
2770
2771
2772
2773 /**
2774  * Features used within the channel_type field in an OpenChannel message.
2775  *
2776  * A channel is always of some known \"type\", describing the transaction formats used and the exact
2777  * semantics of our interaction with our peer.
2778  *
2779  * Note that because a channel is a specific type which is proposed by the opener and accepted by
2780  * the counterparty, only required features are allowed here.
2781  *
2782  * This is serialized differently from other feature types - it is not prefixed by a length, and
2783  * thus must only appear inside a TLV where its length is known in advance.
2784  */
2785 typedef struct MUST_USE_STRUCT LDKChannelTypeFeatures {
2786    /**
2787     * A pointer to the opaque Rust object.
2788     * Nearly everywhere, inner must be non-null, however in places where
2789     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2790     */
2791    LDKnativeChannelTypeFeatures *inner;
2792    /**
2793     * Indicates that this is the only struct which contains the same pointer.
2794     * Rust functions which take ownership of an object provided via an argument require
2795     * this to be true and invalidate the object pointed to by inner.
2796     */
2797    bool is_owned;
2798 } LDKChannelTypeFeatures;
2799
2800 /**
2801  * An Event which you should probably take some action in response to.
2802  *
2803  * Note that while Writeable and Readable are implemented for Event, you probably shouldn't use
2804  * them directly as they don't round-trip exactly (for example FundingGenerationReady is never
2805  * written as it makes no sense to respond to it after reconnecting to peers).
2806  */
2807 typedef enum LDKEvent_Tag {
2808    /**
2809     * Used to indicate that the client should generate a funding transaction with the given
2810     * parameters and then call [`ChannelManager::funding_transaction_generated`].
2811     * Generated in [`ChannelManager`] message handling.
2812     * Note that *all inputs* in the funding transaction must spend SegWit outputs or your
2813     * counterparty can steal your funds!
2814     *
2815     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2816     * [`ChannelManager::funding_transaction_generated`]: crate::ln::channelmanager::ChannelManager::funding_transaction_generated
2817     */
2818    LDKEvent_FundingGenerationReady,
2819    /**
2820     * Indicates we've received money! Just gotta dig out that payment preimage and feed it to
2821     * [`ChannelManager::claim_funds`] to get it....
2822     * Note that if the preimage is not known, you should call
2823     * [`ChannelManager::fail_htlc_backwards`] to free up resources for this HTLC and avoid
2824     * network congestion.
2825     * If you fail to call either [`ChannelManager::claim_funds`] or
2826     * [`ChannelManager::fail_htlc_backwards`] within the HTLC's timeout, the HTLC will be
2827     * automatically failed.
2828     *
2829     * # Note
2830     * LDK will not stop an inbound payment from being paid multiple times, so multiple
2831     * `PaymentReceived` events may be generated for the same payment.
2832     *
2833     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
2834     * [`ChannelManager::fail_htlc_backwards`]: crate::ln::channelmanager::ChannelManager::fail_htlc_backwards
2835     */
2836    LDKEvent_PaymentReceived,
2837    /**
2838     * Indicates an outbound payment we made succeeded (i.e. it made it all the way to its target
2839     * and we got back the payment preimage for it).
2840     *
2841     * Note for MPP payments: in rare cases, this event may be preceded by a `PaymentPathFailed`
2842     * event. In this situation, you SHOULD treat this payment as having succeeded.
2843     */
2844    LDKEvent_PaymentSent,
2845    /**
2846     * Indicates an outbound HTLC we sent failed. Probably some intermediary node dropped
2847     * something. You may wish to retry with a different route.
2848     *
2849     * Note that this does *not* indicate that all paths for an MPP payment have failed, see
2850     * [`Event::PaymentFailed`] and [`all_paths_failed`].
2851     *
2852     * [`all_paths_failed`]: Self::PaymentPathFailed::all_paths_failed
2853     */
2854    LDKEvent_PaymentPathFailed,
2855    /**
2856     * Indicates an outbound payment failed. Individual [`Event::PaymentPathFailed`] events
2857     * provide failure information for each MPP part in the payment.
2858     *
2859     * This event is provided once there are no further pending HTLCs for the payment and the
2860     * payment is no longer retryable, either due to a several-block timeout or because
2861     * [`ChannelManager::abandon_payment`] was previously called for the corresponding payment.
2862     *
2863     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
2864     */
2865    LDKEvent_PaymentFailed,
2866    /**
2867     * Used to indicate that [`ChannelManager::process_pending_htlc_forwards`] should be called at
2868     * a time in the future.
2869     *
2870     * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
2871     */
2872    LDKEvent_PendingHTLCsForwardable,
2873    /**
2874     * Used to indicate that an output which you should know how to spend was confirmed on chain
2875     * and is now spendable.
2876     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
2877     * counterparty spending them due to some kind of timeout. Thus, you need to store them
2878     * somewhere and spend them when you create on-chain transactions.
2879     */
2880    LDKEvent_SpendableOutputs,
2881    /**
2882     * This event is generated when a payment has been successfully forwarded through us and a
2883     * forwarding fee earned.
2884     */
2885    LDKEvent_PaymentForwarded,
2886    /**
2887     * Used to indicate that a channel with the given `channel_id` is in the process of closure.
2888     */
2889    LDKEvent_ChannelClosed,
2890    /**
2891     * Used to indicate to the user that they can abandon the funding transaction and recycle the
2892     * inputs for another purpose.
2893     */
2894    LDKEvent_DiscardFunding,
2895    /**
2896     * Indicates that a path for an outbound payment was successful.
2897     *
2898     * Always generated after [`Event::PaymentSent`] and thus useful for scoring channels. See
2899     * [`Event::PaymentSent`] for obtaining the payment preimage.
2900     */
2901    LDKEvent_PaymentPathSuccessful,
2902    /**
2903     * Indicates a request to open a new channel by a peer.
2904     *
2905     * To accept the request, call [`ChannelManager::accept_inbound_channel`]. To reject the
2906     * request, call [`ChannelManager::force_close_channel`].
2907     *
2908     * The event is only triggered when a new open channel request is received and the
2909     * [`UserConfig::manually_accept_inbound_channels`] config flag is set to true.
2910     *
2911     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
2912     * [`ChannelManager::force_close_channel`]: crate::ln::channelmanager::ChannelManager::force_close_channel
2913     * [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
2914     */
2915    LDKEvent_OpenChannelRequest,
2916    /**
2917     * Must be last for serialization purposes
2918     */
2919    LDKEvent_Sentinel,
2920 } LDKEvent_Tag;
2921
2922 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
2923    /**
2924     * The random channel_id we picked which you'll need to pass into
2925     * ChannelManager::funding_transaction_generated.
2926     */
2927    struct LDKThirtyTwoBytes temporary_channel_id;
2928    /**
2929     * The value, in satoshis, that the output should have.
2930     */
2931    uint64_t channel_value_satoshis;
2932    /**
2933     * The script which should be used in the transaction output.
2934     */
2935    struct LDKCVec_u8Z output_script;
2936    /**
2937     * The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or 0 for
2938     * an inbound channel.
2939     *
2940     * [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
2941     */
2942    uint64_t user_channel_id;
2943 } LDKEvent_LDKFundingGenerationReady_Body;
2944
2945 typedef struct LDKEvent_LDKPaymentReceived_Body {
2946    /**
2947     * The hash for which the preimage should be handed to the ChannelManager. Note that LDK will
2948     * not stop you from registering duplicate payment hashes for inbound payments.
2949     */
2950    struct LDKThirtyTwoBytes payment_hash;
2951    /**
2952     * The value, in thousandths of a satoshi, that this payment is for.
2953     */
2954    uint64_t amt;
2955    /**
2956     * Information for claiming this received payment, based on whether the purpose of the
2957     * payment is to pay an invoice or to send a spontaneous payment.
2958     */
2959    struct LDKPaymentPurpose purpose;
2960 } LDKEvent_LDKPaymentReceived_Body;
2961
2962 typedef struct LDKEvent_LDKPaymentSent_Body {
2963    /**
2964     * The id returned by [`ChannelManager::send_payment`] and used with
2965     * [`ChannelManager::retry_payment`].
2966     *
2967     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
2968     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
2969     *
2970     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2971     */
2972    struct LDKThirtyTwoBytes payment_id;
2973    /**
2974     * The preimage to the hash given to ChannelManager::send_payment.
2975     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
2976     * store it somehow!
2977     */
2978    struct LDKThirtyTwoBytes payment_preimage;
2979    /**
2980     * The hash that was given to [`ChannelManager::send_payment`].
2981     *
2982     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
2983     */
2984    struct LDKThirtyTwoBytes payment_hash;
2985    /**
2986     * The total fee which was spent at intermediate hops in this payment, across all paths.
2987     *
2988     * Note that, like [`Route::get_total_fees`] this does *not* include any potential
2989     * overpayment to the recipient node.
2990     *
2991     * If the recipient or an intermediate node misbehaves and gives us free money, this may
2992     * overstate the amount paid, though this is unlikely.
2993     *
2994     * [`Route::get_total_fees`]: crate::routing::router::Route::get_total_fees
2995     */
2996    struct LDKCOption_u64Z fee_paid_msat;
2997 } LDKEvent_LDKPaymentSent_Body;
2998
2999 typedef struct LDKEvent_LDKPaymentPathFailed_Body {
3000    /**
3001     * The id returned by [`ChannelManager::send_payment`] and used with
3002     * [`ChannelManager::retry_payment`] and [`ChannelManager::abandon_payment`].
3003     *
3004     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3005     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3006     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3007     *
3008     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3009     */
3010    struct LDKThirtyTwoBytes payment_id;
3011    /**
3012     * The hash that was given to [`ChannelManager::send_payment`].
3013     *
3014     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3015     */
3016    struct LDKThirtyTwoBytes payment_hash;
3017    /**
3018     * Indicates the payment was rejected for some reason by the recipient. This implies that
3019     * the payment has failed, not just the route in question. If this is not set, you may
3020     * retry the payment via a different route.
3021     */
3022    bool rejected_by_dest;
3023    /**
3024     * Any failure information conveyed via the Onion return packet by a node along the failed
3025     * payment route.
3026     *
3027     * Should be applied to the [`NetworkGraph`] so that routing decisions can take into
3028     * account the update. [`NetGraphMsgHandler`] is capable of doing this.
3029     *
3030     * [`NetworkGraph`]: crate::routing::network_graph::NetworkGraph
3031     * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
3032     */
3033    struct LDKCOption_NetworkUpdateZ network_update;
3034    /**
3035     * For both single-path and multi-path payments, this is set if all paths of the payment have
3036     * failed. This will be set to false if (1) this is an MPP payment and (2) other parts of the
3037     * larger MPP payment were still in flight when this event was generated.
3038     *
3039     * Note that if you are retrying individual MPP parts, using this value to determine if a
3040     * payment has fully failed is race-y. Because multiple failures can happen prior to events
3041     * being processed, you may retry in response to a first failure, with a second failure
3042     * (with `all_paths_failed` set) still pending. Then, when the second failure is processed
3043     * you will see `all_paths_failed` set even though the retry of the first failure still
3044     * has an associated in-flight HTLC. See (1) for an example of such a failure.
3045     *
3046     * If you wish to retry individual MPP parts and learn when a payment has failed, you must
3047     * call [`ChannelManager::abandon_payment`] and wait for a [`Event::PaymentFailed`] event.
3048     *
3049     * (1) <https://github.com/lightningdevkit/rust-lightning/issues/1164>
3050     *
3051     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3052     */
3053    bool all_paths_failed;
3054    /**
3055     * The payment path that failed.
3056     */
3057    struct LDKCVec_RouteHopZ path;
3058    /**
3059     * The channel responsible for the failed payment path.
3060     *
3061     * If this is `Some`, then the corresponding channel should be avoided when the payment is
3062     * retried. May be `None` for older [`Event`] serializations.
3063     */
3064    struct LDKCOption_u64Z short_channel_id;
3065    /**
3066     * Parameters needed to compute a new [`Route`] when retrying the failed payment path.
3067     *
3068     * See [`find_route`] for details.
3069     *
3070     * [`Route`]: crate::routing::router::Route
3071     * [`find_route`]: crate::routing::router::find_route
3072     *
3073     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3074     */
3075    struct LDKRouteParameters retry;
3076 } LDKEvent_LDKPaymentPathFailed_Body;
3077
3078 typedef struct LDKEvent_LDKPaymentFailed_Body {
3079    /**
3080     * The id returned by [`ChannelManager::send_payment`] and used with
3081     * [`ChannelManager::retry_payment`] and [`ChannelManager::abandon_payment`].
3082     *
3083     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3084     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3085     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3086     */
3087    struct LDKThirtyTwoBytes payment_id;
3088    /**
3089     * The hash that was given to [`ChannelManager::send_payment`].
3090     *
3091     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3092     */
3093    struct LDKThirtyTwoBytes payment_hash;
3094 } LDKEvent_LDKPaymentFailed_Body;
3095
3096 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
3097    /**
3098     * The minimum amount of time that should be waited prior to calling
3099     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
3100     * you should wait a random amount of time in roughly the range (now + time_forwardable,
3101     * now + 5*time_forwardable).
3102     */
3103    uint64_t time_forwardable;
3104 } LDKEvent_LDKPendingHTLCsForwardable_Body;
3105
3106 typedef struct LDKEvent_LDKSpendableOutputs_Body {
3107    /**
3108     * The outputs which you should store as spendable by you.
3109     */
3110    struct LDKCVec_SpendableOutputDescriptorZ outputs;
3111 } LDKEvent_LDKSpendableOutputs_Body;
3112
3113 typedef struct LDKEvent_LDKPaymentForwarded_Body {
3114    /**
3115     * The fee, in milli-satoshis, which was earned as a result of the payment.
3116     *
3117     * Note that if we force-closed the channel over which we forwarded an HTLC while the HTLC
3118     * was pending, the amount the next hop claimed will have been rounded down to the nearest
3119     * whole satoshi. Thus, the fee calculated here may be higher than expected as we still
3120     * claimed the full value in millisatoshis from the source. In this case,
3121     * `claim_from_onchain_tx` will be set.
3122     *
3123     * If the channel which sent us the payment has been force-closed, we will claim the funds
3124     * via an on-chain transaction. In that case we do not yet know the on-chain transaction
3125     * fees which we will spend and will instead set this to `None`. It is possible duplicate
3126     * `PaymentForwarded` events are generated for the same payment iff `fee_earned_msat` is
3127     * `None`.
3128     */
3129    struct LDKCOption_u64Z fee_earned_msat;
3130    /**
3131     * If this is `true`, the forwarded HTLC was claimed by our counterparty via an on-chain
3132     * transaction.
3133     */
3134    bool claim_from_onchain_tx;
3135 } LDKEvent_LDKPaymentForwarded_Body;
3136
3137 typedef struct LDKEvent_LDKChannelClosed_Body {
3138    /**
3139     * The channel_id of the channel which has been closed. Note that on-chain transactions
3140     * resolving the channel are likely still awaiting confirmation.
3141     */
3142    struct LDKThirtyTwoBytes channel_id;
3143    /**
3144     * The `user_channel_id` value passed in to [`ChannelManager::create_channel`] for outbound
3145     * channels, or to [`ChannelManager::accept_inbound_channel`] for inbound channels if
3146     * [`UserConfig::manually_accept_inbound_channels`] config flag is set to true. Otherwise
3147     * `user_channel_id` will be 0 for an inbound channel.
3148     * This will always be zero for objects serialized with LDK versions prior to 0.0.102.
3149     *
3150     * [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
3151     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3152     * [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
3153     */
3154    uint64_t user_channel_id;
3155    /**
3156     * The reason the channel was closed.
3157     */
3158    struct LDKClosureReason reason;
3159 } LDKEvent_LDKChannelClosed_Body;
3160
3161 typedef struct LDKEvent_LDKDiscardFunding_Body {
3162    /**
3163     * The channel_id of the channel which has been closed.
3164     */
3165    struct LDKThirtyTwoBytes channel_id;
3166    /**
3167     * The full transaction received from the user
3168     */
3169    struct LDKTransaction transaction;
3170 } LDKEvent_LDKDiscardFunding_Body;
3171
3172 typedef struct LDKEvent_LDKPaymentPathSuccessful_Body {
3173    /**
3174     * The id returned by [`ChannelManager::send_payment`] and used with
3175     * [`ChannelManager::retry_payment`].
3176     *
3177     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3178     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3179     */
3180    struct LDKThirtyTwoBytes payment_id;
3181    /**
3182     * The hash that was given to [`ChannelManager::send_payment`].
3183     *
3184     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3185     *
3186     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3187     */
3188    struct LDKThirtyTwoBytes payment_hash;
3189    /**
3190     * The payment path that was successful.
3191     *
3192     * May contain a closed channel if the HTLC sent along the path was fulfilled on chain.
3193     */
3194    struct LDKCVec_RouteHopZ path;
3195 } LDKEvent_LDKPaymentPathSuccessful_Body;
3196
3197 typedef struct LDKEvent_LDKOpenChannelRequest_Body {
3198    /**
3199     * The temporary channel ID of the channel requested to be opened.
3200     *
3201     * When responding to the request, the `temporary_channel_id` should be passed
3202     * back to the ChannelManager with [`ChannelManager::accept_inbound_channel`] to accept,
3203     * or to [`ChannelManager::force_close_channel`] to reject.
3204     *
3205     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3206     * [`ChannelManager::force_close_channel`]: crate::ln::channelmanager::ChannelManager::force_close_channel
3207     */
3208    struct LDKThirtyTwoBytes temporary_channel_id;
3209    /**
3210     * The node_id of the counterparty requesting to open the channel.
3211     */
3212    struct LDKPublicKey counterparty_node_id;
3213    /**
3214     * The channel value of the requested channel.
3215     */
3216    uint64_t funding_satoshis;
3217    /**
3218     * Our starting balance in the channel if the request is accepted, in milli-satoshi.
3219     */
3220    uint64_t push_msat;
3221    /**
3222     * The features that this channel will operate with. If you reject the channel, a
3223     * well-behaved counterparty may automatically re-attempt the channel with a new set of
3224     * feature flags.
3225     *
3226     * Note that if [`ChannelTypeFeatures::supports_scid_privacy`] returns true on this type,
3227     * the resulting [`ChannelManager`] will not be readable by versions of LDK prior to
3228     * 0.0.106.
3229     *
3230     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3231     */
3232    struct LDKChannelTypeFeatures channel_type;
3233 } LDKEvent_LDKOpenChannelRequest_Body;
3234
3235 typedef struct MUST_USE_STRUCT LDKEvent {
3236    LDKEvent_Tag tag;
3237    union {
3238       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
3239       LDKEvent_LDKPaymentReceived_Body payment_received;
3240       LDKEvent_LDKPaymentSent_Body payment_sent;
3241       LDKEvent_LDKPaymentPathFailed_Body payment_path_failed;
3242       LDKEvent_LDKPaymentFailed_Body payment_failed;
3243       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
3244       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
3245       LDKEvent_LDKPaymentForwarded_Body payment_forwarded;
3246       LDKEvent_LDKChannelClosed_Body channel_closed;
3247       LDKEvent_LDKDiscardFunding_Body discard_funding;
3248       LDKEvent_LDKPaymentPathSuccessful_Body payment_path_successful;
3249       LDKEvent_LDKOpenChannelRequest_Body open_channel_request;
3250    };
3251 } LDKEvent;
3252
3253 /**
3254  * An enum which can either contain a crate::lightning::util::events::Event or not
3255  */
3256 typedef enum LDKCOption_EventZ_Tag {
3257    /**
3258     * When we're in this state, this COption_EventZ contains a crate::lightning::util::events::Event
3259     */
3260    LDKCOption_EventZ_Some,
3261    /**
3262     * When we're in this state, this COption_EventZ contains nothing
3263     */
3264    LDKCOption_EventZ_None,
3265    /**
3266     * Must be last for serialization purposes
3267     */
3268    LDKCOption_EventZ_Sentinel,
3269 } LDKCOption_EventZ_Tag;
3270
3271 typedef struct LDKCOption_EventZ {
3272    LDKCOption_EventZ_Tag tag;
3273    union {
3274       struct {
3275          struct LDKEvent some;
3276       };
3277    };
3278 } LDKCOption_EventZ;
3279
3280 /**
3281  * The contents of CResult_COption_EventZDecodeErrorZ
3282  */
3283 typedef union LDKCResult_COption_EventZDecodeErrorZPtr {
3284    /**
3285     * A pointer to the contents in the success state.
3286     * Reading from this pointer when `result_ok` is not set is undefined.
3287     */
3288    struct LDKCOption_EventZ *result;
3289    /**
3290     * A pointer to the contents in the error state.
3291     * Reading from this pointer when `result_ok` is set is undefined.
3292     */
3293    struct LDKDecodeError *err;
3294 } LDKCResult_COption_EventZDecodeErrorZPtr;
3295
3296 /**
3297  * A CResult_COption_EventZDecodeErrorZ represents the result of a fallible operation,
3298  * containing a crate::c_types::derived::COption_EventZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
3299  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3300  */
3301 typedef struct LDKCResult_COption_EventZDecodeErrorZ {
3302    /**
3303     * The contents of this CResult_COption_EventZDecodeErrorZ, accessible via either
3304     * `err` or `result` depending on the state of `result_ok`.
3305     */
3306    union LDKCResult_COption_EventZDecodeErrorZPtr contents;
3307    /**
3308     * Whether this CResult_COption_EventZDecodeErrorZ represents a success state.
3309     */
3310    bool result_ok;
3311 } LDKCResult_COption_EventZDecodeErrorZ;
3312
3313
3314
3315 /**
3316  * An accept_channel message to be sent or received from a peer
3317  */
3318 typedef struct MUST_USE_STRUCT LDKAcceptChannel {
3319    /**
3320     * A pointer to the opaque Rust object.
3321     * Nearly everywhere, inner must be non-null, however in places where
3322     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3323     */
3324    LDKnativeAcceptChannel *inner;
3325    /**
3326     * Indicates that this is the only struct which contains the same pointer.
3327     * Rust functions which take ownership of an object provided via an argument require
3328     * this to be true and invalidate the object pointed to by inner.
3329     */
3330    bool is_owned;
3331 } LDKAcceptChannel;
3332
3333
3334
3335 /**
3336  * An open_channel message to be sent or received from a peer
3337  */
3338 typedef struct MUST_USE_STRUCT LDKOpenChannel {
3339    /**
3340     * A pointer to the opaque Rust object.
3341     * Nearly everywhere, inner must be non-null, however in places where
3342     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3343     */
3344    LDKnativeOpenChannel *inner;
3345    /**
3346     * Indicates that this is the only struct which contains the same pointer.
3347     * Rust functions which take ownership of an object provided via an argument require
3348     * this to be true and invalidate the object pointed to by inner.
3349     */
3350    bool is_owned;
3351 } LDKOpenChannel;
3352
3353
3354
3355 /**
3356  * A funding_created message to be sent or received from a peer
3357  */
3358 typedef struct MUST_USE_STRUCT LDKFundingCreated {
3359    /**
3360     * A pointer to the opaque Rust object.
3361     * Nearly everywhere, inner must be non-null, however in places where
3362     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3363     */
3364    LDKnativeFundingCreated *inner;
3365    /**
3366     * Indicates that this is the only struct which contains the same pointer.
3367     * Rust functions which take ownership of an object provided via an argument require
3368     * this to be true and invalidate the object pointed to by inner.
3369     */
3370    bool is_owned;
3371 } LDKFundingCreated;
3372
3373
3374
3375 /**
3376  * A funding_signed message to be sent or received from a peer
3377  */
3378 typedef struct MUST_USE_STRUCT LDKFundingSigned {
3379    /**
3380     * A pointer to the opaque Rust object.
3381     * Nearly everywhere, inner must be non-null, however in places where
3382     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3383     */
3384    LDKnativeFundingSigned *inner;
3385    /**
3386     * Indicates that this is the only struct which contains the same pointer.
3387     * Rust functions which take ownership of an object provided via an argument require
3388     * this to be true and invalidate the object pointed to by inner.
3389     */
3390    bool is_owned;
3391 } LDKFundingSigned;
3392
3393
3394
3395 /**
3396  * A funding_locked message to be sent or received from a peer
3397  */
3398 typedef struct MUST_USE_STRUCT LDKFundingLocked {
3399    /**
3400     * A pointer to the opaque Rust object.
3401     * Nearly everywhere, inner must be non-null, however in places where
3402     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3403     */
3404    LDKnativeFundingLocked *inner;
3405    /**
3406     * Indicates that this is the only struct which contains the same pointer.
3407     * Rust functions which take ownership of an object provided via an argument require
3408     * this to be true and invalidate the object pointed to by inner.
3409     */
3410    bool is_owned;
3411 } LDKFundingLocked;
3412
3413
3414
3415 /**
3416  * An announcement_signatures message to be sent or received from a peer
3417  */
3418 typedef struct MUST_USE_STRUCT LDKAnnouncementSignatures {
3419    /**
3420     * A pointer to the opaque Rust object.
3421     * Nearly everywhere, inner must be non-null, however in places where
3422     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3423     */
3424    LDKnativeAnnouncementSignatures *inner;
3425    /**
3426     * Indicates that this is the only struct which contains the same pointer.
3427     * Rust functions which take ownership of an object provided via an argument require
3428     * this to be true and invalidate the object pointed to by inner.
3429     */
3430    bool is_owned;
3431 } LDKAnnouncementSignatures;
3432
3433
3434
3435 /**
3436  * Struct used to return values from revoke_and_ack messages, containing a bunch of commitment
3437  * transaction updates if they were pending.
3438  */
3439 typedef struct MUST_USE_STRUCT LDKCommitmentUpdate {
3440    /**
3441     * A pointer to the opaque Rust object.
3442     * Nearly everywhere, inner must be non-null, however in places where
3443     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3444     */
3445    LDKnativeCommitmentUpdate *inner;
3446    /**
3447     * Indicates that this is the only struct which contains the same pointer.
3448     * Rust functions which take ownership of an object provided via an argument require
3449     * this to be true and invalidate the object pointed to by inner.
3450     */
3451    bool is_owned;
3452 } LDKCommitmentUpdate;
3453
3454
3455
3456 /**
3457  * A revoke_and_ack message to be sent or received from a peer
3458  */
3459 typedef struct MUST_USE_STRUCT LDKRevokeAndACK {
3460    /**
3461     * A pointer to the opaque Rust object.
3462     * Nearly everywhere, inner must be non-null, however in places where
3463     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3464     */
3465    LDKnativeRevokeAndACK *inner;
3466    /**
3467     * Indicates that this is the only struct which contains the same pointer.
3468     * Rust functions which take ownership of an object provided via an argument require
3469     * this to be true and invalidate the object pointed to by inner.
3470     */
3471    bool is_owned;
3472 } LDKRevokeAndACK;
3473
3474
3475
3476 /**
3477  * A closing_signed message to be sent or received from a peer
3478  */
3479 typedef struct MUST_USE_STRUCT LDKClosingSigned {
3480    /**
3481     * A pointer to the opaque Rust object.
3482     * Nearly everywhere, inner must be non-null, however in places where
3483     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3484     */
3485    LDKnativeClosingSigned *inner;
3486    /**
3487     * Indicates that this is the only struct which contains the same pointer.
3488     * Rust functions which take ownership of an object provided via an argument require
3489     * this to be true and invalidate the object pointed to by inner.
3490     */
3491    bool is_owned;
3492 } LDKClosingSigned;
3493
3494
3495
3496 /**
3497  * A shutdown message to be sent or received from a peer
3498  */
3499 typedef struct MUST_USE_STRUCT LDKShutdown {
3500    /**
3501     * A pointer to the opaque Rust object.
3502     * Nearly everywhere, inner must be non-null, however in places where
3503     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3504     */
3505    LDKnativeShutdown *inner;
3506    /**
3507     * Indicates that this is the only struct which contains the same pointer.
3508     * Rust functions which take ownership of an object provided via an argument require
3509     * this to be true and invalidate the object pointed to by inner.
3510     */
3511    bool is_owned;
3512 } LDKShutdown;
3513
3514
3515
3516 /**
3517  * A channel_reestablish message to be sent or received from a peer
3518  */
3519 typedef struct MUST_USE_STRUCT LDKChannelReestablish {
3520    /**
3521     * A pointer to the opaque Rust object.
3522     * Nearly everywhere, inner must be non-null, however in places where
3523     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3524     */
3525    LDKnativeChannelReestablish *inner;
3526    /**
3527     * Indicates that this is the only struct which contains the same pointer.
3528     * Rust functions which take ownership of an object provided via an argument require
3529     * this to be true and invalidate the object pointed to by inner.
3530     */
3531    bool is_owned;
3532 } LDKChannelReestablish;
3533
3534
3535
3536 /**
3537  * A channel_announcement message to be sent or received from a peer
3538  */
3539 typedef struct MUST_USE_STRUCT LDKChannelAnnouncement {
3540    /**
3541     * A pointer to the opaque Rust object.
3542     * Nearly everywhere, inner must be non-null, however in places where
3543     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3544     */
3545    LDKnativeChannelAnnouncement *inner;
3546    /**
3547     * Indicates that this is the only struct which contains the same pointer.
3548     * Rust functions which take ownership of an object provided via an argument require
3549     * this to be true and invalidate the object pointed to by inner.
3550     */
3551    bool is_owned;
3552 } LDKChannelAnnouncement;
3553
3554
3555
3556 /**
3557  * A node_announcement message to be sent or received from a peer
3558  */
3559 typedef struct MUST_USE_STRUCT LDKNodeAnnouncement {
3560    /**
3561     * A pointer to the opaque Rust object.
3562     * Nearly everywhere, inner must be non-null, however in places where
3563     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3564     */
3565    LDKnativeNodeAnnouncement *inner;
3566    /**
3567     * Indicates that this is the only struct which contains the same pointer.
3568     * Rust functions which take ownership of an object provided via an argument require
3569     * this to be true and invalidate the object pointed to by inner.
3570     */
3571    bool is_owned;
3572 } LDKNodeAnnouncement;
3573
3574
3575
3576 /**
3577  * An error message to be sent or received from a peer
3578  */
3579 typedef struct MUST_USE_STRUCT LDKErrorMessage {
3580    /**
3581     * A pointer to the opaque Rust object.
3582     * Nearly everywhere, inner must be non-null, however in places where
3583     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3584     */
3585    LDKnativeErrorMessage *inner;
3586    /**
3587     * Indicates that this is the only struct which contains the same pointer.
3588     * Rust functions which take ownership of an object provided via an argument require
3589     * this to be true and invalidate the object pointed to by inner.
3590     */
3591    bool is_owned;
3592 } LDKErrorMessage;
3593
3594
3595
3596 /**
3597  * A warning message to be sent or received from a peer
3598  */
3599 typedef struct MUST_USE_STRUCT LDKWarningMessage {
3600    /**
3601     * A pointer to the opaque Rust object.
3602     * Nearly everywhere, inner must be non-null, however in places where
3603     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3604     */
3605    LDKnativeWarningMessage *inner;
3606    /**
3607     * Indicates that this is the only struct which contains the same pointer.
3608     * Rust functions which take ownership of an object provided via an argument require
3609     * this to be true and invalidate the object pointed to by inner.
3610     */
3611    bool is_owned;
3612 } LDKWarningMessage;
3613
3614 /**
3615  * Used to put an error message in a LightningError
3616  */
3617 typedef enum LDKErrorAction_Tag {
3618    /**
3619     * The peer took some action which made us think they were useless. Disconnect them.
3620     */
3621    LDKErrorAction_DisconnectPeer,
3622    /**
3623     * The peer did something harmless that we weren't able to process, just log and ignore
3624     */
3625    LDKErrorAction_IgnoreError,
3626    /**
3627     * The peer did something harmless that we weren't able to meaningfully process.
3628     * If the error is logged, log it at the given level.
3629     */
3630    LDKErrorAction_IgnoreAndLog,
3631    /**
3632     * The peer provided us with a gossip message which we'd already seen. In most cases this
3633     * should be ignored, but it may result in the message being forwarded if it is a duplicate of
3634     * our own channel announcements.
3635     */
3636    LDKErrorAction_IgnoreDuplicateGossip,
3637    /**
3638     * The peer did something incorrect. Tell them.
3639     */
3640    LDKErrorAction_SendErrorMessage,
3641    /**
3642     * The peer did something incorrect. Tell them without closing any channels.
3643     */
3644    LDKErrorAction_SendWarningMessage,
3645    /**
3646     * Must be last for serialization purposes
3647     */
3648    LDKErrorAction_Sentinel,
3649 } LDKErrorAction_Tag;
3650
3651 typedef struct LDKErrorAction_LDKDisconnectPeer_Body {
3652    /**
3653     * An error message which we should make an effort to send before we disconnect.
3654     *
3655     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3656     */
3657    struct LDKErrorMessage msg;
3658 } LDKErrorAction_LDKDisconnectPeer_Body;
3659
3660 typedef struct LDKErrorAction_LDKSendErrorMessage_Body {
3661    /**
3662     * The message to send.
3663     */
3664    struct LDKErrorMessage msg;
3665 } LDKErrorAction_LDKSendErrorMessage_Body;
3666
3667 typedef struct LDKErrorAction_LDKSendWarningMessage_Body {
3668    /**
3669     * The message to send.
3670     */
3671    struct LDKWarningMessage msg;
3672    /**
3673     * The peer may have done something harmless that we weren't able to meaningfully process,
3674     * though we should still tell them about it.
3675     * If this event is logged, log it at the given level.
3676     */
3677    enum LDKLevel log_level;
3678 } LDKErrorAction_LDKSendWarningMessage_Body;
3679
3680 typedef struct MUST_USE_STRUCT LDKErrorAction {
3681    LDKErrorAction_Tag tag;
3682    union {
3683       LDKErrorAction_LDKDisconnectPeer_Body disconnect_peer;
3684       struct {
3685          enum LDKLevel ignore_and_log;
3686       };
3687       LDKErrorAction_LDKSendErrorMessage_Body send_error_message;
3688       LDKErrorAction_LDKSendWarningMessage_Body send_warning_message;
3689    };
3690 } LDKErrorAction;
3691
3692
3693
3694 /**
3695  * A query_channel_range message is used to query a peer for channel
3696  * UTXOs in a range of blocks. The recipient of a query makes a best
3697  * effort to reply to the query using one or more reply_channel_range
3698  * messages.
3699  */
3700 typedef struct MUST_USE_STRUCT LDKQueryChannelRange {
3701    /**
3702     * A pointer to the opaque Rust object.
3703     * Nearly everywhere, inner must be non-null, however in places where
3704     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3705     */
3706    LDKnativeQueryChannelRange *inner;
3707    /**
3708     * Indicates that this is the only struct which contains the same pointer.
3709     * Rust functions which take ownership of an object provided via an argument require
3710     * this to be true and invalidate the object pointed to by inner.
3711     */
3712    bool is_owned;
3713 } LDKQueryChannelRange;
3714
3715
3716
3717 /**
3718  * A query_short_channel_ids message is used to query a peer for
3719  * routing gossip messages related to one or more short_channel_ids.
3720  * The query recipient will reply with the latest, if available,
3721  * channel_announcement, channel_update and node_announcement messages
3722  * it maintains for the requested short_channel_ids followed by a
3723  * reply_short_channel_ids_end message. The short_channel_ids sent in
3724  * this query are encoded. We only support encoding_type=0 uncompressed
3725  * serialization and do not support encoding_type=1 zlib serialization.
3726  */
3727 typedef struct MUST_USE_STRUCT LDKQueryShortChannelIds {
3728    /**
3729     * A pointer to the opaque Rust object.
3730     * Nearly everywhere, inner must be non-null, however in places where
3731     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3732     */
3733    LDKnativeQueryShortChannelIds *inner;
3734    /**
3735     * Indicates that this is the only struct which contains the same pointer.
3736     * Rust functions which take ownership of an object provided via an argument require
3737     * this to be true and invalidate the object pointed to by inner.
3738     */
3739    bool is_owned;
3740 } LDKQueryShortChannelIds;
3741
3742
3743
3744 /**
3745  * A reply_channel_range message is a reply to a query_channel_range
3746  * message. Multiple reply_channel_range messages can be sent in reply
3747  * to a single query_channel_range message. The query recipient makes a
3748  * best effort to respond based on their local network view which may
3749  * not be a perfect view of the network. The short_channel_ids in the
3750  * reply are encoded. We only support encoding_type=0 uncompressed
3751  * serialization and do not support encoding_type=1 zlib serialization.
3752  */
3753 typedef struct MUST_USE_STRUCT LDKReplyChannelRange {
3754    /**
3755     * A pointer to the opaque Rust object.
3756     * Nearly everywhere, inner must be non-null, however in places where
3757     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3758     */
3759    LDKnativeReplyChannelRange *inner;
3760    /**
3761     * Indicates that this is the only struct which contains the same pointer.
3762     * Rust functions which take ownership of an object provided via an argument require
3763     * this to be true and invalidate the object pointed to by inner.
3764     */
3765    bool is_owned;
3766 } LDKReplyChannelRange;
3767
3768
3769
3770 /**
3771  * A gossip_timestamp_filter message is used by a node to request
3772  * gossip relay for messages in the requested time range when the
3773  * gossip_queries feature has been negotiated.
3774  */
3775 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
3776    /**
3777     * A pointer to the opaque Rust object.
3778     * Nearly everywhere, inner must be non-null, however in places where
3779     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3780     */
3781    LDKnativeGossipTimestampFilter *inner;
3782    /**
3783     * Indicates that this is the only struct which contains the same pointer.
3784     * Rust functions which take ownership of an object provided via an argument require
3785     * this to be true and invalidate the object pointed to by inner.
3786     */
3787    bool is_owned;
3788 } LDKGossipTimestampFilter;
3789
3790 /**
3791  * An event generated by ChannelManager which indicates a message should be sent to a peer (or
3792  * broadcast to most peers).
3793  * These events are handled by PeerManager::process_events if you are using a PeerManager.
3794  */
3795 typedef enum LDKMessageSendEvent_Tag {
3796    /**
3797     * Used to indicate that we've accepted a channel open and should send the accept_channel
3798     * message provided to the given peer.
3799     */
3800    LDKMessageSendEvent_SendAcceptChannel,
3801    /**
3802     * Used to indicate that we've initiated a channel open and should send the open_channel
3803     * message provided to the given peer.
3804     */
3805    LDKMessageSendEvent_SendOpenChannel,
3806    /**
3807     * Used to indicate that a funding_created message should be sent to the peer with the given node_id.
3808     */
3809    LDKMessageSendEvent_SendFundingCreated,
3810    /**
3811     * Used to indicate that a funding_signed message should be sent to the peer with the given node_id.
3812     */
3813    LDKMessageSendEvent_SendFundingSigned,
3814    /**
3815     * Used to indicate that a funding_locked message should be sent to the peer with the given node_id.
3816     */
3817    LDKMessageSendEvent_SendFundingLocked,
3818    /**
3819     * Used to indicate that an announcement_signatures message should be sent to the peer with the given node_id.
3820     */
3821    LDKMessageSendEvent_SendAnnouncementSignatures,
3822    /**
3823     * Used to indicate that a series of HTLC update messages, as well as a commitment_signed
3824     * message should be sent to the peer with the given node_id.
3825     */
3826    LDKMessageSendEvent_UpdateHTLCs,
3827    /**
3828     * Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
3829     */
3830    LDKMessageSendEvent_SendRevokeAndACK,
3831    /**
3832     * Used to indicate that a closing_signed message should be sent to the peer with the given node_id.
3833     */
3834    LDKMessageSendEvent_SendClosingSigned,
3835    /**
3836     * Used to indicate that a shutdown message should be sent to the peer with the given node_id.
3837     */
3838    LDKMessageSendEvent_SendShutdown,
3839    /**
3840     * Used to indicate that a channel_reestablish message should be sent to the peer with the given node_id.
3841     */
3842    LDKMessageSendEvent_SendChannelReestablish,
3843    /**
3844     * Used to indicate that a channel_announcement and channel_update should be broadcast to all
3845     * peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
3846     *
3847     * Note that after doing so, you very likely (unless you did so very recently) want to call
3848     * ChannelManager::broadcast_node_announcement to trigger a BroadcastNodeAnnouncement event.
3849     * This ensures that any nodes which see our channel_announcement also have a relevant
3850     * node_announcement, including relevant feature flags which may be important for routing
3851     * through or to us.
3852     */
3853    LDKMessageSendEvent_BroadcastChannelAnnouncement,
3854    /**
3855     * Used to indicate that a node_announcement should be broadcast to all peers.
3856     */
3857    LDKMessageSendEvent_BroadcastNodeAnnouncement,
3858    /**
3859     * Used to indicate that a channel_update should be broadcast to all peers.
3860     */
3861    LDKMessageSendEvent_BroadcastChannelUpdate,
3862    /**
3863     * Used to indicate that a channel_update should be sent to a single peer.
3864     * In contrast to [`Self::BroadcastChannelUpdate`], this is used when the channel is a
3865     * private channel and we shouldn't be informing all of our peers of channel parameters.
3866     */
3867    LDKMessageSendEvent_SendChannelUpdate,
3868    /**
3869     * Broadcast an error downstream to be handled
3870     */
3871    LDKMessageSendEvent_HandleError,
3872    /**
3873     * Query a peer for channels with funding transaction UTXOs in a block range.
3874     */
3875    LDKMessageSendEvent_SendChannelRangeQuery,
3876    /**
3877     * Request routing gossip messages from a peer for a list of channels identified by
3878     * their short_channel_ids.
3879     */
3880    LDKMessageSendEvent_SendShortIdsQuery,
3881    /**
3882     * Sends a reply to a channel range query. This may be one of several SendReplyChannelRange events
3883     * emitted during processing of the query.
3884     */
3885    LDKMessageSendEvent_SendReplyChannelRange,
3886    /**
3887     * Sends a timestamp filter for inbound gossip. This should be sent on each new connection to
3888     * enable receiving gossip messages from the peer.
3889     */
3890    LDKMessageSendEvent_SendGossipTimestampFilter,
3891    /**
3892     * Must be last for serialization purposes
3893     */
3894    LDKMessageSendEvent_Sentinel,
3895 } LDKMessageSendEvent_Tag;
3896
3897 typedef struct LDKMessageSendEvent_LDKSendAcceptChannel_Body {
3898    /**
3899     * The node_id of the node which should receive this message
3900     */
3901    struct LDKPublicKey node_id;
3902    /**
3903     * The message which should be sent.
3904     */
3905    struct LDKAcceptChannel msg;
3906 } LDKMessageSendEvent_LDKSendAcceptChannel_Body;
3907
3908 typedef struct LDKMessageSendEvent_LDKSendOpenChannel_Body {
3909    /**
3910     * The node_id of the node which should receive this message
3911     */
3912    struct LDKPublicKey node_id;
3913    /**
3914     * The message which should be sent.
3915     */
3916    struct LDKOpenChannel msg;
3917 } LDKMessageSendEvent_LDKSendOpenChannel_Body;
3918
3919 typedef struct LDKMessageSendEvent_LDKSendFundingCreated_Body {
3920    /**
3921     * The node_id of the node which should receive this message
3922     */
3923    struct LDKPublicKey node_id;
3924    /**
3925     * The message which should be sent.
3926     */
3927    struct LDKFundingCreated msg;
3928 } LDKMessageSendEvent_LDKSendFundingCreated_Body;
3929
3930 typedef struct LDKMessageSendEvent_LDKSendFundingSigned_Body {
3931    /**
3932     * The node_id of the node which should receive this message
3933     */
3934    struct LDKPublicKey node_id;
3935    /**
3936     * The message which should be sent.
3937     */
3938    struct LDKFundingSigned msg;
3939 } LDKMessageSendEvent_LDKSendFundingSigned_Body;
3940
3941 typedef struct LDKMessageSendEvent_LDKSendFundingLocked_Body {
3942    /**
3943     * The node_id of the node which should receive these message(s)
3944     */
3945    struct LDKPublicKey node_id;
3946    /**
3947     * The funding_locked message which should be sent.
3948     */
3949    struct LDKFundingLocked msg;
3950 } LDKMessageSendEvent_LDKSendFundingLocked_Body;
3951
3952 typedef struct LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body {
3953    /**
3954     * The node_id of the node which should receive these message(s)
3955     */
3956    struct LDKPublicKey node_id;
3957    /**
3958     * The announcement_signatures message which should be sent.
3959     */
3960    struct LDKAnnouncementSignatures msg;
3961 } LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body;
3962
3963 typedef struct LDKMessageSendEvent_LDKUpdateHTLCs_Body {
3964    /**
3965     * The node_id of the node which should receive these message(s)
3966     */
3967    struct LDKPublicKey node_id;
3968    /**
3969     * The update messages which should be sent. ALL messages in the struct should be sent!
3970     */
3971    struct LDKCommitmentUpdate updates;
3972 } LDKMessageSendEvent_LDKUpdateHTLCs_Body;
3973
3974 typedef struct LDKMessageSendEvent_LDKSendRevokeAndACK_Body {
3975    /**
3976     * The node_id of the node which should receive this message
3977     */
3978    struct LDKPublicKey node_id;
3979    /**
3980     * The message which should be sent.
3981     */
3982    struct LDKRevokeAndACK msg;
3983 } LDKMessageSendEvent_LDKSendRevokeAndACK_Body;
3984
3985 typedef struct LDKMessageSendEvent_LDKSendClosingSigned_Body {
3986    /**
3987     * The node_id of the node which should receive this message
3988     */
3989    struct LDKPublicKey node_id;
3990    /**
3991     * The message which should be sent.
3992     */
3993    struct LDKClosingSigned msg;
3994 } LDKMessageSendEvent_LDKSendClosingSigned_Body;
3995
3996 typedef struct LDKMessageSendEvent_LDKSendShutdown_Body {
3997    /**
3998     * The node_id of the node which should receive this message
3999     */
4000    struct LDKPublicKey node_id;
4001    /**
4002     * The message which should be sent.
4003     */
4004    struct LDKShutdown msg;
4005 } LDKMessageSendEvent_LDKSendShutdown_Body;
4006
4007 typedef struct LDKMessageSendEvent_LDKSendChannelReestablish_Body {
4008    /**
4009     * The node_id of the node which should receive this message
4010     */
4011    struct LDKPublicKey node_id;
4012    /**
4013     * The message which should be sent.
4014     */
4015    struct LDKChannelReestablish msg;
4016 } LDKMessageSendEvent_LDKSendChannelReestablish_Body;
4017
4018 typedef struct LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body {
4019    /**
4020     * The channel_announcement which should be sent.
4021     */
4022    struct LDKChannelAnnouncement msg;
4023    /**
4024     * The followup channel_update which should be sent.
4025     */
4026    struct LDKChannelUpdate update_msg;
4027 } LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body;
4028
4029 typedef struct LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body {
4030    /**
4031     * The node_announcement which should be sent.
4032     */
4033    struct LDKNodeAnnouncement msg;
4034 } LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body;
4035
4036 typedef struct LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body {
4037    /**
4038     * The channel_update which should be sent.
4039     */
4040    struct LDKChannelUpdate msg;
4041 } LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body;
4042
4043 typedef struct LDKMessageSendEvent_LDKSendChannelUpdate_Body {
4044    /**
4045     * The node_id of the node which should receive this message
4046     */
4047    struct LDKPublicKey node_id;
4048    /**
4049     * The channel_update which should be sent.
4050     */
4051    struct LDKChannelUpdate msg;
4052 } LDKMessageSendEvent_LDKSendChannelUpdate_Body;
4053
4054 typedef struct LDKMessageSendEvent_LDKHandleError_Body {
4055    /**
4056     * The node_id of the node which should receive this message
4057     */
4058    struct LDKPublicKey node_id;
4059    /**
4060     * The action which should be taken.
4061     */
4062    struct LDKErrorAction action;
4063 } LDKMessageSendEvent_LDKHandleError_Body;
4064
4065 typedef struct LDKMessageSendEvent_LDKSendChannelRangeQuery_Body {
4066    /**
4067     * The node_id of this message recipient
4068     */
4069    struct LDKPublicKey node_id;
4070    /**
4071     * The query_channel_range which should be sent.
4072     */
4073    struct LDKQueryChannelRange msg;
4074 } LDKMessageSendEvent_LDKSendChannelRangeQuery_Body;
4075
4076 typedef struct LDKMessageSendEvent_LDKSendShortIdsQuery_Body {
4077    /**
4078     * The node_id of this message recipient
4079     */
4080    struct LDKPublicKey node_id;
4081    /**
4082     * The query_short_channel_ids which should be sent.
4083     */
4084    struct LDKQueryShortChannelIds msg;
4085 } LDKMessageSendEvent_LDKSendShortIdsQuery_Body;
4086
4087 typedef struct LDKMessageSendEvent_LDKSendReplyChannelRange_Body {
4088    /**
4089     * The node_id of this message recipient
4090     */
4091    struct LDKPublicKey node_id;
4092    /**
4093     * The reply_channel_range which should be sent.
4094     */
4095    struct LDKReplyChannelRange msg;
4096 } LDKMessageSendEvent_LDKSendReplyChannelRange_Body;
4097
4098 typedef struct LDKMessageSendEvent_LDKSendGossipTimestampFilter_Body {
4099    /**
4100     * The node_id of this message recipient
4101     */
4102    struct LDKPublicKey node_id;
4103    /**
4104     * The gossip_timestamp_filter which should be sent.
4105     */
4106    struct LDKGossipTimestampFilter msg;
4107 } LDKMessageSendEvent_LDKSendGossipTimestampFilter_Body;
4108
4109 typedef struct MUST_USE_STRUCT LDKMessageSendEvent {
4110    LDKMessageSendEvent_Tag tag;
4111    union {
4112       LDKMessageSendEvent_LDKSendAcceptChannel_Body send_accept_channel;
4113       LDKMessageSendEvent_LDKSendOpenChannel_Body send_open_channel;
4114       LDKMessageSendEvent_LDKSendFundingCreated_Body send_funding_created;
4115       LDKMessageSendEvent_LDKSendFundingSigned_Body send_funding_signed;
4116       LDKMessageSendEvent_LDKSendFundingLocked_Body send_funding_locked;
4117       LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body send_announcement_signatures;
4118       LDKMessageSendEvent_LDKUpdateHTLCs_Body update_htl_cs;
4119       LDKMessageSendEvent_LDKSendRevokeAndACK_Body send_revoke_and_ack;
4120       LDKMessageSendEvent_LDKSendClosingSigned_Body send_closing_signed;
4121       LDKMessageSendEvent_LDKSendShutdown_Body send_shutdown;
4122       LDKMessageSendEvent_LDKSendChannelReestablish_Body send_channel_reestablish;
4123       LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body broadcast_channel_announcement;
4124       LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body broadcast_node_announcement;
4125       LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body broadcast_channel_update;
4126       LDKMessageSendEvent_LDKSendChannelUpdate_Body send_channel_update;
4127       LDKMessageSendEvent_LDKHandleError_Body handle_error;
4128       LDKMessageSendEvent_LDKSendChannelRangeQuery_Body send_channel_range_query;
4129       LDKMessageSendEvent_LDKSendShortIdsQuery_Body send_short_ids_query;
4130       LDKMessageSendEvent_LDKSendReplyChannelRange_Body send_reply_channel_range;
4131       LDKMessageSendEvent_LDKSendGossipTimestampFilter_Body send_gossip_timestamp_filter;
4132    };
4133 } LDKMessageSendEvent;
4134
4135 /**
4136  * A dynamically-allocated array of crate::lightning::util::events::MessageSendEvents of arbitrary size.
4137  * This corresponds to std::vector in C++
4138  */
4139 typedef struct LDKCVec_MessageSendEventZ {
4140    /**
4141     * The elements in the array.
4142     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4143     */
4144    struct LDKMessageSendEvent *data;
4145    /**
4146     * The number of elements pointed to by `data`.
4147     */
4148    uintptr_t datalen;
4149 } LDKCVec_MessageSendEventZ;
4150
4151
4152
4153 /**
4154  * [`Score`] implementation that uses a fixed penalty.
4155  */
4156 typedef struct MUST_USE_STRUCT LDKFixedPenaltyScorer {
4157    /**
4158     * A pointer to the opaque Rust object.
4159     * Nearly everywhere, inner must be non-null, however in places where
4160     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4161     */
4162    LDKnativeFixedPenaltyScorer *inner;
4163    /**
4164     * Indicates that this is the only struct which contains the same pointer.
4165     * Rust functions which take ownership of an object provided via an argument require
4166     * this to be true and invalidate the object pointed to by inner.
4167     */
4168    bool is_owned;
4169 } LDKFixedPenaltyScorer;
4170
4171 /**
4172  * The contents of CResult_FixedPenaltyScorerDecodeErrorZ
4173  */
4174 typedef union LDKCResult_FixedPenaltyScorerDecodeErrorZPtr {
4175    /**
4176     * A pointer to the contents in the success state.
4177     * Reading from this pointer when `result_ok` is not set is undefined.
4178     */
4179    struct LDKFixedPenaltyScorer *result;
4180    /**
4181     * A pointer to the contents in the error state.
4182     * Reading from this pointer when `result_ok` is set is undefined.
4183     */
4184    struct LDKDecodeError *err;
4185 } LDKCResult_FixedPenaltyScorerDecodeErrorZPtr;
4186
4187 /**
4188  * A CResult_FixedPenaltyScorerDecodeErrorZ represents the result of a fallible operation,
4189  * containing a crate::lightning::routing::scoring::FixedPenaltyScorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4190  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4191  */
4192 typedef struct LDKCResult_FixedPenaltyScorerDecodeErrorZ {
4193    /**
4194     * The contents of this CResult_FixedPenaltyScorerDecodeErrorZ, accessible via either
4195     * `err` or `result` depending on the state of `result_ok`.
4196     */
4197    union LDKCResult_FixedPenaltyScorerDecodeErrorZPtr contents;
4198    /**
4199     * Whether this CResult_FixedPenaltyScorerDecodeErrorZ represents a success state.
4200     */
4201    bool result_ok;
4202 } LDKCResult_FixedPenaltyScorerDecodeErrorZ;
4203
4204
4205
4206 /**
4207  * Parameters for configuring [`Scorer`].
4208  */
4209 typedef struct MUST_USE_STRUCT LDKScoringParameters {
4210    /**
4211     * A pointer to the opaque Rust object.
4212     * Nearly everywhere, inner must be non-null, however in places where
4213     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4214     */
4215    LDKnativeScoringParameters *inner;
4216    /**
4217     * Indicates that this is the only struct which contains the same pointer.
4218     * Rust functions which take ownership of an object provided via an argument require
4219     * this to be true and invalidate the object pointed to by inner.
4220     */
4221    bool is_owned;
4222 } LDKScoringParameters;
4223
4224 /**
4225  * The contents of CResult_ScoringParametersDecodeErrorZ
4226  */
4227 typedef union LDKCResult_ScoringParametersDecodeErrorZPtr {
4228    /**
4229     * A pointer to the contents in the success state.
4230     * Reading from this pointer when `result_ok` is not set is undefined.
4231     */
4232    struct LDKScoringParameters *result;
4233    /**
4234     * A pointer to the contents in the error state.
4235     * Reading from this pointer when `result_ok` is set is undefined.
4236     */
4237    struct LDKDecodeError *err;
4238 } LDKCResult_ScoringParametersDecodeErrorZPtr;
4239
4240 /**
4241  * A CResult_ScoringParametersDecodeErrorZ represents the result of a fallible operation,
4242  * containing a crate::lightning::routing::scoring::ScoringParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
4243  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4244  */
4245 typedef struct LDKCResult_ScoringParametersDecodeErrorZ {
4246    /**
4247     * The contents of this CResult_ScoringParametersDecodeErrorZ, accessible via either
4248     * `err` or `result` depending on the state of `result_ok`.
4249     */
4250    union LDKCResult_ScoringParametersDecodeErrorZPtr contents;
4251    /**
4252     * Whether this CResult_ScoringParametersDecodeErrorZ represents a success state.
4253     */
4254    bool result_ok;
4255 } LDKCResult_ScoringParametersDecodeErrorZ;
4256
4257
4258
4259 /**
4260  * [`Score`] implementation that provides reasonable default behavior.
4261  *
4262  * Used to apply a fixed penalty to each channel, thus avoiding long paths when shorter paths with
4263  * slightly higher fees are available. Will further penalize channels that fail to relay payments.
4264  *
4265  * See [module-level documentation] for usage and [`ScoringParameters`] for customization.
4266  *
4267  * # Note
4268  *
4269  * Mixing the `no-std` feature between serialization and deserialization results in undefined
4270  * behavior.
4271  *
4272  * [module-level documentation]: crate::routing::scoring
4273  */
4274 typedef struct MUST_USE_STRUCT LDKScorer {
4275    /**
4276     * A pointer to the opaque Rust object.
4277     * Nearly everywhere, inner must be non-null, however in places where
4278     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4279     */
4280    LDKnativeScorer *inner;
4281    /**
4282     * Indicates that this is the only struct which contains the same pointer.
4283     * Rust functions which take ownership of an object provided via an argument require
4284     * this to be true and invalidate the object pointed to by inner.
4285     */
4286    bool is_owned;
4287 } LDKScorer;
4288
4289 /**
4290  * The contents of CResult_ScorerDecodeErrorZ
4291  */
4292 typedef union LDKCResult_ScorerDecodeErrorZPtr {
4293    /**
4294     * A pointer to the contents in the success state.
4295     * Reading from this pointer when `result_ok` is not set is undefined.
4296     */
4297    struct LDKScorer *result;
4298    /**
4299     * A pointer to the contents in the error state.
4300     * Reading from this pointer when `result_ok` is set is undefined.
4301     */
4302    struct LDKDecodeError *err;
4303 } LDKCResult_ScorerDecodeErrorZPtr;
4304
4305 /**
4306  * A CResult_ScorerDecodeErrorZ represents the result of a fallible operation,
4307  * containing a crate::lightning::routing::scoring::Scorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4308  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4309  */
4310 typedef struct LDKCResult_ScorerDecodeErrorZ {
4311    /**
4312     * The contents of this CResult_ScorerDecodeErrorZ, accessible via either
4313     * `err` or `result` depending on the state of `result_ok`.
4314     */
4315    union LDKCResult_ScorerDecodeErrorZPtr contents;
4316    /**
4317     * Whether this CResult_ScorerDecodeErrorZ represents a success state.
4318     */
4319    bool result_ok;
4320 } LDKCResult_ScorerDecodeErrorZ;
4321
4322
4323
4324 /**
4325  * Represents the network as nodes and channels between them
4326  */
4327 typedef struct MUST_USE_STRUCT LDKNetworkGraph {
4328    /**
4329     * A pointer to the opaque Rust object.
4330     * Nearly everywhere, inner must be non-null, however in places where
4331     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4332     */
4333    LDKnativeNetworkGraph *inner;
4334    /**
4335     * Indicates that this is the only struct which contains the same pointer.
4336     * Rust functions which take ownership of an object provided via an argument require
4337     * this to be true and invalidate the object pointed to by inner.
4338     */
4339    bool is_owned;
4340 } LDKNetworkGraph;
4341
4342
4343
4344 /**
4345  * [`Score`] implementation using channel success probability distributions.
4346  *
4347  * Based on *Optimally Reliable & Cheap Payment Flows on the Lightning Network* by Rene Pickhardt
4348  * and Stefan Richter [[1]]. Given the uncertainty of channel liquidity balances, probability
4349  * distributions are defined based on knowledge learned from successful and unsuccessful attempts.
4350  * Then the negative `log10` of the success probability is used to determine the cost of routing a
4351  * specific HTLC amount through a channel.
4352  *
4353  * Knowledge about channel liquidity balances takes the form of upper and lower bounds on the
4354  * possible liquidity. Certainty of the bounds is decreased over time using a decay function. See
4355  * [`ProbabilisticScoringParameters`] for details.
4356  *
4357  * Since the scorer aims to learn the current channel liquidity balances, it works best for nodes
4358  * with high payment volume or that actively probe the [`NetworkGraph`]. Nodes with low payment
4359  * volume are more likely to experience failed payment paths, which would need to be retried.
4360  *
4361  * # Note
4362  *
4363  * Mixing the `no-std` feature between serialization and deserialization results in undefined
4364  * behavior.
4365  *
4366  * [1]: https://arxiv.org/abs/2107.05322
4367  */
4368 typedef struct MUST_USE_STRUCT LDKProbabilisticScorer {
4369    /**
4370     * A pointer to the opaque Rust object.
4371     * Nearly everywhere, inner must be non-null, however in places where
4372     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4373     */
4374    LDKnativeProbabilisticScorer *inner;
4375    /**
4376     * Indicates that this is the only struct which contains the same pointer.
4377     * Rust functions which take ownership of an object provided via an argument require
4378     * this to be true and invalidate the object pointed to by inner.
4379     */
4380    bool is_owned;
4381 } LDKProbabilisticScorer;
4382
4383 /**
4384  * The contents of CResult_ProbabilisticScorerDecodeErrorZ
4385  */
4386 typedef union LDKCResult_ProbabilisticScorerDecodeErrorZPtr {
4387    /**
4388     * A pointer to the contents in the success state.
4389     * Reading from this pointer when `result_ok` is not set is undefined.
4390     */
4391    struct LDKProbabilisticScorer *result;
4392    /**
4393     * A pointer to the contents in the error state.
4394     * Reading from this pointer when `result_ok` is set is undefined.
4395     */
4396    struct LDKDecodeError *err;
4397 } LDKCResult_ProbabilisticScorerDecodeErrorZPtr;
4398
4399 /**
4400  * A CResult_ProbabilisticScorerDecodeErrorZ represents the result of a fallible operation,
4401  * containing a crate::lightning::routing::scoring::ProbabilisticScorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4402  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4403  */
4404 typedef struct LDKCResult_ProbabilisticScorerDecodeErrorZ {
4405    /**
4406     * The contents of this CResult_ProbabilisticScorerDecodeErrorZ, accessible via either
4407     * `err` or `result` depending on the state of `result_ok`.
4408     */
4409    union LDKCResult_ProbabilisticScorerDecodeErrorZPtr contents;
4410    /**
4411     * Whether this CResult_ProbabilisticScorerDecodeErrorZ represents a success state.
4412     */
4413    bool result_ok;
4414 } LDKCResult_ProbabilisticScorerDecodeErrorZ;
4415
4416
4417
4418 /**
4419  * Features used within an `init` message.
4420  */
4421 typedef struct MUST_USE_STRUCT LDKInitFeatures {
4422    /**
4423     * A pointer to the opaque Rust object.
4424     * Nearly everywhere, inner must be non-null, however in places where
4425     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4426     */
4427    LDKnativeInitFeatures *inner;
4428    /**
4429     * Indicates that this is the only struct which contains the same pointer.
4430     * Rust functions which take ownership of an object provided via an argument require
4431     * this to be true and invalidate the object pointed to by inner.
4432     */
4433    bool is_owned;
4434 } LDKInitFeatures;
4435
4436 /**
4437  * The contents of CResult_InitFeaturesDecodeErrorZ
4438  */
4439 typedef union LDKCResult_InitFeaturesDecodeErrorZPtr {
4440    /**
4441     * A pointer to the contents in the success state.
4442     * Reading from this pointer when `result_ok` is not set is undefined.
4443     */
4444    struct LDKInitFeatures *result;
4445    /**
4446     * A pointer to the contents in the error state.
4447     * Reading from this pointer when `result_ok` is set is undefined.
4448     */
4449    struct LDKDecodeError *err;
4450 } LDKCResult_InitFeaturesDecodeErrorZPtr;
4451
4452 /**
4453  * A CResult_InitFeaturesDecodeErrorZ represents the result of a fallible operation,
4454  * containing a crate::lightning::ln::features::InitFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4455  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4456  */
4457 typedef struct LDKCResult_InitFeaturesDecodeErrorZ {
4458    /**
4459     * The contents of this CResult_InitFeaturesDecodeErrorZ, accessible via either
4460     * `err` or `result` depending on the state of `result_ok`.
4461     */
4462    union LDKCResult_InitFeaturesDecodeErrorZPtr contents;
4463    /**
4464     * Whether this CResult_InitFeaturesDecodeErrorZ represents a success state.
4465     */
4466    bool result_ok;
4467 } LDKCResult_InitFeaturesDecodeErrorZ;
4468
4469
4470
4471 /**
4472  * Features used within a `channel_announcement` message.
4473  */
4474 typedef struct MUST_USE_STRUCT LDKChannelFeatures {
4475    /**
4476     * A pointer to the opaque Rust object.
4477     * Nearly everywhere, inner must be non-null, however in places where
4478     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4479     */
4480    LDKnativeChannelFeatures *inner;
4481    /**
4482     * Indicates that this is the only struct which contains the same pointer.
4483     * Rust functions which take ownership of an object provided via an argument require
4484     * this to be true and invalidate the object pointed to by inner.
4485     */
4486    bool is_owned;
4487 } LDKChannelFeatures;
4488
4489 /**
4490  * The contents of CResult_ChannelFeaturesDecodeErrorZ
4491  */
4492 typedef union LDKCResult_ChannelFeaturesDecodeErrorZPtr {
4493    /**
4494     * A pointer to the contents in the success state.
4495     * Reading from this pointer when `result_ok` is not set is undefined.
4496     */
4497    struct LDKChannelFeatures *result;
4498    /**
4499     * A pointer to the contents in the error state.
4500     * Reading from this pointer when `result_ok` is set is undefined.
4501     */
4502    struct LDKDecodeError *err;
4503 } LDKCResult_ChannelFeaturesDecodeErrorZPtr;
4504
4505 /**
4506  * A CResult_ChannelFeaturesDecodeErrorZ represents the result of a fallible operation,
4507  * containing a crate::lightning::ln::features::ChannelFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4508  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4509  */
4510 typedef struct LDKCResult_ChannelFeaturesDecodeErrorZ {
4511    /**
4512     * The contents of this CResult_ChannelFeaturesDecodeErrorZ, accessible via either
4513     * `err` or `result` depending on the state of `result_ok`.
4514     */
4515    union LDKCResult_ChannelFeaturesDecodeErrorZPtr contents;
4516    /**
4517     * Whether this CResult_ChannelFeaturesDecodeErrorZ represents a success state.
4518     */
4519    bool result_ok;
4520 } LDKCResult_ChannelFeaturesDecodeErrorZ;
4521
4522
4523
4524 /**
4525  * Features used within a `node_announcement` message.
4526  */
4527 typedef struct MUST_USE_STRUCT LDKNodeFeatures {
4528    /**
4529     * A pointer to the opaque Rust object.
4530     * Nearly everywhere, inner must be non-null, however in places where
4531     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4532     */
4533    LDKnativeNodeFeatures *inner;
4534    /**
4535     * Indicates that this is the only struct which contains the same pointer.
4536     * Rust functions which take ownership of an object provided via an argument require
4537     * this to be true and invalidate the object pointed to by inner.
4538     */
4539    bool is_owned;
4540 } LDKNodeFeatures;
4541
4542 /**
4543  * The contents of CResult_NodeFeaturesDecodeErrorZ
4544  */
4545 typedef union LDKCResult_NodeFeaturesDecodeErrorZPtr {
4546    /**
4547     * A pointer to the contents in the success state.
4548     * Reading from this pointer when `result_ok` is not set is undefined.
4549     */
4550    struct LDKNodeFeatures *result;
4551    /**
4552     * A pointer to the contents in the error state.
4553     * Reading from this pointer when `result_ok` is set is undefined.
4554     */
4555    struct LDKDecodeError *err;
4556 } LDKCResult_NodeFeaturesDecodeErrorZPtr;
4557
4558 /**
4559  * A CResult_NodeFeaturesDecodeErrorZ represents the result of a fallible operation,
4560  * containing a crate::lightning::ln::features::NodeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4561  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4562  */
4563 typedef struct LDKCResult_NodeFeaturesDecodeErrorZ {
4564    /**
4565     * The contents of this CResult_NodeFeaturesDecodeErrorZ, accessible via either
4566     * `err` or `result` depending on the state of `result_ok`.
4567     */
4568    union LDKCResult_NodeFeaturesDecodeErrorZPtr contents;
4569    /**
4570     * Whether this CResult_NodeFeaturesDecodeErrorZ represents a success state.
4571     */
4572    bool result_ok;
4573 } LDKCResult_NodeFeaturesDecodeErrorZ;
4574
4575
4576
4577 /**
4578  * Features used within an invoice.
4579  */
4580 typedef struct MUST_USE_STRUCT LDKInvoiceFeatures {
4581    /**
4582     * A pointer to the opaque Rust object.
4583     * Nearly everywhere, inner must be non-null, however in places where
4584     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4585     */
4586    LDKnativeInvoiceFeatures *inner;
4587    /**
4588     * Indicates that this is the only struct which contains the same pointer.
4589     * Rust functions which take ownership of an object provided via an argument require
4590     * this to be true and invalidate the object pointed to by inner.
4591     */
4592    bool is_owned;
4593 } LDKInvoiceFeatures;
4594
4595 /**
4596  * The contents of CResult_InvoiceFeaturesDecodeErrorZ
4597  */
4598 typedef union LDKCResult_InvoiceFeaturesDecodeErrorZPtr {
4599    /**
4600     * A pointer to the contents in the success state.
4601     * Reading from this pointer when `result_ok` is not set is undefined.
4602     */
4603    struct LDKInvoiceFeatures *result;
4604    /**
4605     * A pointer to the contents in the error state.
4606     * Reading from this pointer when `result_ok` is set is undefined.
4607     */
4608    struct LDKDecodeError *err;
4609 } LDKCResult_InvoiceFeaturesDecodeErrorZPtr;
4610
4611 /**
4612  * A CResult_InvoiceFeaturesDecodeErrorZ represents the result of a fallible operation,
4613  * containing a crate::lightning::ln::features::InvoiceFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4614  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4615  */
4616 typedef struct LDKCResult_InvoiceFeaturesDecodeErrorZ {
4617    /**
4618     * The contents of this CResult_InvoiceFeaturesDecodeErrorZ, accessible via either
4619     * `err` or `result` depending on the state of `result_ok`.
4620     */
4621    union LDKCResult_InvoiceFeaturesDecodeErrorZPtr contents;
4622    /**
4623     * Whether this CResult_InvoiceFeaturesDecodeErrorZ represents a success state.
4624     */
4625    bool result_ok;
4626 } LDKCResult_InvoiceFeaturesDecodeErrorZ;
4627
4628 /**
4629  * The contents of CResult_ChannelTypeFeaturesDecodeErrorZ
4630  */
4631 typedef union LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr {
4632    /**
4633     * A pointer to the contents in the success state.
4634     * Reading from this pointer when `result_ok` is not set is undefined.
4635     */
4636    struct LDKChannelTypeFeatures *result;
4637    /**
4638     * A pointer to the contents in the error state.
4639     * Reading from this pointer when `result_ok` is set is undefined.
4640     */
4641    struct LDKDecodeError *err;
4642 } LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr;
4643
4644 /**
4645  * A CResult_ChannelTypeFeaturesDecodeErrorZ represents the result of a fallible operation,
4646  * containing a crate::lightning::ln::features::ChannelTypeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4647  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4648  */
4649 typedef struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ {
4650    /**
4651     * The contents of this CResult_ChannelTypeFeaturesDecodeErrorZ, accessible via either
4652     * `err` or `result` depending on the state of `result_ok`.
4653     */
4654    union LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr contents;
4655    /**
4656     * Whether this CResult_ChannelTypeFeaturesDecodeErrorZ represents a success state.
4657     */
4658    bool result_ok;
4659 } LDKCResult_ChannelTypeFeaturesDecodeErrorZ;
4660
4661 /**
4662  * The contents of CResult_DelayedPaymentOutputDescriptorDecodeErrorZ
4663  */
4664 typedef union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr {
4665    /**
4666     * A pointer to the contents in the success state.
4667     * Reading from this pointer when `result_ok` is not set is undefined.
4668     */
4669    struct LDKDelayedPaymentOutputDescriptor *result;
4670    /**
4671     * A pointer to the contents in the error state.
4672     * Reading from this pointer when `result_ok` is set is undefined.
4673     */
4674    struct LDKDecodeError *err;
4675 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr;
4676
4677 /**
4678  * A CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4679  * containing a crate::lightning::chain::keysinterface::DelayedPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
4680  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4681  */
4682 typedef struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
4683    /**
4684     * The contents of this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ, accessible via either
4685     * `err` or `result` depending on the state of `result_ok`.
4686     */
4687    union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr contents;
4688    /**
4689     * Whether this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents a success state.
4690     */
4691    bool result_ok;
4692 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
4693
4694 /**
4695  * The contents of CResult_StaticPaymentOutputDescriptorDecodeErrorZ
4696  */
4697 typedef union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr {
4698    /**
4699     * A pointer to the contents in the success state.
4700     * Reading from this pointer when `result_ok` is not set is undefined.
4701     */
4702    struct LDKStaticPaymentOutputDescriptor *result;
4703    /**
4704     * A pointer to the contents in the error state.
4705     * Reading from this pointer when `result_ok` is set is undefined.
4706     */
4707    struct LDKDecodeError *err;
4708 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr;
4709
4710 /**
4711  * A CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4712  * containing a crate::lightning::chain::keysinterface::StaticPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
4713  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4714  */
4715 typedef struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4716    /**
4717     * The contents of this CResult_StaticPaymentOutputDescriptorDecodeErrorZ, accessible via either
4718     * `err` or `result` depending on the state of `result_ok`.
4719     */
4720    union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr contents;
4721    /**
4722     * Whether this CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents a success state.
4723     */
4724    bool result_ok;
4725 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ;
4726
4727 /**
4728  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
4729  */
4730 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
4731    /**
4732     * A pointer to the contents in the success state.
4733     * Reading from this pointer when `result_ok` is not set is undefined.
4734     */
4735    struct LDKSpendableOutputDescriptor *result;
4736    /**
4737     * A pointer to the contents in the error state.
4738     * Reading from this pointer when `result_ok` is set is undefined.
4739     */
4740    struct LDKDecodeError *err;
4741 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
4742
4743 /**
4744  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4745  * containing a crate::lightning::chain::keysinterface::SpendableOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
4746  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4747  */
4748 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
4749    /**
4750     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
4751     * `err` or `result` depending on the state of `result_ok`.
4752     */
4753    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
4754    /**
4755     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
4756     */
4757    bool result_ok;
4758 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
4759
4760 /**
4761  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
4762  * This corresponds to std::vector in C++
4763  */
4764 typedef struct LDKCVec_PaymentPreimageZ {
4765    /**
4766     * The elements in the array.
4767     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4768     */
4769    struct LDKThirtyTwoBytes *data;
4770    /**
4771     * The number of elements pointed to by `data`.
4772     */
4773    uintptr_t datalen;
4774 } LDKCVec_PaymentPreimageZ;
4775
4776 /**
4777  * A tuple of 2 elements. See the individual fields for the types contained.
4778  */
4779 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
4780    /**
4781     * The element at position 0
4782     */
4783    struct LDKSignature a;
4784    /**
4785     * The element at position 1
4786     */
4787    struct LDKCVec_SignatureZ b;
4788 } LDKC2Tuple_SignatureCVec_SignatureZZ;
4789
4790 /**
4791  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
4792  */
4793 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
4794    /**
4795     * A pointer to the contents in the success state.
4796     * Reading from this pointer when `result_ok` is not set is undefined.
4797     */
4798    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
4799    /**
4800     * Note that this value is always NULL, as there are no contents in the Err variant
4801     */
4802    void *err;
4803 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
4804
4805 /**
4806  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
4807  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
4808  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4809  */
4810 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
4811    /**
4812     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
4813     * `err` or `result` depending on the state of `result_ok`.
4814     */
4815    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
4816    /**
4817     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
4818     */
4819    bool result_ok;
4820 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
4821
4822 /**
4823  * The contents of CResult_SignatureNoneZ
4824  */
4825 typedef union LDKCResult_SignatureNoneZPtr {
4826    /**
4827     * A pointer to the contents in the success state.
4828     * Reading from this pointer when `result_ok` is not set is undefined.
4829     */
4830    struct LDKSignature *result;
4831    /**
4832     * Note that this value is always NULL, as there are no contents in the Err variant
4833     */
4834    void *err;
4835 } LDKCResult_SignatureNoneZPtr;
4836
4837 /**
4838  * A CResult_SignatureNoneZ represents the result of a fallible operation,
4839  * containing a crate::c_types::Signature on success and a () on failure.
4840  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4841  */
4842 typedef struct LDKCResult_SignatureNoneZ {
4843    /**
4844     * The contents of this CResult_SignatureNoneZ, accessible via either
4845     * `err` or `result` depending on the state of `result_ok`.
4846     */
4847    union LDKCResult_SignatureNoneZPtr contents;
4848    /**
4849     * Whether this CResult_SignatureNoneZ represents a success state.
4850     */
4851    bool result_ok;
4852 } LDKCResult_SignatureNoneZ;
4853
4854 /**
4855  * A tuple of 2 elements. See the individual fields for the types contained.
4856  */
4857 typedef struct LDKC2Tuple_SignatureSignatureZ {
4858    /**
4859     * The element at position 0
4860     */
4861    struct LDKSignature a;
4862    /**
4863     * The element at position 1
4864     */
4865    struct LDKSignature b;
4866 } LDKC2Tuple_SignatureSignatureZ;
4867
4868 /**
4869  * The contents of CResult_C2Tuple_SignatureSignatureZNoneZ
4870  */
4871 typedef union LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr {
4872    /**
4873     * A pointer to the contents in the success state.
4874     * Reading from this pointer when `result_ok` is not set is undefined.
4875     */
4876    struct LDKC2Tuple_SignatureSignatureZ *result;
4877    /**
4878     * Note that this value is always NULL, as there are no contents in the Err variant
4879     */
4880    void *err;
4881 } LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr;
4882
4883 /**
4884  * A CResult_C2Tuple_SignatureSignatureZNoneZ represents the result of a fallible operation,
4885  * containing a crate::c_types::derived::C2Tuple_SignatureSignatureZ on success and a () on failure.
4886  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4887  */
4888 typedef struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ {
4889    /**
4890     * The contents of this CResult_C2Tuple_SignatureSignatureZNoneZ, accessible via either
4891     * `err` or `result` depending on the state of `result_ok`.
4892     */
4893    union LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr contents;
4894    /**
4895     * Whether this CResult_C2Tuple_SignatureSignatureZNoneZ represents a success state.
4896     */
4897    bool result_ok;
4898 } LDKCResult_C2Tuple_SignatureSignatureZNoneZ;
4899
4900 /**
4901  * The contents of CResult_SecretKeyNoneZ
4902  */
4903 typedef union LDKCResult_SecretKeyNoneZPtr {
4904    /**
4905     * A pointer to the contents in the success state.
4906     * Reading from this pointer when `result_ok` is not set is undefined.
4907     */
4908    struct LDKSecretKey *result;
4909    /**
4910     * Note that this value is always NULL, as there are no contents in the Err variant
4911     */
4912    void *err;
4913 } LDKCResult_SecretKeyNoneZPtr;
4914
4915 /**
4916  * A CResult_SecretKeyNoneZ represents the result of a fallible operation,
4917  * containing a crate::c_types::SecretKey on success and a () on failure.
4918  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4919  */
4920 typedef struct LDKCResult_SecretKeyNoneZ {
4921    /**
4922     * The contents of this CResult_SecretKeyNoneZ, accessible via either
4923     * `err` or `result` depending on the state of `result_ok`.
4924     */
4925    union LDKCResult_SecretKeyNoneZPtr contents;
4926    /**
4927     * Whether this CResult_SecretKeyNoneZ represents a success state.
4928     */
4929    bool result_ok;
4930 } LDKCResult_SecretKeyNoneZ;
4931
4932
4933
4934 /**
4935  * This class tracks the per-transaction information needed to build a closing transaction and will
4936  * actually build it and sign.
4937  *
4938  * This class can be used inside a signer implementation to generate a signature given the relevant
4939  * secret key.
4940  */
4941 typedef struct MUST_USE_STRUCT LDKClosingTransaction {
4942    /**
4943     * A pointer to the opaque Rust object.
4944     * Nearly everywhere, inner must be non-null, however in places where
4945     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4946     */
4947    LDKnativeClosingTransaction *inner;
4948    /**
4949     * Indicates that this is the only struct which contains the same pointer.
4950     * Rust functions which take ownership of an object provided via an argument require
4951     * this to be true and invalidate the object pointed to by inner.
4952     */
4953    bool is_owned;
4954 } LDKClosingTransaction;
4955
4956
4957
4958 /**
4959  * The unsigned part of a channel_announcement
4960  */
4961 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
4962    /**
4963     * A pointer to the opaque Rust object.
4964     * Nearly everywhere, inner must be non-null, however in places where
4965     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4966     */
4967    LDKnativeUnsignedChannelAnnouncement *inner;
4968    /**
4969     * Indicates that this is the only struct which contains the same pointer.
4970     * Rust functions which take ownership of an object provided via an argument require
4971     * this to be true and invalidate the object pointed to by inner.
4972     */
4973    bool is_owned;
4974 } LDKUnsignedChannelAnnouncement;
4975
4976 /**
4977  * A trait to sign lightning channel transactions as described in BOLT 3.
4978  *
4979  * Signing services could be implemented on a hardware wallet. In this case,
4980  * the current Sign would be a front-end on top of a communication
4981  * channel connected to your secure device and lightning key material wouldn't
4982  * reside on a hot server. Nevertheless, a this deployment would still need
4983  * to trust the ChannelManager to avoid loss of funds as this latest component
4984  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
4985  *
4986  * A more secure iteration would be to use hashlock (or payment points) to pair
4987  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
4988  * at the price of more state and computation on the hardware wallet side. In the future,
4989  * we are looking forward to design such interface.
4990  *
4991  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
4992  * to act, as liveness and breach reply correctness are always going to be hard requirements
4993  * of LN security model, orthogonal of key management issues.
4994  */
4995 typedef struct LDKBaseSign {
4996    /**
4997     * An opaque pointer which is passed to your function implementations as an argument.
4998     * This has no meaning in the LDK, and can be NULL or any other value.
4999     */
5000    void *this_arg;
5001    /**
5002     * Gets the per-commitment point for a specific commitment number
5003     *
5004     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
5005     */
5006    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
5007    /**
5008     * Gets the commitment secret for a specific commitment number as part of the revocation process
5009     *
5010     * An external signer implementation should error here if the commitment was already signed
5011     * and should refuse to sign it in the future.
5012     *
5013     * May be called more than once for the same index.
5014     *
5015     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
5016     */
5017    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
5018    /**
5019     * Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
5020     *
5021     * This is required in order for the signer to make sure that releasing a commitment
5022     * secret won't leave us without a broadcastable holder transaction.
5023     * Policy checks should be implemented in this function, including checking the amount
5024     * sent to us and checking the HTLCs.
5025     *
5026     * The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
5027     * A validating signer should ensure that an HTLC output is removed only when the matching
5028     * preimage is provided, or when the value to holder is restored.
5029     *
5030     * NOTE: all the relevant preimages will be provided, but there may also be additional
5031     * irrelevant or duplicate preimages.
5032     */
5033    struct LDKCResult_NoneNoneZ (*validate_holder_commitment)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
5034    /**
5035     * Gets the holder's channel public keys and basepoints
5036     */
5037    struct LDKChannelPublicKeys pubkeys;
5038    /**
5039     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
5040     * Note that this takes a pointer to this object, not the this_ptr like other methods do
5041     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
5042     */
5043    void (*set_pubkeys)(const struct LDKBaseSign*NONNULL_PTR );
5044    /**
5045     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
5046     * some SpendableOutputDescriptor types. This should be sufficient to identify this
5047     * Sign object uniquely and lookup or re-derive its keys.
5048     */
5049    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
5050    /**
5051     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
5052     *
5053     * Note that if signing fails or is rejected, the channel will be force-closed.
5054     *
5055     * Policy checks should be implemented in this function, including checking the amount
5056     * sent to us and checking the HTLCs.
5057     *
5058     * The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
5059     * A validating signer should ensure that an HTLC output is removed only when the matching
5060     * preimage is provided, or when the value to holder is restored.
5061     *
5062     * NOTE: all the relevant preimages will be provided, but there may also be additional
5063     * irrelevant or duplicate preimages.
5064     */
5065    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
5066    /**
5067     * Validate the counterparty's revocation.
5068     *
5069     * This is required in order for the signer to make sure that the state has moved
5070     * forward and it is safe to sign the next counterparty commitment.
5071     */
5072    struct LDKCResult_NoneNoneZ (*validate_counterparty_revocation)(const void *this_arg, uint64_t idx, const uint8_t (*secret)[32]);
5073    /**
5074     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
5075     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
5076     * latest commitment_tx when we initiate a force-close.
5077     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
5078     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
5079     * the latest.
5080     * This may be called multiple times for the same transaction.
5081     *
5082     * An external signer implementation should check that the commitment has not been revoked.
5083     *
5084     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
5085     */
5086    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
5087    /**
5088     * Create a signature for the given input in a transaction spending an HTLC transaction output
5089     * or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
5090     *
5091     * A justice transaction may claim multiple outputs at the same time if timelocks are
5092     * similar, but only a signature for the input at index `input` should be signed for here.
5093     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
5094     * to an upcoming timelock expiration.
5095     *
5096     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
5097     *
5098     * per_commitment_key is revocation secret which was provided by our counterparty when they
5099     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
5100     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
5101     * so).
5102     */
5103    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]);
5104    /**
5105     * Create a signature for the given input in a transaction spending a commitment transaction
5106     * HTLC output when our counterparty broadcasts an old state.
5107     *
5108     * A justice transaction may claim multiple outputs at the same time if timelocks are
5109     * similar, but only a signature for the input at index `input` should be signed for here.
5110     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
5111     * to an upcoming timelock expiration.
5112     *
5113     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
5114     *
5115     * per_commitment_key is revocation secret which was provided by our counterparty when they
5116     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
5117     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
5118     * so).
5119     *
5120     * htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
5121     * (which is committed to in the BIP 143 signatures).
5122     */
5123    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);
5124    /**
5125     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
5126     * transaction, either offered or received.
5127     *
5128     * Such a transaction may claim multiples offered outputs at same time if we know the
5129     * preimage for each when we create it, but only the input at index `input` should be
5130     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
5131     * needed with regards to an upcoming timelock expiration.
5132     *
5133     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
5134     * outputs.
5135     *
5136     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
5137     *
5138     * Per_commitment_point is the dynamic point corresponding to the channel state
5139     * detected onchain. It has been generated by our counterparty and is used to derive
5140     * channel state keys, which are then included in the witness script and committed to in the
5141     * BIP 143 signature.
5142     */
5143    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);
5144    /**
5145     * Create a signature for a (proposed) closing transaction.
5146     *
5147     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
5148     * chosen to forgo their output as dust.
5149     */
5150    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
5151    /**
5152     * Signs a channel announcement message with our funding key and our node secret key (aka
5153     * node_id or network_key), proving it comes from one of the channel participants.
5154     *
5155     * The first returned signature should be from our node secret key, the second from our
5156     * funding key.
5157     *
5158     * Note that if this fails or is rejected, the channel will not be publicly announced and
5159     * our counterparty may (though likely will not) close the channel on us for violating the
5160     * protocol.
5161     */
5162    struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
5163    /**
5164     * Set the counterparty static channel data, including basepoints,
5165     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
5166     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
5167     * they MUST NOT be allowed to change to different values once set.
5168     *
5169     * channel_parameters.is_populated() MUST be true.
5170     *
5171     * We bind holder_selected_contest_delay late here for API convenience.
5172     *
5173     * Will be called before any signatures are applied.
5174     */
5175    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
5176    /**
5177     * Frees any resources associated with this object given its this_arg pointer.
5178     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
5179     */
5180    void (*free)(void *this_arg);
5181 } LDKBaseSign;
5182
5183 /**
5184  * A cloneable signer.
5185  *
5186  * Although we require signers to be cloneable, it may be useful for developers to be able to use
5187  * signers in an un-sized way, for example as `dyn BaseSign`. Therefore we separate the Clone trait,
5188  * which implies Sized, into this derived trait.
5189  */
5190 typedef struct LDKSign {
5191    /**
5192     * An opaque pointer which is passed to your function implementations as an argument.
5193     * This has no meaning in the LDK, and can be NULL or any other value.
5194     */
5195    void *this_arg;
5196    /**
5197     * Implementation of BaseSign for this object.
5198     */
5199    struct LDKBaseSign BaseSign;
5200    /**
5201     * Serialize the object into a byte array
5202     */
5203    struct LDKCVec_u8Z (*write)(const void *this_arg);
5204    /**
5205     * Called, if set, after this Sign has been cloned into a duplicate object.
5206     * The new Sign is provided, and should be mutated as needed to perform a
5207     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
5208     */
5209    void (*cloned)(struct LDKSign *NONNULL_PTR new_Sign);
5210    /**
5211     * Frees any resources associated with this object given its this_arg pointer.
5212     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
5213     */
5214    void (*free)(void *this_arg);
5215 } LDKSign;
5216
5217 /**
5218  * The contents of CResult_SignDecodeErrorZ
5219  */
5220 typedef union LDKCResult_SignDecodeErrorZPtr {
5221    /**
5222     * A pointer to the contents in the success state.
5223     * Reading from this pointer when `result_ok` is not set is undefined.
5224     */
5225    struct LDKSign *result;
5226    /**
5227     * A pointer to the contents in the error state.
5228     * Reading from this pointer when `result_ok` is set is undefined.
5229     */
5230    struct LDKDecodeError *err;
5231 } LDKCResult_SignDecodeErrorZPtr;
5232
5233 /**
5234  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
5235  * containing a crate::lightning::chain::keysinterface::Sign on success and a crate::lightning::ln::msgs::DecodeError on failure.
5236  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5237  */
5238 typedef struct LDKCResult_SignDecodeErrorZ {
5239    /**
5240     * The contents of this CResult_SignDecodeErrorZ, accessible via either
5241     * `err` or `result` depending on the state of `result_ok`.
5242     */
5243    union LDKCResult_SignDecodeErrorZPtr contents;
5244    /**
5245     * Whether this CResult_SignDecodeErrorZ represents a success state.
5246     */
5247    bool result_ok;
5248 } LDKCResult_SignDecodeErrorZ;
5249
5250 /**
5251  * Integer in the range `0..32`
5252  */
5253 typedef struct LDKu5 {
5254    uint8_t _0;
5255 } LDKu5;
5256
5257 /**
5258  * A dynamically-allocated array of crate::c_types::u5s of arbitrary size.
5259  * This corresponds to std::vector in C++
5260  */
5261 typedef struct LDKCVec_u5Z {
5262    /**
5263     * The elements in the array.
5264     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5265     */
5266    struct LDKu5 *data;
5267    /**
5268     * The number of elements pointed to by `data`.
5269     */
5270    uintptr_t datalen;
5271 } LDKCVec_u5Z;
5272
5273 /**
5274  * Represents a secp256k1 signature serialized as two 32-byte numbers as well as a tag which
5275  * allows recovering the exact public key which created the signature given the message.
5276  */
5277 typedef struct LDKRecoverableSignature {
5278    /**
5279     * The bytes of the signature in "compact" form plus a "Recovery ID" which allows for
5280     * recovery.
5281     */
5282    uint8_t serialized_form[68];
5283 } LDKRecoverableSignature;
5284
5285 /**
5286  * The contents of CResult_RecoverableSignatureNoneZ
5287  */
5288 typedef union LDKCResult_RecoverableSignatureNoneZPtr {
5289    /**
5290     * A pointer to the contents in the success state.
5291     * Reading from this pointer when `result_ok` is not set is undefined.
5292     */
5293    struct LDKRecoverableSignature *result;
5294    /**
5295     * Note that this value is always NULL, as there are no contents in the Err variant
5296     */
5297    void *err;
5298 } LDKCResult_RecoverableSignatureNoneZPtr;
5299
5300 /**
5301  * A CResult_RecoverableSignatureNoneZ represents the result of a fallible operation,
5302  * containing a crate::c_types::RecoverableSignature on success and a () on failure.
5303  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5304  */
5305 typedef struct LDKCResult_RecoverableSignatureNoneZ {
5306    /**
5307     * The contents of this CResult_RecoverableSignatureNoneZ, accessible via either
5308     * `err` or `result` depending on the state of `result_ok`.
5309     */
5310    union LDKCResult_RecoverableSignatureNoneZPtr contents;
5311    /**
5312     * Whether this CResult_RecoverableSignatureNoneZ represents a success state.
5313     */
5314    bool result_ok;
5315 } LDKCResult_RecoverableSignatureNoneZ;
5316
5317 /**
5318  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
5319  * This corresponds to std::vector in C++
5320  */
5321 typedef struct LDKCVec_CVec_u8ZZ {
5322    /**
5323     * The elements in the array.
5324     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5325     */
5326    struct LDKCVec_u8Z *data;
5327    /**
5328     * The number of elements pointed to by `data`.
5329     */
5330    uintptr_t datalen;
5331 } LDKCVec_CVec_u8ZZ;
5332
5333 /**
5334  * The contents of CResult_CVec_CVec_u8ZZNoneZ
5335  */
5336 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
5337    /**
5338     * A pointer to the contents in the success state.
5339     * Reading from this pointer when `result_ok` is not set is undefined.
5340     */
5341    struct LDKCVec_CVec_u8ZZ *result;
5342    /**
5343     * Note that this value is always NULL, as there are no contents in the Err variant
5344     */
5345    void *err;
5346 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
5347
5348 /**
5349  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
5350  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
5351  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5352  */
5353 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
5354    /**
5355     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
5356     * `err` or `result` depending on the state of `result_ok`.
5357     */
5358    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
5359    /**
5360     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
5361     */
5362    bool result_ok;
5363 } LDKCResult_CVec_CVec_u8ZZNoneZ;
5364
5365
5366
5367 /**
5368  * A simple implementation of Sign that just keeps the private keys in memory.
5369  *
5370  * This implementation performs no policy checks and is insufficient by itself as
5371  * a secure external signer.
5372  */
5373 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
5374    /**
5375     * A pointer to the opaque Rust object.
5376     * Nearly everywhere, inner must be non-null, however in places where
5377     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5378     */
5379    LDKnativeInMemorySigner *inner;
5380    /**
5381     * Indicates that this is the only struct which contains the same pointer.
5382     * Rust functions which take ownership of an object provided via an argument require
5383     * this to be true and invalidate the object pointed to by inner.
5384     */
5385    bool is_owned;
5386 } LDKInMemorySigner;
5387
5388 /**
5389  * The contents of CResult_InMemorySignerDecodeErrorZ
5390  */
5391 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
5392    /**
5393     * A pointer to the contents in the success state.
5394     * Reading from this pointer when `result_ok` is not set is undefined.
5395     */
5396    struct LDKInMemorySigner *result;
5397    /**
5398     * A pointer to the contents in the error state.
5399     * Reading from this pointer when `result_ok` is set is undefined.
5400     */
5401    struct LDKDecodeError *err;
5402 } LDKCResult_InMemorySignerDecodeErrorZPtr;
5403
5404 /**
5405  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
5406  * containing a crate::lightning::chain::keysinterface::InMemorySigner on success and a crate::lightning::ln::msgs::DecodeError on failure.
5407  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5408  */
5409 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
5410    /**
5411     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
5412     * `err` or `result` depending on the state of `result_ok`.
5413     */
5414    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
5415    /**
5416     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
5417     */
5418    bool result_ok;
5419 } LDKCResult_InMemorySignerDecodeErrorZ;
5420
5421 /**
5422  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
5423  * This corresponds to std::vector in C++
5424  */
5425 typedef struct LDKCVec_TxOutZ {
5426    /**
5427     * The elements in the array.
5428     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5429     */
5430    struct LDKTxOut *data;
5431    /**
5432     * The number of elements pointed to by `data`.
5433     */
5434    uintptr_t datalen;
5435 } LDKCVec_TxOutZ;
5436
5437 /**
5438  * The contents of CResult_TransactionNoneZ
5439  */
5440 typedef union LDKCResult_TransactionNoneZPtr {
5441    /**
5442     * A pointer to the contents in the success state.
5443     * Reading from this pointer when `result_ok` is not set is undefined.
5444     */
5445    struct LDKTransaction *result;
5446    /**
5447     * Note that this value is always NULL, as there are no contents in the Err variant
5448     */
5449    void *err;
5450 } LDKCResult_TransactionNoneZPtr;
5451
5452 /**
5453  * A CResult_TransactionNoneZ represents the result of a fallible operation,
5454  * containing a crate::c_types::Transaction on success and a () on failure.
5455  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5456  */
5457 typedef struct LDKCResult_TransactionNoneZ {
5458    /**
5459     * The contents of this CResult_TransactionNoneZ, accessible via either
5460     * `err` or `result` depending on the state of `result_ok`.
5461     */
5462    union LDKCResult_TransactionNoneZPtr contents;
5463    /**
5464     * Whether this CResult_TransactionNoneZ represents a success state.
5465     */
5466    bool result_ok;
5467 } LDKCResult_TransactionNoneZ;
5468
5469
5470
5471 /**
5472  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
5473  * on-chain transactions to ensure no loss of funds occurs.
5474  *
5475  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
5476  * information and are actively monitoring the chain.
5477  *
5478  * Pending Events or updated HTLCs which have not yet been read out by
5479  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
5480  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
5481  * gotten are fully handled before re-serializing the new state.
5482  *
5483  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
5484  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
5485  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
5486  * returned block hash and the the current chain and then reconnecting blocks to get to the
5487  * best chain) upon deserializing the object!
5488  */
5489 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
5490    /**
5491     * A pointer to the opaque Rust object.
5492     * Nearly everywhere, inner must be non-null, however in places where
5493     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5494     */
5495    LDKnativeChannelMonitor *inner;
5496    /**
5497     * Indicates that this is the only struct which contains the same pointer.
5498     * Rust functions which take ownership of an object provided via an argument require
5499     * this to be true and invalidate the object pointed to by inner.
5500     */
5501    bool is_owned;
5502 } LDKChannelMonitor;
5503
5504 /**
5505  * A tuple of 2 elements. See the individual fields for the types contained.
5506  */
5507 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
5508    /**
5509     * The element at position 0
5510     */
5511    struct LDKThirtyTwoBytes a;
5512    /**
5513     * The element at position 1
5514     */
5515    struct LDKChannelMonitor b;
5516 } LDKC2Tuple_BlockHashChannelMonitorZ;
5517
5518 /**
5519  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZs of arbitrary size.
5520  * This corresponds to std::vector in C++
5521  */
5522 typedef struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ {
5523    /**
5524     * The elements in the array.
5525     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5526     */
5527    struct LDKC2Tuple_BlockHashChannelMonitorZ *data;
5528    /**
5529     * The number of elements pointed to by `data`.
5530     */
5531    uintptr_t datalen;
5532 } LDKCVec_C2Tuple_BlockHashChannelMonitorZZ;
5533
5534 /**
5535  * The contents of CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ
5536  */
5537 typedef union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr {
5538    /**
5539     * A pointer to the contents in the success state.
5540     * Reading from this pointer when `result_ok` is not set is undefined.
5541     */
5542    struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ *result;
5543    /**
5544     * A pointer to the contents in the error state.
5545     * Reading from this pointer when `result_ok` is set is undefined.
5546     */
5547    enum LDKIOError *err;
5548 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr;
5549
5550 /**
5551  * A CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents the result of a fallible operation,
5552  * containing a crate::c_types::derived::CVec_C2Tuple_BlockHashChannelMonitorZZ on success and a crate::c_types::IOError on failure.
5553  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5554  */
5555 typedef struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
5556    /**
5557     * The contents of this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ, accessible via either
5558     * `err` or `result` depending on the state of `result_ok`.
5559     */
5560    union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr contents;
5561    /**
5562     * Whether this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents a success state.
5563     */
5564    bool result_ok;
5565 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
5566
5567 /**
5568  * An enum which can either contain a u16 or not
5569  */
5570 typedef enum LDKCOption_u16Z_Tag {
5571    /**
5572     * When we're in this state, this COption_u16Z contains a u16
5573     */
5574    LDKCOption_u16Z_Some,
5575    /**
5576     * When we're in this state, this COption_u16Z contains nothing
5577     */
5578    LDKCOption_u16Z_None,
5579    /**
5580     * Must be last for serialization purposes
5581     */
5582    LDKCOption_u16Z_Sentinel,
5583 } LDKCOption_u16Z_Tag;
5584
5585 typedef struct LDKCOption_u16Z {
5586    LDKCOption_u16Z_Tag tag;
5587    union {
5588       struct {
5589          uint16_t some;
5590       };
5591    };
5592 } LDKCOption_u16Z;
5593
5594 /**
5595  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
5596  * too-high values)
5597  */
5598 typedef enum LDKAPIError_Tag {
5599    /**
5600     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
5601     * are documented, but generally indicates some precondition of a function was violated.
5602     */
5603    LDKAPIError_APIMisuseError,
5604    /**
5605     * Due to a high feerate, we were unable to complete the request.
5606     * For example, this may be returned if the feerate implies we cannot open a channel at the
5607     * requested value, but opening a larger channel would succeed.
5608     */
5609    LDKAPIError_FeeRateTooHigh,
5610    /**
5611     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
5612     * too-many-hops, etc).
5613     */
5614    LDKAPIError_RouteError,
5615    /**
5616     * We were unable to complete the request as the Channel required to do so is unable to
5617     * complete the request (or was not found). This can take many forms, including disconnected
5618     * peer, channel at capacity, channel shutting down, etc.
5619     */
5620    LDKAPIError_ChannelUnavailable,
5621    /**
5622     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
5623     * attempted action to fail.
5624     */
5625    LDKAPIError_MonitorUpdateFailed,
5626    /**
5627     * [`KeysInterface::get_shutdown_scriptpubkey`] returned a shutdown scriptpubkey incompatible
5628     * with the channel counterparty as negotiated in [`InitFeatures`].
5629     *
5630     * Using a SegWit v0 script should resolve this issue. If you cannot, you won't be able to open
5631     * a channel or cooperatively close one with this peer (and will have to force-close instead).
5632     *
5633     * [`KeysInterface::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::KeysInterface::get_shutdown_scriptpubkey
5634     * [`InitFeatures`]: crate::ln::features::InitFeatures
5635     */
5636    LDKAPIError_IncompatibleShutdownScript,
5637    /**
5638     * Must be last for serialization purposes
5639     */
5640    LDKAPIError_Sentinel,
5641 } LDKAPIError_Tag;
5642
5643 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
5644    /**
5645     * A human-readable error message
5646     */
5647    struct LDKStr err;
5648 } LDKAPIError_LDKAPIMisuseError_Body;
5649
5650 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
5651    /**
5652     * A human-readable error message
5653     */
5654    struct LDKStr err;
5655    /**
5656     * The feerate which was too high.
5657     */
5658    uint32_t feerate;
5659 } LDKAPIError_LDKFeeRateTooHigh_Body;
5660
5661 typedef struct LDKAPIError_LDKRouteError_Body {
5662    /**
5663     * A human-readable error message
5664     */
5665    struct LDKStr err;
5666 } LDKAPIError_LDKRouteError_Body;
5667
5668 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
5669    /**
5670     * A human-readable error message
5671     */
5672    struct LDKStr err;
5673 } LDKAPIError_LDKChannelUnavailable_Body;
5674
5675 typedef struct LDKAPIError_LDKIncompatibleShutdownScript_Body {
5676    /**
5677     * The incompatible shutdown script.
5678     */
5679    struct LDKShutdownScript script;
5680 } LDKAPIError_LDKIncompatibleShutdownScript_Body;
5681
5682 typedef struct MUST_USE_STRUCT LDKAPIError {
5683    LDKAPIError_Tag tag;
5684    union {
5685       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
5686       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
5687       LDKAPIError_LDKRouteError_Body route_error;
5688       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
5689       LDKAPIError_LDKIncompatibleShutdownScript_Body incompatible_shutdown_script;
5690    };
5691 } LDKAPIError;
5692
5693 /**
5694  * The contents of CResult_NoneAPIErrorZ
5695  */
5696 typedef union LDKCResult_NoneAPIErrorZPtr {
5697    /**
5698     * Note that this value is always NULL, as there are no contents in the OK variant
5699     */
5700    void *result;
5701    /**
5702     * A pointer to the contents in the error state.
5703     * Reading from this pointer when `result_ok` is set is undefined.
5704     */
5705    struct LDKAPIError *err;
5706 } LDKCResult_NoneAPIErrorZPtr;
5707
5708 /**
5709  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
5710  * containing a () on success and a crate::lightning::util::errors::APIError on failure.
5711  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5712  */
5713 typedef struct LDKCResult_NoneAPIErrorZ {
5714    /**
5715     * The contents of this CResult_NoneAPIErrorZ, accessible via either
5716     * `err` or `result` depending on the state of `result_ok`.
5717     */
5718    union LDKCResult_NoneAPIErrorZPtr contents;
5719    /**
5720     * Whether this CResult_NoneAPIErrorZ represents a success state.
5721     */
5722    bool result_ok;
5723 } LDKCResult_NoneAPIErrorZ;
5724
5725 /**
5726  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
5727  * This corresponds to std::vector in C++
5728  */
5729 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
5730    /**
5731     * The elements in the array.
5732     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5733     */
5734    struct LDKCResult_NoneAPIErrorZ *data;
5735    /**
5736     * The number of elements pointed to by `data`.
5737     */
5738    uintptr_t datalen;
5739 } LDKCVec_CResult_NoneAPIErrorZZ;
5740
5741 /**
5742  * A dynamically-allocated array of crate::lightning::util::errors::APIErrors of arbitrary size.
5743  * This corresponds to std::vector in C++
5744  */
5745 typedef struct LDKCVec_APIErrorZ {
5746    /**
5747     * The elements in the array.
5748     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5749     */
5750    struct LDKAPIError *data;
5751    /**
5752     * The number of elements pointed to by `data`.
5753     */
5754    uintptr_t datalen;
5755 } LDKCVec_APIErrorZ;
5756
5757 /**
5758  * The contents of CResult__u832APIErrorZ
5759  */
5760 typedef union LDKCResult__u832APIErrorZPtr {
5761    /**
5762     * A pointer to the contents in the success state.
5763     * Reading from this pointer when `result_ok` is not set is undefined.
5764     */
5765    struct LDKThirtyTwoBytes *result;
5766    /**
5767     * A pointer to the contents in the error state.
5768     * Reading from this pointer when `result_ok` is set is undefined.
5769     */
5770    struct LDKAPIError *err;
5771 } LDKCResult__u832APIErrorZPtr;
5772
5773 /**
5774  * A CResult__u832APIErrorZ represents the result of a fallible operation,
5775  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
5776  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5777  */
5778 typedef struct LDKCResult__u832APIErrorZ {
5779    /**
5780     * The contents of this CResult__u832APIErrorZ, accessible via either
5781     * `err` or `result` depending on the state of `result_ok`.
5782     */
5783    union LDKCResult__u832APIErrorZPtr contents;
5784    /**
5785     * Whether this CResult__u832APIErrorZ represents a success state.
5786     */
5787    bool result_ok;
5788 } LDKCResult__u832APIErrorZ;
5789
5790 /**
5791  * If a payment fails to send, it can be in one of several states. This enum is returned as the
5792  * Err() type describing which state the payment is in, see the description of individual enum
5793  * states for more.
5794  */
5795 typedef enum LDKPaymentSendFailure_Tag {
5796    /**
5797     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
5798     * send the payment at all. No channel state has been changed or messages sent to peers, and
5799     * once you've changed the parameter at error, you can freely retry the payment in full.
5800     */
5801    LDKPaymentSendFailure_ParameterError,
5802    /**
5803     * A parameter in a single path which was passed to send_payment was invalid, preventing us
5804     * from attempting to send the payment at all. No channel state has been changed or messages
5805     * sent to peers, and once you've changed the parameter at error, you can freely retry the
5806     * payment in full.
5807     *
5808     * The results here are ordered the same as the paths in the route object which was passed to
5809     * send_payment.
5810     */
5811    LDKPaymentSendFailure_PathParameterError,
5812    /**
5813     * All paths which were attempted failed to send, with no channel state change taking place.
5814     * You can freely retry the payment in full (though you probably want to do so over different
5815     * paths than the ones selected).
5816     */
5817    LDKPaymentSendFailure_AllFailedRetrySafe,
5818    /**
5819     * Some paths which were attempted failed to send, though possibly not all. At least some
5820     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
5821     * in over-/re-payment.
5822     *
5823     * The results here are ordered the same as the paths in the route object which was passed to
5824     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
5825     * retried (though there is currently no API with which to do so).
5826     *
5827     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
5828     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
5829     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
5830     * with the latest update_id.
5831     */
5832    LDKPaymentSendFailure_PartialFailure,
5833    /**
5834     * Must be last for serialization purposes
5835     */
5836    LDKPaymentSendFailure_Sentinel,
5837 } LDKPaymentSendFailure_Tag;
5838
5839 typedef struct LDKPaymentSendFailure_LDKPartialFailure_Body {
5840    /**
5841     * The errors themselves, in the same order as the route hops.
5842     */
5843    struct LDKCVec_CResult_NoneAPIErrorZZ results;
5844    /**
5845     * If some paths failed without irrevocably committing to the new HTLC(s), this will
5846     * contain a [`RouteParameters`] object which can be used to calculate a new route that
5847     * will pay all remaining unpaid balance.
5848     *
5849     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
5850     */
5851    struct LDKRouteParameters failed_paths_retry;
5852    /**
5853     * The payment id for the payment, which is now at least partially pending.
5854     */
5855    struct LDKThirtyTwoBytes payment_id;
5856 } LDKPaymentSendFailure_LDKPartialFailure_Body;
5857
5858 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
5859    LDKPaymentSendFailure_Tag tag;
5860    union {
5861       struct {
5862          struct LDKAPIError parameter_error;
5863       };
5864       struct {
5865          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
5866       };
5867       struct {
5868          struct LDKCVec_APIErrorZ all_failed_retry_safe;
5869       };
5870       LDKPaymentSendFailure_LDKPartialFailure_Body partial_failure;
5871    };
5872 } LDKPaymentSendFailure;
5873
5874 /**
5875  * The contents of CResult_PaymentIdPaymentSendFailureZ
5876  */
5877 typedef union LDKCResult_PaymentIdPaymentSendFailureZPtr {
5878    /**
5879     * A pointer to the contents in the success state.
5880     * Reading from this pointer when `result_ok` is not set is undefined.
5881     */
5882    struct LDKThirtyTwoBytes *result;
5883    /**
5884     * A pointer to the contents in the error state.
5885     * Reading from this pointer when `result_ok` is set is undefined.
5886     */
5887    struct LDKPaymentSendFailure *err;
5888 } LDKCResult_PaymentIdPaymentSendFailureZPtr;
5889
5890 /**
5891  * A CResult_PaymentIdPaymentSendFailureZ represents the result of a fallible operation,
5892  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
5893  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5894  */
5895 typedef struct LDKCResult_PaymentIdPaymentSendFailureZ {
5896    /**
5897     * The contents of this CResult_PaymentIdPaymentSendFailureZ, accessible via either
5898     * `err` or `result` depending on the state of `result_ok`.
5899     */
5900    union LDKCResult_PaymentIdPaymentSendFailureZPtr contents;
5901    /**
5902     * Whether this CResult_PaymentIdPaymentSendFailureZ represents a success state.
5903     */
5904    bool result_ok;
5905 } LDKCResult_PaymentIdPaymentSendFailureZ;
5906
5907 /**
5908  * The contents of CResult_NonePaymentSendFailureZ
5909  */
5910 typedef union LDKCResult_NonePaymentSendFailureZPtr {
5911    /**
5912     * Note that this value is always NULL, as there are no contents in the OK variant
5913     */
5914    void *result;
5915    /**
5916     * A pointer to the contents in the error state.
5917     * Reading from this pointer when `result_ok` is set is undefined.
5918     */
5919    struct LDKPaymentSendFailure *err;
5920 } LDKCResult_NonePaymentSendFailureZPtr;
5921
5922 /**
5923  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
5924  * containing a () on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
5925  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5926  */
5927 typedef struct LDKCResult_NonePaymentSendFailureZ {
5928    /**
5929     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
5930     * `err` or `result` depending on the state of `result_ok`.
5931     */
5932    union LDKCResult_NonePaymentSendFailureZPtr contents;
5933    /**
5934     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
5935     */
5936    bool result_ok;
5937 } LDKCResult_NonePaymentSendFailureZ;
5938
5939 /**
5940  * A tuple of 2 elements. See the individual fields for the types contained.
5941  */
5942 typedef struct LDKC2Tuple_PaymentHashPaymentIdZ {
5943    /**
5944     * The element at position 0
5945     */
5946    struct LDKThirtyTwoBytes a;
5947    /**
5948     * The element at position 1
5949     */
5950    struct LDKThirtyTwoBytes b;
5951 } LDKC2Tuple_PaymentHashPaymentIdZ;
5952
5953 /**
5954  * The contents of CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ
5955  */
5956 typedef union LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr {
5957    /**
5958     * A pointer to the contents in the success state.
5959     * Reading from this pointer when `result_ok` is not set is undefined.
5960     */
5961    struct LDKC2Tuple_PaymentHashPaymentIdZ *result;
5962    /**
5963     * A pointer to the contents in the error state.
5964     * Reading from this pointer when `result_ok` is set is undefined.
5965     */
5966    struct LDKPaymentSendFailure *err;
5967 } LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr;
5968
5969 /**
5970  * A CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ represents the result of a fallible operation,
5971  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentIdZ on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
5972  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5973  */
5974 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
5975    /**
5976     * The contents of this CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ, accessible via either
5977     * `err` or `result` depending on the state of `result_ok`.
5978     */
5979    union LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr contents;
5980    /**
5981     * Whether this CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ represents a success state.
5982     */
5983    bool result_ok;
5984 } LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
5985
5986 /**
5987  * A 4-byte byte array.
5988  */
5989 typedef struct LDKFourBytes {
5990    /**
5991     * The four bytes
5992     */
5993    uint8_t data[4];
5994 } LDKFourBytes;
5995
5996 /**
5997  * A 16-byte byte array.
5998  */
5999 typedef struct LDKSixteenBytes {
6000    /**
6001     * The sixteen bytes
6002     */
6003    uint8_t data[16];
6004 } LDKSixteenBytes;
6005
6006 /**
6007  * A 12-byte byte array.
6008  */
6009 typedef struct LDKTwelveBytes {
6010    /**
6011     * The twelve bytes
6012     */
6013    uint8_t data[12];
6014 } LDKTwelveBytes;
6015
6016 /**
6017  * An address which can be used to connect to a remote peer
6018  */
6019 typedef enum LDKNetAddress_Tag {
6020    /**
6021     * An IPv4 address/port on which the peer is listening.
6022     */
6023    LDKNetAddress_IPv4,
6024    /**
6025     * An IPv6 address/port on which the peer is listening.
6026     */
6027    LDKNetAddress_IPv6,
6028    /**
6029     * An old-style Tor onion address/port on which the peer is listening.
6030     *
6031     * This field is deprecated and the Tor network generally no longer supports V2 Onion
6032     * addresses. Thus, the details are not parsed here.
6033     */
6034    LDKNetAddress_OnionV2,
6035    /**
6036     * A new-style Tor onion address/port on which the peer is listening.
6037     * To create the human-readable \"hostname\", concatenate ed25519_pubkey, checksum, and version,
6038     * wrap as base32 and append \".onion\".
6039     */
6040    LDKNetAddress_OnionV3,
6041    /**
6042     * Must be last for serialization purposes
6043     */
6044    LDKNetAddress_Sentinel,
6045 } LDKNetAddress_Tag;
6046
6047 typedef struct LDKNetAddress_LDKIPv4_Body {
6048    /**
6049     * The 4-byte IPv4 address
6050     */
6051    struct LDKFourBytes addr;
6052    /**
6053     * The port on which the node is listening
6054     */
6055    uint16_t port;
6056 } LDKNetAddress_LDKIPv4_Body;
6057
6058 typedef struct LDKNetAddress_LDKIPv6_Body {
6059    /**
6060     * The 16-byte IPv6 address
6061     */
6062    struct LDKSixteenBytes addr;
6063    /**
6064     * The port on which the node is listening
6065     */
6066    uint16_t port;
6067 } LDKNetAddress_LDKIPv6_Body;
6068
6069 typedef struct LDKNetAddress_LDKOnionV3_Body {
6070    /**
6071     * The ed25519 long-term public key of the peer
6072     */
6073    struct LDKThirtyTwoBytes ed25519_pubkey;
6074    /**
6075     * The checksum of the pubkey and version, as included in the onion address
6076     */
6077    uint16_t checksum;
6078    /**
6079     * The version byte, as defined by the Tor Onion v3 spec.
6080     */
6081    uint8_t version;
6082    /**
6083     * The port on which the node is listening
6084     */
6085    uint16_t port;
6086 } LDKNetAddress_LDKOnionV3_Body;
6087
6088 typedef struct MUST_USE_STRUCT LDKNetAddress {
6089    LDKNetAddress_Tag tag;
6090    union {
6091       LDKNetAddress_LDKIPv4_Body i_pv4;
6092       LDKNetAddress_LDKIPv6_Body i_pv6;
6093       struct {
6094          struct LDKTwelveBytes onion_v2;
6095       };
6096       LDKNetAddress_LDKOnionV3_Body onion_v3;
6097    };
6098 } LDKNetAddress;
6099
6100 /**
6101  * A dynamically-allocated array of crate::lightning::ln::msgs::NetAddresss of arbitrary size.
6102  * This corresponds to std::vector in C++
6103  */
6104 typedef struct LDKCVec_NetAddressZ {
6105    /**
6106     * The elements in the array.
6107     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6108     */
6109    struct LDKNetAddress *data;
6110    /**
6111     * The number of elements pointed to by `data`.
6112     */
6113    uintptr_t datalen;
6114 } LDKCVec_NetAddressZ;
6115
6116 /**
6117  * A tuple of 2 elements. See the individual fields for the types contained.
6118  */
6119 typedef struct LDKC2Tuple_PaymentHashPaymentSecretZ {
6120    /**
6121     * The element at position 0
6122     */
6123    struct LDKThirtyTwoBytes a;
6124    /**
6125     * The element at position 1
6126     */
6127    struct LDKThirtyTwoBytes b;
6128 } LDKC2Tuple_PaymentHashPaymentSecretZ;
6129
6130 /**
6131  * The contents of CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ
6132  */
6133 typedef union LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr {
6134    /**
6135     * A pointer to the contents in the success state.
6136     * Reading from this pointer when `result_ok` is not set is undefined.
6137     */
6138    struct LDKC2Tuple_PaymentHashPaymentSecretZ *result;
6139    /**
6140     * Note that this value is always NULL, as there are no contents in the Err variant
6141     */
6142    void *err;
6143 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr;
6144
6145 /**
6146  * A CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ represents the result of a fallible operation,
6147  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentSecretZ on success and a () on failure.
6148  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6149  */
6150 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
6151    /**
6152     * The contents of this CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ, accessible via either
6153     * `err` or `result` depending on the state of `result_ok`.
6154     */
6155    union LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr contents;
6156    /**
6157     * Whether this CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ represents a success state.
6158     */
6159    bool result_ok;
6160 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
6161
6162 /**
6163  * The contents of CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ
6164  */
6165 typedef union LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr {
6166    /**
6167     * A pointer to the contents in the success state.
6168     * Reading from this pointer when `result_ok` is not set is undefined.
6169     */
6170    struct LDKC2Tuple_PaymentHashPaymentSecretZ *result;
6171    /**
6172     * A pointer to the contents in the error state.
6173     * Reading from this pointer when `result_ok` is set is undefined.
6174     */
6175    struct LDKAPIError *err;
6176 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr;
6177
6178 /**
6179  * A CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ represents the result of a fallible operation,
6180  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentSecretZ on success and a crate::lightning::util::errors::APIError on failure.
6181  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6182  */
6183 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
6184    /**
6185     * The contents of this CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ, accessible via either
6186     * `err` or `result` depending on the state of `result_ok`.
6187     */
6188    union LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr contents;
6189    /**
6190     * Whether this CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ represents a success state.
6191     */
6192    bool result_ok;
6193 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
6194
6195 /**
6196  * The contents of CResult_PaymentSecretNoneZ
6197  */
6198 typedef union LDKCResult_PaymentSecretNoneZPtr {
6199    /**
6200     * A pointer to the contents in the success state.
6201     * Reading from this pointer when `result_ok` is not set is undefined.
6202     */
6203    struct LDKThirtyTwoBytes *result;
6204    /**
6205     * Note that this value is always NULL, as there are no contents in the Err variant
6206     */
6207    void *err;
6208 } LDKCResult_PaymentSecretNoneZPtr;
6209
6210 /**
6211  * A CResult_PaymentSecretNoneZ represents the result of a fallible operation,
6212  * containing a crate::c_types::ThirtyTwoBytes on success and a () on failure.
6213  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6214  */
6215 typedef struct LDKCResult_PaymentSecretNoneZ {
6216    /**
6217     * The contents of this CResult_PaymentSecretNoneZ, accessible via either
6218     * `err` or `result` depending on the state of `result_ok`.
6219     */
6220    union LDKCResult_PaymentSecretNoneZPtr contents;
6221    /**
6222     * Whether this CResult_PaymentSecretNoneZ represents a success state.
6223     */
6224    bool result_ok;
6225 } LDKCResult_PaymentSecretNoneZ;
6226
6227 /**
6228  * The contents of CResult_PaymentSecretAPIErrorZ
6229  */
6230 typedef union LDKCResult_PaymentSecretAPIErrorZPtr {
6231    /**
6232     * A pointer to the contents in the success state.
6233     * Reading from this pointer when `result_ok` is not set is undefined.
6234     */
6235    struct LDKThirtyTwoBytes *result;
6236    /**
6237     * A pointer to the contents in the error state.
6238     * Reading from this pointer when `result_ok` is set is undefined.
6239     */
6240    struct LDKAPIError *err;
6241 } LDKCResult_PaymentSecretAPIErrorZPtr;
6242
6243 /**
6244  * A CResult_PaymentSecretAPIErrorZ represents the result of a fallible operation,
6245  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
6246  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6247  */
6248 typedef struct LDKCResult_PaymentSecretAPIErrorZ {
6249    /**
6250     * The contents of this CResult_PaymentSecretAPIErrorZ, accessible via either
6251     * `err` or `result` depending on the state of `result_ok`.
6252     */
6253    union LDKCResult_PaymentSecretAPIErrorZPtr contents;
6254    /**
6255     * Whether this CResult_PaymentSecretAPIErrorZ represents a success state.
6256     */
6257    bool result_ok;
6258 } LDKCResult_PaymentSecretAPIErrorZ;
6259
6260 /**
6261  * The contents of CResult_PaymentPreimageAPIErrorZ
6262  */
6263 typedef union LDKCResult_PaymentPreimageAPIErrorZPtr {
6264    /**
6265     * A pointer to the contents in the success state.
6266     * Reading from this pointer when `result_ok` is not set is undefined.
6267     */
6268    struct LDKThirtyTwoBytes *result;
6269    /**
6270     * A pointer to the contents in the error state.
6271     * Reading from this pointer when `result_ok` is set is undefined.
6272     */
6273    struct LDKAPIError *err;
6274 } LDKCResult_PaymentPreimageAPIErrorZPtr;
6275
6276 /**
6277  * A CResult_PaymentPreimageAPIErrorZ represents the result of a fallible operation,
6278  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
6279  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6280  */
6281 typedef struct LDKCResult_PaymentPreimageAPIErrorZ {
6282    /**
6283     * The contents of this CResult_PaymentPreimageAPIErrorZ, accessible via either
6284     * `err` or `result` depending on the state of `result_ok`.
6285     */
6286    union LDKCResult_PaymentPreimageAPIErrorZPtr contents;
6287    /**
6288     * Whether this CResult_PaymentPreimageAPIErrorZ represents a success state.
6289     */
6290    bool result_ok;
6291 } LDKCResult_PaymentPreimageAPIErrorZ;
6292
6293
6294
6295 /**
6296  * Information needed for constructing an invoice route hint for this channel.
6297  */
6298 typedef struct MUST_USE_STRUCT LDKCounterpartyForwardingInfo {
6299    /**
6300     * A pointer to the opaque Rust object.
6301     * Nearly everywhere, inner must be non-null, however in places where
6302     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6303     */
6304    LDKnativeCounterpartyForwardingInfo *inner;
6305    /**
6306     * Indicates that this is the only struct which contains the same pointer.
6307     * Rust functions which take ownership of an object provided via an argument require
6308     * this to be true and invalidate the object pointed to by inner.
6309     */
6310    bool is_owned;
6311 } LDKCounterpartyForwardingInfo;
6312
6313 /**
6314  * The contents of CResult_CounterpartyForwardingInfoDecodeErrorZ
6315  */
6316 typedef union LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr {
6317    /**
6318     * A pointer to the contents in the success state.
6319     * Reading from this pointer when `result_ok` is not set is undefined.
6320     */
6321    struct LDKCounterpartyForwardingInfo *result;
6322    /**
6323     * A pointer to the contents in the error state.
6324     * Reading from this pointer when `result_ok` is set is undefined.
6325     */
6326    struct LDKDecodeError *err;
6327 } LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr;
6328
6329 /**
6330  * A CResult_CounterpartyForwardingInfoDecodeErrorZ represents the result of a fallible operation,
6331  * containing a crate::lightning::ln::channelmanager::CounterpartyForwardingInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6332  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6333  */
6334 typedef struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ {
6335    /**
6336     * The contents of this CResult_CounterpartyForwardingInfoDecodeErrorZ, accessible via either
6337     * `err` or `result` depending on the state of `result_ok`.
6338     */
6339    union LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr contents;
6340    /**
6341     * Whether this CResult_CounterpartyForwardingInfoDecodeErrorZ represents a success state.
6342     */
6343    bool result_ok;
6344 } LDKCResult_CounterpartyForwardingInfoDecodeErrorZ;
6345
6346
6347
6348 /**
6349  * Channel parameters which apply to our counterparty. These are split out from [`ChannelDetails`]
6350  * to better separate parameters.
6351  */
6352 typedef struct MUST_USE_STRUCT LDKChannelCounterparty {
6353    /**
6354     * A pointer to the opaque Rust object.
6355     * Nearly everywhere, inner must be non-null, however in places where
6356     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6357     */
6358    LDKnativeChannelCounterparty *inner;
6359    /**
6360     * Indicates that this is the only struct which contains the same pointer.
6361     * Rust functions which take ownership of an object provided via an argument require
6362     * this to be true and invalidate the object pointed to by inner.
6363     */
6364    bool is_owned;
6365 } LDKChannelCounterparty;
6366
6367 /**
6368  * The contents of CResult_ChannelCounterpartyDecodeErrorZ
6369  */
6370 typedef union LDKCResult_ChannelCounterpartyDecodeErrorZPtr {
6371    /**
6372     * A pointer to the contents in the success state.
6373     * Reading from this pointer when `result_ok` is not set is undefined.
6374     */
6375    struct LDKChannelCounterparty *result;
6376    /**
6377     * A pointer to the contents in the error state.
6378     * Reading from this pointer when `result_ok` is set is undefined.
6379     */
6380    struct LDKDecodeError *err;
6381 } LDKCResult_ChannelCounterpartyDecodeErrorZPtr;
6382
6383 /**
6384  * A CResult_ChannelCounterpartyDecodeErrorZ represents the result of a fallible operation,
6385  * containing a crate::lightning::ln::channelmanager::ChannelCounterparty on success and a crate::lightning::ln::msgs::DecodeError on failure.
6386  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6387  */
6388 typedef struct LDKCResult_ChannelCounterpartyDecodeErrorZ {
6389    /**
6390     * The contents of this CResult_ChannelCounterpartyDecodeErrorZ, accessible via either
6391     * `err` or `result` depending on the state of `result_ok`.
6392     */
6393    union LDKCResult_ChannelCounterpartyDecodeErrorZPtr contents;
6394    /**
6395     * Whether this CResult_ChannelCounterpartyDecodeErrorZ represents a success state.
6396     */
6397    bool result_ok;
6398 } LDKCResult_ChannelCounterpartyDecodeErrorZ;
6399
6400 /**
6401  * The contents of CResult_ChannelDetailsDecodeErrorZ
6402  */
6403 typedef union LDKCResult_ChannelDetailsDecodeErrorZPtr {
6404    /**
6405     * A pointer to the contents in the success state.
6406     * Reading from this pointer when `result_ok` is not set is undefined.
6407     */
6408    struct LDKChannelDetails *result;
6409    /**
6410     * A pointer to the contents in the error state.
6411     * Reading from this pointer when `result_ok` is set is undefined.
6412     */
6413    struct LDKDecodeError *err;
6414 } LDKCResult_ChannelDetailsDecodeErrorZPtr;
6415
6416 /**
6417  * A CResult_ChannelDetailsDecodeErrorZ represents the result of a fallible operation,
6418  * containing a crate::lightning::ln::channelmanager::ChannelDetails on success and a crate::lightning::ln::msgs::DecodeError on failure.
6419  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6420  */
6421 typedef struct LDKCResult_ChannelDetailsDecodeErrorZ {
6422    /**
6423     * The contents of this CResult_ChannelDetailsDecodeErrorZ, accessible via either
6424     * `err` or `result` depending on the state of `result_ok`.
6425     */
6426    union LDKCResult_ChannelDetailsDecodeErrorZPtr contents;
6427    /**
6428     * Whether this CResult_ChannelDetailsDecodeErrorZ represents a success state.
6429     */
6430    bool result_ok;
6431 } LDKCResult_ChannelDetailsDecodeErrorZ;
6432
6433
6434
6435 /**
6436  * Route hints used in constructing invoices for [phantom node payents].
6437  *
6438  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
6439  */
6440 typedef struct MUST_USE_STRUCT LDKPhantomRouteHints {
6441    /**
6442     * A pointer to the opaque Rust object.
6443     * Nearly everywhere, inner must be non-null, however in places where
6444     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6445     */
6446    LDKnativePhantomRouteHints *inner;
6447    /**
6448     * Indicates that this is the only struct which contains the same pointer.
6449     * Rust functions which take ownership of an object provided via an argument require
6450     * this to be true and invalidate the object pointed to by inner.
6451     */
6452    bool is_owned;
6453 } LDKPhantomRouteHints;
6454
6455 /**
6456  * The contents of CResult_PhantomRouteHintsDecodeErrorZ
6457  */
6458 typedef union LDKCResult_PhantomRouteHintsDecodeErrorZPtr {
6459    /**
6460     * A pointer to the contents in the success state.
6461     * Reading from this pointer when `result_ok` is not set is undefined.
6462     */
6463    struct LDKPhantomRouteHints *result;
6464    /**
6465     * A pointer to the contents in the error state.
6466     * Reading from this pointer when `result_ok` is set is undefined.
6467     */
6468    struct LDKDecodeError *err;
6469 } LDKCResult_PhantomRouteHintsDecodeErrorZPtr;
6470
6471 /**
6472  * A CResult_PhantomRouteHintsDecodeErrorZ represents the result of a fallible operation,
6473  * containing a crate::lightning::ln::channelmanager::PhantomRouteHints on success and a crate::lightning::ln::msgs::DecodeError on failure.
6474  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6475  */
6476 typedef struct LDKCResult_PhantomRouteHintsDecodeErrorZ {
6477    /**
6478     * The contents of this CResult_PhantomRouteHintsDecodeErrorZ, accessible via either
6479     * `err` or `result` depending on the state of `result_ok`.
6480     */
6481    union LDKCResult_PhantomRouteHintsDecodeErrorZPtr contents;
6482    /**
6483     * Whether this CResult_PhantomRouteHintsDecodeErrorZ represents a success state.
6484     */
6485    bool result_ok;
6486 } LDKCResult_PhantomRouteHintsDecodeErrorZ;
6487
6488 /**
6489  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::ChannelMonitors of arbitrary size.
6490  * This corresponds to std::vector in C++
6491  */
6492 typedef struct LDKCVec_ChannelMonitorZ {
6493    /**
6494     * The elements in the array.
6495     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6496     */
6497    struct LDKChannelMonitor *data;
6498    /**
6499     * The number of elements pointed to by `data`.
6500     */
6501    uintptr_t datalen;
6502 } LDKCVec_ChannelMonitorZ;
6503
6504
6505
6506 /**
6507  * An update generated by the underlying Channel itself which contains some new information the
6508  * ChannelMonitor should be made aware of.
6509  */
6510 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
6511    /**
6512     * A pointer to the opaque Rust object.
6513     * Nearly everywhere, inner must be non-null, however in places where
6514     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6515     */
6516    LDKnativeChannelMonitorUpdate *inner;
6517    /**
6518     * Indicates that this is the only struct which contains the same pointer.
6519     * Rust functions which take ownership of an object provided via an argument require
6520     * this to be true and invalidate the object pointed to by inner.
6521     */
6522    bool is_owned;
6523 } LDKChannelMonitorUpdate;
6524
6525 /**
6526  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
6527  * blocks are connected and disconnected.
6528  *
6529  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
6530  * responsible for maintaining a set of monitors such that they can be updated accordingly as
6531  * channel state changes and HTLCs are resolved. See method documentation for specific
6532  * requirements.
6533  *
6534  * Implementations **must** ensure that updates are successfully applied and persisted upon method
6535  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
6536  * without taking any further action such as persisting the current state.
6537  *
6538  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
6539  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
6540  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
6541  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
6542  * multiple instances.
6543  *
6544  * [`PermanentFailure`]: ChannelMonitorUpdateErr::PermanentFailure
6545  */
6546 typedef struct LDKWatch {
6547    /**
6548     * An opaque pointer which is passed to your function implementations as an argument.
6549     * This has no meaning in the LDK, and can be NULL or any other value.
6550     */
6551    void *this_arg;
6552    /**
6553     * Watches a channel identified by `funding_txo` using `monitor`.
6554     *
6555     * Implementations are responsible for watching the chain for the funding transaction along
6556     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
6557     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
6558     *
6559     * Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
6560     * the given `funding_txo` has previously been registered via `watch_channel`.
6561     *
6562     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
6563     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
6564     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
6565     */
6566    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
6567    /**
6568     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
6569     *
6570     * Implementations must call [`update_monitor`] with the given update. See
6571     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
6572     *
6573     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
6574     */
6575    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
6576    /**
6577     * Returns any monitor events since the last call. Subsequent calls must only return new
6578     * events.
6579     *
6580     * Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
6581     * further events may be returned here until the [`ChannelMonitor`] has been fully persisted
6582     * to disk.
6583     *
6584     * For details on asynchronous [`ChannelMonitor`] updating and returning
6585     * [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
6586     */
6587    struct LDKCVec_MonitorEventZ (*release_pending_monitor_events)(const void *this_arg);
6588    /**
6589     * Frees any resources associated with this object given its this_arg pointer.
6590     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6591     */
6592    void (*free)(void *this_arg);
6593 } LDKWatch;
6594
6595 /**
6596  * An interface to send a transaction to the Bitcoin network.
6597  */
6598 typedef struct LDKBroadcasterInterface {
6599    /**
6600     * An opaque pointer which is passed to your function implementations as an argument.
6601     * This has no meaning in the LDK, and can be NULL or any other value.
6602     */
6603    void *this_arg;
6604    /**
6605     * Sends a transaction out to (hopefully) be mined.
6606     */
6607    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
6608    /**
6609     * Frees any resources associated with this object given its this_arg pointer.
6610     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6611     */
6612    void (*free)(void *this_arg);
6613 } LDKBroadcasterInterface;
6614
6615 /**
6616  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
6617  * own the memory pointed to by data.
6618  */
6619 typedef struct LDKu8slice {
6620    /**
6621     * A pointer to the byte buffer
6622     */
6623    const uint8_t *data;
6624    /**
6625     * The number of bytes pointed to by `data`.
6626     */
6627    uintptr_t datalen;
6628 } LDKu8slice;
6629
6630 /**
6631  * A trait to describe an object which can get user secrets and key material.
6632  */
6633 typedef struct LDKKeysInterface {
6634    /**
6635     * An opaque pointer which is passed to your function implementations as an argument.
6636     * This has no meaning in the LDK, and can be NULL or any other value.
6637     */
6638    void *this_arg;
6639    /**
6640     * Get node secret key (aka node_id or network_key) based on the provided [`Recipient`].
6641     *
6642     * This method must return the same value each time it is called with a given `Recipient`
6643     * parameter.
6644     */
6645    struct LDKCResult_SecretKeyNoneZ (*get_node_secret)(const void *this_arg, enum LDKRecipient recipient);
6646    /**
6647     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
6648     *
6649     * This method should return a different value each time it is called, to avoid linking
6650     * on-chain funds across channels as controlled to the same user.
6651     */
6652    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
6653    /**
6654     * Get a script pubkey which we will send funds to when closing a channel.
6655     *
6656     * This method should return a different value each time it is called, to avoid linking
6657     * on-chain funds across channels as controlled to the same user.
6658     */
6659    struct LDKShutdownScript (*get_shutdown_scriptpubkey)(const void *this_arg);
6660    /**
6661     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
6662     * restarted with some stale data!
6663     *
6664     * This method must return a different value each time it is called.
6665     */
6666    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
6667    /**
6668     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
6669     * onion packets and for temporary channel IDs. There is no requirement that these be
6670     * persisted anywhere, though they must be unique across restarts.
6671     *
6672     * This method must return a different value each time it is called.
6673     */
6674    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
6675    /**
6676     * Reads a `Signer` for this `KeysInterface` from the given input stream.
6677     * This is only called during deserialization of other objects which contain
6678     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
6679     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
6680     * contain no versioning scheme. You may wish to include your own version prefix and ensure
6681     * you've read all of the provided bytes to ensure no corruption occurred.
6682     */
6683    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
6684    /**
6685     * Sign an invoice.
6686     * By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
6687     * this trait to parse the invoice and make sure they're signing what they expect, rather than
6688     * blindly signing the hash.
6689     * The hrp is ascii bytes, while the invoice data is base32.
6690     *
6691     * The secret key used to sign the invoice is dependent on the [`Recipient`].
6692     */
6693    struct LDKCResult_RecoverableSignatureNoneZ (*sign_invoice)(const void *this_arg, struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
6694    /**
6695     * Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
6696     *
6697     * If the implementor of this trait supports [phantom node payments], then every node that is
6698     * intended to be included in the phantom invoice route hints must return the same value from
6699     * this method.
6700     *
6701     * This method must return the same value each time it is called.
6702     *
6703     * [phantom node payments]: PhantomKeysManager
6704     */
6705    struct LDKThirtyTwoBytes (*get_inbound_payment_key_material)(const void *this_arg);
6706    /**
6707     * Frees any resources associated with this object given its this_arg pointer.
6708     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6709     */
6710    void (*free)(void *this_arg);
6711 } LDKKeysInterface;
6712
6713 /**
6714  * A trait which should be implemented to provide feerate information on a number of time
6715  * horizons.
6716  *
6717  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
6718  * called from inside the library in response to chain events, P2P events, or timer events).
6719  */
6720 typedef struct LDKFeeEstimator {
6721    /**
6722     * An opaque pointer which is passed to your function implementations as an argument.
6723     * This has no meaning in the LDK, and can be NULL or any other value.
6724     */
6725    void *this_arg;
6726    /**
6727     * Gets estimated satoshis of fee required per 1000 Weight-Units.
6728     *
6729     * Must return a value no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later
6730     * round-downs don't put us below 1 satoshi-per-byte).
6731     *
6732     * This method can be implemented with the following unit conversions:
6733     *  * max(satoshis-per-byte * 250, 253)
6734     *  * max(satoshis-per-kbyte / 4, 253)
6735     */
6736    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
6737    /**
6738     * Frees any resources associated with this object given its this_arg pointer.
6739     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6740     */
6741    void (*free)(void *this_arg);
6742 } LDKFeeEstimator;
6743
6744
6745
6746 /**
6747  * A Record, unit of logging output with Metadata to enable filtering
6748  * Module_path, file, line to inform on log's source
6749  */
6750 typedef struct MUST_USE_STRUCT LDKRecord {
6751    /**
6752     * A pointer to the opaque Rust object.
6753     * Nearly everywhere, inner must be non-null, however in places where
6754     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6755     */
6756    LDKnativeRecord *inner;
6757    /**
6758     * Indicates that this is the only struct which contains the same pointer.
6759     * Rust functions which take ownership of an object provided via an argument require
6760     * this to be true and invalidate the object pointed to by inner.
6761     */
6762    bool is_owned;
6763 } LDKRecord;
6764
6765 /**
6766  * A trait encapsulating the operations required of a logger
6767  */
6768 typedef struct LDKLogger {
6769    /**
6770     * An opaque pointer which is passed to your function implementations as an argument.
6771     * This has no meaning in the LDK, and can be NULL or any other value.
6772     */
6773    void *this_arg;
6774    /**
6775     * Logs the `Record`
6776     */
6777    void (*log)(const void *this_arg, const struct LDKRecord *NONNULL_PTR record);
6778    /**
6779     * Frees any resources associated with this object given its this_arg pointer.
6780     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6781     */
6782    void (*free)(void *this_arg);
6783 } LDKLogger;
6784
6785
6786
6787 /**
6788  * Manager which keeps track of a number of channels and sends messages to the appropriate
6789  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
6790  *
6791  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
6792  * to individual Channels.
6793  *
6794  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
6795  * all peers during write/read (though does not modify this instance, only the instance being
6796  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
6797  * called funding_transaction_generated for outbound channels).
6798  *
6799  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
6800  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
6801  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
6802  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
6803  * the serialization process). If the deserialized version is out-of-date compared to the
6804  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
6805  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
6806  *
6807  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
6808  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
6809  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
6810  * block_connected() to step towards your best block) upon deserialization before using the
6811  * object!
6812  *
6813  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
6814  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
6815  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
6816  * offline for a full minute. In order to track this, you must call
6817  * timer_tick_occurred roughly once per minute, though it doesn't have to be perfect.
6818  *
6819  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
6820  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
6821  * essentially you should default to using a SimpleRefChannelManager, and use a
6822  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
6823  * you're using lightning-net-tokio.
6824  */
6825 typedef struct MUST_USE_STRUCT LDKChannelManager {
6826    /**
6827     * A pointer to the opaque Rust object.
6828     * Nearly everywhere, inner must be non-null, however in places where
6829     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6830     */
6831    LDKnativeChannelManager *inner;
6832    /**
6833     * Indicates that this is the only struct which contains the same pointer.
6834     * Rust functions which take ownership of an object provided via an argument require
6835     * this to be true and invalidate the object pointed to by inner.
6836     */
6837    bool is_owned;
6838 } LDKChannelManager;
6839
6840 /**
6841  * A tuple of 2 elements. See the individual fields for the types contained.
6842  */
6843 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
6844    /**
6845     * The element at position 0
6846     */
6847    struct LDKThirtyTwoBytes a;
6848    /**
6849     * The element at position 1
6850     */
6851    struct LDKChannelManager b;
6852 } LDKC2Tuple_BlockHashChannelManagerZ;
6853
6854 /**
6855  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
6856  */
6857 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
6858    /**
6859     * A pointer to the contents in the success state.
6860     * Reading from this pointer when `result_ok` is not set is undefined.
6861     */
6862    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
6863    /**
6864     * A pointer to the contents in the error state.
6865     * Reading from this pointer when `result_ok` is set is undefined.
6866     */
6867    struct LDKDecodeError *err;
6868 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
6869
6870 /**
6871  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
6872  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
6873  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6874  */
6875 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
6876    /**
6877     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
6878     * `err` or `result` depending on the state of `result_ok`.
6879     */
6880    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
6881    /**
6882     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
6883     */
6884    bool result_ok;
6885 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
6886
6887
6888
6889 /**
6890  * Options which apply on a per-channel basis and may change at runtime or based on negotiation
6891  * with our counterparty.
6892  */
6893 typedef struct MUST_USE_STRUCT LDKChannelConfig {
6894    /**
6895     * A pointer to the opaque Rust object.
6896     * Nearly everywhere, inner must be non-null, however in places where
6897     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6898     */
6899    LDKnativeChannelConfig *inner;
6900    /**
6901     * Indicates that this is the only struct which contains the same pointer.
6902     * Rust functions which take ownership of an object provided via an argument require
6903     * this to be true and invalidate the object pointed to by inner.
6904     */
6905    bool is_owned;
6906 } LDKChannelConfig;
6907
6908 /**
6909  * The contents of CResult_ChannelConfigDecodeErrorZ
6910  */
6911 typedef union LDKCResult_ChannelConfigDecodeErrorZPtr {
6912    /**
6913     * A pointer to the contents in the success state.
6914     * Reading from this pointer when `result_ok` is not set is undefined.
6915     */
6916    struct LDKChannelConfig *result;
6917    /**
6918     * A pointer to the contents in the error state.
6919     * Reading from this pointer when `result_ok` is set is undefined.
6920     */
6921    struct LDKDecodeError *err;
6922 } LDKCResult_ChannelConfigDecodeErrorZPtr;
6923
6924 /**
6925  * A CResult_ChannelConfigDecodeErrorZ represents the result of a fallible operation,
6926  * containing a crate::lightning::util::config::ChannelConfig on success and a crate::lightning::ln::msgs::DecodeError on failure.
6927  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6928  */
6929 typedef struct LDKCResult_ChannelConfigDecodeErrorZ {
6930    /**
6931     * The contents of this CResult_ChannelConfigDecodeErrorZ, accessible via either
6932     * `err` or `result` depending on the state of `result_ok`.
6933     */
6934    union LDKCResult_ChannelConfigDecodeErrorZPtr contents;
6935    /**
6936     * Whether this CResult_ChannelConfigDecodeErrorZ represents a success state.
6937     */
6938    bool result_ok;
6939 } LDKCResult_ChannelConfigDecodeErrorZ;
6940
6941 /**
6942  * The contents of CResult_OutPointDecodeErrorZ
6943  */
6944 typedef union LDKCResult_OutPointDecodeErrorZPtr {
6945    /**
6946     * A pointer to the contents in the success state.
6947     * Reading from this pointer when `result_ok` is not set is undefined.
6948     */
6949    struct LDKOutPoint *result;
6950    /**
6951     * A pointer to the contents in the error state.
6952     * Reading from this pointer when `result_ok` is set is undefined.
6953     */
6954    struct LDKDecodeError *err;
6955 } LDKCResult_OutPointDecodeErrorZPtr;
6956
6957 /**
6958  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
6959  * containing a crate::lightning::chain::transaction::OutPoint on success and a crate::lightning::ln::msgs::DecodeError on failure.
6960  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6961  */
6962 typedef struct LDKCResult_OutPointDecodeErrorZ {
6963    /**
6964     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
6965     * `err` or `result` depending on the state of `result_ok`.
6966     */
6967    union LDKCResult_OutPointDecodeErrorZPtr contents;
6968    /**
6969     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
6970     */
6971    bool result_ok;
6972 } LDKCResult_OutPointDecodeErrorZ;
6973
6974 /**
6975  * Defines a type identifier for sending messages over the wire.
6976  *
6977  * Messages implementing this trait specify a type and must be [`Writeable`].
6978  */
6979 typedef struct LDKType {
6980    /**
6981     * An opaque pointer which is passed to your function implementations as an argument.
6982     * This has no meaning in the LDK, and can be NULL or any other value.
6983     */
6984    void *this_arg;
6985    /**
6986     * Returns the type identifying the message payload.
6987     */
6988    uint16_t (*type_id)(const void *this_arg);
6989    /**
6990     * Return a human-readable "debug" string describing this object
6991     */
6992    struct LDKStr (*debug_str)(const void *this_arg);
6993    /**
6994     * Serialize the object into a byte array
6995     */
6996    struct LDKCVec_u8Z (*write)(const void *this_arg);
6997    /**
6998     * Frees any resources associated with this object given its this_arg pointer.
6999     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7000     */
7001    void (*free)(void *this_arg);
7002 } LDKType;
7003
7004 /**
7005  * An enum which can either contain a crate::lightning::ln::wire::Type or not
7006  */
7007 typedef enum LDKCOption_TypeZ_Tag {
7008    /**
7009     * When we're in this state, this COption_TypeZ contains a crate::lightning::ln::wire::Type
7010     */
7011    LDKCOption_TypeZ_Some,
7012    /**
7013     * When we're in this state, this COption_TypeZ contains nothing
7014     */
7015    LDKCOption_TypeZ_None,
7016    /**
7017     * Must be last for serialization purposes
7018     */
7019    LDKCOption_TypeZ_Sentinel,
7020 } LDKCOption_TypeZ_Tag;
7021
7022 typedef struct LDKCOption_TypeZ {
7023    LDKCOption_TypeZ_Tag tag;
7024    union {
7025       struct {
7026          struct LDKType some;
7027       };
7028    };
7029 } LDKCOption_TypeZ;
7030
7031 /**
7032  * The contents of CResult_COption_TypeZDecodeErrorZ
7033  */
7034 typedef union LDKCResult_COption_TypeZDecodeErrorZPtr {
7035    /**
7036     * A pointer to the contents in the success state.
7037     * Reading from this pointer when `result_ok` is not set is undefined.
7038     */
7039    struct LDKCOption_TypeZ *result;
7040    /**
7041     * A pointer to the contents in the error state.
7042     * Reading from this pointer when `result_ok` is set is undefined.
7043     */
7044    struct LDKDecodeError *err;
7045 } LDKCResult_COption_TypeZDecodeErrorZPtr;
7046
7047 /**
7048  * A CResult_COption_TypeZDecodeErrorZ represents the result of a fallible operation,
7049  * containing a crate::c_types::derived::COption_TypeZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
7050  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7051  */
7052 typedef struct LDKCResult_COption_TypeZDecodeErrorZ {
7053    /**
7054     * The contents of this CResult_COption_TypeZDecodeErrorZ, accessible via either
7055     * `err` or `result` depending on the state of `result_ok`.
7056     */
7057    union LDKCResult_COption_TypeZDecodeErrorZPtr contents;
7058    /**
7059     * Whether this CResult_COption_TypeZDecodeErrorZ represents a success state.
7060     */
7061    bool result_ok;
7062 } LDKCResult_COption_TypeZDecodeErrorZ;
7063
7064 /**
7065  * An error that may occur when making a payment.
7066  */
7067 typedef enum LDKPaymentError_Tag {
7068    /**
7069     * An error resulting from the provided [`Invoice`] or payment hash.
7070     */
7071    LDKPaymentError_Invoice,
7072    /**
7073     * An error occurring when finding a route.
7074     */
7075    LDKPaymentError_Routing,
7076    /**
7077     * An error occurring when sending a payment.
7078     */
7079    LDKPaymentError_Sending,
7080    /**
7081     * Must be last for serialization purposes
7082     */
7083    LDKPaymentError_Sentinel,
7084 } LDKPaymentError_Tag;
7085
7086 typedef struct MUST_USE_STRUCT LDKPaymentError {
7087    LDKPaymentError_Tag tag;
7088    union {
7089       struct {
7090          struct LDKStr invoice;
7091       };
7092       struct {
7093          struct LDKLightningError routing;
7094       };
7095       struct {
7096          struct LDKPaymentSendFailure sending;
7097       };
7098    };
7099 } LDKPaymentError;
7100
7101 /**
7102  * The contents of CResult_PaymentIdPaymentErrorZ
7103  */
7104 typedef union LDKCResult_PaymentIdPaymentErrorZPtr {
7105    /**
7106     * A pointer to the contents in the success state.
7107     * Reading from this pointer when `result_ok` is not set is undefined.
7108     */
7109    struct LDKThirtyTwoBytes *result;
7110    /**
7111     * A pointer to the contents in the error state.
7112     * Reading from this pointer when `result_ok` is set is undefined.
7113     */
7114    struct LDKPaymentError *err;
7115 } LDKCResult_PaymentIdPaymentErrorZPtr;
7116
7117 /**
7118  * A CResult_PaymentIdPaymentErrorZ represents the result of a fallible operation,
7119  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning_invoice::payment::PaymentError on failure.
7120  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7121  */
7122 typedef struct LDKCResult_PaymentIdPaymentErrorZ {
7123    /**
7124     * The contents of this CResult_PaymentIdPaymentErrorZ, accessible via either
7125     * `err` or `result` depending on the state of `result_ok`.
7126     */
7127    union LDKCResult_PaymentIdPaymentErrorZPtr contents;
7128    /**
7129     * Whether this CResult_PaymentIdPaymentErrorZ represents a success state.
7130     */
7131    bool result_ok;
7132 } LDKCResult_PaymentIdPaymentErrorZ;
7133
7134 /**
7135  * Represents an error returned from the bech32 library during validation of some bech32 data
7136  */
7137 typedef enum LDKBech32Error_Tag {
7138    /**
7139     * String does not contain the separator character
7140     */
7141    LDKBech32Error_MissingSeparator,
7142    /**
7143     * The checksum does not match the rest of the data
7144     */
7145    LDKBech32Error_InvalidChecksum,
7146    /**
7147     * The data or human-readable part is too long or too short
7148     */
7149    LDKBech32Error_InvalidLength,
7150    /**
7151     * Some part of the string contains an invalid character
7152     */
7153    LDKBech32Error_InvalidChar,
7154    /**
7155     * Some part of the data has an invalid value
7156     */
7157    LDKBech32Error_InvalidData,
7158    /**
7159     * The bit conversion failed due to a padding issue
7160     */
7161    LDKBech32Error_InvalidPadding,
7162    /**
7163     * The whole string must be of one case
7164     */
7165    LDKBech32Error_MixedCase,
7166    /**
7167     * Must be last for serialization purposes
7168     */
7169    LDKBech32Error_Sentinel,
7170 } LDKBech32Error_Tag;
7171
7172 typedef struct LDKBech32Error {
7173    LDKBech32Error_Tag tag;
7174    union {
7175       struct {
7176          uint32_t invalid_char;
7177       };
7178       struct {
7179          uint8_t invalid_data;
7180       };
7181    };
7182 } LDKBech32Error;
7183
7184 /**
7185  * Sub-errors which don't have specific information in them use this type.
7186  */
7187 typedef struct LDKError {
7188    /**
7189     * Zero-Sized_types aren't consistent across Rust/C/C++, so we add some size here
7190     */
7191    uint8_t _dummy;
7192 } LDKError;
7193
7194 /**
7195  * Errors that indicate what is wrong with the invoice. They have some granularity for debug
7196  * reasons, but should generally result in an \"invalid BOLT11 invoice\" message for the user.
7197  */
7198 typedef enum LDKParseError_Tag {
7199    LDKParseError_Bech32Error,
7200    LDKParseError_ParseAmountError,
7201    LDKParseError_MalformedSignature,
7202    LDKParseError_BadPrefix,
7203    LDKParseError_UnknownCurrency,
7204    LDKParseError_UnknownSiPrefix,
7205    LDKParseError_MalformedHRP,
7206    LDKParseError_TooShortDataPart,
7207    LDKParseError_UnexpectedEndOfTaggedFields,
7208    LDKParseError_DescriptionDecodeError,
7209    LDKParseError_PaddingError,
7210    LDKParseError_IntegerOverflowError,
7211    LDKParseError_InvalidSegWitProgramLength,
7212    LDKParseError_InvalidPubKeyHashLength,
7213    LDKParseError_InvalidScriptHashLength,
7214    LDKParseError_InvalidRecoveryId,
7215    LDKParseError_InvalidSliceLength,
7216    /**
7217     * Not an error, but used internally to signal that a part of the invoice should be ignored
7218     * according to BOLT11
7219     */
7220    LDKParseError_Skip,
7221    /**
7222     * Must be last for serialization purposes
7223     */
7224    LDKParseError_Sentinel,
7225 } LDKParseError_Tag;
7226
7227 typedef struct MUST_USE_STRUCT LDKParseError {
7228    LDKParseError_Tag tag;
7229    union {
7230       struct {
7231          struct LDKBech32Error bech32_error;
7232       };
7233       struct {
7234          struct LDKError parse_amount_error;
7235       };
7236       struct {
7237          enum LDKSecp256k1Error malformed_signature;
7238       };
7239       struct {
7240          struct LDKError description_decode_error;
7241       };
7242       struct {
7243          struct LDKStr invalid_slice_length;
7244       };
7245    };
7246 } LDKParseError;
7247
7248 /**
7249  * The contents of CResult_SiPrefixParseErrorZ
7250  */
7251 typedef union LDKCResult_SiPrefixParseErrorZPtr {
7252    /**
7253     * A pointer to the contents in the success state.
7254     * Reading from this pointer when `result_ok` is not set is undefined.
7255     */
7256    enum LDKSiPrefix *result;
7257    /**
7258     * A pointer to the contents in the error state.
7259     * Reading from this pointer when `result_ok` is set is undefined.
7260     */
7261    struct LDKParseError *err;
7262 } LDKCResult_SiPrefixParseErrorZPtr;
7263
7264 /**
7265  * A CResult_SiPrefixParseErrorZ represents the result of a fallible operation,
7266  * containing a crate::lightning_invoice::SiPrefix on success and a crate::lightning_invoice::ParseError on failure.
7267  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7268  */
7269 typedef struct LDKCResult_SiPrefixParseErrorZ {
7270    /**
7271     * The contents of this CResult_SiPrefixParseErrorZ, accessible via either
7272     * `err` or `result` depending on the state of `result_ok`.
7273     */
7274    union LDKCResult_SiPrefixParseErrorZPtr contents;
7275    /**
7276     * Whether this CResult_SiPrefixParseErrorZ represents a success state.
7277     */
7278    bool result_ok;
7279 } LDKCResult_SiPrefixParseErrorZ;
7280
7281
7282
7283 /**
7284  * Represents a syntactically and semantically correct lightning BOLT11 invoice.
7285  *
7286  * There are three ways to construct an `Invoice`:
7287  *  1. using `InvoiceBuilder`
7288  *  2. using `Invoice::from_signed(SignedRawInvoice)`
7289  *  3. using `str::parse::<Invoice>(&str)`
7290  */
7291 typedef struct MUST_USE_STRUCT LDKInvoice {
7292    /**
7293     * A pointer to the opaque Rust object.
7294     * Nearly everywhere, inner must be non-null, however in places where
7295     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7296     */
7297    LDKnativeInvoice *inner;
7298    /**
7299     * Indicates that this is the only struct which contains the same pointer.
7300     * Rust functions which take ownership of an object provided via an argument require
7301     * this to be true and invalidate the object pointed to by inner.
7302     */
7303    bool is_owned;
7304 } LDKInvoice;
7305
7306 /**
7307  * Indicates that something went wrong while parsing or validating the invoice. Parsing errors
7308  * should be mostly seen as opaque and are only there for debugging reasons. Semantic errors
7309  * like wrong signatures, missing fields etc. could mean that someone tampered with the invoice.
7310  */
7311 typedef enum LDKParseOrSemanticError_Tag {
7312    /**
7313     * The invoice couldn't be decoded
7314     */
7315    LDKParseOrSemanticError_ParseError,
7316    /**
7317     * The invoice could be decoded but violates the BOLT11 standard
7318     */
7319    LDKParseOrSemanticError_SemanticError,
7320    /**
7321     * Must be last for serialization purposes
7322     */
7323    LDKParseOrSemanticError_Sentinel,
7324 } LDKParseOrSemanticError_Tag;
7325
7326 typedef struct MUST_USE_STRUCT LDKParseOrSemanticError {
7327    LDKParseOrSemanticError_Tag tag;
7328    union {
7329       struct {
7330          struct LDKParseError parse_error;
7331       };
7332       struct {
7333          enum LDKSemanticError semantic_error;
7334       };
7335    };
7336 } LDKParseOrSemanticError;
7337
7338 /**
7339  * The contents of CResult_InvoiceParseOrSemanticErrorZ
7340  */
7341 typedef union LDKCResult_InvoiceParseOrSemanticErrorZPtr {
7342    /**
7343     * A pointer to the contents in the success state.
7344     * Reading from this pointer when `result_ok` is not set is undefined.
7345     */
7346    struct LDKInvoice *result;
7347    /**
7348     * A pointer to the contents in the error state.
7349     * Reading from this pointer when `result_ok` is set is undefined.
7350     */
7351    struct LDKParseOrSemanticError *err;
7352 } LDKCResult_InvoiceParseOrSemanticErrorZPtr;
7353
7354 /**
7355  * A CResult_InvoiceParseOrSemanticErrorZ represents the result of a fallible operation,
7356  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::ParseOrSemanticError on failure.
7357  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7358  */
7359 typedef struct LDKCResult_InvoiceParseOrSemanticErrorZ {
7360    /**
7361     * The contents of this CResult_InvoiceParseOrSemanticErrorZ, accessible via either
7362     * `err` or `result` depending on the state of `result_ok`.
7363     */
7364    union LDKCResult_InvoiceParseOrSemanticErrorZPtr contents;
7365    /**
7366     * Whether this CResult_InvoiceParseOrSemanticErrorZ represents a success state.
7367     */
7368    bool result_ok;
7369 } LDKCResult_InvoiceParseOrSemanticErrorZ;
7370
7371
7372
7373 /**
7374  * Represents a signed `RawInvoice` with cached hash. The signature is not checked and may be
7375  * invalid.
7376  *
7377  * # Invariants
7378  * The hash has to be either from the deserialized invoice or from the serialized `raw_invoice`.
7379  */
7380 typedef struct MUST_USE_STRUCT LDKSignedRawInvoice {
7381    /**
7382     * A pointer to the opaque Rust object.
7383     * Nearly everywhere, inner must be non-null, however in places where
7384     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7385     */
7386    LDKnativeSignedRawInvoice *inner;
7387    /**
7388     * Indicates that this is the only struct which contains the same pointer.
7389     * Rust functions which take ownership of an object provided via an argument require
7390     * this to be true and invalidate the object pointed to by inner.
7391     */
7392    bool is_owned;
7393 } LDKSignedRawInvoice;
7394
7395 /**
7396  * The contents of CResult_SignedRawInvoiceParseErrorZ
7397  */
7398 typedef union LDKCResult_SignedRawInvoiceParseErrorZPtr {
7399    /**
7400     * A pointer to the contents in the success state.
7401     * Reading from this pointer when `result_ok` is not set is undefined.
7402     */
7403    struct LDKSignedRawInvoice *result;
7404    /**
7405     * A pointer to the contents in the error state.
7406     * Reading from this pointer when `result_ok` is set is undefined.
7407     */
7408    struct LDKParseError *err;
7409 } LDKCResult_SignedRawInvoiceParseErrorZPtr;
7410
7411 /**
7412  * A CResult_SignedRawInvoiceParseErrorZ represents the result of a fallible operation,
7413  * containing a crate::lightning_invoice::SignedRawInvoice on success and a crate::lightning_invoice::ParseError on failure.
7414  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7415  */
7416 typedef struct LDKCResult_SignedRawInvoiceParseErrorZ {
7417    /**
7418     * The contents of this CResult_SignedRawInvoiceParseErrorZ, accessible via either
7419     * `err` or `result` depending on the state of `result_ok`.
7420     */
7421    union LDKCResult_SignedRawInvoiceParseErrorZPtr contents;
7422    /**
7423     * Whether this CResult_SignedRawInvoiceParseErrorZ represents a success state.
7424     */
7425    bool result_ok;
7426 } LDKCResult_SignedRawInvoiceParseErrorZ;
7427
7428
7429
7430 /**
7431  * Represents an syntactically correct Invoice for a payment on the lightning network,
7432  * but without the signature information.
7433  * De- and encoding should not lead to information loss but may lead to different hashes.
7434  *
7435  * For methods without docs see the corresponding methods in `Invoice`.
7436  */
7437 typedef struct MUST_USE_STRUCT LDKRawInvoice {
7438    /**
7439     * A pointer to the opaque Rust object.
7440     * Nearly everywhere, inner must be non-null, however in places where
7441     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7442     */
7443    LDKnativeRawInvoice *inner;
7444    /**
7445     * Indicates that this is the only struct which contains the same pointer.
7446     * Rust functions which take ownership of an object provided via an argument require
7447     * this to be true and invalidate the object pointed to by inner.
7448     */
7449    bool is_owned;
7450 } LDKRawInvoice;
7451
7452
7453
7454 /**
7455  * Recoverable signature
7456  */
7457 typedef struct MUST_USE_STRUCT LDKInvoiceSignature {
7458    /**
7459     * A pointer to the opaque Rust object.
7460     * Nearly everywhere, inner must be non-null, however in places where
7461     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7462     */
7463    LDKnativeInvoiceSignature *inner;
7464    /**
7465     * Indicates that this is the only struct which contains the same pointer.
7466     * Rust functions which take ownership of an object provided via an argument require
7467     * this to be true and invalidate the object pointed to by inner.
7468     */
7469    bool is_owned;
7470 } LDKInvoiceSignature;
7471
7472 /**
7473  * A tuple of 3 elements. See the individual fields for the types contained.
7474  */
7475 typedef struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ {
7476    /**
7477     * The element at position 0
7478     */
7479    struct LDKRawInvoice a;
7480    /**
7481     * The element at position 1
7482     */
7483    struct LDKThirtyTwoBytes b;
7484    /**
7485     * The element at position 2
7486     */
7487    struct LDKInvoiceSignature c;
7488 } LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ;
7489
7490
7491
7492 /**
7493  * Payee public key
7494  */
7495 typedef struct MUST_USE_STRUCT LDKPayeePubKey {
7496    /**
7497     * A pointer to the opaque Rust object.
7498     * Nearly everywhere, inner must be non-null, however in places where
7499     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7500     */
7501    LDKnativePayeePubKey *inner;
7502    /**
7503     * Indicates that this is the only struct which contains the same pointer.
7504     * Rust functions which take ownership of an object provided via an argument require
7505     * this to be true and invalidate the object pointed to by inner.
7506     */
7507    bool is_owned;
7508 } LDKPayeePubKey;
7509
7510 /**
7511  * The contents of CResult_PayeePubKeyErrorZ
7512  */
7513 typedef union LDKCResult_PayeePubKeyErrorZPtr {
7514    /**
7515     * A pointer to the contents in the success state.
7516     * Reading from this pointer when `result_ok` is not set is undefined.
7517     */
7518    struct LDKPayeePubKey *result;
7519    /**
7520     * A pointer to the contents in the error state.
7521     * Reading from this pointer when `result_ok` is set is undefined.
7522     */
7523    enum LDKSecp256k1Error *err;
7524 } LDKCResult_PayeePubKeyErrorZPtr;
7525
7526 /**
7527  * A CResult_PayeePubKeyErrorZ represents the result of a fallible operation,
7528  * containing a crate::lightning_invoice::PayeePubKey on success and a crate::c_types::Secp256k1Error on failure.
7529  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7530  */
7531 typedef struct LDKCResult_PayeePubKeyErrorZ {
7532    /**
7533     * The contents of this CResult_PayeePubKeyErrorZ, accessible via either
7534     * `err` or `result` depending on the state of `result_ok`.
7535     */
7536    union LDKCResult_PayeePubKeyErrorZPtr contents;
7537    /**
7538     * Whether this CResult_PayeePubKeyErrorZ represents a success state.
7539     */
7540    bool result_ok;
7541 } LDKCResult_PayeePubKeyErrorZ;
7542
7543
7544
7545 /**
7546  * Private routing information
7547  *
7548  * # Invariants
7549  * The encoded route has to be <1024 5bit characters long (<=639 bytes or <=12 hops)
7550  *
7551  */
7552 typedef struct MUST_USE_STRUCT LDKPrivateRoute {
7553    /**
7554     * A pointer to the opaque Rust object.
7555     * Nearly everywhere, inner must be non-null, however in places where
7556     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7557     */
7558    LDKnativePrivateRoute *inner;
7559    /**
7560     * Indicates that this is the only struct which contains the same pointer.
7561     * Rust functions which take ownership of an object provided via an argument require
7562     * this to be true and invalidate the object pointed to by inner.
7563     */
7564    bool is_owned;
7565 } LDKPrivateRoute;
7566
7567 /**
7568  * A dynamically-allocated array of crate::lightning_invoice::PrivateRoutes of arbitrary size.
7569  * This corresponds to std::vector in C++
7570  */
7571 typedef struct LDKCVec_PrivateRouteZ {
7572    /**
7573     * The elements in the array.
7574     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7575     */
7576    struct LDKPrivateRoute *data;
7577    /**
7578     * The number of elements pointed to by `data`.
7579     */
7580    uintptr_t datalen;
7581 } LDKCVec_PrivateRouteZ;
7582
7583
7584
7585 /**
7586  * A timestamp that refers to a date after 1 January 1970.
7587  *
7588  * # Invariants
7589  *
7590  * The Unix timestamp representing the stored time has to be positive and no greater than
7591  * [`MAX_TIMESTAMP`].
7592  */
7593 typedef struct MUST_USE_STRUCT LDKPositiveTimestamp {
7594    /**
7595     * A pointer to the opaque Rust object.
7596     * Nearly everywhere, inner must be non-null, however in places where
7597     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7598     */
7599    LDKnativePositiveTimestamp *inner;
7600    /**
7601     * Indicates that this is the only struct which contains the same pointer.
7602     * Rust functions which take ownership of an object provided via an argument require
7603     * this to be true and invalidate the object pointed to by inner.
7604     */
7605    bool is_owned;
7606 } LDKPositiveTimestamp;
7607
7608 /**
7609  * The contents of CResult_PositiveTimestampCreationErrorZ
7610  */
7611 typedef union LDKCResult_PositiveTimestampCreationErrorZPtr {
7612    /**
7613     * A pointer to the contents in the success state.
7614     * Reading from this pointer when `result_ok` is not set is undefined.
7615     */
7616    struct LDKPositiveTimestamp *result;
7617    /**
7618     * A pointer to the contents in the error state.
7619     * Reading from this pointer when `result_ok` is set is undefined.
7620     */
7621    enum LDKCreationError *err;
7622 } LDKCResult_PositiveTimestampCreationErrorZPtr;
7623
7624 /**
7625  * A CResult_PositiveTimestampCreationErrorZ represents the result of a fallible operation,
7626  * containing a crate::lightning_invoice::PositiveTimestamp on success and a crate::lightning_invoice::CreationError on failure.
7627  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7628  */
7629 typedef struct LDKCResult_PositiveTimestampCreationErrorZ {
7630    /**
7631     * The contents of this CResult_PositiveTimestampCreationErrorZ, accessible via either
7632     * `err` or `result` depending on the state of `result_ok`.
7633     */
7634    union LDKCResult_PositiveTimestampCreationErrorZPtr contents;
7635    /**
7636     * Whether this CResult_PositiveTimestampCreationErrorZ represents a success state.
7637     */
7638    bool result_ok;
7639 } LDKCResult_PositiveTimestampCreationErrorZ;
7640
7641 /**
7642  * The contents of CResult_NoneSemanticErrorZ
7643  */
7644 typedef union LDKCResult_NoneSemanticErrorZPtr {
7645    /**
7646     * Note that this value is always NULL, as there are no contents in the OK variant
7647     */
7648    void *result;
7649    /**
7650     * A pointer to the contents in the error state.
7651     * Reading from this pointer when `result_ok` is set is undefined.
7652     */
7653    enum LDKSemanticError *err;
7654 } LDKCResult_NoneSemanticErrorZPtr;
7655
7656 /**
7657  * A CResult_NoneSemanticErrorZ represents the result of a fallible operation,
7658  * containing a () on success and a crate::lightning_invoice::SemanticError on failure.
7659  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7660  */
7661 typedef struct LDKCResult_NoneSemanticErrorZ {
7662    /**
7663     * The contents of this CResult_NoneSemanticErrorZ, accessible via either
7664     * `err` or `result` depending on the state of `result_ok`.
7665     */
7666    union LDKCResult_NoneSemanticErrorZPtr contents;
7667    /**
7668     * Whether this CResult_NoneSemanticErrorZ represents a success state.
7669     */
7670    bool result_ok;
7671 } LDKCResult_NoneSemanticErrorZ;
7672
7673 /**
7674  * The contents of CResult_InvoiceSemanticErrorZ
7675  */
7676 typedef union LDKCResult_InvoiceSemanticErrorZPtr {
7677    /**
7678     * A pointer to the contents in the success state.
7679     * Reading from this pointer when `result_ok` is not set is undefined.
7680     */
7681    struct LDKInvoice *result;
7682    /**
7683     * A pointer to the contents in the error state.
7684     * Reading from this pointer when `result_ok` is set is undefined.
7685     */
7686    enum LDKSemanticError *err;
7687 } LDKCResult_InvoiceSemanticErrorZPtr;
7688
7689 /**
7690  * A CResult_InvoiceSemanticErrorZ represents the result of a fallible operation,
7691  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SemanticError on failure.
7692  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7693  */
7694 typedef struct LDKCResult_InvoiceSemanticErrorZ {
7695    /**
7696     * The contents of this CResult_InvoiceSemanticErrorZ, accessible via either
7697     * `err` or `result` depending on the state of `result_ok`.
7698     */
7699    union LDKCResult_InvoiceSemanticErrorZPtr contents;
7700    /**
7701     * Whether this CResult_InvoiceSemanticErrorZ represents a success state.
7702     */
7703    bool result_ok;
7704 } LDKCResult_InvoiceSemanticErrorZ;
7705
7706
7707
7708 /**
7709  * Description string
7710  *
7711  * # Invariants
7712  * The description can be at most 639 __bytes__ long
7713  */
7714 typedef struct MUST_USE_STRUCT LDKDescription {
7715    /**
7716     * A pointer to the opaque Rust object.
7717     * Nearly everywhere, inner must be non-null, however in places where
7718     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7719     */
7720    LDKnativeDescription *inner;
7721    /**
7722     * Indicates that this is the only struct which contains the same pointer.
7723     * Rust functions which take ownership of an object provided via an argument require
7724     * this to be true and invalidate the object pointed to by inner.
7725     */
7726    bool is_owned;
7727 } LDKDescription;
7728
7729 /**
7730  * The contents of CResult_DescriptionCreationErrorZ
7731  */
7732 typedef union LDKCResult_DescriptionCreationErrorZPtr {
7733    /**
7734     * A pointer to the contents in the success state.
7735     * Reading from this pointer when `result_ok` is not set is undefined.
7736     */
7737    struct LDKDescription *result;
7738    /**
7739     * A pointer to the contents in the error state.
7740     * Reading from this pointer when `result_ok` is set is undefined.
7741     */
7742    enum LDKCreationError *err;
7743 } LDKCResult_DescriptionCreationErrorZPtr;
7744
7745 /**
7746  * A CResult_DescriptionCreationErrorZ represents the result of a fallible operation,
7747  * containing a crate::lightning_invoice::Description on success and a crate::lightning_invoice::CreationError on failure.
7748  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7749  */
7750 typedef struct LDKCResult_DescriptionCreationErrorZ {
7751    /**
7752     * The contents of this CResult_DescriptionCreationErrorZ, accessible via either
7753     * `err` or `result` depending on the state of `result_ok`.
7754     */
7755    union LDKCResult_DescriptionCreationErrorZPtr contents;
7756    /**
7757     * Whether this CResult_DescriptionCreationErrorZ represents a success state.
7758     */
7759    bool result_ok;
7760 } LDKCResult_DescriptionCreationErrorZ;
7761
7762 /**
7763  * The contents of CResult_PrivateRouteCreationErrorZ
7764  */
7765 typedef union LDKCResult_PrivateRouteCreationErrorZPtr {
7766    /**
7767     * A pointer to the contents in the success state.
7768     * Reading from this pointer when `result_ok` is not set is undefined.
7769     */
7770    struct LDKPrivateRoute *result;
7771    /**
7772     * A pointer to the contents in the error state.
7773     * Reading from this pointer when `result_ok` is set is undefined.
7774     */
7775    enum LDKCreationError *err;
7776 } LDKCResult_PrivateRouteCreationErrorZPtr;
7777
7778 /**
7779  * A CResult_PrivateRouteCreationErrorZ represents the result of a fallible operation,
7780  * containing a crate::lightning_invoice::PrivateRoute on success and a crate::lightning_invoice::CreationError on failure.
7781  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7782  */
7783 typedef struct LDKCResult_PrivateRouteCreationErrorZ {
7784    /**
7785     * The contents of this CResult_PrivateRouteCreationErrorZ, accessible via either
7786     * `err` or `result` depending on the state of `result_ok`.
7787     */
7788    union LDKCResult_PrivateRouteCreationErrorZPtr contents;
7789    /**
7790     * Whether this CResult_PrivateRouteCreationErrorZ represents a success state.
7791     */
7792    bool result_ok;
7793 } LDKCResult_PrivateRouteCreationErrorZ;
7794
7795 /**
7796  * The contents of CResult_StringErrorZ
7797  */
7798 typedef union LDKCResult_StringErrorZPtr {
7799    /**
7800     * A pointer to the contents in the success state.
7801     * Reading from this pointer when `result_ok` is not set is undefined.
7802     */
7803    struct LDKStr *result;
7804    /**
7805     * A pointer to the contents in the error state.
7806     * Reading from this pointer when `result_ok` is set is undefined.
7807     */
7808    enum LDKSecp256k1Error *err;
7809 } LDKCResult_StringErrorZPtr;
7810
7811 /**
7812  * A CResult_StringErrorZ represents the result of a fallible operation,
7813  * containing a crate::c_types::Str on success and a crate::c_types::Secp256k1Error on failure.
7814  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7815  */
7816 typedef struct LDKCResult_StringErrorZ {
7817    /**
7818     * The contents of this CResult_StringErrorZ, accessible via either
7819     * `err` or `result` depending on the state of `result_ok`.
7820     */
7821    union LDKCResult_StringErrorZPtr contents;
7822    /**
7823     * Whether this CResult_StringErrorZ represents a success state.
7824     */
7825    bool result_ok;
7826 } LDKCResult_StringErrorZ;
7827
7828 /**
7829  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
7830  */
7831 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
7832    /**
7833     * A pointer to the contents in the success state.
7834     * Reading from this pointer when `result_ok` is not set is undefined.
7835     */
7836    struct LDKChannelMonitorUpdate *result;
7837    /**
7838     * A pointer to the contents in the error state.
7839     * Reading from this pointer when `result_ok` is set is undefined.
7840     */
7841    struct LDKDecodeError *err;
7842 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
7843
7844 /**
7845  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
7846  * containing a crate::lightning::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
7847  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7848  */
7849 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
7850    /**
7851     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
7852     * `err` or `result` depending on the state of `result_ok`.
7853     */
7854    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
7855    /**
7856     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
7857     */
7858    bool result_ok;
7859 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
7860
7861 /**
7862  * An enum which can either contain a crate::lightning::chain::channelmonitor::MonitorEvent or not
7863  */
7864 typedef enum LDKCOption_MonitorEventZ_Tag {
7865    /**
7866     * When we're in this state, this COption_MonitorEventZ contains a crate::lightning::chain::channelmonitor::MonitorEvent
7867     */
7868    LDKCOption_MonitorEventZ_Some,
7869    /**
7870     * When we're in this state, this COption_MonitorEventZ contains nothing
7871     */
7872    LDKCOption_MonitorEventZ_None,
7873    /**
7874     * Must be last for serialization purposes
7875     */
7876    LDKCOption_MonitorEventZ_Sentinel,
7877 } LDKCOption_MonitorEventZ_Tag;
7878
7879 typedef struct LDKCOption_MonitorEventZ {
7880    LDKCOption_MonitorEventZ_Tag tag;
7881    union {
7882       struct {
7883          struct LDKMonitorEvent some;
7884       };
7885    };
7886 } LDKCOption_MonitorEventZ;
7887
7888 /**
7889  * The contents of CResult_COption_MonitorEventZDecodeErrorZ
7890  */
7891 typedef union LDKCResult_COption_MonitorEventZDecodeErrorZPtr {
7892    /**
7893     * A pointer to the contents in the success state.
7894     * Reading from this pointer when `result_ok` is not set is undefined.
7895     */
7896    struct LDKCOption_MonitorEventZ *result;
7897    /**
7898     * A pointer to the contents in the error state.
7899     * Reading from this pointer when `result_ok` is set is undefined.
7900     */
7901    struct LDKDecodeError *err;
7902 } LDKCResult_COption_MonitorEventZDecodeErrorZPtr;
7903
7904 /**
7905  * A CResult_COption_MonitorEventZDecodeErrorZ represents the result of a fallible operation,
7906  * containing a crate::c_types::derived::COption_MonitorEventZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
7907  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7908  */
7909 typedef struct LDKCResult_COption_MonitorEventZDecodeErrorZ {
7910    /**
7911     * The contents of this CResult_COption_MonitorEventZDecodeErrorZ, accessible via either
7912     * `err` or `result` depending on the state of `result_ok`.
7913     */
7914    union LDKCResult_COption_MonitorEventZDecodeErrorZPtr contents;
7915    /**
7916     * Whether this CResult_COption_MonitorEventZDecodeErrorZ represents a success state.
7917     */
7918    bool result_ok;
7919 } LDKCResult_COption_MonitorEventZDecodeErrorZ;
7920
7921 /**
7922  * The contents of CResult_HTLCUpdateDecodeErrorZ
7923  */
7924 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
7925    /**
7926     * A pointer to the contents in the success state.
7927     * Reading from this pointer when `result_ok` is not set is undefined.
7928     */
7929    struct LDKHTLCUpdate *result;
7930    /**
7931     * A pointer to the contents in the error state.
7932     * Reading from this pointer when `result_ok` is set is undefined.
7933     */
7934    struct LDKDecodeError *err;
7935 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
7936
7937 /**
7938  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
7939  * containing a crate::lightning::chain::channelmonitor::HTLCUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
7940  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7941  */
7942 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
7943    /**
7944     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
7945     * `err` or `result` depending on the state of `result_ok`.
7946     */
7947    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
7948    /**
7949     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
7950     */
7951    bool result_ok;
7952 } LDKCResult_HTLCUpdateDecodeErrorZ;
7953
7954 /**
7955  * A tuple of 2 elements. See the individual fields for the types contained.
7956  */
7957 typedef struct LDKC2Tuple_OutPointScriptZ {
7958    /**
7959     * The element at position 0
7960     */
7961    struct LDKOutPoint a;
7962    /**
7963     * The element at position 1
7964     */
7965    struct LDKCVec_u8Z b;
7966 } LDKC2Tuple_OutPointScriptZ;
7967
7968 /**
7969  * A tuple of 2 elements. See the individual fields for the types contained.
7970  */
7971 typedef struct LDKC2Tuple_u32ScriptZ {
7972    /**
7973     * The element at position 0
7974     */
7975    uint32_t a;
7976    /**
7977     * The element at position 1
7978     */
7979    struct LDKCVec_u8Z b;
7980 } LDKC2Tuple_u32ScriptZ;
7981
7982 /**
7983  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
7984  * This corresponds to std::vector in C++
7985  */
7986 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
7987    /**
7988     * The elements in the array.
7989     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7990     */
7991    struct LDKC2Tuple_u32ScriptZ *data;
7992    /**
7993     * The number of elements pointed to by `data`.
7994     */
7995    uintptr_t datalen;
7996 } LDKCVec_C2Tuple_u32ScriptZZ;
7997
7998 /**
7999  * A tuple of 2 elements. See the individual fields for the types contained.
8000  */
8001 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
8002    /**
8003     * The element at position 0
8004     */
8005    struct LDKThirtyTwoBytes a;
8006    /**
8007     * The element at position 1
8008     */
8009    struct LDKCVec_C2Tuple_u32ScriptZZ b;
8010 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
8011
8012 /**
8013  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
8014  * This corresponds to std::vector in C++
8015  */
8016 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
8017    /**
8018     * The elements in the array.
8019     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8020     */
8021    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
8022    /**
8023     * The number of elements pointed to by `data`.
8024     */
8025    uintptr_t datalen;
8026 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
8027
8028 /**
8029  * A dynamically-allocated array of crate::lightning::util::events::Events of arbitrary size.
8030  * This corresponds to std::vector in C++
8031  */
8032 typedef struct LDKCVec_EventZ {
8033    /**
8034     * The elements in the array.
8035     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8036     */
8037    struct LDKEvent *data;
8038    /**
8039     * The number of elements pointed to by `data`.
8040     */
8041    uintptr_t datalen;
8042 } LDKCVec_EventZ;
8043
8044 /**
8045  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
8046  * This corresponds to std::vector in C++
8047  */
8048 typedef struct LDKCVec_TransactionZ {
8049    /**
8050     * The elements in the array.
8051     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8052     */
8053    struct LDKTransaction *data;
8054    /**
8055     * The number of elements pointed to by `data`.
8056     */
8057    uintptr_t datalen;
8058 } LDKCVec_TransactionZ;
8059
8060 /**
8061  * A tuple of 2 elements. See the individual fields for the types contained.
8062  */
8063 typedef struct LDKC2Tuple_u32TxOutZ {
8064    /**
8065     * The element at position 0
8066     */
8067    uint32_t a;
8068    /**
8069     * The element at position 1
8070     */
8071    struct LDKTxOut b;
8072 } LDKC2Tuple_u32TxOutZ;
8073
8074 /**
8075  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
8076  * This corresponds to std::vector in C++
8077  */
8078 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
8079    /**
8080     * The elements in the array.
8081     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8082     */
8083    struct LDKC2Tuple_u32TxOutZ *data;
8084    /**
8085     * The number of elements pointed to by `data`.
8086     */
8087    uintptr_t datalen;
8088 } LDKCVec_C2Tuple_u32TxOutZZ;
8089
8090 /**
8091  * A tuple of 2 elements. See the individual fields for the types contained.
8092  */
8093 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
8094    /**
8095     * The element at position 0
8096     */
8097    struct LDKThirtyTwoBytes a;
8098    /**
8099     * The element at position 1
8100     */
8101    struct LDKCVec_C2Tuple_u32TxOutZZ b;
8102 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
8103
8104 /**
8105  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
8106  * This corresponds to std::vector in C++
8107  */
8108 typedef struct LDKCVec_TransactionOutputsZ {
8109    /**
8110     * The elements in the array.
8111     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8112     */
8113    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
8114    /**
8115     * The number of elements pointed to by `data`.
8116     */
8117    uintptr_t datalen;
8118 } LDKCVec_TransactionOutputsZ;
8119
8120 /**
8121  * Details about the balance(s) available for spending once the channel appears on chain.
8122  *
8123  * See [`ChannelMonitor::get_claimable_balances`] for more details on when these will or will not
8124  * be provided.
8125  */
8126 typedef enum LDKBalance_Tag {
8127    /**
8128     * The channel is not yet closed (or the commitment or closing transaction has not yet
8129     * appeared in a block). The given balance is claimable (less on-chain fees) if the channel is
8130     * force-closed now.
8131     */
8132    LDKBalance_ClaimableOnChannelClose,
8133    /**
8134     * The channel has been closed, and the given balance is ours but awaiting confirmations until
8135     * we consider it spendable.
8136     */
8137    LDKBalance_ClaimableAwaitingConfirmations,
8138    /**
8139     * The channel has been closed, and the given balance should be ours but awaiting spending
8140     * transaction confirmation. If the spending transaction does not confirm in time, it is
8141     * possible our counterparty can take the funds by broadcasting an HTLC timeout on-chain.
8142     *
8143     * Once the spending transaction confirms, before it has reached enough confirmations to be
8144     * considered safe from chain reorganizations, the balance will instead be provided via
8145     * [`Balance::ClaimableAwaitingConfirmations`].
8146     */
8147    LDKBalance_ContentiousClaimable,
8148    /**
8149     * HTLCs which we sent to our counterparty which are claimable after a timeout (less on-chain
8150     * fees) if the counterparty does not know the preimage for the HTLCs. These are somewhat
8151     * likely to be claimed by our counterparty before we do.
8152     */
8153    LDKBalance_MaybeClaimableHTLCAwaitingTimeout,
8154    /**
8155     * Must be last for serialization purposes
8156     */
8157    LDKBalance_Sentinel,
8158 } LDKBalance_Tag;
8159
8160 typedef struct LDKBalance_LDKClaimableOnChannelClose_Body {
8161    /**
8162     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
8163     * required to do so.
8164     */
8165    uint64_t claimable_amount_satoshis;
8166 } LDKBalance_LDKClaimableOnChannelClose_Body;
8167
8168 typedef struct LDKBalance_LDKClaimableAwaitingConfirmations_Body {
8169    /**
8170     * The amount available to claim, in satoshis, possibly excluding the on-chain fees which
8171     * were spent in broadcasting the transaction.
8172     */
8173    uint64_t claimable_amount_satoshis;
8174    /**
8175     * The height at which an [`Event::SpendableOutputs`] event will be generated for this
8176     * amount.
8177     */
8178    uint32_t confirmation_height;
8179 } LDKBalance_LDKClaimableAwaitingConfirmations_Body;
8180
8181 typedef struct LDKBalance_LDKContentiousClaimable_Body {
8182    /**
8183     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
8184     * required to do so.
8185     */
8186    uint64_t claimable_amount_satoshis;
8187    /**
8188     * The height at which the counterparty may be able to claim the balance if we have not
8189     * done so.
8190     */
8191    uint32_t timeout_height;
8192 } LDKBalance_LDKContentiousClaimable_Body;
8193
8194 typedef struct LDKBalance_LDKMaybeClaimableHTLCAwaitingTimeout_Body {
8195    /**
8196     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
8197     * required to do so.
8198     */
8199    uint64_t claimable_amount_satoshis;
8200    /**
8201     * The height at which we will be able to claim the balance if our counterparty has not
8202     * done so.
8203     */
8204    uint32_t claimable_height;
8205 } LDKBalance_LDKMaybeClaimableHTLCAwaitingTimeout_Body;
8206
8207 typedef struct MUST_USE_STRUCT LDKBalance {
8208    LDKBalance_Tag tag;
8209    union {
8210       LDKBalance_LDKClaimableOnChannelClose_Body claimable_on_channel_close;
8211       LDKBalance_LDKClaimableAwaitingConfirmations_Body claimable_awaiting_confirmations;
8212       LDKBalance_LDKContentiousClaimable_Body contentious_claimable;
8213       LDKBalance_LDKMaybeClaimableHTLCAwaitingTimeout_Body maybe_claimable_htlc_awaiting_timeout;
8214    };
8215 } LDKBalance;
8216
8217 /**
8218  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::Balances of arbitrary size.
8219  * This corresponds to std::vector in C++
8220  */
8221 typedef struct LDKCVec_BalanceZ {
8222    /**
8223     * The elements in the array.
8224     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8225     */
8226    struct LDKBalance *data;
8227    /**
8228     * The number of elements pointed to by `data`.
8229     */
8230    uintptr_t datalen;
8231 } LDKCVec_BalanceZ;
8232
8233 /**
8234  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
8235  */
8236 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
8237    /**
8238     * A pointer to the contents in the success state.
8239     * Reading from this pointer when `result_ok` is not set is undefined.
8240     */
8241    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
8242    /**
8243     * A pointer to the contents in the error state.
8244     * Reading from this pointer when `result_ok` is set is undefined.
8245     */
8246    struct LDKDecodeError *err;
8247 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
8248
8249 /**
8250  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
8251  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
8252  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8253  */
8254 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
8255    /**
8256     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
8257     * `err` or `result` depending on the state of `result_ok`.
8258     */
8259    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
8260    /**
8261     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
8262     */
8263    bool result_ok;
8264 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
8265
8266 /**
8267  * The contents of CResult_NoneLightningErrorZ
8268  */
8269 typedef union LDKCResult_NoneLightningErrorZPtr {
8270    /**
8271     * Note that this value is always NULL, as there are no contents in the OK variant
8272     */
8273    void *result;
8274    /**
8275     * A pointer to the contents in the error state.
8276     * Reading from this pointer when `result_ok` is set is undefined.
8277     */
8278    struct LDKLightningError *err;
8279 } LDKCResult_NoneLightningErrorZPtr;
8280
8281 /**
8282  * A CResult_NoneLightningErrorZ represents the result of a fallible operation,
8283  * containing a () on success and a crate::lightning::ln::msgs::LightningError on failure.
8284  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8285  */
8286 typedef struct LDKCResult_NoneLightningErrorZ {
8287    /**
8288     * The contents of this CResult_NoneLightningErrorZ, accessible via either
8289     * `err` or `result` depending on the state of `result_ok`.
8290     */
8291    union LDKCResult_NoneLightningErrorZPtr contents;
8292    /**
8293     * Whether this CResult_NoneLightningErrorZ represents a success state.
8294     */
8295    bool result_ok;
8296 } LDKCResult_NoneLightningErrorZ;
8297
8298 /**
8299  * A tuple of 2 elements. See the individual fields for the types contained.
8300  */
8301 typedef struct LDKC2Tuple_PublicKeyTypeZ {
8302    /**
8303     * The element at position 0
8304     */
8305    struct LDKPublicKey a;
8306    /**
8307     * The element at position 1
8308     */
8309    struct LDKType b;
8310 } LDKC2Tuple_PublicKeyTypeZ;
8311
8312 /**
8313  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_PublicKeyTypeZs of arbitrary size.
8314  * This corresponds to std::vector in C++
8315  */
8316 typedef struct LDKCVec_C2Tuple_PublicKeyTypeZZ {
8317    /**
8318     * The elements in the array.
8319     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8320     */
8321    struct LDKC2Tuple_PublicKeyTypeZ *data;
8322    /**
8323     * The number of elements pointed to by `data`.
8324     */
8325    uintptr_t datalen;
8326 } LDKCVec_C2Tuple_PublicKeyTypeZZ;
8327
8328 /**
8329  * The contents of CResult_boolLightningErrorZ
8330  */
8331 typedef union LDKCResult_boolLightningErrorZPtr {
8332    /**
8333     * A pointer to the contents in the success state.
8334     * Reading from this pointer when `result_ok` is not set is undefined.
8335     */
8336    bool *result;
8337    /**
8338     * A pointer to the contents in the error state.
8339     * Reading from this pointer when `result_ok` is set is undefined.
8340     */
8341    struct LDKLightningError *err;
8342 } LDKCResult_boolLightningErrorZPtr;
8343
8344 /**
8345  * A CResult_boolLightningErrorZ represents the result of a fallible operation,
8346  * containing a bool on success and a crate::lightning::ln::msgs::LightningError on failure.
8347  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8348  */
8349 typedef struct LDKCResult_boolLightningErrorZ {
8350    /**
8351     * The contents of this CResult_boolLightningErrorZ, accessible via either
8352     * `err` or `result` depending on the state of `result_ok`.
8353     */
8354    union LDKCResult_boolLightningErrorZPtr contents;
8355    /**
8356     * Whether this CResult_boolLightningErrorZ represents a success state.
8357     */
8358    bool result_ok;
8359 } LDKCResult_boolLightningErrorZ;
8360
8361 /**
8362  * A tuple of 3 elements. See the individual fields for the types contained.
8363  */
8364 typedef struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
8365    /**
8366     * The element at position 0
8367     */
8368    struct LDKChannelAnnouncement a;
8369    /**
8370     * The element at position 1
8371     */
8372    struct LDKChannelUpdate b;
8373    /**
8374     * The element at position 2
8375     */
8376    struct LDKChannelUpdate c;
8377 } LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
8378
8379 /**
8380  * A dynamically-allocated array of crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZs of arbitrary size.
8381  * This corresponds to std::vector in C++
8382  */
8383 typedef struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
8384    /**
8385     * The elements in the array.
8386     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8387     */
8388    struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *data;
8389    /**
8390     * The number of elements pointed to by `data`.
8391     */
8392    uintptr_t datalen;
8393 } LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
8394
8395 /**
8396  * A dynamically-allocated array of crate::lightning::ln::msgs::NodeAnnouncements of arbitrary size.
8397  * This corresponds to std::vector in C++
8398  */
8399 typedef struct LDKCVec_NodeAnnouncementZ {
8400    /**
8401     * The elements in the array.
8402     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8403     */
8404    struct LDKNodeAnnouncement *data;
8405    /**
8406     * The number of elements pointed to by `data`.
8407     */
8408    uintptr_t datalen;
8409 } LDKCVec_NodeAnnouncementZ;
8410
8411 /**
8412  * A dynamically-allocated array of crate::c_types::PublicKeys of arbitrary size.
8413  * This corresponds to std::vector in C++
8414  */
8415 typedef struct LDKCVec_PublicKeyZ {
8416    /**
8417     * The elements in the array.
8418     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8419     */
8420    struct LDKPublicKey *data;
8421    /**
8422     * The number of elements pointed to by `data`.
8423     */
8424    uintptr_t datalen;
8425 } LDKCVec_PublicKeyZ;
8426
8427 /**
8428  * An enum which can either contain a crate::lightning::ln::msgs::NetAddress or not
8429  */
8430 typedef enum LDKCOption_NetAddressZ_Tag {
8431    /**
8432     * When we're in this state, this COption_NetAddressZ contains a crate::lightning::ln::msgs::NetAddress
8433     */
8434    LDKCOption_NetAddressZ_Some,
8435    /**
8436     * When we're in this state, this COption_NetAddressZ contains nothing
8437     */
8438    LDKCOption_NetAddressZ_None,
8439    /**
8440     * Must be last for serialization purposes
8441     */
8442    LDKCOption_NetAddressZ_Sentinel,
8443 } LDKCOption_NetAddressZ_Tag;
8444
8445 typedef struct LDKCOption_NetAddressZ {
8446    LDKCOption_NetAddressZ_Tag tag;
8447    union {
8448       struct {
8449          struct LDKNetAddress some;
8450       };
8451    };
8452 } LDKCOption_NetAddressZ;
8453
8454
8455
8456 /**
8457  * Error for PeerManager errors. If you get one of these, you must disconnect the socket and
8458  * generate no further read_event/write_buffer_space_avail/socket_disconnected calls for the
8459  * descriptor.
8460  */
8461 typedef struct MUST_USE_STRUCT LDKPeerHandleError {
8462    /**
8463     * A pointer to the opaque Rust object.
8464     * Nearly everywhere, inner must be non-null, however in places where
8465     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8466     */
8467    LDKnativePeerHandleError *inner;
8468    /**
8469     * Indicates that this is the only struct which contains the same pointer.
8470     * Rust functions which take ownership of an object provided via an argument require
8471     * this to be true and invalidate the object pointed to by inner.
8472     */
8473    bool is_owned;
8474 } LDKPeerHandleError;
8475
8476 /**
8477  * The contents of CResult_CVec_u8ZPeerHandleErrorZ
8478  */
8479 typedef union LDKCResult_CVec_u8ZPeerHandleErrorZPtr {
8480    /**
8481     * A pointer to the contents in the success state.
8482     * Reading from this pointer when `result_ok` is not set is undefined.
8483     */
8484    struct LDKCVec_u8Z *result;
8485    /**
8486     * A pointer to the contents in the error state.
8487     * Reading from this pointer when `result_ok` is set is undefined.
8488     */
8489    struct LDKPeerHandleError *err;
8490 } LDKCResult_CVec_u8ZPeerHandleErrorZPtr;
8491
8492 /**
8493  * A CResult_CVec_u8ZPeerHandleErrorZ represents the result of a fallible operation,
8494  * containing a crate::c_types::derived::CVec_u8Z on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
8495  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8496  */
8497 typedef struct LDKCResult_CVec_u8ZPeerHandleErrorZ {
8498    /**
8499     * The contents of this CResult_CVec_u8ZPeerHandleErrorZ, accessible via either
8500     * `err` or `result` depending on the state of `result_ok`.
8501     */
8502    union LDKCResult_CVec_u8ZPeerHandleErrorZPtr contents;
8503    /**
8504     * Whether this CResult_CVec_u8ZPeerHandleErrorZ represents a success state.
8505     */
8506    bool result_ok;
8507 } LDKCResult_CVec_u8ZPeerHandleErrorZ;
8508
8509 /**
8510  * The contents of CResult_NonePeerHandleErrorZ
8511  */
8512 typedef union LDKCResult_NonePeerHandleErrorZPtr {
8513    /**
8514     * Note that this value is always NULL, as there are no contents in the OK variant
8515     */
8516    void *result;
8517    /**
8518     * A pointer to the contents in the error state.
8519     * Reading from this pointer when `result_ok` is set is undefined.
8520     */
8521    struct LDKPeerHandleError *err;
8522 } LDKCResult_NonePeerHandleErrorZPtr;
8523
8524 /**
8525  * A CResult_NonePeerHandleErrorZ represents the result of a fallible operation,
8526  * containing a () on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
8527  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8528  */
8529 typedef struct LDKCResult_NonePeerHandleErrorZ {
8530    /**
8531     * The contents of this CResult_NonePeerHandleErrorZ, accessible via either
8532     * `err` or `result` depending on the state of `result_ok`.
8533     */
8534    union LDKCResult_NonePeerHandleErrorZPtr contents;
8535    /**
8536     * Whether this CResult_NonePeerHandleErrorZ represents a success state.
8537     */
8538    bool result_ok;
8539 } LDKCResult_NonePeerHandleErrorZ;
8540
8541 /**
8542  * The contents of CResult_boolPeerHandleErrorZ
8543  */
8544 typedef union LDKCResult_boolPeerHandleErrorZPtr {
8545    /**
8546     * A pointer to the contents in the success state.
8547     * Reading from this pointer when `result_ok` is not set is undefined.
8548     */
8549    bool *result;
8550    /**
8551     * A pointer to the contents in the error state.
8552     * Reading from this pointer when `result_ok` is set is undefined.
8553     */
8554    struct LDKPeerHandleError *err;
8555 } LDKCResult_boolPeerHandleErrorZPtr;
8556
8557 /**
8558  * A CResult_boolPeerHandleErrorZ represents the result of a fallible operation,
8559  * containing a bool on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
8560  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8561  */
8562 typedef struct LDKCResult_boolPeerHandleErrorZ {
8563    /**
8564     * The contents of this CResult_boolPeerHandleErrorZ, accessible via either
8565     * `err` or `result` depending on the state of `result_ok`.
8566     */
8567    union LDKCResult_boolPeerHandleErrorZPtr contents;
8568    /**
8569     * Whether this CResult_boolPeerHandleErrorZ represents a success state.
8570     */
8571    bool result_ok;
8572 } LDKCResult_boolPeerHandleErrorZ;
8573
8574
8575
8576 /**
8577  * Represents the compressed public key of a node
8578  */
8579 typedef struct MUST_USE_STRUCT LDKNodeId {
8580    /**
8581     * A pointer to the opaque Rust object.
8582     * Nearly everywhere, inner must be non-null, however in places where
8583     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8584     */
8585    LDKnativeNodeId *inner;
8586    /**
8587     * Indicates that this is the only struct which contains the same pointer.
8588     * Rust functions which take ownership of an object provided via an argument require
8589     * this to be true and invalidate the object pointed to by inner.
8590     */
8591    bool is_owned;
8592 } LDKNodeId;
8593
8594 /**
8595  * The contents of CResult_NodeIdDecodeErrorZ
8596  */
8597 typedef union LDKCResult_NodeIdDecodeErrorZPtr {
8598    /**
8599     * A pointer to the contents in the success state.
8600     * Reading from this pointer when `result_ok` is not set is undefined.
8601     */
8602    struct LDKNodeId *result;
8603    /**
8604     * A pointer to the contents in the error state.
8605     * Reading from this pointer when `result_ok` is set is undefined.
8606     */
8607    struct LDKDecodeError *err;
8608 } LDKCResult_NodeIdDecodeErrorZPtr;
8609
8610 /**
8611  * A CResult_NodeIdDecodeErrorZ represents the result of a fallible operation,
8612  * containing a crate::lightning::routing::network_graph::NodeId on success and a crate::lightning::ln::msgs::DecodeError on failure.
8613  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8614  */
8615 typedef struct LDKCResult_NodeIdDecodeErrorZ {
8616    /**
8617     * The contents of this CResult_NodeIdDecodeErrorZ, accessible via either
8618     * `err` or `result` depending on the state of `result_ok`.
8619     */
8620    union LDKCResult_NodeIdDecodeErrorZPtr contents;
8621    /**
8622     * Whether this CResult_NodeIdDecodeErrorZ represents a success state.
8623     */
8624    bool result_ok;
8625 } LDKCResult_NodeIdDecodeErrorZ;
8626
8627 /**
8628  * The contents of CResult_COption_NetworkUpdateZDecodeErrorZ
8629  */
8630 typedef union LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr {
8631    /**
8632     * A pointer to the contents in the success state.
8633     * Reading from this pointer when `result_ok` is not set is undefined.
8634     */
8635    struct LDKCOption_NetworkUpdateZ *result;
8636    /**
8637     * A pointer to the contents in the error state.
8638     * Reading from this pointer when `result_ok` is set is undefined.
8639     */
8640    struct LDKDecodeError *err;
8641 } LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr;
8642
8643 /**
8644  * A CResult_COption_NetworkUpdateZDecodeErrorZ represents the result of a fallible operation,
8645  * containing a crate::c_types::derived::COption_NetworkUpdateZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
8646  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8647  */
8648 typedef struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ {
8649    /**
8650     * The contents of this CResult_COption_NetworkUpdateZDecodeErrorZ, accessible via either
8651     * `err` or `result` depending on the state of `result_ok`.
8652     */
8653    union LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr contents;
8654    /**
8655     * Whether this CResult_COption_NetworkUpdateZDecodeErrorZ represents a success state.
8656     */
8657    bool result_ok;
8658 } LDKCResult_COption_NetworkUpdateZDecodeErrorZ;
8659
8660 /**
8661  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
8662  * UTXOs.
8663  */
8664 typedef struct LDKAccess {
8665    /**
8666     * An opaque pointer which is passed to your function implementations as an argument.
8667     * This has no meaning in the LDK, and can be NULL or any other value.
8668     */
8669    void *this_arg;
8670    /**
8671     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
8672     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
8673     * is unknown.
8674     *
8675     * [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
8676     */
8677    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
8678    /**
8679     * Frees any resources associated with this object given its this_arg pointer.
8680     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8681     */
8682    void (*free)(void *this_arg);
8683 } LDKAccess;
8684
8685 /**
8686  * An enum which can either contain a crate::lightning::chain::Access or not
8687  */
8688 typedef enum LDKCOption_AccessZ_Tag {
8689    /**
8690     * When we're in this state, this COption_AccessZ contains a crate::lightning::chain::Access
8691     */
8692    LDKCOption_AccessZ_Some,
8693    /**
8694     * When we're in this state, this COption_AccessZ contains nothing
8695     */
8696    LDKCOption_AccessZ_None,
8697    /**
8698     * Must be last for serialization purposes
8699     */
8700    LDKCOption_AccessZ_Sentinel,
8701 } LDKCOption_AccessZ_Tag;
8702
8703 typedef struct LDKCOption_AccessZ {
8704    LDKCOption_AccessZ_Tag tag;
8705    union {
8706       struct {
8707          struct LDKAccess some;
8708       };
8709    };
8710 } LDKCOption_AccessZ;
8711
8712
8713
8714 /**
8715  * Details about one direction of a channel as received within a [`ChannelUpdate`].
8716  */
8717 typedef struct MUST_USE_STRUCT LDKChannelUpdateInfo {
8718    /**
8719     * A pointer to the opaque Rust object.
8720     * Nearly everywhere, inner must be non-null, however in places where
8721     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8722     */
8723    LDKnativeChannelUpdateInfo *inner;
8724    /**
8725     * Indicates that this is the only struct which contains the same pointer.
8726     * Rust functions which take ownership of an object provided via an argument require
8727     * this to be true and invalidate the object pointed to by inner.
8728     */
8729    bool is_owned;
8730 } LDKChannelUpdateInfo;
8731
8732 /**
8733  * The contents of CResult_ChannelUpdateInfoDecodeErrorZ
8734  */
8735 typedef union LDKCResult_ChannelUpdateInfoDecodeErrorZPtr {
8736    /**
8737     * A pointer to the contents in the success state.
8738     * Reading from this pointer when `result_ok` is not set is undefined.
8739     */
8740    struct LDKChannelUpdateInfo *result;
8741    /**
8742     * A pointer to the contents in the error state.
8743     * Reading from this pointer when `result_ok` is set is undefined.
8744     */
8745    struct LDKDecodeError *err;
8746 } LDKCResult_ChannelUpdateInfoDecodeErrorZPtr;
8747
8748 /**
8749  * A CResult_ChannelUpdateInfoDecodeErrorZ represents the result of a fallible operation,
8750  * containing a crate::lightning::routing::network_graph::ChannelUpdateInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8751  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8752  */
8753 typedef struct LDKCResult_ChannelUpdateInfoDecodeErrorZ {
8754    /**
8755     * The contents of this CResult_ChannelUpdateInfoDecodeErrorZ, accessible via either
8756     * `err` or `result` depending on the state of `result_ok`.
8757     */
8758    union LDKCResult_ChannelUpdateInfoDecodeErrorZPtr contents;
8759    /**
8760     * Whether this CResult_ChannelUpdateInfoDecodeErrorZ represents a success state.
8761     */
8762    bool result_ok;
8763 } LDKCResult_ChannelUpdateInfoDecodeErrorZ;
8764
8765
8766
8767 /**
8768  * Details about a channel (both directions).
8769  * Received within a channel announcement.
8770  */
8771 typedef struct MUST_USE_STRUCT LDKChannelInfo {
8772    /**
8773     * A pointer to the opaque Rust object.
8774     * Nearly everywhere, inner must be non-null, however in places where
8775     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8776     */
8777    LDKnativeChannelInfo *inner;
8778    /**
8779     * Indicates that this is the only struct which contains the same pointer.
8780     * Rust functions which take ownership of an object provided via an argument require
8781     * this to be true and invalidate the object pointed to by inner.
8782     */
8783    bool is_owned;
8784 } LDKChannelInfo;
8785
8786 /**
8787  * The contents of CResult_ChannelInfoDecodeErrorZ
8788  */
8789 typedef union LDKCResult_ChannelInfoDecodeErrorZPtr {
8790    /**
8791     * A pointer to the contents in the success state.
8792     * Reading from this pointer when `result_ok` is not set is undefined.
8793     */
8794    struct LDKChannelInfo *result;
8795    /**
8796     * A pointer to the contents in the error state.
8797     * Reading from this pointer when `result_ok` is set is undefined.
8798     */
8799    struct LDKDecodeError *err;
8800 } LDKCResult_ChannelInfoDecodeErrorZPtr;
8801
8802 /**
8803  * A CResult_ChannelInfoDecodeErrorZ represents the result of a fallible operation,
8804  * containing a crate::lightning::routing::network_graph::ChannelInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8805  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8806  */
8807 typedef struct LDKCResult_ChannelInfoDecodeErrorZ {
8808    /**
8809     * The contents of this CResult_ChannelInfoDecodeErrorZ, accessible via either
8810     * `err` or `result` depending on the state of `result_ok`.
8811     */
8812    union LDKCResult_ChannelInfoDecodeErrorZPtr contents;
8813    /**
8814     * Whether this CResult_ChannelInfoDecodeErrorZ represents a success state.
8815     */
8816    bool result_ok;
8817 } LDKCResult_ChannelInfoDecodeErrorZ;
8818
8819
8820
8821 /**
8822  * Fees for routing via a given channel or a node
8823  */
8824 typedef struct MUST_USE_STRUCT LDKRoutingFees {
8825    /**
8826     * A pointer to the opaque Rust object.
8827     * Nearly everywhere, inner must be non-null, however in places where
8828     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8829     */
8830    LDKnativeRoutingFees *inner;
8831    /**
8832     * Indicates that this is the only struct which contains the same pointer.
8833     * Rust functions which take ownership of an object provided via an argument require
8834     * this to be true and invalidate the object pointed to by inner.
8835     */
8836    bool is_owned;
8837 } LDKRoutingFees;
8838
8839 /**
8840  * The contents of CResult_RoutingFeesDecodeErrorZ
8841  */
8842 typedef union LDKCResult_RoutingFeesDecodeErrorZPtr {
8843    /**
8844     * A pointer to the contents in the success state.
8845     * Reading from this pointer when `result_ok` is not set is undefined.
8846     */
8847    struct LDKRoutingFees *result;
8848    /**
8849     * A pointer to the contents in the error state.
8850     * Reading from this pointer when `result_ok` is set is undefined.
8851     */
8852    struct LDKDecodeError *err;
8853 } LDKCResult_RoutingFeesDecodeErrorZPtr;
8854
8855 /**
8856  * A CResult_RoutingFeesDecodeErrorZ represents the result of a fallible operation,
8857  * containing a crate::lightning::routing::network_graph::RoutingFees on success and a crate::lightning::ln::msgs::DecodeError on failure.
8858  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8859  */
8860 typedef struct LDKCResult_RoutingFeesDecodeErrorZ {
8861    /**
8862     * The contents of this CResult_RoutingFeesDecodeErrorZ, accessible via either
8863     * `err` or `result` depending on the state of `result_ok`.
8864     */
8865    union LDKCResult_RoutingFeesDecodeErrorZPtr contents;
8866    /**
8867     * Whether this CResult_RoutingFeesDecodeErrorZ represents a success state.
8868     */
8869    bool result_ok;
8870 } LDKCResult_RoutingFeesDecodeErrorZ;
8871
8872
8873
8874 /**
8875  * Information received in the latest node_announcement from this node.
8876  */
8877 typedef struct MUST_USE_STRUCT LDKNodeAnnouncementInfo {
8878    /**
8879     * A pointer to the opaque Rust object.
8880     * Nearly everywhere, inner must be non-null, however in places where
8881     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8882     */
8883    LDKnativeNodeAnnouncementInfo *inner;
8884    /**
8885     * Indicates that this is the only struct which contains the same pointer.
8886     * Rust functions which take ownership of an object provided via an argument require
8887     * this to be true and invalidate the object pointed to by inner.
8888     */
8889    bool is_owned;
8890 } LDKNodeAnnouncementInfo;
8891
8892 /**
8893  * The contents of CResult_NodeAnnouncementInfoDecodeErrorZ
8894  */
8895 typedef union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr {
8896    /**
8897     * A pointer to the contents in the success state.
8898     * Reading from this pointer when `result_ok` is not set is undefined.
8899     */
8900    struct LDKNodeAnnouncementInfo *result;
8901    /**
8902     * A pointer to the contents in the error state.
8903     * Reading from this pointer when `result_ok` is set is undefined.
8904     */
8905    struct LDKDecodeError *err;
8906 } LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr;
8907
8908 /**
8909  * A CResult_NodeAnnouncementInfoDecodeErrorZ represents the result of a fallible operation,
8910  * containing a crate::lightning::routing::network_graph::NodeAnnouncementInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8911  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8912  */
8913 typedef struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ {
8914    /**
8915     * The contents of this CResult_NodeAnnouncementInfoDecodeErrorZ, accessible via either
8916     * `err` or `result` depending on the state of `result_ok`.
8917     */
8918    union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr contents;
8919    /**
8920     * Whether this CResult_NodeAnnouncementInfoDecodeErrorZ represents a success state.
8921     */
8922    bool result_ok;
8923 } LDKCResult_NodeAnnouncementInfoDecodeErrorZ;
8924
8925 /**
8926  * A dynamically-allocated array of u64s of arbitrary size.
8927  * This corresponds to std::vector in C++
8928  */
8929 typedef struct LDKCVec_u64Z {
8930    /**
8931     * The elements in the array.
8932     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8933     */
8934    uint64_t *data;
8935    /**
8936     * The number of elements pointed to by `data`.
8937     */
8938    uintptr_t datalen;
8939 } LDKCVec_u64Z;
8940
8941
8942
8943 /**
8944  * Details about a node in the network, known from the network announcement.
8945  */
8946 typedef struct MUST_USE_STRUCT LDKNodeInfo {
8947    /**
8948     * A pointer to the opaque Rust object.
8949     * Nearly everywhere, inner must be non-null, however in places where
8950     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8951     */
8952    LDKnativeNodeInfo *inner;
8953    /**
8954     * Indicates that this is the only struct which contains the same pointer.
8955     * Rust functions which take ownership of an object provided via an argument require
8956     * this to be true and invalidate the object pointed to by inner.
8957     */
8958    bool is_owned;
8959 } LDKNodeInfo;
8960
8961 /**
8962  * The contents of CResult_NodeInfoDecodeErrorZ
8963  */
8964 typedef union LDKCResult_NodeInfoDecodeErrorZPtr {
8965    /**
8966     * A pointer to the contents in the success state.
8967     * Reading from this pointer when `result_ok` is not set is undefined.
8968     */
8969    struct LDKNodeInfo *result;
8970    /**
8971     * A pointer to the contents in the error state.
8972     * Reading from this pointer when `result_ok` is set is undefined.
8973     */
8974    struct LDKDecodeError *err;
8975 } LDKCResult_NodeInfoDecodeErrorZPtr;
8976
8977 /**
8978  * A CResult_NodeInfoDecodeErrorZ represents the result of a fallible operation,
8979  * containing a crate::lightning::routing::network_graph::NodeInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8980  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8981  */
8982 typedef struct LDKCResult_NodeInfoDecodeErrorZ {
8983    /**
8984     * The contents of this CResult_NodeInfoDecodeErrorZ, accessible via either
8985     * `err` or `result` depending on the state of `result_ok`.
8986     */
8987    union LDKCResult_NodeInfoDecodeErrorZPtr contents;
8988    /**
8989     * Whether this CResult_NodeInfoDecodeErrorZ represents a success state.
8990     */
8991    bool result_ok;
8992 } LDKCResult_NodeInfoDecodeErrorZ;
8993
8994 /**
8995  * The contents of CResult_NetworkGraphDecodeErrorZ
8996  */
8997 typedef union LDKCResult_NetworkGraphDecodeErrorZPtr {
8998    /**
8999     * A pointer to the contents in the success state.
9000     * Reading from this pointer when `result_ok` is not set is undefined.
9001     */
9002    struct LDKNetworkGraph *result;
9003    /**
9004     * A pointer to the contents in the error state.
9005     * Reading from this pointer when `result_ok` is set is undefined.
9006     */
9007    struct LDKDecodeError *err;
9008 } LDKCResult_NetworkGraphDecodeErrorZPtr;
9009
9010 /**
9011  * A CResult_NetworkGraphDecodeErrorZ represents the result of a fallible operation,
9012  * containing a crate::lightning::routing::network_graph::NetworkGraph on success and a crate::lightning::ln::msgs::DecodeError on failure.
9013  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9014  */
9015 typedef struct LDKCResult_NetworkGraphDecodeErrorZ {
9016    /**
9017     * The contents of this CResult_NetworkGraphDecodeErrorZ, accessible via either
9018     * `err` or `result` depending on the state of `result_ok`.
9019     */
9020    union LDKCResult_NetworkGraphDecodeErrorZPtr contents;
9021    /**
9022     * Whether this CResult_NetworkGraphDecodeErrorZ represents a success state.
9023     */
9024    bool result_ok;
9025 } LDKCResult_NetworkGraphDecodeErrorZ;
9026
9027 /**
9028  * An enum which can either contain a crate::c_types::derived::CVec_NetAddressZ or not
9029  */
9030 typedef enum LDKCOption_CVec_NetAddressZZ_Tag {
9031    /**
9032     * When we're in this state, this COption_CVec_NetAddressZZ contains a crate::c_types::derived::CVec_NetAddressZ
9033     */
9034    LDKCOption_CVec_NetAddressZZ_Some,
9035    /**
9036     * When we're in this state, this COption_CVec_NetAddressZZ contains nothing
9037     */
9038    LDKCOption_CVec_NetAddressZZ_None,
9039    /**
9040     * Must be last for serialization purposes
9041     */
9042    LDKCOption_CVec_NetAddressZZ_Sentinel,
9043 } LDKCOption_CVec_NetAddressZZ_Tag;
9044
9045 typedef struct LDKCOption_CVec_NetAddressZZ {
9046    LDKCOption_CVec_NetAddressZZ_Tag tag;
9047    union {
9048       struct {
9049          struct LDKCVec_NetAddressZ some;
9050       };
9051    };
9052 } LDKCOption_CVec_NetAddressZZ;
9053
9054 /**
9055  * The contents of CResult_NetAddressDecodeErrorZ
9056  */
9057 typedef union LDKCResult_NetAddressDecodeErrorZPtr {
9058    /**
9059     * A pointer to the contents in the success state.
9060     * Reading from this pointer when `result_ok` is not set is undefined.
9061     */
9062    struct LDKNetAddress *result;
9063    /**
9064     * A pointer to the contents in the error state.
9065     * Reading from this pointer when `result_ok` is set is undefined.
9066     */
9067    struct LDKDecodeError *err;
9068 } LDKCResult_NetAddressDecodeErrorZPtr;
9069
9070 /**
9071  * A CResult_NetAddressDecodeErrorZ represents the result of a fallible operation,
9072  * containing a crate::lightning::ln::msgs::NetAddress on success and a crate::lightning::ln::msgs::DecodeError on failure.
9073  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9074  */
9075 typedef struct LDKCResult_NetAddressDecodeErrorZ {
9076    /**
9077     * The contents of this CResult_NetAddressDecodeErrorZ, accessible via either
9078     * `err` or `result` depending on the state of `result_ok`.
9079     */
9080    union LDKCResult_NetAddressDecodeErrorZPtr contents;
9081    /**
9082     * Whether this CResult_NetAddressDecodeErrorZ represents a success state.
9083     */
9084    bool result_ok;
9085 } LDKCResult_NetAddressDecodeErrorZ;
9086
9087
9088
9089 /**
9090  * An update_add_htlc message to be sent or received from a peer
9091  */
9092 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
9093    /**
9094     * A pointer to the opaque Rust object.
9095     * Nearly everywhere, inner must be non-null, however in places where
9096     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9097     */
9098    LDKnativeUpdateAddHTLC *inner;
9099    /**
9100     * Indicates that this is the only struct which contains the same pointer.
9101     * Rust functions which take ownership of an object provided via an argument require
9102     * this to be true and invalidate the object pointed to by inner.
9103     */
9104    bool is_owned;
9105 } LDKUpdateAddHTLC;
9106
9107 /**
9108  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateAddHTLCs of arbitrary size.
9109  * This corresponds to std::vector in C++
9110  */
9111 typedef struct LDKCVec_UpdateAddHTLCZ {
9112    /**
9113     * The elements in the array.
9114     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9115     */
9116    struct LDKUpdateAddHTLC *data;
9117    /**
9118     * The number of elements pointed to by `data`.
9119     */
9120    uintptr_t datalen;
9121 } LDKCVec_UpdateAddHTLCZ;
9122
9123
9124
9125 /**
9126  * An update_fulfill_htlc message to be sent or received from a peer
9127  */
9128 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
9129    /**
9130     * A pointer to the opaque Rust object.
9131     * Nearly everywhere, inner must be non-null, however in places where
9132     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9133     */
9134    LDKnativeUpdateFulfillHTLC *inner;
9135    /**
9136     * Indicates that this is the only struct which contains the same pointer.
9137     * Rust functions which take ownership of an object provided via an argument require
9138     * this to be true and invalidate the object pointed to by inner.
9139     */
9140    bool is_owned;
9141 } LDKUpdateFulfillHTLC;
9142
9143 /**
9144  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
9145  * This corresponds to std::vector in C++
9146  */
9147 typedef struct LDKCVec_UpdateFulfillHTLCZ {
9148    /**
9149     * The elements in the array.
9150     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9151     */
9152    struct LDKUpdateFulfillHTLC *data;
9153    /**
9154     * The number of elements pointed to by `data`.
9155     */
9156    uintptr_t datalen;
9157 } LDKCVec_UpdateFulfillHTLCZ;
9158
9159
9160
9161 /**
9162  * An update_fail_htlc message to be sent or received from a peer
9163  */
9164 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
9165    /**
9166     * A pointer to the opaque Rust object.
9167     * Nearly everywhere, inner must be non-null, however in places where
9168     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9169     */
9170    LDKnativeUpdateFailHTLC *inner;
9171    /**
9172     * Indicates that this is the only struct which contains the same pointer.
9173     * Rust functions which take ownership of an object provided via an argument require
9174     * this to be true and invalidate the object pointed to by inner.
9175     */
9176    bool is_owned;
9177 } LDKUpdateFailHTLC;
9178
9179 /**
9180  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailHTLCs of arbitrary size.
9181  * This corresponds to std::vector in C++
9182  */
9183 typedef struct LDKCVec_UpdateFailHTLCZ {
9184    /**
9185     * The elements in the array.
9186     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9187     */
9188    struct LDKUpdateFailHTLC *data;
9189    /**
9190     * The number of elements pointed to by `data`.
9191     */
9192    uintptr_t datalen;
9193 } LDKCVec_UpdateFailHTLCZ;
9194
9195
9196
9197 /**
9198  * An update_fail_malformed_htlc message to be sent or received from a peer
9199  */
9200 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
9201    /**
9202     * A pointer to the opaque Rust object.
9203     * Nearly everywhere, inner must be non-null, however in places where
9204     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9205     */
9206    LDKnativeUpdateFailMalformedHTLC *inner;
9207    /**
9208     * Indicates that this is the only struct which contains the same pointer.
9209     * Rust functions which take ownership of an object provided via an argument require
9210     * this to be true and invalidate the object pointed to by inner.
9211     */
9212    bool is_owned;
9213 } LDKUpdateFailMalformedHTLC;
9214
9215 /**
9216  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
9217  * This corresponds to std::vector in C++
9218  */
9219 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
9220    /**
9221     * The elements in the array.
9222     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9223     */
9224    struct LDKUpdateFailMalformedHTLC *data;
9225    /**
9226     * The number of elements pointed to by `data`.
9227     */
9228    uintptr_t datalen;
9229 } LDKCVec_UpdateFailMalformedHTLCZ;
9230
9231 /**
9232  * The contents of CResult_AcceptChannelDecodeErrorZ
9233  */
9234 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
9235    /**
9236     * A pointer to the contents in the success state.
9237     * Reading from this pointer when `result_ok` is not set is undefined.
9238     */
9239    struct LDKAcceptChannel *result;
9240    /**
9241     * A pointer to the contents in the error state.
9242     * Reading from this pointer when `result_ok` is set is undefined.
9243     */
9244    struct LDKDecodeError *err;
9245 } LDKCResult_AcceptChannelDecodeErrorZPtr;
9246
9247 /**
9248  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
9249  * containing a crate::lightning::ln::msgs::AcceptChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
9250  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9251  */
9252 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
9253    /**
9254     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
9255     * `err` or `result` depending on the state of `result_ok`.
9256     */
9257    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
9258    /**
9259     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
9260     */
9261    bool result_ok;
9262 } LDKCResult_AcceptChannelDecodeErrorZ;
9263
9264 /**
9265  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
9266  */
9267 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
9268    /**
9269     * A pointer to the contents in the success state.
9270     * Reading from this pointer when `result_ok` is not set is undefined.
9271     */
9272    struct LDKAnnouncementSignatures *result;
9273    /**
9274     * A pointer to the contents in the error state.
9275     * Reading from this pointer when `result_ok` is set is undefined.
9276     */
9277    struct LDKDecodeError *err;
9278 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
9279
9280 /**
9281  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
9282  * containing a crate::lightning::ln::msgs::AnnouncementSignatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
9283  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9284  */
9285 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
9286    /**
9287     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
9288     * `err` or `result` depending on the state of `result_ok`.
9289     */
9290    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
9291    /**
9292     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
9293     */
9294    bool result_ok;
9295 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
9296
9297 /**
9298  * The contents of CResult_ChannelReestablishDecodeErrorZ
9299  */
9300 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
9301    /**
9302     * A pointer to the contents in the success state.
9303     * Reading from this pointer when `result_ok` is not set is undefined.
9304     */
9305    struct LDKChannelReestablish *result;
9306    /**
9307     * A pointer to the contents in the error state.
9308     * Reading from this pointer when `result_ok` is set is undefined.
9309     */
9310    struct LDKDecodeError *err;
9311 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
9312
9313 /**
9314  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
9315  * containing a crate::lightning::ln::msgs::ChannelReestablish on success and a crate::lightning::ln::msgs::DecodeError on failure.
9316  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9317  */
9318 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
9319    /**
9320     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
9321     * `err` or `result` depending on the state of `result_ok`.
9322     */
9323    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
9324    /**
9325     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
9326     */
9327    bool result_ok;
9328 } LDKCResult_ChannelReestablishDecodeErrorZ;
9329
9330 /**
9331  * The contents of CResult_ClosingSignedDecodeErrorZ
9332  */
9333 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
9334    /**
9335     * A pointer to the contents in the success state.
9336     * Reading from this pointer when `result_ok` is not set is undefined.
9337     */
9338    struct LDKClosingSigned *result;
9339    /**
9340     * A pointer to the contents in the error state.
9341     * Reading from this pointer when `result_ok` is set is undefined.
9342     */
9343    struct LDKDecodeError *err;
9344 } LDKCResult_ClosingSignedDecodeErrorZPtr;
9345
9346 /**
9347  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
9348  * containing a crate::lightning::ln::msgs::ClosingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
9349  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9350  */
9351 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
9352    /**
9353     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
9354     * `err` or `result` depending on the state of `result_ok`.
9355     */
9356    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
9357    /**
9358     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
9359     */
9360    bool result_ok;
9361 } LDKCResult_ClosingSignedDecodeErrorZ;
9362
9363
9364
9365 /**
9366  * The minimum and maximum fees which the sender is willing to place on the closing transaction.
9367  * This is provided in [`ClosingSigned`] by both sides to indicate the fee range they are willing
9368  * to use.
9369  */
9370 typedef struct MUST_USE_STRUCT LDKClosingSignedFeeRange {
9371    /**
9372     * A pointer to the opaque Rust object.
9373     * Nearly everywhere, inner must be non-null, however in places where
9374     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9375     */
9376    LDKnativeClosingSignedFeeRange *inner;
9377    /**
9378     * Indicates that this is the only struct which contains the same pointer.
9379     * Rust functions which take ownership of an object provided via an argument require
9380     * this to be true and invalidate the object pointed to by inner.
9381     */
9382    bool is_owned;
9383 } LDKClosingSignedFeeRange;
9384
9385 /**
9386  * The contents of CResult_ClosingSignedFeeRangeDecodeErrorZ
9387  */
9388 typedef union LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr {
9389    /**
9390     * A pointer to the contents in the success state.
9391     * Reading from this pointer when `result_ok` is not set is undefined.
9392     */
9393    struct LDKClosingSignedFeeRange *result;
9394    /**
9395     * A pointer to the contents in the error state.
9396     * Reading from this pointer when `result_ok` is set is undefined.
9397     */
9398    struct LDKDecodeError *err;
9399 } LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr;
9400
9401 /**
9402  * A CResult_ClosingSignedFeeRangeDecodeErrorZ represents the result of a fallible operation,
9403  * containing a crate::lightning::ln::msgs::ClosingSignedFeeRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
9404  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9405  */
9406 typedef struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ {
9407    /**
9408     * The contents of this CResult_ClosingSignedFeeRangeDecodeErrorZ, accessible via either
9409     * `err` or `result` depending on the state of `result_ok`.
9410     */
9411    union LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr contents;
9412    /**
9413     * Whether this CResult_ClosingSignedFeeRangeDecodeErrorZ represents a success state.
9414     */
9415    bool result_ok;
9416 } LDKCResult_ClosingSignedFeeRangeDecodeErrorZ;
9417
9418
9419
9420 /**
9421  * A commitment_signed message to be sent or received from a peer
9422  */
9423 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
9424    /**
9425     * A pointer to the opaque Rust object.
9426     * Nearly everywhere, inner must be non-null, however in places where
9427     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9428     */
9429    LDKnativeCommitmentSigned *inner;
9430    /**
9431     * Indicates that this is the only struct which contains the same pointer.
9432     * Rust functions which take ownership of an object provided via an argument require
9433     * this to be true and invalidate the object pointed to by inner.
9434     */
9435    bool is_owned;
9436 } LDKCommitmentSigned;
9437
9438 /**
9439  * The contents of CResult_CommitmentSignedDecodeErrorZ
9440  */
9441 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
9442    /**
9443     * A pointer to the contents in the success state.
9444     * Reading from this pointer when `result_ok` is not set is undefined.
9445     */
9446    struct LDKCommitmentSigned *result;
9447    /**
9448     * A pointer to the contents in the error state.
9449     * Reading from this pointer when `result_ok` is set is undefined.
9450     */
9451    struct LDKDecodeError *err;
9452 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
9453
9454 /**
9455  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
9456  * containing a crate::lightning::ln::msgs::CommitmentSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
9457  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9458  */
9459 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
9460    /**
9461     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
9462     * `err` or `result` depending on the state of `result_ok`.
9463     */
9464    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
9465    /**
9466     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
9467     */
9468    bool result_ok;
9469 } LDKCResult_CommitmentSignedDecodeErrorZ;
9470
9471 /**
9472  * The contents of CResult_FundingCreatedDecodeErrorZ
9473  */
9474 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
9475    /**
9476     * A pointer to the contents in the success state.
9477     * Reading from this pointer when `result_ok` is not set is undefined.
9478     */
9479    struct LDKFundingCreated *result;
9480    /**
9481     * A pointer to the contents in the error state.
9482     * Reading from this pointer when `result_ok` is set is undefined.
9483     */
9484    struct LDKDecodeError *err;
9485 } LDKCResult_FundingCreatedDecodeErrorZPtr;
9486
9487 /**
9488  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
9489  * containing a crate::lightning::ln::msgs::FundingCreated on success and a crate::lightning::ln::msgs::DecodeError on failure.
9490  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9491  */
9492 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
9493    /**
9494     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
9495     * `err` or `result` depending on the state of `result_ok`.
9496     */
9497    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
9498    /**
9499     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
9500     */
9501    bool result_ok;
9502 } LDKCResult_FundingCreatedDecodeErrorZ;
9503
9504 /**
9505  * The contents of CResult_FundingSignedDecodeErrorZ
9506  */
9507 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
9508    /**
9509     * A pointer to the contents in the success state.
9510     * Reading from this pointer when `result_ok` is not set is undefined.
9511     */
9512    struct LDKFundingSigned *result;
9513    /**
9514     * A pointer to the contents in the error state.
9515     * Reading from this pointer when `result_ok` is set is undefined.
9516     */
9517    struct LDKDecodeError *err;
9518 } LDKCResult_FundingSignedDecodeErrorZPtr;
9519
9520 /**
9521  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
9522  * containing a crate::lightning::ln::msgs::FundingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
9523  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9524  */
9525 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
9526    /**
9527     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
9528     * `err` or `result` depending on the state of `result_ok`.
9529     */
9530    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
9531    /**
9532     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
9533     */
9534    bool result_ok;
9535 } LDKCResult_FundingSignedDecodeErrorZ;
9536
9537 /**
9538  * The contents of CResult_FundingLockedDecodeErrorZ
9539  */
9540 typedef union LDKCResult_FundingLockedDecodeErrorZPtr {
9541    /**
9542     * A pointer to the contents in the success state.
9543     * Reading from this pointer when `result_ok` is not set is undefined.
9544     */
9545    struct LDKFundingLocked *result;
9546    /**
9547     * A pointer to the contents in the error state.
9548     * Reading from this pointer when `result_ok` is set is undefined.
9549     */
9550    struct LDKDecodeError *err;
9551 } LDKCResult_FundingLockedDecodeErrorZPtr;
9552
9553 /**
9554  * A CResult_FundingLockedDecodeErrorZ represents the result of a fallible operation,
9555  * containing a crate::lightning::ln::msgs::FundingLocked on success and a crate::lightning::ln::msgs::DecodeError on failure.
9556  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9557  */
9558 typedef struct LDKCResult_FundingLockedDecodeErrorZ {
9559    /**
9560     * The contents of this CResult_FundingLockedDecodeErrorZ, accessible via either
9561     * `err` or `result` depending on the state of `result_ok`.
9562     */
9563    union LDKCResult_FundingLockedDecodeErrorZPtr contents;
9564    /**
9565     * Whether this CResult_FundingLockedDecodeErrorZ represents a success state.
9566     */
9567    bool result_ok;
9568 } LDKCResult_FundingLockedDecodeErrorZ;
9569
9570
9571
9572 /**
9573  * An init message to be sent or received from a peer
9574  */
9575 typedef struct MUST_USE_STRUCT LDKInit {
9576    /**
9577     * A pointer to the opaque Rust object.
9578     * Nearly everywhere, inner must be non-null, however in places where
9579     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9580     */
9581    LDKnativeInit *inner;
9582    /**
9583     * Indicates that this is the only struct which contains the same pointer.
9584     * Rust functions which take ownership of an object provided via an argument require
9585     * this to be true and invalidate the object pointed to by inner.
9586     */
9587    bool is_owned;
9588 } LDKInit;
9589
9590 /**
9591  * The contents of CResult_InitDecodeErrorZ
9592  */
9593 typedef union LDKCResult_InitDecodeErrorZPtr {
9594    /**
9595     * A pointer to the contents in the success state.
9596     * Reading from this pointer when `result_ok` is not set is undefined.
9597     */
9598    struct LDKInit *result;
9599    /**
9600     * A pointer to the contents in the error state.
9601     * Reading from this pointer when `result_ok` is set is undefined.
9602     */
9603    struct LDKDecodeError *err;
9604 } LDKCResult_InitDecodeErrorZPtr;
9605
9606 /**
9607  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
9608  * containing a crate::lightning::ln::msgs::Init on success and a crate::lightning::ln::msgs::DecodeError on failure.
9609  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9610  */
9611 typedef struct LDKCResult_InitDecodeErrorZ {
9612    /**
9613     * The contents of this CResult_InitDecodeErrorZ, accessible via either
9614     * `err` or `result` depending on the state of `result_ok`.
9615     */
9616    union LDKCResult_InitDecodeErrorZPtr contents;
9617    /**
9618     * Whether this CResult_InitDecodeErrorZ represents a success state.
9619     */
9620    bool result_ok;
9621 } LDKCResult_InitDecodeErrorZ;
9622
9623 /**
9624  * The contents of CResult_OpenChannelDecodeErrorZ
9625  */
9626 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
9627    /**
9628     * A pointer to the contents in the success state.
9629     * Reading from this pointer when `result_ok` is not set is undefined.
9630     */
9631    struct LDKOpenChannel *result;
9632    /**
9633     * A pointer to the contents in the error state.
9634     * Reading from this pointer when `result_ok` is set is undefined.
9635     */
9636    struct LDKDecodeError *err;
9637 } LDKCResult_OpenChannelDecodeErrorZPtr;
9638
9639 /**
9640  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
9641  * containing a crate::lightning::ln::msgs::OpenChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
9642  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9643  */
9644 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
9645    /**
9646     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
9647     * `err` or `result` depending on the state of `result_ok`.
9648     */
9649    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
9650    /**
9651     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
9652     */
9653    bool result_ok;
9654 } LDKCResult_OpenChannelDecodeErrorZ;
9655
9656 /**
9657  * The contents of CResult_RevokeAndACKDecodeErrorZ
9658  */
9659 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
9660    /**
9661     * A pointer to the contents in the success state.
9662     * Reading from this pointer when `result_ok` is not set is undefined.
9663     */
9664    struct LDKRevokeAndACK *result;
9665    /**
9666     * A pointer to the contents in the error state.
9667     * Reading from this pointer when `result_ok` is set is undefined.
9668     */
9669    struct LDKDecodeError *err;
9670 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
9671
9672 /**
9673  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
9674  * containing a crate::lightning::ln::msgs::RevokeAndACK on success and a crate::lightning::ln::msgs::DecodeError on failure.
9675  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9676  */
9677 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
9678    /**
9679     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
9680     * `err` or `result` depending on the state of `result_ok`.
9681     */
9682    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
9683    /**
9684     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
9685     */
9686    bool result_ok;
9687 } LDKCResult_RevokeAndACKDecodeErrorZ;
9688
9689 /**
9690  * The contents of CResult_ShutdownDecodeErrorZ
9691  */
9692 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
9693    /**
9694     * A pointer to the contents in the success state.
9695     * Reading from this pointer when `result_ok` is not set is undefined.
9696     */
9697    struct LDKShutdown *result;
9698    /**
9699     * A pointer to the contents in the error state.
9700     * Reading from this pointer when `result_ok` is set is undefined.
9701     */
9702    struct LDKDecodeError *err;
9703 } LDKCResult_ShutdownDecodeErrorZPtr;
9704
9705 /**
9706  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
9707  * containing a crate::lightning::ln::msgs::Shutdown on success and a crate::lightning::ln::msgs::DecodeError on failure.
9708  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9709  */
9710 typedef struct LDKCResult_ShutdownDecodeErrorZ {
9711    /**
9712     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
9713     * `err` or `result` depending on the state of `result_ok`.
9714     */
9715    union LDKCResult_ShutdownDecodeErrorZPtr contents;
9716    /**
9717     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
9718     */
9719    bool result_ok;
9720 } LDKCResult_ShutdownDecodeErrorZ;
9721
9722 /**
9723  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
9724  */
9725 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
9726    /**
9727     * A pointer to the contents in the success state.
9728     * Reading from this pointer when `result_ok` is not set is undefined.
9729     */
9730    struct LDKUpdateFailHTLC *result;
9731    /**
9732     * A pointer to the contents in the error state.
9733     * Reading from this pointer when `result_ok` is set is undefined.
9734     */
9735    struct LDKDecodeError *err;
9736 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
9737
9738 /**
9739  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
9740  * containing a crate::lightning::ln::msgs::UpdateFailHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9741  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9742  */
9743 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
9744    /**
9745     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
9746     * `err` or `result` depending on the state of `result_ok`.
9747     */
9748    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
9749    /**
9750     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
9751     */
9752    bool result_ok;
9753 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
9754
9755 /**
9756  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
9757  */
9758 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
9759    /**
9760     * A pointer to the contents in the success state.
9761     * Reading from this pointer when `result_ok` is not set is undefined.
9762     */
9763    struct LDKUpdateFailMalformedHTLC *result;
9764    /**
9765     * A pointer to the contents in the error state.
9766     * Reading from this pointer when `result_ok` is set is undefined.
9767     */
9768    struct LDKDecodeError *err;
9769 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
9770
9771 /**
9772  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
9773  * containing a crate::lightning::ln::msgs::UpdateFailMalformedHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9774  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9775  */
9776 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
9777    /**
9778     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
9779     * `err` or `result` depending on the state of `result_ok`.
9780     */
9781    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
9782    /**
9783     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
9784     */
9785    bool result_ok;
9786 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
9787
9788
9789
9790 /**
9791  * An update_fee message to be sent or received from a peer
9792  */
9793 typedef struct MUST_USE_STRUCT LDKUpdateFee {
9794    /**
9795     * A pointer to the opaque Rust object.
9796     * Nearly everywhere, inner must be non-null, however in places where
9797     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9798     */
9799    LDKnativeUpdateFee *inner;
9800    /**
9801     * Indicates that this is the only struct which contains the same pointer.
9802     * Rust functions which take ownership of an object provided via an argument require
9803     * this to be true and invalidate the object pointed to by inner.
9804     */
9805    bool is_owned;
9806 } LDKUpdateFee;
9807
9808 /**
9809  * The contents of CResult_UpdateFeeDecodeErrorZ
9810  */
9811 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
9812    /**
9813     * A pointer to the contents in the success state.
9814     * Reading from this pointer when `result_ok` is not set is undefined.
9815     */
9816    struct LDKUpdateFee *result;
9817    /**
9818     * A pointer to the contents in the error state.
9819     * Reading from this pointer when `result_ok` is set is undefined.
9820     */
9821    struct LDKDecodeError *err;
9822 } LDKCResult_UpdateFeeDecodeErrorZPtr;
9823
9824 /**
9825  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
9826  * containing a crate::lightning::ln::msgs::UpdateFee on success and a crate::lightning::ln::msgs::DecodeError on failure.
9827  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9828  */
9829 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
9830    /**
9831     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
9832     * `err` or `result` depending on the state of `result_ok`.
9833     */
9834    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
9835    /**
9836     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
9837     */
9838    bool result_ok;
9839 } LDKCResult_UpdateFeeDecodeErrorZ;
9840
9841 /**
9842  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
9843  */
9844 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
9845    /**
9846     * A pointer to the contents in the success state.
9847     * Reading from this pointer when `result_ok` is not set is undefined.
9848     */
9849    struct LDKUpdateFulfillHTLC *result;
9850    /**
9851     * A pointer to the contents in the error state.
9852     * Reading from this pointer when `result_ok` is set is undefined.
9853     */
9854    struct LDKDecodeError *err;
9855 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
9856
9857 /**
9858  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
9859  * containing a crate::lightning::ln::msgs::UpdateFulfillHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9860  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9861  */
9862 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
9863    /**
9864     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
9865     * `err` or `result` depending on the state of `result_ok`.
9866     */
9867    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
9868    /**
9869     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
9870     */
9871    bool result_ok;
9872 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
9873
9874 /**
9875  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
9876  */
9877 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
9878    /**
9879     * A pointer to the contents in the success state.
9880     * Reading from this pointer when `result_ok` is not set is undefined.
9881     */
9882    struct LDKUpdateAddHTLC *result;
9883    /**
9884     * A pointer to the contents in the error state.
9885     * Reading from this pointer when `result_ok` is set is undefined.
9886     */
9887    struct LDKDecodeError *err;
9888 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
9889
9890 /**
9891  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
9892  * containing a crate::lightning::ln::msgs::UpdateAddHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9893  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9894  */
9895 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
9896    /**
9897     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
9898     * `err` or `result` depending on the state of `result_ok`.
9899     */
9900    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
9901    /**
9902     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
9903     */
9904    bool result_ok;
9905 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
9906
9907
9908
9909 /**
9910  * A ping message to be sent or received from a peer
9911  */
9912 typedef struct MUST_USE_STRUCT LDKPing {
9913    /**
9914     * A pointer to the opaque Rust object.
9915     * Nearly everywhere, inner must be non-null, however in places where
9916     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9917     */
9918    LDKnativePing *inner;
9919    /**
9920     * Indicates that this is the only struct which contains the same pointer.
9921     * Rust functions which take ownership of an object provided via an argument require
9922     * this to be true and invalidate the object pointed to by inner.
9923     */
9924    bool is_owned;
9925 } LDKPing;
9926
9927 /**
9928  * The contents of CResult_PingDecodeErrorZ
9929  */
9930 typedef union LDKCResult_PingDecodeErrorZPtr {
9931    /**
9932     * A pointer to the contents in the success state.
9933     * Reading from this pointer when `result_ok` is not set is undefined.
9934     */
9935    struct LDKPing *result;
9936    /**
9937     * A pointer to the contents in the error state.
9938     * Reading from this pointer when `result_ok` is set is undefined.
9939     */
9940    struct LDKDecodeError *err;
9941 } LDKCResult_PingDecodeErrorZPtr;
9942
9943 /**
9944  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
9945  * containing a crate::lightning::ln::msgs::Ping on success and a crate::lightning::ln::msgs::DecodeError on failure.
9946  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9947  */
9948 typedef struct LDKCResult_PingDecodeErrorZ {
9949    /**
9950     * The contents of this CResult_PingDecodeErrorZ, accessible via either
9951     * `err` or `result` depending on the state of `result_ok`.
9952     */
9953    union LDKCResult_PingDecodeErrorZPtr contents;
9954    /**
9955     * Whether this CResult_PingDecodeErrorZ represents a success state.
9956     */
9957    bool result_ok;
9958 } LDKCResult_PingDecodeErrorZ;
9959
9960
9961
9962 /**
9963  * A pong message to be sent or received from a peer
9964  */
9965 typedef struct MUST_USE_STRUCT LDKPong {
9966    /**
9967     * A pointer to the opaque Rust object.
9968     * Nearly everywhere, inner must be non-null, however in places where
9969     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9970     */
9971    LDKnativePong *inner;
9972    /**
9973     * Indicates that this is the only struct which contains the same pointer.
9974     * Rust functions which take ownership of an object provided via an argument require
9975     * this to be true and invalidate the object pointed to by inner.
9976     */
9977    bool is_owned;
9978 } LDKPong;
9979
9980 /**
9981  * The contents of CResult_PongDecodeErrorZ
9982  */
9983 typedef union LDKCResult_PongDecodeErrorZPtr {
9984    /**
9985     * A pointer to the contents in the success state.
9986     * Reading from this pointer when `result_ok` is not set is undefined.
9987     */
9988    struct LDKPong *result;
9989    /**
9990     * A pointer to the contents in the error state.
9991     * Reading from this pointer when `result_ok` is set is undefined.
9992     */
9993    struct LDKDecodeError *err;
9994 } LDKCResult_PongDecodeErrorZPtr;
9995
9996 /**
9997  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
9998  * containing a crate::lightning::ln::msgs::Pong on success and a crate::lightning::ln::msgs::DecodeError on failure.
9999  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10000  */
10001 typedef struct LDKCResult_PongDecodeErrorZ {
10002    /**
10003     * The contents of this CResult_PongDecodeErrorZ, accessible via either
10004     * `err` or `result` depending on the state of `result_ok`.
10005     */
10006    union LDKCResult_PongDecodeErrorZPtr contents;
10007    /**
10008     * Whether this CResult_PongDecodeErrorZ represents a success state.
10009     */
10010    bool result_ok;
10011 } LDKCResult_PongDecodeErrorZ;
10012
10013 /**
10014  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
10015  */
10016 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
10017    /**
10018     * A pointer to the contents in the success state.
10019     * Reading from this pointer when `result_ok` is not set is undefined.
10020     */
10021    struct LDKUnsignedChannelAnnouncement *result;
10022    /**
10023     * A pointer to the contents in the error state.
10024     * Reading from this pointer when `result_ok` is set is undefined.
10025     */
10026    struct LDKDecodeError *err;
10027 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
10028
10029 /**
10030  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
10031  * containing a crate::lightning::ln::msgs::UnsignedChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
10032  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10033  */
10034 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
10035    /**
10036     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
10037     * `err` or `result` depending on the state of `result_ok`.
10038     */
10039    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
10040    /**
10041     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
10042     */
10043    bool result_ok;
10044 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
10045
10046 /**
10047  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
10048  */
10049 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
10050    /**
10051     * A pointer to the contents in the success state.
10052     * Reading from this pointer when `result_ok` is not set is undefined.
10053     */
10054    struct LDKChannelAnnouncement *result;
10055    /**
10056     * A pointer to the contents in the error state.
10057     * Reading from this pointer when `result_ok` is set is undefined.
10058     */
10059    struct LDKDecodeError *err;
10060 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
10061
10062 /**
10063  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
10064  * containing a crate::lightning::ln::msgs::ChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
10065  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10066  */
10067 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
10068    /**
10069     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
10070     * `err` or `result` depending on the state of `result_ok`.
10071     */
10072    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
10073    /**
10074     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
10075     */
10076    bool result_ok;
10077 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
10078
10079
10080
10081 /**
10082  * The unsigned part of a channel_update
10083  */
10084 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
10085    /**
10086     * A pointer to the opaque Rust object.
10087     * Nearly everywhere, inner must be non-null, however in places where
10088     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10089     */
10090    LDKnativeUnsignedChannelUpdate *inner;
10091    /**
10092     * Indicates that this is the only struct which contains the same pointer.
10093     * Rust functions which take ownership of an object provided via an argument require
10094     * this to be true and invalidate the object pointed to by inner.
10095     */
10096    bool is_owned;
10097 } LDKUnsignedChannelUpdate;
10098
10099 /**
10100  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
10101  */
10102 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
10103    /**
10104     * A pointer to the contents in the success state.
10105     * Reading from this pointer when `result_ok` is not set is undefined.
10106     */
10107    struct LDKUnsignedChannelUpdate *result;
10108    /**
10109     * A pointer to the contents in the error state.
10110     * Reading from this pointer when `result_ok` is set is undefined.
10111     */
10112    struct LDKDecodeError *err;
10113 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
10114
10115 /**
10116  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
10117  * containing a crate::lightning::ln::msgs::UnsignedChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
10118  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10119  */
10120 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
10121    /**
10122     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
10123     * `err` or `result` depending on the state of `result_ok`.
10124     */
10125    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
10126    /**
10127     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
10128     */
10129    bool result_ok;
10130 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
10131
10132 /**
10133  * The contents of CResult_ChannelUpdateDecodeErrorZ
10134  */
10135 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
10136    /**
10137     * A pointer to the contents in the success state.
10138     * Reading from this pointer when `result_ok` is not set is undefined.
10139     */
10140    struct LDKChannelUpdate *result;
10141    /**
10142     * A pointer to the contents in the error state.
10143     * Reading from this pointer when `result_ok` is set is undefined.
10144     */
10145    struct LDKDecodeError *err;
10146 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
10147
10148 /**
10149  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
10150  * containing a crate::lightning::ln::msgs::ChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
10151  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10152  */
10153 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
10154    /**
10155     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
10156     * `err` or `result` depending on the state of `result_ok`.
10157     */
10158    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
10159    /**
10160     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
10161     */
10162    bool result_ok;
10163 } LDKCResult_ChannelUpdateDecodeErrorZ;
10164
10165 /**
10166  * The contents of CResult_ErrorMessageDecodeErrorZ
10167  */
10168 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
10169    /**
10170     * A pointer to the contents in the success state.
10171     * Reading from this pointer when `result_ok` is not set is undefined.
10172     */
10173    struct LDKErrorMessage *result;
10174    /**
10175     * A pointer to the contents in the error state.
10176     * Reading from this pointer when `result_ok` is set is undefined.
10177     */
10178    struct LDKDecodeError *err;
10179 } LDKCResult_ErrorMessageDecodeErrorZPtr;
10180
10181 /**
10182  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
10183  * containing a crate::lightning::ln::msgs::ErrorMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
10184  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10185  */
10186 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
10187    /**
10188     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
10189     * `err` or `result` depending on the state of `result_ok`.
10190     */
10191    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
10192    /**
10193     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
10194     */
10195    bool result_ok;
10196 } LDKCResult_ErrorMessageDecodeErrorZ;
10197
10198 /**
10199  * The contents of CResult_WarningMessageDecodeErrorZ
10200  */
10201 typedef union LDKCResult_WarningMessageDecodeErrorZPtr {
10202    /**
10203     * A pointer to the contents in the success state.
10204     * Reading from this pointer when `result_ok` is not set is undefined.
10205     */
10206    struct LDKWarningMessage *result;
10207    /**
10208     * A pointer to the contents in the error state.
10209     * Reading from this pointer when `result_ok` is set is undefined.
10210     */
10211    struct LDKDecodeError *err;
10212 } LDKCResult_WarningMessageDecodeErrorZPtr;
10213
10214 /**
10215  * A CResult_WarningMessageDecodeErrorZ represents the result of a fallible operation,
10216  * containing a crate::lightning::ln::msgs::WarningMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
10217  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10218  */
10219 typedef struct LDKCResult_WarningMessageDecodeErrorZ {
10220    /**
10221     * The contents of this CResult_WarningMessageDecodeErrorZ, accessible via either
10222     * `err` or `result` depending on the state of `result_ok`.
10223     */
10224    union LDKCResult_WarningMessageDecodeErrorZPtr contents;
10225    /**
10226     * Whether this CResult_WarningMessageDecodeErrorZ represents a success state.
10227     */
10228    bool result_ok;
10229 } LDKCResult_WarningMessageDecodeErrorZ;
10230
10231
10232
10233 /**
10234  * The unsigned part of a node_announcement
10235  */
10236 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
10237    /**
10238     * A pointer to the opaque Rust object.
10239     * Nearly everywhere, inner must be non-null, however in places where
10240     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10241     */
10242    LDKnativeUnsignedNodeAnnouncement *inner;
10243    /**
10244     * Indicates that this is the only struct which contains the same pointer.
10245     * Rust functions which take ownership of an object provided via an argument require
10246     * this to be true and invalidate the object pointed to by inner.
10247     */
10248    bool is_owned;
10249 } LDKUnsignedNodeAnnouncement;
10250
10251 /**
10252  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
10253  */
10254 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
10255    /**
10256     * A pointer to the contents in the success state.
10257     * Reading from this pointer when `result_ok` is not set is undefined.
10258     */
10259    struct LDKUnsignedNodeAnnouncement *result;
10260    /**
10261     * A pointer to the contents in the error state.
10262     * Reading from this pointer when `result_ok` is set is undefined.
10263     */
10264    struct LDKDecodeError *err;
10265 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
10266
10267 /**
10268  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
10269  * containing a crate::lightning::ln::msgs::UnsignedNodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
10270  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10271  */
10272 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
10273    /**
10274     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
10275     * `err` or `result` depending on the state of `result_ok`.
10276     */
10277    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
10278    /**
10279     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
10280     */
10281    bool result_ok;
10282 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
10283
10284 /**
10285  * The contents of CResult_NodeAnnouncementDecodeErrorZ
10286  */
10287 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
10288    /**
10289     * A pointer to the contents in the success state.
10290     * Reading from this pointer when `result_ok` is not set is undefined.
10291     */
10292    struct LDKNodeAnnouncement *result;
10293    /**
10294     * A pointer to the contents in the error state.
10295     * Reading from this pointer when `result_ok` is set is undefined.
10296     */
10297    struct LDKDecodeError *err;
10298 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
10299
10300 /**
10301  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
10302  * containing a crate::lightning::ln::msgs::NodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
10303  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10304  */
10305 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
10306    /**
10307     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
10308     * `err` or `result` depending on the state of `result_ok`.
10309     */
10310    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
10311    /**
10312     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
10313     */
10314    bool result_ok;
10315 } LDKCResult_NodeAnnouncementDecodeErrorZ;
10316
10317 /**
10318  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
10319  */
10320 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
10321    /**
10322     * A pointer to the contents in the success state.
10323     * Reading from this pointer when `result_ok` is not set is undefined.
10324     */
10325    struct LDKQueryShortChannelIds *result;
10326    /**
10327     * A pointer to the contents in the error state.
10328     * Reading from this pointer when `result_ok` is set is undefined.
10329     */
10330    struct LDKDecodeError *err;
10331 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
10332
10333 /**
10334  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
10335  * containing a crate::lightning::ln::msgs::QueryShortChannelIds on success and a crate::lightning::ln::msgs::DecodeError on failure.
10336  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10337  */
10338 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
10339    /**
10340     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
10341     * `err` or `result` depending on the state of `result_ok`.
10342     */
10343    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
10344    /**
10345     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
10346     */
10347    bool result_ok;
10348 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
10349
10350
10351
10352 /**
10353  * A reply_short_channel_ids_end message is sent as a reply to a
10354  * query_short_channel_ids message. The query recipient makes a best
10355  * effort to respond based on their local network view which may not be
10356  * a perfect view of the network.
10357  */
10358 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
10359    /**
10360     * A pointer to the opaque Rust object.
10361     * Nearly everywhere, inner must be non-null, however in places where
10362     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10363     */
10364    LDKnativeReplyShortChannelIdsEnd *inner;
10365    /**
10366     * Indicates that this is the only struct which contains the same pointer.
10367     * Rust functions which take ownership of an object provided via an argument require
10368     * this to be true and invalidate the object pointed to by inner.
10369     */
10370    bool is_owned;
10371 } LDKReplyShortChannelIdsEnd;
10372
10373 /**
10374  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
10375  */
10376 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
10377    /**
10378     * A pointer to the contents in the success state.
10379     * Reading from this pointer when `result_ok` is not set is undefined.
10380     */
10381    struct LDKReplyShortChannelIdsEnd *result;
10382    /**
10383     * A pointer to the contents in the error state.
10384     * Reading from this pointer when `result_ok` is set is undefined.
10385     */
10386    struct LDKDecodeError *err;
10387 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
10388
10389 /**
10390  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
10391  * containing a crate::lightning::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::lightning::ln::msgs::DecodeError on failure.
10392  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10393  */
10394 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
10395    /**
10396     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
10397     * `err` or `result` depending on the state of `result_ok`.
10398     */
10399    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
10400    /**
10401     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
10402     */
10403    bool result_ok;
10404 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
10405
10406 /**
10407  * The contents of CResult_QueryChannelRangeDecodeErrorZ
10408  */
10409 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
10410    /**
10411     * A pointer to the contents in the success state.
10412     * Reading from this pointer when `result_ok` is not set is undefined.
10413     */
10414    struct LDKQueryChannelRange *result;
10415    /**
10416     * A pointer to the contents in the error state.
10417     * Reading from this pointer when `result_ok` is set is undefined.
10418     */
10419    struct LDKDecodeError *err;
10420 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
10421
10422 /**
10423  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
10424  * containing a crate::lightning::ln::msgs::QueryChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
10425  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10426  */
10427 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
10428    /**
10429     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
10430     * `err` or `result` depending on the state of `result_ok`.
10431     */
10432    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
10433    /**
10434     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
10435     */
10436    bool result_ok;
10437 } LDKCResult_QueryChannelRangeDecodeErrorZ;
10438
10439 /**
10440  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
10441  */
10442 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
10443    /**
10444     * A pointer to the contents in the success state.
10445     * Reading from this pointer when `result_ok` is not set is undefined.
10446     */
10447    struct LDKReplyChannelRange *result;
10448    /**
10449     * A pointer to the contents in the error state.
10450     * Reading from this pointer when `result_ok` is set is undefined.
10451     */
10452    struct LDKDecodeError *err;
10453 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
10454
10455 /**
10456  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
10457  * containing a crate::lightning::ln::msgs::ReplyChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
10458  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10459  */
10460 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
10461    /**
10462     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
10463     * `err` or `result` depending on the state of `result_ok`.
10464     */
10465    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
10466    /**
10467     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
10468     */
10469    bool result_ok;
10470 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
10471
10472 /**
10473  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
10474  */
10475 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
10476    /**
10477     * A pointer to the contents in the success state.
10478     * Reading from this pointer when `result_ok` is not set is undefined.
10479     */
10480    struct LDKGossipTimestampFilter *result;
10481    /**
10482     * A pointer to the contents in the error state.
10483     * Reading from this pointer when `result_ok` is set is undefined.
10484     */
10485    struct LDKDecodeError *err;
10486 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
10487
10488 /**
10489  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
10490  * containing a crate::lightning::ln::msgs::GossipTimestampFilter on success and a crate::lightning::ln::msgs::DecodeError on failure.
10491  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10492  */
10493 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
10494    /**
10495     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
10496     * `err` or `result` depending on the state of `result_ok`.
10497     */
10498    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
10499    /**
10500     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
10501     */
10502    bool result_ok;
10503 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
10504
10505 /**
10506  * A dynamically-allocated array of crate::lightning::ln::channelmanager::PhantomRouteHintss of arbitrary size.
10507  * This corresponds to std::vector in C++
10508  */
10509 typedef struct LDKCVec_PhantomRouteHintsZ {
10510    /**
10511     * The elements in the array.
10512     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10513     */
10514    struct LDKPhantomRouteHints *data;
10515    /**
10516     * The number of elements pointed to by `data`.
10517     */
10518    uintptr_t datalen;
10519 } LDKCVec_PhantomRouteHintsZ;
10520
10521 /**
10522  * When signing using a fallible method either an user-supplied `SignError` or a `CreationError`
10523  * may occur.
10524  */
10525 typedef enum LDKSignOrCreationError_Tag {
10526    /**
10527     * An error occurred during signing
10528     */
10529    LDKSignOrCreationError_SignError,
10530    /**
10531     * An error occurred while building the transaction
10532     */
10533    LDKSignOrCreationError_CreationError,
10534    /**
10535     * Must be last for serialization purposes
10536     */
10537    LDKSignOrCreationError_Sentinel,
10538 } LDKSignOrCreationError_Tag;
10539
10540 typedef struct MUST_USE_STRUCT LDKSignOrCreationError {
10541    LDKSignOrCreationError_Tag tag;
10542    union {
10543       struct {
10544          enum LDKCreationError creation_error;
10545       };
10546    };
10547 } LDKSignOrCreationError;
10548
10549 /**
10550  * The contents of CResult_InvoiceSignOrCreationErrorZ
10551  */
10552 typedef union LDKCResult_InvoiceSignOrCreationErrorZPtr {
10553    /**
10554     * A pointer to the contents in the success state.
10555     * Reading from this pointer when `result_ok` is not set is undefined.
10556     */
10557    struct LDKInvoice *result;
10558    /**
10559     * A pointer to the contents in the error state.
10560     * Reading from this pointer when `result_ok` is set is undefined.
10561     */
10562    struct LDKSignOrCreationError *err;
10563 } LDKCResult_InvoiceSignOrCreationErrorZPtr;
10564
10565 /**
10566  * A CResult_InvoiceSignOrCreationErrorZ represents the result of a fallible operation,
10567  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SignOrCreationError on failure.
10568  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10569  */
10570 typedef struct LDKCResult_InvoiceSignOrCreationErrorZ {
10571    /**
10572     * The contents of this CResult_InvoiceSignOrCreationErrorZ, accessible via either
10573     * `err` or `result` depending on the state of `result_ok`.
10574     */
10575    union LDKCResult_InvoiceSignOrCreationErrorZPtr contents;
10576    /**
10577     * Whether this CResult_InvoiceSignOrCreationErrorZ represents a success state.
10578     */
10579    bool result_ok;
10580 } LDKCResult_InvoiceSignOrCreationErrorZ;
10581
10582
10583
10584 /**
10585  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
10586  *
10587  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
10588  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
10589  * the return value of [`Filter::register_output`].
10590  *
10591  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
10592  * may have been spent there. See [`Filter::register_output`] for details.
10593  *
10594  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
10595  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
10596  */
10597 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
10598    /**
10599     * A pointer to the opaque Rust object.
10600     * Nearly everywhere, inner must be non-null, however in places where
10601     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10602     */
10603    LDKnativeWatchedOutput *inner;
10604    /**
10605     * Indicates that this is the only struct which contains the same pointer.
10606     * Rust functions which take ownership of an object provided via an argument require
10607     * this to be true and invalidate the object pointed to by inner.
10608     */
10609    bool is_owned;
10610 } LDKWatchedOutput;
10611
10612 /**
10613  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
10614  * channels.
10615  *
10616  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
10617  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
10618  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
10619  * receiving full blocks from a chain source, any further filtering is unnecessary.
10620  *
10621  * After an output has been registered, subsequent block retrievals from the chain source must not
10622  * exclude any transactions matching the new criteria nor any in-block descendants of such
10623  * transactions.
10624  *
10625  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
10626  * should not block on I/O. Implementations should instead queue the newly monitored data to be
10627  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
10628  * invocation that has called the `Filter` must return [`TemporaryFailure`].
10629  *
10630  * [`TemporaryFailure`]: ChannelMonitorUpdateErr::TemporaryFailure
10631  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
10632  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
10633  */
10634 typedef struct LDKFilter {
10635    /**
10636     * An opaque pointer which is passed to your function implementations as an argument.
10637     * This has no meaning in the LDK, and can be NULL or any other value.
10638     */
10639    void *this_arg;
10640    /**
10641     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
10642     * a spending condition.
10643     */
10644    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
10645    /**
10646     * Registers interest in spends of a transaction output.
10647     *
10648     * Optionally, when `output.block_hash` is set, should return any transaction spending the
10649     * output that is found in the corresponding block along with its index.
10650     *
10651     * This return value is useful for Electrum clients in order to supply in-block descendant
10652     * transactions which otherwise were not included. This is not necessary for other clients if
10653     * such descendant transactions were already included (e.g., when a BIP 157 client provides the
10654     * full block).
10655     */
10656    struct LDKCOption_C2Tuple_usizeTransactionZZ (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
10657    /**
10658     * Frees any resources associated with this object given its this_arg pointer.
10659     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10660     */
10661    void (*free)(void *this_arg);
10662 } LDKFilter;
10663
10664 /**
10665  * An enum which can either contain a crate::lightning::chain::Filter or not
10666  */
10667 typedef enum LDKCOption_FilterZ_Tag {
10668    /**
10669     * When we're in this state, this COption_FilterZ contains a crate::lightning::chain::Filter
10670     */
10671    LDKCOption_FilterZ_Some,
10672    /**
10673     * When we're in this state, this COption_FilterZ contains nothing
10674     */
10675    LDKCOption_FilterZ_None,
10676    /**
10677     * Must be last for serialization purposes
10678     */
10679    LDKCOption_FilterZ_Sentinel,
10680 } LDKCOption_FilterZ_Tag;
10681
10682 typedef struct LDKCOption_FilterZ {
10683    LDKCOption_FilterZ_Tag tag;
10684    union {
10685       struct {
10686          struct LDKFilter some;
10687       };
10688    };
10689 } LDKCOption_FilterZ;
10690
10691
10692
10693 /**
10694  * A read-only reference to a current ChannelMonitor.
10695  *
10696  * Note that this holds a mutex in [`ChainMonitor`] and may block other events until it is
10697  * released.
10698  */
10699 typedef struct MUST_USE_STRUCT LDKLockedChannelMonitor {
10700    /**
10701     * A pointer to the opaque Rust object.
10702     * Nearly everywhere, inner must be non-null, however in places where
10703     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10704     */
10705    LDKnativeLockedChannelMonitor *inner;
10706    /**
10707     * Indicates that this is the only struct which contains the same pointer.
10708     * Rust functions which take ownership of an object provided via an argument require
10709     * this to be true and invalidate the object pointed to by inner.
10710     */
10711    bool is_owned;
10712 } LDKLockedChannelMonitor;
10713
10714 /**
10715  * The contents of CResult_LockedChannelMonitorNoneZ
10716  */
10717 typedef union LDKCResult_LockedChannelMonitorNoneZPtr {
10718    /**
10719     * A pointer to the contents in the success state.
10720     * Reading from this pointer when `result_ok` is not set is undefined.
10721     */
10722    struct LDKLockedChannelMonitor *result;
10723    /**
10724     * Note that this value is always NULL, as there are no contents in the Err variant
10725     */
10726    void *err;
10727 } LDKCResult_LockedChannelMonitorNoneZPtr;
10728
10729 /**
10730  * A CResult_LockedChannelMonitorNoneZ represents the result of a fallible operation,
10731  * containing a crate::lightning::chain::chainmonitor::LockedChannelMonitor on success and a () on failure.
10732  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10733  */
10734 typedef struct LDKCResult_LockedChannelMonitorNoneZ {
10735    /**
10736     * The contents of this CResult_LockedChannelMonitorNoneZ, accessible via either
10737     * `err` or `result` depending on the state of `result_ok`.
10738     */
10739    union LDKCResult_LockedChannelMonitorNoneZPtr contents;
10740    /**
10741     * Whether this CResult_LockedChannelMonitorNoneZ represents a success state.
10742     */
10743    bool result_ok;
10744 } LDKCResult_LockedChannelMonitorNoneZ;
10745
10746 /**
10747  * A dynamically-allocated array of crate::lightning::chain::transaction::OutPoints of arbitrary size.
10748  * This corresponds to std::vector in C++
10749  */
10750 typedef struct LDKCVec_OutPointZ {
10751    /**
10752     * The elements in the array.
10753     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10754     */
10755    struct LDKOutPoint *data;
10756    /**
10757     * The number of elements pointed to by `data`.
10758     */
10759    uintptr_t datalen;
10760 } LDKCVec_OutPointZ;
10761
10762 /**
10763  * A trait indicating an object may generate message send events
10764  */
10765 typedef struct LDKMessageSendEventsProvider {
10766    /**
10767     * An opaque pointer which is passed to your function implementations as an argument.
10768     * This has no meaning in the LDK, and can be NULL or any other value.
10769     */
10770    void *this_arg;
10771    /**
10772     * Gets the list of pending events which were generated by previous actions, clearing the list
10773     * in the process.
10774     */
10775    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
10776    /**
10777     * Frees any resources associated with this object given its this_arg pointer.
10778     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10779     */
10780    void (*free)(void *this_arg);
10781 } LDKMessageSendEventsProvider;
10782
10783 /**
10784  * A trait implemented for objects handling events from [`EventsProvider`].
10785  */
10786 typedef struct LDKEventHandler {
10787    /**
10788     * An opaque pointer which is passed to your function implementations as an argument.
10789     * This has no meaning in the LDK, and can be NULL or any other value.
10790     */
10791    void *this_arg;
10792    /**
10793     * Handles the given [`Event`].
10794     *
10795     * See [`EventsProvider`] for details that must be considered when implementing this method.
10796     */
10797    void (*handle_event)(const void *this_arg, const struct LDKEvent *NONNULL_PTR event);
10798    /**
10799     * Frees any resources associated with this object given its this_arg pointer.
10800     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10801     */
10802    void (*free)(void *this_arg);
10803 } LDKEventHandler;
10804
10805 /**
10806  * A trait indicating an object may generate events.
10807  *
10808  * Events are processed by passing an [`EventHandler`] to [`process_pending_events`].
10809  *
10810  * # Requirements
10811  *
10812  * See [`process_pending_events`] for requirements around event processing.
10813  *
10814  * When using this trait, [`process_pending_events`] will call [`handle_event`] for each pending
10815  * event since the last invocation. The handler must either act upon the event immediately
10816  * or preserve it for later handling.
10817  *
10818  * Note, handlers may call back into the provider and thus deadlocking must be avoided. Be sure to
10819  * consult the provider's documentation on the implication of processing events and how a handler
10820  * may safely use the provider (e.g., see [`ChannelManager::process_pending_events`] and
10821  * [`ChainMonitor::process_pending_events`]).
10822  *
10823  * (C-not implementable) As there is likely no reason for a user to implement this trait on their
10824  * own type(s).
10825  *
10826  * [`process_pending_events`]: Self::process_pending_events
10827  * [`handle_event`]: EventHandler::handle_event
10828  * [`ChannelManager::process_pending_events`]: crate::ln::channelmanager::ChannelManager#method.process_pending_events
10829  * [`ChainMonitor::process_pending_events`]: crate::chain::chainmonitor::ChainMonitor#method.process_pending_events
10830  */
10831 typedef struct LDKEventsProvider {
10832    /**
10833     * An opaque pointer which is passed to your function implementations as an argument.
10834     * This has no meaning in the LDK, and can be NULL or any other value.
10835     */
10836    void *this_arg;
10837    /**
10838     * Processes any events generated since the last call using the given event handler.
10839     *
10840     * Subsequent calls must only process new events. However, handlers must be capable of handling
10841     * duplicate events across process restarts. This may occur if the provider was recovered from
10842     * an old state (i.e., it hadn't been successfully persisted after processing pending events).
10843     */
10844    void (*process_pending_events)(const void *this_arg, struct LDKEventHandler handler);
10845    /**
10846     * Frees any resources associated with this object given its this_arg pointer.
10847     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10848     */
10849    void (*free)(void *this_arg);
10850 } LDKEventsProvider;
10851
10852
10853
10854 /**
10855  * Configuration we set when applicable.
10856  *
10857  * Default::default() provides sane defaults.
10858  */
10859 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
10860    /**
10861     * A pointer to the opaque Rust object.
10862     * Nearly everywhere, inner must be non-null, however in places where
10863     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10864     */
10865    LDKnativeChannelHandshakeConfig *inner;
10866    /**
10867     * Indicates that this is the only struct which contains the same pointer.
10868     * Rust functions which take ownership of an object provided via an argument require
10869     * this to be true and invalidate the object pointed to by inner.
10870     */
10871    bool is_owned;
10872 } LDKChannelHandshakeConfig;
10873
10874
10875
10876 /**
10877  * Optional channel limits which are applied during channel creation.
10878  *
10879  * These limits are only applied to our counterparty's limits, not our own.
10880  *
10881  * Use 0/<type>::max_value() as appropriate to skip checking.
10882  *
10883  * Provides sane defaults for most configurations.
10884  *
10885  * Most additional limits are disabled except those with which specify a default in individual
10886  * field documentation. Note that this may result in barely-usable channels, but since they
10887  * are applied mostly only to incoming channels that's not much of a problem.
10888  */
10889 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
10890    /**
10891     * A pointer to the opaque Rust object.
10892     * Nearly everywhere, inner must be non-null, however in places where
10893     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10894     */
10895    LDKnativeChannelHandshakeLimits *inner;
10896    /**
10897     * Indicates that this is the only struct which contains the same pointer.
10898     * Rust functions which take ownership of an object provided via an argument require
10899     * this to be true and invalidate the object pointed to by inner.
10900     */
10901    bool is_owned;
10902 } LDKChannelHandshakeLimits;
10903
10904
10905
10906 /**
10907  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
10908  *
10909  * Default::default() provides sane defaults for most configurations
10910  * (but currently with 0 relay fees!)
10911  */
10912 typedef struct MUST_USE_STRUCT LDKUserConfig {
10913    /**
10914     * A pointer to the opaque Rust object.
10915     * Nearly everywhere, inner must be non-null, however in places where
10916     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10917     */
10918    LDKnativeUserConfig *inner;
10919    /**
10920     * Indicates that this is the only struct which contains the same pointer.
10921     * Rust functions which take ownership of an object provided via an argument require
10922     * this to be true and invalidate the object pointed to by inner.
10923     */
10924    bool is_owned;
10925 } LDKUserConfig;
10926
10927
10928
10929 /**
10930  * The best known block as identified by its hash and height.
10931  */
10932 typedef struct MUST_USE_STRUCT LDKBestBlock {
10933    /**
10934     * A pointer to the opaque Rust object.
10935     * Nearly everywhere, inner must be non-null, however in places where
10936     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10937     */
10938    LDKnativeBestBlock *inner;
10939    /**
10940     * Indicates that this is the only struct which contains the same pointer.
10941     * Rust functions which take ownership of an object provided via an argument require
10942     * this to be true and invalidate the object pointed to by inner.
10943     */
10944    bool is_owned;
10945 } LDKBestBlock;
10946
10947 /**
10948  * The `Listen` trait is used to notify when blocks have been connected or disconnected from the
10949  * chain.
10950  *
10951  * Useful when needing to replay chain data upon startup or as new chain events occur. Clients
10952  * sourcing chain data using a block-oriented API should prefer this interface over [`Confirm`].
10953  * Such clients fetch the entire header chain whereas clients using [`Confirm`] only fetch headers
10954  * when needed.
10955  */
10956 typedef struct LDKListen {
10957    /**
10958     * An opaque pointer which is passed to your function implementations as an argument.
10959     * This has no meaning in the LDK, and can be NULL or any other value.
10960     */
10961    void *this_arg;
10962    /**
10963     * Notifies the listener that a block was added at the given height.
10964     */
10965    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
10966    /**
10967     * Notifies the listener that a block was removed at the given height.
10968     */
10969    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
10970    /**
10971     * Frees any resources associated with this object given its this_arg pointer.
10972     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10973     */
10974    void (*free)(void *this_arg);
10975 } LDKListen;
10976
10977 /**
10978  * The `Confirm` trait is used to notify when transactions have been confirmed on chain or
10979  * unconfirmed during a chain reorganization.
10980  *
10981  * Clients sourcing chain data using a transaction-oriented API should prefer this interface over
10982  * [`Listen`]. For instance, an Electrum client may implement [`Filter`] by subscribing to activity
10983  * related to registered transactions and outputs. Upon notification, it would pass along the
10984  * matching transactions using this interface.
10985  *
10986  * # Use
10987  *
10988  * The intended use is as follows:
10989  * - Call [`transactions_confirmed`] to process any on-chain activity of interest.
10990  * - Call [`transaction_unconfirmed`] to process any transaction returned by [`get_relevant_txids`]
10991  *   that has been reorganized out of the chain.
10992  * - Call [`best_block_updated`] whenever a new chain tip becomes available.
10993  *
10994  * # Order
10995  *
10996  * Clients must call these methods in chain order. Specifically:
10997  * - Transactions confirmed in a block must be given before transactions confirmed in a later
10998  *   block.
10999  * - Dependent transactions within the same block must be given in topological order, possibly in
11000  *   separate calls.
11001  * - Unconfirmed transactions must be given after the original confirmations and before any
11002  *   reconfirmation.
11003  *
11004  * See individual method documentation for further details.
11005  *
11006  * [`transactions_confirmed`]: Self::transactions_confirmed
11007  * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
11008  * [`best_block_updated`]: Self::best_block_updated
11009  * [`get_relevant_txids`]: Self::get_relevant_txids
11010  */
11011 typedef struct LDKConfirm {
11012    /**
11013     * An opaque pointer which is passed to your function implementations as an argument.
11014     * This has no meaning in the LDK, and can be NULL or any other value.
11015     */
11016    void *this_arg;
11017    /**
11018     * Processes transactions confirmed in a block with a given header and height.
11019     *
11020     * Should be called for any transactions registered by [`Filter::register_tx`] or any
11021     * transactions spending an output registered by [`Filter::register_output`]. Such transactions
11022     * appearing in the same block do not need to be included in the same call; instead, multiple
11023     * calls with additional transactions may be made so long as they are made in [chain order].
11024     *
11025     * May be called before or after [`best_block_updated`] for the corresponding block. However,
11026     * in the event of a chain reorganization, it must not be called with a `header` that is no
11027     * longer in the chain as of the last call to [`best_block_updated`].
11028     *
11029     * [chain order]: Confirm#Order
11030     * [`best_block_updated`]: Self::best_block_updated
11031     */
11032    void (*transactions_confirmed)(const void *this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
11033    /**
11034     * Processes a transaction that is no longer confirmed as result of a chain reorganization.
11035     *
11036     * Should be called for any transaction returned by [`get_relevant_txids`] if it has been
11037     * reorganized out of the best chain. Once called, the given transaction should not be returned
11038     * by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
11039     *
11040     * [`get_relevant_txids`]: Self::get_relevant_txids
11041     * [`transactions_confirmed`]: Self::transactions_confirmed
11042     */
11043    void (*transaction_unconfirmed)(const void *this_arg, const uint8_t (*txid)[32]);
11044    /**
11045     * Processes an update to the best header connected at the given height.
11046     *
11047     * Should be called when a new header is available but may be skipped for intermediary blocks
11048     * if they become available at the same time.
11049     */
11050    void (*best_block_updated)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
11051    /**
11052     * Returns transactions that should be monitored for reorganization out of the chain.
11053     *
11054     * Should include any transactions passed to [`transactions_confirmed`] that have insufficient
11055     * confirmations to be safe from a chain reorganization. Should not include any transactions
11056     * passed to [`transaction_unconfirmed`] unless later reconfirmed.
11057     *
11058     * May be called to determine the subset of transactions that must still be monitored for
11059     * reorganization. Will be idempotent between calls but may change as a result of calls to the
11060     * other interface methods. Thus, this is useful to determine which transactions may need to be
11061     * given to [`transaction_unconfirmed`].
11062     *
11063     * [`transactions_confirmed`]: Self::transactions_confirmed
11064     * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
11065     */
11066    struct LDKCVec_TxidZ (*get_relevant_txids)(const void *this_arg);
11067    /**
11068     * Frees any resources associated with this object given its this_arg pointer.
11069     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11070     */
11071    void (*free)(void *this_arg);
11072 } LDKConfirm;
11073
11074
11075
11076 /**
11077  * An opaque identifier describing a specific [`Persist`] method call.
11078  */
11079 typedef struct MUST_USE_STRUCT LDKMonitorUpdateId {
11080    /**
11081     * A pointer to the opaque Rust object.
11082     * Nearly everywhere, inner must be non-null, however in places where
11083     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11084     */
11085    LDKnativeMonitorUpdateId *inner;
11086    /**
11087     * Indicates that this is the only struct which contains the same pointer.
11088     * Rust functions which take ownership of an object provided via an argument require
11089     * this to be true and invalidate the object pointed to by inner.
11090     */
11091    bool is_owned;
11092 } LDKMonitorUpdateId;
11093
11094 /**
11095  * `Persist` defines behavior for persisting channel monitors: this could mean
11096  * writing once to disk, and/or uploading to one or more backup services.
11097  *
11098  * Each method can return three possible values:
11099  *  * If persistence (including any relevant `fsync()` calls) happens immediately, the
11100  *    implementation should return `Ok(())`, indicating normal channel operation should continue.
11101  *  * If persistence happens asynchronously, implementations should first ensure the
11102  *    [`ChannelMonitor`] or [`ChannelMonitorUpdate`] are written durably to disk, and then return
11103  *    `Err(ChannelMonitorUpdateErr::TemporaryFailure)` while the update continues in the
11104  *    background. Once the update completes, [`ChainMonitor::channel_monitor_updated`] should be
11105  *    called with the corresponding [`MonitorUpdateId`].
11106  *
11107  *    Note that unlike the direct [`chain::Watch`] interface,
11108  *    [`ChainMonitor::channel_monitor_updated`] must be called once for *each* update which occurs.
11109  *
11110  *  * If persistence fails for some reason, implementations should return
11111  *    `Err(ChannelMonitorUpdateErr::PermanentFailure)`, in which case the channel will likely be
11112  *    closed without broadcasting the latest state. See
11113  *    [`ChannelMonitorUpdateErr::PermanentFailure`] for more details.
11114  */
11115 typedef struct LDKPersist {
11116    /**
11117     * An opaque pointer which is passed to your function implementations as an argument.
11118     * This has no meaning in the LDK, and can be NULL or any other value.
11119     */
11120    void *this_arg;
11121    /**
11122     * Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
11123     * called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
11124     *
11125     * The data can be stored any way you want, but the identifier provided by LDK is the
11126     * channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
11127     * and the stored channel data). Note that you **must** persist every new monitor to disk.
11128     *
11129     * The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
11130     * if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
11131     *
11132     * See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
11133     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
11134     *
11135     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
11136     * [`Writeable::write`]: crate::util::ser::Writeable::write
11137     */
11138    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
11139    /**
11140     * Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
11141     * update.
11142     *
11143     * Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
11144     * updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
11145     * details.
11146     *
11147     * During blockchain synchronization operations, this may be called with no
11148     * [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
11149     * Note that after the full [`ChannelMonitor`] is persisted any previous
11150     * [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
11151     * applied to the persisted [`ChannelMonitor`] as they were already applied.
11152     *
11153     * If an implementer chooses to persist the updates only, they need to make
11154     * sure that all the updates are applied to the `ChannelMonitors` *before*
11155     * the set of channel monitors is given to the `ChannelManager`
11156     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
11157     * applying a monitor update to a monitor. If full `ChannelMonitors` are
11158     * persisted, then there is no need to persist individual updates.
11159     *
11160     * Note that there could be a performance tradeoff between persisting complete
11161     * channel monitors on every update vs. persisting only updates and applying
11162     * them in batches. The size of each monitor grows `O(number of state updates)`
11163     * whereas updates are small and `O(1)`.
11164     *
11165     * The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
11166     * if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
11167     *
11168     * See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
11169     * [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
11170     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
11171     *
11172     * [`Writeable::write`]: crate::util::ser::Writeable::write
11173     *
11174     * Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
11175     */
11176    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_persisted_channel)(const void *this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitorUpdate *NONNULL_PTR update, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
11177    /**
11178     * Frees any resources associated with this object given its this_arg pointer.
11179     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11180     */
11181    void (*free)(void *this_arg);
11182 } LDKPersist;
11183
11184
11185
11186 /**
11187  * An implementation of [`chain::Watch`] for monitoring channels.
11188  *
11189  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
11190  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
11191  * or used independently to monitor channels remotely. See the [module-level documentation] for
11192  * details.
11193  *
11194  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
11195  * [module-level documentation]: crate::chain::chainmonitor
11196  */
11197 typedef struct MUST_USE_STRUCT LDKChainMonitor {
11198    /**
11199     * A pointer to the opaque Rust object.
11200     * Nearly everywhere, inner must be non-null, however in places where
11201     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11202     */
11203    LDKnativeChainMonitor *inner;
11204    /**
11205     * Indicates that this is the only struct which contains the same pointer.
11206     * Rust functions which take ownership of an object provided via an argument require
11207     * this to be true and invalidate the object pointed to by inner.
11208     */
11209    bool is_owned;
11210 } LDKChainMonitor;
11211
11212
11213
11214 /**
11215  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
11216  * and derives keys from that.
11217  *
11218  * Your node_id is seed/0'
11219  * ChannelMonitor closes may use seed/1'
11220  * Cooperative closes may use seed/2'
11221  * The two close keys may be needed to claim on-chain funds!
11222  *
11223  * This struct cannot be used for nodes that wish to support receiving phantom payments;
11224  * [`PhantomKeysManager`] must be used instead.
11225  *
11226  * Note that switching between this struct and [`PhantomKeysManager`] will invalidate any
11227  * previously issued invoices and attempts to pay previous invoices will fail.
11228  */
11229 typedef struct MUST_USE_STRUCT LDKKeysManager {
11230    /**
11231     * A pointer to the opaque Rust object.
11232     * Nearly everywhere, inner must be non-null, however in places where
11233     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11234     */
11235    LDKnativeKeysManager *inner;
11236    /**
11237     * Indicates that this is the only struct which contains the same pointer.
11238     * Rust functions which take ownership of an object provided via an argument require
11239     * this to be true and invalidate the object pointed to by inner.
11240     */
11241    bool is_owned;
11242 } LDKKeysManager;
11243
11244
11245
11246 /**
11247  * Similar to [`KeysManager`], but allows the node using this struct to receive phantom node
11248  * payments.
11249  *
11250  * A phantom node payment is a payment made to a phantom invoice, which is an invoice that can be
11251  * paid to one of multiple nodes. This works because we encode the invoice route hints such that
11252  * LDK will recognize an incoming payment as destined for a phantom node, and collect the payment
11253  * itself without ever needing to forward to this fake node.
11254  *
11255  * Phantom node payments are useful for load balancing between multiple LDK nodes. They also
11256  * provide some fault tolerance, because payers will automatically retry paying other provided
11257  * nodes in the case that one node goes down.
11258  *
11259  * Note that multi-path payments are not supported in phantom invoices for security reasons.
11260  * Switching between this struct and [`KeysManager`] will invalidate any previously issued
11261  * invoices and attempts to pay previous invoices will fail.
11262  */
11263 typedef struct MUST_USE_STRUCT LDKPhantomKeysManager {
11264    /**
11265     * A pointer to the opaque Rust object.
11266     * Nearly everywhere, inner must be non-null, however in places where
11267     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11268     */
11269    LDKnativePhantomKeysManager *inner;
11270    /**
11271     * Indicates that this is the only struct which contains the same pointer.
11272     * Rust functions which take ownership of an object provided via an argument require
11273     * this to be true and invalidate the object pointed to by inner.
11274     */
11275    bool is_owned;
11276 } LDKPhantomKeysManager;
11277
11278
11279
11280 /**
11281  * Chain-related parameters used to construct a new `ChannelManager`.
11282  *
11283  * Typically, the block-specific parameters are derived from the best block hash for the network,
11284  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
11285  * are not needed when deserializing a previously constructed `ChannelManager`.
11286  */
11287 typedef struct MUST_USE_STRUCT LDKChainParameters {
11288    /**
11289     * A pointer to the opaque Rust object.
11290     * Nearly everywhere, inner must be non-null, however in places where
11291     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11292     */
11293    LDKnativeChainParameters *inner;
11294    /**
11295     * Indicates that this is the only struct which contains the same pointer.
11296     * Rust functions which take ownership of an object provided via an argument require
11297     * this to be true and invalidate the object pointed to by inner.
11298     */
11299    bool is_owned;
11300 } LDKChainParameters;
11301
11302 /**
11303  * A 3-byte byte array.
11304  */
11305 typedef struct LDKThreeBytes {
11306    /**
11307     * The three bytes
11308     */
11309    uint8_t data[3];
11310 } LDKThreeBytes;
11311
11312 /**
11313  * A trait to describe an object which can receive channel messages.
11314  *
11315  * Messages MAY be called in parallel when they originate from different their_node_ids, however
11316  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
11317  */
11318 typedef struct LDKChannelMessageHandler {
11319    /**
11320     * An opaque pointer which is passed to your function implementations as an argument.
11321     * This has no meaning in the LDK, and can be NULL or any other value.
11322     */
11323    void *this_arg;
11324    /**
11325     * Handle an incoming open_channel message from the given peer.
11326     */
11327    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
11328    /**
11329     * Handle an incoming accept_channel message from the given peer.
11330     */
11331    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
11332    /**
11333     * Handle an incoming funding_created message from the given peer.
11334     */
11335    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
11336    /**
11337     * Handle an incoming funding_signed message from the given peer.
11338     */
11339    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
11340    /**
11341     * Handle an incoming funding_locked message from the given peer.
11342     */
11343    void (*handle_funding_locked)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
11344    /**
11345     * Handle an incoming shutdown message from the given peer.
11346     */
11347    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);
11348    /**
11349     * Handle an incoming closing_signed message from the given peer.
11350     */
11351    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
11352    /**
11353     * Handle an incoming update_add_htlc message from the given peer.
11354     */
11355    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
11356    /**
11357     * Handle an incoming update_fulfill_htlc message from the given peer.
11358     */
11359    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
11360    /**
11361     * Handle an incoming update_fail_htlc message from the given peer.
11362     */
11363    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
11364    /**
11365     * Handle an incoming update_fail_malformed_htlc message from the given peer.
11366     */
11367    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
11368    /**
11369     * Handle an incoming commitment_signed message from the given peer.
11370     */
11371    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
11372    /**
11373     * Handle an incoming revoke_and_ack message from the given peer.
11374     */
11375    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
11376    /**
11377     * Handle an incoming update_fee message from the given peer.
11378     */
11379    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
11380    /**
11381     * Handle an incoming announcement_signatures message from the given peer.
11382     */
11383    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
11384    /**
11385     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
11386     * is believed to be possible in the future (eg they're sending us messages we don't
11387     * understand or indicate they require unknown feature bits), no_connection_possible is set
11388     * and any outstanding channels should be failed.
11389     */
11390    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
11391    /**
11392     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
11393     */
11394    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
11395    /**
11396     * Handle an incoming channel_reestablish message from the given peer.
11397     */
11398    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
11399    /**
11400     * Handle an incoming channel update from the given peer.
11401     */
11402    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
11403    /**
11404     * Handle an incoming error message from the given peer.
11405     */
11406    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
11407    /**
11408     * Implementation of MessageSendEventsProvider for this object.
11409     */
11410    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
11411    /**
11412     * Frees any resources associated with this object given its this_arg pointer.
11413     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11414     */
11415    void (*free)(void *this_arg);
11416 } LDKChannelMessageHandler;
11417
11418
11419
11420 /**
11421  * Arguments for the creation of a ChannelManager that are not deserialized.
11422  *
11423  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
11424  * is:
11425  * 1) Deserialize all stored [`ChannelMonitor`]s.
11426  * 2) Deserialize the [`ChannelManager`] by filling in this struct and calling:
11427  *    `<(BlockHash, ChannelManager)>::read(reader, args)`
11428  *    This may result in closing some channels if the [`ChannelMonitor`] is newer than the stored
11429  *    [`ChannelManager`] state to ensure no loss of funds. Thus, transactions may be broadcasted.
11430  * 3) If you are not fetching full blocks, register all relevant [`ChannelMonitor`] outpoints the
11431  *    same way you would handle a [`chain::Filter`] call using
11432  *    [`ChannelMonitor::get_outputs_to_watch`] and [`ChannelMonitor::get_funding_txo`].
11433  * 4) Reconnect blocks on your [`ChannelMonitor`]s.
11434  * 5) Disconnect/connect blocks on the [`ChannelManager`].
11435  * 6) Re-persist the [`ChannelMonitor`]s to ensure the latest state is on disk.
11436  *    Note that if you're using a [`ChainMonitor`] for your [`chain::Watch`] implementation, you
11437  *    will likely accomplish this as a side-effect of calling [`chain::Watch::watch_channel`] in
11438  *    the next step.
11439  * 7) Move the [`ChannelMonitor`]s into your local [`chain::Watch`]. If you're using a
11440  *    [`ChainMonitor`], this is done by calling [`chain::Watch::watch_channel`].
11441  *
11442  * Note that the ordering of #4-7 is not of importance, however all four must occur before you
11443  * call any other methods on the newly-deserialized [`ChannelManager`].
11444  *
11445  * Note that because some channels may be closed during deserialization, it is critical that you
11446  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
11447  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
11448  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
11449  * not force-close the same channels but consider them live), you may end up revoking a state for
11450  * which you've already broadcasted the transaction.
11451  *
11452  * [`ChainMonitor`]: crate::chain::chainmonitor::ChainMonitor
11453  */
11454 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
11455    /**
11456     * A pointer to the opaque Rust object.
11457     * Nearly everywhere, inner must be non-null, however in places where
11458     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11459     */
11460    LDKnativeChannelManagerReadArgs *inner;
11461    /**
11462     * Indicates that this is the only struct which contains the same pointer.
11463     * Rust functions which take ownership of an object provided via an argument require
11464     * this to be true and invalidate the object pointed to by inner.
11465     */
11466    bool is_owned;
11467 } LDKChannelManagerReadArgs;
11468
11469
11470
11471 /**
11472  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
11473  * This is used to convince the recipient that the channel is at a certain commitment
11474  * number even if they lost that data due to a local failure.  Of course, the peer may lie
11475  * and even later commitments may have been revoked.
11476  */
11477 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
11478    /**
11479     * A pointer to the opaque Rust object.
11480     * Nearly everywhere, inner must be non-null, however in places where
11481     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11482     */
11483    LDKnativeDataLossProtect *inner;
11484    /**
11485     * Indicates that this is the only struct which contains the same pointer.
11486     * Rust functions which take ownership of an object provided via an argument require
11487     * this to be true and invalidate the object pointed to by inner.
11488     */
11489    bool is_owned;
11490 } LDKDataLossProtect;
11491
11492 /**
11493  * A trait to describe an object which can receive routing messages.
11494  *
11495  * # Implementor DoS Warnings
11496  *
11497  * For `gossip_queries` messages there are potential DoS vectors when handling
11498  * inbound queries. Implementors using an on-disk network graph should be aware of
11499  * repeated disk I/O for queries accessing different parts of the network graph.
11500  */
11501 typedef struct LDKRoutingMessageHandler {
11502    /**
11503     * An opaque pointer which is passed to your function implementations as an argument.
11504     * This has no meaning in the LDK, and can be NULL or any other value.
11505     */
11506    void *this_arg;
11507    /**
11508     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
11509     * false or returning an Err otherwise.
11510     */
11511    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
11512    /**
11513     * Handle a channel_announcement message, returning true if it should be forwarded on, false
11514     * or returning an Err otherwise.
11515     */
11516    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
11517    /**
11518     * Handle an incoming channel_update message, returning true if it should be forwarded on,
11519     * false or returning an Err otherwise.
11520     */
11521    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
11522    /**
11523     * Gets a subset of the channel announcements and updates required to dump our routing table
11524     * to a remote node, starting at the short_channel_id indicated by starting_point and
11525     * including the batch_amount entries immediately higher in numerical value than starting_point.
11526     */
11527    struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcements)(const void *this_arg, uint64_t starting_point, uint8_t batch_amount);
11528    /**
11529     * Gets a subset of the node announcements required to dump our routing table to a remote node,
11530     * starting at the node *after* the provided publickey and including batch_amount entries
11531     * immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
11532     * If None is provided for starting_point, we start at the first node.
11533     *
11534     * Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
11535     */
11536    struct LDKCVec_NodeAnnouncementZ (*get_next_node_announcements)(const void *this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount);
11537    /**
11538     * Called when a connection is established with a peer. This can be used to
11539     * perform routing table synchronization using a strategy defined by the
11540     * implementor.
11541     */
11542    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
11543    /**
11544     * Handles the reply of a query we initiated to learn about channels
11545     * for a given range of blocks. We can expect to receive one or more
11546     * replies to a single query.
11547     */
11548    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
11549    /**
11550     * Handles the reply of a query we initiated asking for routing gossip
11551     * messages for a list of channels. We should receive this message when
11552     * a node has completed its best effort to send us the pertaining routing
11553     * gossip messages.
11554     */
11555    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
11556    /**
11557     * Handles when a peer asks us to send a list of short_channel_ids
11558     * for the requested range of blocks.
11559     */
11560    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
11561    /**
11562     * Handles when a peer asks us to send routing gossip messages for a
11563     * list of short_channel_ids.
11564     */
11565    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
11566    /**
11567     * Implementation of MessageSendEventsProvider for this object.
11568     */
11569    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
11570    /**
11571     * Frees any resources associated with this object given its this_arg pointer.
11572     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11573     */
11574    void (*free)(void *this_arg);
11575 } LDKRoutingMessageHandler;
11576
11577 /**
11578  * Trait to be implemented by custom message (unrelated to the channel/gossip LN layers)
11579  * decoders.
11580  */
11581 typedef struct LDKCustomMessageReader {
11582    /**
11583     * An opaque pointer which is passed to your function implementations as an argument.
11584     * This has no meaning in the LDK, and can be NULL or any other value.
11585     */
11586    void *this_arg;
11587    /**
11588     * Decodes a custom message to `CustomMessageType`. If the given message type is known to the
11589     * implementation and the message could be decoded, must return `Ok(Some(message))`. If the
11590     * message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
11591     * occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
11592     */
11593    struct LDKCResult_COption_TypeZDecodeErrorZ (*read)(const void *this_arg, uint16_t message_type, struct LDKu8slice buffer);
11594    /**
11595     * Frees any resources associated with this object given its this_arg pointer.
11596     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11597     */
11598    void (*free)(void *this_arg);
11599 } LDKCustomMessageReader;
11600
11601 /**
11602  * Handler for BOLT1-compliant messages.
11603  */
11604 typedef struct LDKCustomMessageHandler {
11605    /**
11606     * An opaque pointer which is passed to your function implementations as an argument.
11607     * This has no meaning in the LDK, and can be NULL or any other value.
11608     */
11609    void *this_arg;
11610    /**
11611     * Called with the message type that was received and the buffer to be read.
11612     * Can return a `MessageHandlingError` if the message could not be handled.
11613     */
11614    struct LDKCResult_NoneLightningErrorZ (*handle_custom_message)(const void *this_arg, struct LDKType msg, struct LDKPublicKey sender_node_id);
11615    /**
11616     * Gets the list of pending messages which were generated by the custom message
11617     * handler, clearing the list in the process. The first tuple element must
11618     * correspond to the intended recipients node ids. If no connection to one of the
11619     * specified node does not exist, the message is simply not sent to it.
11620     */
11621    struct LDKCVec_C2Tuple_PublicKeyTypeZZ (*get_and_clear_pending_msg)(const void *this_arg);
11622    /**
11623     * Implementation of CustomMessageReader for this object.
11624     */
11625    struct LDKCustomMessageReader CustomMessageReader;
11626    /**
11627     * Frees any resources associated with this object given its this_arg pointer.
11628     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11629     */
11630    void (*free)(void *this_arg);
11631 } LDKCustomMessageHandler;
11632
11633
11634
11635 /**
11636  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
11637  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
11638  */
11639 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
11640    /**
11641     * A pointer to the opaque Rust object.
11642     * Nearly everywhere, inner must be non-null, however in places where
11643     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11644     */
11645    LDKnativeIgnoringMessageHandler *inner;
11646    /**
11647     * Indicates that this is the only struct which contains the same pointer.
11648     * Rust functions which take ownership of an object provided via an argument require
11649     * this to be true and invalidate the object pointed to by inner.
11650     */
11651    bool is_owned;
11652 } LDKIgnoringMessageHandler;
11653
11654
11655
11656 /**
11657  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
11658  * You can provide one of these as the route_handler in a MessageHandler.
11659  */
11660 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
11661    /**
11662     * A pointer to the opaque Rust object.
11663     * Nearly everywhere, inner must be non-null, however in places where
11664     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11665     */
11666    LDKnativeErroringMessageHandler *inner;
11667    /**
11668     * Indicates that this is the only struct which contains the same pointer.
11669     * Rust functions which take ownership of an object provided via an argument require
11670     * this to be true and invalidate the object pointed to by inner.
11671     */
11672    bool is_owned;
11673 } LDKErroringMessageHandler;
11674
11675
11676
11677 /**
11678  * Provides references to trait impls which handle different types of messages.
11679  */
11680 typedef struct MUST_USE_STRUCT LDKMessageHandler {
11681    /**
11682     * A pointer to the opaque Rust object.
11683     * Nearly everywhere, inner must be non-null, however in places where
11684     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11685     */
11686    LDKnativeMessageHandler *inner;
11687    /**
11688     * Indicates that this is the only struct which contains the same pointer.
11689     * Rust functions which take ownership of an object provided via an argument require
11690     * this to be true and invalidate the object pointed to by inner.
11691     */
11692    bool is_owned;
11693 } LDKMessageHandler;
11694
11695 /**
11696  * Provides an object which can be used to send data to and which uniquely identifies a connection
11697  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
11698  * implement Hash to meet the PeerManager API.
11699  *
11700  * For efficiency, Clone should be relatively cheap for this type.
11701  *
11702  * Two descriptors may compare equal (by [`cmp::Eq`] and [`hash::Hash`]) as long as the original
11703  * has been disconnected, the [`PeerManager`] has been informed of the disconnection (either by it
11704  * having triggered the disconnection or a call to [`PeerManager::socket_disconnected`]), and no
11705  * further calls to the [`PeerManager`] related to the original socket occur. This allows you to
11706  * use a file descriptor for your SocketDescriptor directly, however for simplicity you may wish
11707  * to simply use another value which is guaranteed to be globally unique instead.
11708  */
11709 typedef struct LDKSocketDescriptor {
11710    /**
11711     * An opaque pointer which is passed to your function implementations as an argument.
11712     * This has no meaning in the LDK, and can be NULL or any other value.
11713     */
11714    void *this_arg;
11715    /**
11716     * Attempts to send some data from the given slice to the peer.
11717     *
11718     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
11719     * Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
11720     * called and further write attempts may occur until that time.
11721     *
11722     * If the returned size is smaller than `data.len()`, a
11723     * [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
11724     * written. Additionally, until a `send_data` event completes fully, no further
11725     * [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
11726     * prevent denial-of-service issues, you should not read or buffer any data from the socket
11727     * until then.
11728     *
11729     * If a [`PeerManager::read_event`] call on this descriptor had previously returned true
11730     * (indicating that read events should be paused to prevent DoS in the send buffer),
11731     * `resume_read` may be set indicating that read events on this descriptor should resume. A
11732     * `resume_read` of false carries no meaning, and should not cause any action.
11733     */
11734    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
11735    /**
11736     * Disconnect the socket pointed to by this SocketDescriptor.
11737     *
11738     * You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
11739     * call (doing so is a noop).
11740     */
11741    void (*disconnect_socket)(void *this_arg);
11742    /**
11743     * Checks if two objects are equal given this object's this_arg pointer and another object.
11744     */
11745    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
11746    /**
11747     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
11748     * This is used, for example, for inclusion of this object in a hash map.
11749     */
11750    uint64_t (*hash)(const void *this_arg);
11751    /**
11752     * Called, if set, after this SocketDescriptor has been cloned into a duplicate object.
11753     * The new SocketDescriptor is provided, and should be mutated as needed to perform a
11754     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
11755     */
11756    void (*cloned)(struct LDKSocketDescriptor *NONNULL_PTR new_SocketDescriptor);
11757    /**
11758     * Frees any resources associated with this object given its this_arg pointer.
11759     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11760     */
11761    void (*free)(void *this_arg);
11762 } LDKSocketDescriptor;
11763
11764
11765
11766 /**
11767  * A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
11768  * socket events into messages which it passes on to its [`MessageHandler`].
11769  *
11770  * Locks are taken internally, so you must never assume that reentrancy from a
11771  * [`SocketDescriptor`] call back into [`PeerManager`] methods will not deadlock.
11772  *
11773  * Calls to [`read_event`] will decode relevant messages and pass them to the
11774  * [`ChannelMessageHandler`], likely doing message processing in-line. Thus, the primary form of
11775  * parallelism in Rust-Lightning is in calls to [`read_event`]. Note, however, that calls to any
11776  * [`PeerManager`] functions related to the same connection must occur only in serial, making new
11777  * calls only after previous ones have returned.
11778  *
11779  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
11780  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
11781  * essentially you should default to using a SimpleRefPeerManager, and use a
11782  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
11783  * you're using lightning-net-tokio.
11784  *
11785  * [`read_event`]: PeerManager::read_event
11786  */
11787 typedef struct MUST_USE_STRUCT LDKPeerManager {
11788    /**
11789     * A pointer to the opaque Rust object.
11790     * Nearly everywhere, inner must be non-null, however in places where
11791     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11792     */
11793    LDKnativePeerManager *inner;
11794    /**
11795     * Indicates that this is the only struct which contains the same pointer.
11796     * Rust functions which take ownership of an object provided via an argument require
11797     * this to be true and invalidate the object pointed to by inner.
11798     */
11799    bool is_owned;
11800 } LDKPeerManager;
11801
11802
11803
11804 /**
11805  * Static channel fields used to build transactions given per-commitment fields, organized by
11806  * broadcaster/countersignatory.
11807  *
11808  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
11809  * as_holder_broadcastable and as_counterparty_broadcastable functions.
11810  */
11811 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
11812    /**
11813     * A pointer to the opaque Rust object.
11814     * Nearly everywhere, inner must be non-null, however in places where
11815     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11816     */
11817    LDKnativeDirectedChannelTransactionParameters *inner;
11818    /**
11819     * Indicates that this is the only struct which contains the same pointer.
11820     * Rust functions which take ownership of an object provided via an argument require
11821     * this to be true and invalidate the object pointed to by inner.
11822     */
11823    bool is_owned;
11824 } LDKDirectedChannelTransactionParameters;
11825
11826
11827
11828 /**
11829  * A read-only view of [`NetworkGraph`].
11830  */
11831 typedef struct MUST_USE_STRUCT LDKReadOnlyNetworkGraph {
11832    /**
11833     * A pointer to the opaque Rust object.
11834     * Nearly everywhere, inner must be non-null, however in places where
11835     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11836     */
11837    LDKnativeReadOnlyNetworkGraph *inner;
11838    /**
11839     * Indicates that this is the only struct which contains the same pointer.
11840     * Rust functions which take ownership of an object provided via an argument require
11841     * this to be true and invalidate the object pointed to by inner.
11842     */
11843    bool is_owned;
11844 } LDKReadOnlyNetworkGraph;
11845
11846
11847
11848 /**
11849  * Receives and validates network updates from peers,
11850  * stores authentic and relevant data as a network graph.
11851  * This network graph is then used for routing payments.
11852  * Provides interface to help with initial routing sync by
11853  * serving historical announcements.
11854  *
11855  * Serves as an [`EventHandler`] for applying updates from [`Event::PaymentPathFailed`] to the
11856  * [`NetworkGraph`].
11857  */
11858 typedef struct MUST_USE_STRUCT LDKNetGraphMsgHandler {
11859    /**
11860     * A pointer to the opaque Rust object.
11861     * Nearly everywhere, inner must be non-null, however in places where
11862     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11863     */
11864    LDKnativeNetGraphMsgHandler *inner;
11865    /**
11866     * Indicates that this is the only struct which contains the same pointer.
11867     * Rust functions which take ownership of an object provided via an argument require
11868     * this to be true and invalidate the object pointed to by inner.
11869     */
11870    bool is_owned;
11871 } LDKNetGraphMsgHandler;
11872
11873
11874
11875 /**
11876  * A wrapper around [`ChannelInfo`] representing information about the channel as directed from a
11877  * source node to a target node.
11878  */
11879 typedef struct MUST_USE_STRUCT LDKDirectedChannelInfo {
11880    /**
11881     * A pointer to the opaque Rust object.
11882     * Nearly everywhere, inner must be non-null, however in places where
11883     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11884     */
11885    LDKnativeDirectedChannelInfo *inner;
11886    /**
11887     * Indicates that this is the only struct which contains the same pointer.
11888     * Rust functions which take ownership of an object provided via an argument require
11889     * this to be true and invalidate the object pointed to by inner.
11890     */
11891    bool is_owned;
11892 } LDKDirectedChannelInfo;
11893
11894 /**
11895  * The effective capacity of a channel for routing purposes.
11896  *
11897  * While this may be smaller than the actual channel capacity, amounts greater than
11898  * [`Self::as_msat`] should not be routed through the channel.
11899  */
11900 typedef enum LDKEffectiveCapacity_Tag {
11901    /**
11902     * The available liquidity in the channel known from being a channel counterparty, and thus a
11903     * direct hop.
11904     */
11905    LDKEffectiveCapacity_ExactLiquidity,
11906    /**
11907     * The maximum HTLC amount in one direction as advertised on the gossip network.
11908     */
11909    LDKEffectiveCapacity_MaximumHTLC,
11910    /**
11911     * The total capacity of the channel as determined by the funding transaction.
11912     */
11913    LDKEffectiveCapacity_Total,
11914    /**
11915     * A capacity sufficient to route any payment, typically used for private channels provided by
11916     * an invoice.
11917     */
11918    LDKEffectiveCapacity_Infinite,
11919    /**
11920     * A capacity that is unknown possibly because either the chain state is unavailable to know
11921     * the total capacity or the `htlc_maximum_msat` was not advertised on the gossip network.
11922     */
11923    LDKEffectiveCapacity_Unknown,
11924    /**
11925     * Must be last for serialization purposes
11926     */
11927    LDKEffectiveCapacity_Sentinel,
11928 } LDKEffectiveCapacity_Tag;
11929
11930 typedef struct LDKEffectiveCapacity_LDKExactLiquidity_Body {
11931    /**
11932     * Either the inbound or outbound liquidity depending on the direction, denominated in
11933     * millisatoshi.
11934     */
11935    uint64_t liquidity_msat;
11936 } LDKEffectiveCapacity_LDKExactLiquidity_Body;
11937
11938 typedef struct LDKEffectiveCapacity_LDKMaximumHTLC_Body {
11939    /**
11940     * The maximum HTLC amount denominated in millisatoshi.
11941     */
11942    uint64_t amount_msat;
11943 } LDKEffectiveCapacity_LDKMaximumHTLC_Body;
11944
11945 typedef struct LDKEffectiveCapacity_LDKTotal_Body {
11946    /**
11947     * The funding amount denominated in millisatoshi.
11948     */
11949    uint64_t capacity_msat;
11950 } LDKEffectiveCapacity_LDKTotal_Body;
11951
11952 typedef struct MUST_USE_STRUCT LDKEffectiveCapacity {
11953    LDKEffectiveCapacity_Tag tag;
11954    union {
11955       LDKEffectiveCapacity_LDKExactLiquidity_Body exact_liquidity;
11956       LDKEffectiveCapacity_LDKMaximumHTLC_Body maximum_htlc;
11957       LDKEffectiveCapacity_LDKTotal_Body total;
11958    };
11959 } LDKEffectiveCapacity;
11960
11961 /**
11962  * An interface used to score payment channels for path finding.
11963  *
11964  *\tScoring is in terms of fees willing to be paid in order to avoid routing through a channel.
11965  */
11966 typedef struct LDKScore {
11967    /**
11968     * An opaque pointer which is passed to your function implementations as an argument.
11969     * This has no meaning in the LDK, and can be NULL or any other value.
11970     */
11971    void *this_arg;
11972    /**
11973     * Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
11974     * given channel in the direction from `source` to `target`.
11975     *
11976     * The channel's capacity (less any other MPP parts that are also being considered for use in
11977     * the same payment) is given by `capacity_msat`. It may be determined from various sources
11978     * such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
11979     * [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
11980     * Thus, implementations should be overflow-safe.
11981     */
11982    uint64_t (*channel_penalty_msat)(const void *this_arg, uint64_t short_channel_id, uint64_t send_amt_msat, uint64_t capacity_msat, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target);
11983    /**
11984     * Handles updating channel penalties after failing to route through a channel.
11985     */
11986    void (*payment_path_failed)(void *this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
11987    /**
11988     * Handles updating channel penalties after successfully routing along a path.
11989     */
11990    void (*payment_path_successful)(void *this_arg, struct LDKCVec_RouteHopZ path);
11991    /**
11992     * Serialize the object into a byte array
11993     */
11994    struct LDKCVec_u8Z (*write)(const void *this_arg);
11995    /**
11996     * Frees any resources associated with this object given its this_arg pointer.
11997     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11998     */
11999    void (*free)(void *this_arg);
12000 } LDKScore;
12001
12002 /**
12003  * A scorer that is accessed under a lock.
12004  *
12005  * Needed so that calls to [`Score::channel_penalty_msat`] in [`find_route`] can be made while
12006  * having shared ownership of a scorer but without requiring internal locking in [`Score`]
12007  * implementations. Internal locking would be detrimental to route finding performance and could
12008  * result in [`Score::channel_penalty_msat`] returning a different value for the same channel.
12009  *
12010  * [`find_route`]: crate::routing::router::find_route
12011  */
12012 typedef struct LDKLockableScore {
12013    /**
12014     * An opaque pointer which is passed to your function implementations as an argument.
12015     * This has no meaning in the LDK, and can be NULL or any other value.
12016     */
12017    void *this_arg;
12018    /**
12019     * Returns the locked scorer.
12020     */
12021    struct LDKScore (*lock)(const void *this_arg);
12022    /**
12023     * Frees any resources associated with this object given its this_arg pointer.
12024     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12025     */
12026    void (*free)(void *this_arg);
12027 } LDKLockableScore;
12028
12029
12030
12031 /**
12032  * A concrete implementation of [`LockableScore`] which supports multi-threading.
12033  */
12034 typedef struct MUST_USE_STRUCT LDKMultiThreadedLockableScore {
12035    /**
12036     * A pointer to the opaque Rust object.
12037     * Nearly everywhere, inner must be non-null, however in places where
12038     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12039     */
12040    LDKnativeMultiThreadedLockableScore *inner;
12041    /**
12042     * Indicates that this is the only struct which contains the same pointer.
12043     * Rust functions which take ownership of an object provided via an argument require
12044     * this to be true and invalidate the object pointed to by inner.
12045     */
12046    bool is_owned;
12047 } LDKMultiThreadedLockableScore;
12048
12049
12050
12051 /**
12052  * Parameters for configuring [`ProbabilisticScorer`].
12053  *
12054  * Used to configure base, liquidity, and amount penalties, the sum of which comprises the channel
12055  * penalty (i.e., the amount in msats willing to be paid to avoid routing through the channel).
12056  */
12057 typedef struct MUST_USE_STRUCT LDKProbabilisticScoringParameters {
12058    /**
12059     * A pointer to the opaque Rust object.
12060     * Nearly everywhere, inner must be non-null, however in places where
12061     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12062     */
12063    LDKnativeProbabilisticScoringParameters *inner;
12064    /**
12065     * Indicates that this is the only struct which contains the same pointer.
12066     * Rust functions which take ownership of an object provided via an argument require
12067     * this to be true and invalidate the object pointed to by inner.
12068     */
12069    bool is_owned;
12070 } LDKProbabilisticScoringParameters;
12071
12072
12073
12074 /**
12075  * FilesystemPersister persists channel data on disk, where each channel's
12076  * data is stored in a file named after its funding outpoint.
12077  *
12078  * Warning: this module does the best it can with calls to persist data, but it
12079  * can only guarantee that the data is passed to the drive. It is up to the
12080  * drive manufacturers to do the actual persistence properly, which they often
12081  * don't (especially on consumer-grade hardware). Therefore, it is up to the
12082  * user to validate their entire storage stack, to ensure the writes are
12083  * persistent.
12084  * Corollary: especially when dealing with larger amounts of money, it is best
12085  * practice to have multiple channel data backups and not rely only on one
12086  * FilesystemPersister.
12087  */
12088 typedef struct MUST_USE_STRUCT LDKFilesystemPersister {
12089    /**
12090     * A pointer to the opaque Rust object.
12091     * Nearly everywhere, inner must be non-null, however in places where
12092     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12093     */
12094    LDKnativeFilesystemPersister *inner;
12095    /**
12096     * Indicates that this is the only struct which contains the same pointer.
12097     * Rust functions which take ownership of an object provided via an argument require
12098     * this to be true and invalidate the object pointed to by inner.
12099     */
12100    bool is_owned;
12101 } LDKFilesystemPersister;
12102
12103
12104
12105 /**
12106  * `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
12107  * Rust-Lightning running properly, and (2) either can or should be run in the background. Its
12108  * responsibilities are:
12109  * * Processing [`Event`]s with a user-provided [`EventHandler`].
12110  * * Monitoring whether the [`ChannelManager`] needs to be re-persisted to disk, and if so,
12111  *   writing it to disk/backups by invoking the callback given to it at startup.
12112  *   [`ChannelManager`] persistence should be done in the background.
12113  * * Calling [`ChannelManager::timer_tick_occurred`] and [`PeerManager::timer_tick_occurred`]
12114  *   at the appropriate intervals.
12115  * * Calling [`NetworkGraph::remove_stale_channels`] (if a [`NetGraphMsgHandler`] is provided to
12116  *   [`BackgroundProcessor::start`]).
12117  *
12118  * It will also call [`PeerManager::process_events`] periodically though this shouldn't be relied
12119  * upon as doing so may result in high latency.
12120  *
12121  * # Note
12122  *
12123  * If [`ChannelManager`] persistence fails and the persisted manager becomes out-of-date, then
12124  * there is a risk of channels force-closing on startup when the manager realizes it's outdated.
12125  * However, as long as [`ChannelMonitor`] backups are sound, no funds besides those used for
12126  * unilateral chain closure fees are at risk.
12127  *
12128  * [`ChannelMonitor`]: lightning::chain::channelmonitor::ChannelMonitor
12129  * [`Event`]: lightning::util::events::Event
12130  *BackgroundProcessor will immediately stop on drop. It should be stored until shutdown.
12131  */
12132 typedef struct MUST_USE_STRUCT LDKBackgroundProcessor {
12133    /**
12134     * A pointer to the opaque Rust object.
12135     * Nearly everywhere, inner must be non-null, however in places where
12136     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12137     */
12138    LDKnativeBackgroundProcessor *inner;
12139    /**
12140     * Indicates that this is the only struct which contains the same pointer.
12141     * Rust functions which take ownership of an object provided via an argument require
12142     * this to be true and invalidate the object pointed to by inner.
12143     */
12144    bool is_owned;
12145 } LDKBackgroundProcessor;
12146
12147 /**
12148  * Trait that handles persisting a [`ChannelManager`] and [`NetworkGraph`] to disk.
12149  */
12150 typedef struct LDKPersister {
12151    /**
12152     * An opaque pointer which is passed to your function implementations as an argument.
12153     * This has no meaning in the LDK, and can be NULL or any other value.
12154     */
12155    void *this_arg;
12156    /**
12157     * Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
12158     * (which will cause the [`BackgroundProcessor`] which called this method to exit).
12159     */
12160    struct LDKCResult_NoneErrorZ (*persist_manager)(const void *this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager);
12161    /**
12162     * Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
12163     */
12164    struct LDKCResult_NoneErrorZ (*persist_graph)(const void *this_arg, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
12165    /**
12166     * Frees any resources associated with this object given its this_arg pointer.
12167     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12168     */
12169    void (*free)(void *this_arg);
12170 } LDKPersister;
12171
12172
12173
12174 /**
12175  * Data of the `RawInvoice` that is encoded in the data part
12176  */
12177 typedef struct MUST_USE_STRUCT LDKRawDataPart {
12178    /**
12179     * A pointer to the opaque Rust object.
12180     * Nearly everywhere, inner must be non-null, however in places where
12181     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12182     */
12183    LDKnativeRawDataPart *inner;
12184    /**
12185     * Indicates that this is the only struct which contains the same pointer.
12186     * Rust functions which take ownership of an object provided via an argument require
12187     * this to be true and invalidate the object pointed to by inner.
12188     */
12189    bool is_owned;
12190 } LDKRawDataPart;
12191
12192
12193
12194 /**
12195  * SHA-256 hash
12196  */
12197 typedef struct MUST_USE_STRUCT LDKSha256 {
12198    /**
12199     * A pointer to the opaque Rust object.
12200     * Nearly everywhere, inner must be non-null, however in places where
12201     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12202     */
12203    LDKnativeSha256 *inner;
12204    /**
12205     * Indicates that this is the only struct which contains the same pointer.
12206     * Rust functions which take ownership of an object provided via an argument require
12207     * this to be true and invalidate the object pointed to by inner.
12208     */
12209    bool is_owned;
12210 } LDKSha256;
12211
12212
12213
12214 /**
12215  * Positive duration that defines when (relatively to the timestamp) in the future the invoice
12216  * expires
12217  */
12218 typedef struct MUST_USE_STRUCT LDKExpiryTime {
12219    /**
12220     * A pointer to the opaque Rust object.
12221     * Nearly everywhere, inner must be non-null, however in places where
12222     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12223     */
12224    LDKnativeExpiryTime *inner;
12225    /**
12226     * Indicates that this is the only struct which contains the same pointer.
12227     * Rust functions which take ownership of an object provided via an argument require
12228     * this to be true and invalidate the object pointed to by inner.
12229     */
12230    bool is_owned;
12231 } LDKExpiryTime;
12232
12233
12234
12235 /**
12236  * `min_final_cltv_expiry` to use for the last HTLC in the route
12237  */
12238 typedef struct MUST_USE_STRUCT LDKMinFinalCltvExpiry {
12239    /**
12240     * A pointer to the opaque Rust object.
12241     * Nearly everywhere, inner must be non-null, however in places where
12242     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12243     */
12244    LDKnativeMinFinalCltvExpiry *inner;
12245    /**
12246     * Indicates that this is the only struct which contains the same pointer.
12247     * Rust functions which take ownership of an object provided via an argument require
12248     * this to be true and invalidate the object pointed to by inner.
12249     */
12250    bool is_owned;
12251 } LDKMinFinalCltvExpiry;
12252
12253 /**
12254  * A 20-byte byte array.
12255  */
12256 typedef struct LDKTwentyBytes {
12257    /**
12258     * The twenty bytes
12259     */
12260    uint8_t data[20];
12261 } LDKTwentyBytes;
12262
12263 /**
12264  * Fallback address in case no LN payment is possible
12265  */
12266 typedef enum LDKFallback_Tag {
12267    LDKFallback_SegWitProgram,
12268    LDKFallback_PubKeyHash,
12269    LDKFallback_ScriptHash,
12270    /**
12271     * Must be last for serialization purposes
12272     */
12273    LDKFallback_Sentinel,
12274 } LDKFallback_Tag;
12275
12276 typedef struct LDKFallback_LDKSegWitProgram_Body {
12277    struct LDKu5 version;
12278    struct LDKCVec_u8Z program;
12279 } LDKFallback_LDKSegWitProgram_Body;
12280
12281 typedef struct MUST_USE_STRUCT LDKFallback {
12282    LDKFallback_Tag tag;
12283    union {
12284       LDKFallback_LDKSegWitProgram_Body seg_wit_program;
12285       struct {
12286          struct LDKTwentyBytes pub_key_hash;
12287       };
12288       struct {
12289          struct LDKTwentyBytes script_hash;
12290       };
12291    };
12292 } LDKFallback;
12293
12294 /**
12295  * A trait defining behavior of an [`Invoice`] payer.
12296  */
12297 typedef struct LDKPayer {
12298    /**
12299     * An opaque pointer which is passed to your function implementations as an argument.
12300     * This has no meaning in the LDK, and can be NULL or any other value.
12301     */
12302    void *this_arg;
12303    /**
12304     * Returns the payer's node id.
12305     */
12306    struct LDKPublicKey (*node_id)(const void *this_arg);
12307    /**
12308     * Returns the payer's channels.
12309     */
12310    struct LDKCVec_ChannelDetailsZ (*first_hops)(const void *this_arg);
12311    /**
12312     * Sends a payment over the Lightning Network using the given [`Route`].
12313     *
12314     * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
12315     */
12316    struct LDKCResult_PaymentIdPaymentSendFailureZ (*send_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
12317    /**
12318     * Sends a spontaneous payment over the Lightning Network using the given [`Route`].
12319     */
12320    struct LDKCResult_PaymentIdPaymentSendFailureZ (*send_spontaneous_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
12321    /**
12322     * Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
12323     */
12324    struct LDKCResult_NonePaymentSendFailureZ (*retry_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
12325    /**
12326     * Signals that no further retries for the given payment will occur.
12327     */
12328    void (*abandon_payment)(const void *this_arg, struct LDKThirtyTwoBytes payment_id);
12329    /**
12330     * Frees any resources associated with this object given its this_arg pointer.
12331     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12332     */
12333    void (*free)(void *this_arg);
12334 } LDKPayer;
12335
12336 /**
12337  * A trait defining behavior for routing an [`Invoice`] payment.
12338  */
12339 typedef struct LDKRouter {
12340    /**
12341     * An opaque pointer which is passed to your function implementations as an argument.
12342     * This has no meaning in the LDK, and can be NULL or any other value.
12343     */
12344    void *this_arg;
12345    /**
12346     * Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
12347     *
12348     * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
12349     */
12350    struct LDKCResult_RouteLightningErrorZ (*find_route)(const void *this_arg, struct LDKPublicKey payer, const struct LDKRouteParameters *NONNULL_PTR route_params, const uint8_t (*payment_hash)[32], struct LDKCVec_ChannelDetailsZ *first_hops, const struct LDKScore *NONNULL_PTR scorer);
12351    /**
12352     * Frees any resources associated with this object given its this_arg pointer.
12353     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12354     */
12355    void (*free)(void *this_arg);
12356 } LDKRouter;
12357
12358
12359
12360 /**
12361  * A utility for paying [`Invoice`]s and sending spontaneous payments.
12362  *
12363  * See [module-level documentation] for details.
12364  *
12365  * [module-level documentation]: crate::payment
12366  */
12367 typedef struct MUST_USE_STRUCT LDKInvoicePayer {
12368    /**
12369     * A pointer to the opaque Rust object.
12370     * Nearly everywhere, inner must be non-null, however in places where
12371     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12372     */
12373    LDKnativeInvoicePayer *inner;
12374    /**
12375     * Indicates that this is the only struct which contains the same pointer.
12376     * Rust functions which take ownership of an object provided via an argument require
12377     * this to be true and invalidate the object pointed to by inner.
12378     */
12379    bool is_owned;
12380 } LDKInvoicePayer;
12381
12382
12383
12384 /**
12385  * Number of attempts to retry payment path failures for an [`Invoice`].
12386  *
12387  * Note that this is the number of *path* failures, not full payment retries. For multi-path
12388  * payments, if this is less than the total number of paths, we will never even retry all of the
12389  * payment's paths.
12390  */
12391 typedef struct MUST_USE_STRUCT LDKRetryAttempts {
12392    /**
12393     * A pointer to the opaque Rust object.
12394     * Nearly everywhere, inner must be non-null, however in places where
12395     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12396     */
12397    LDKnativeRetryAttempts *inner;
12398    /**
12399     * Indicates that this is the only struct which contains the same pointer.
12400     * Rust functions which take ownership of an object provided via an argument require
12401     * this to be true and invalidate the object pointed to by inner.
12402     */
12403    bool is_owned;
12404 } LDKRetryAttempts;
12405
12406
12407
12408 /**
12409  * A [`Router`] implemented using [`find_route`].
12410  */
12411 typedef struct MUST_USE_STRUCT LDKDefaultRouter {
12412    /**
12413     * A pointer to the opaque Rust object.
12414     * Nearly everywhere, inner must be non-null, however in places where
12415     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12416     */
12417    LDKnativeDefaultRouter *inner;
12418    /**
12419     * Indicates that this is the only struct which contains the same pointer.
12420     * Rust functions which take ownership of an object provided via an argument require
12421     * this to be true and invalidate the object pointed to by inner.
12422     */
12423    bool is_owned;
12424 } LDKDefaultRouter;
12425
12426 extern const uintptr_t MAX_BUF_SIZE;
12427
12428 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
12429
12430 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
12431
12432 extern const uint32_t ANTI_REORG_DELAY;
12433
12434 extern const uint16_t BREAKDOWN_TIMEOUT;
12435
12436 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
12437
12438 extern const uint32_t MIN_FINAL_CLTV_EXPIRY;
12439
12440 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
12441
12442 extern const uint64_t UNKNOWN_CHANNEL_CAPACITY_MSAT;
12443
12444 extern const uint32_t DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA;
12445
12446 extern const uint64_t MAX_TIMESTAMP;
12447
12448 extern const uint64_t DEFAULT_EXPIRY_TIME;
12449
12450 extern const uint64_t DEFAULT_MIN_FINAL_CLTV_EXPIRY;
12451
12452 extern const uint8_t TAG_PAYMENT_HASH;
12453
12454 extern const uint8_t TAG_DESCRIPTION;
12455
12456 extern const uint8_t TAG_PAYEE_PUB_KEY;
12457
12458 extern const uint8_t TAG_DESCRIPTION_HASH;
12459
12460 extern const uint8_t TAG_EXPIRY_TIME;
12461
12462 extern const uint8_t TAG_MIN_FINAL_CLTV_EXPIRY;
12463
12464 extern const uint8_t TAG_FALLBACK;
12465
12466 extern const uint8_t TAG_PRIVATE_ROUTE;
12467
12468 extern const uint8_t TAG_PAYMENT_SECRET;
12469
12470 extern const uint8_t TAG_FEATURES;
12471
12472 struct LDKStr _ldk_get_compiled_version(void);
12473
12474 struct LDKStr _ldk_c_bindings_get_compiled_version(void);
12475
12476 /**
12477  * Frees the data buffer, if data_is_owned is set and datalen > 0.
12478  */
12479 void Transaction_free(struct LDKTransaction _res);
12480
12481 /**
12482  * Convenience function for constructing a new TxOut
12483  */
12484 struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
12485
12486 /**
12487  * Frees the data pointed to by script_pubkey.
12488  */
12489 void TxOut_free(struct LDKTxOut _res);
12490
12491 /**
12492  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
12493  */
12494 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
12495
12496 /**
12497  * Frees the data buffer, if chars_is_owned is set and len > 0.
12498  */
12499 void Str_free(struct LDKStr _res);
12500
12501 #if defined(LDK_DEBUG_BUILD)
12502 /**
12503  * This function exists for memory safety testing purposes. It should never be used in production
12504  * code
12505  */
12506 const void *__unmangle_inner_ptr(const void *ptr);
12507 #endif
12508
12509 /**
12510  * Creates a new CResult_NoneNoneZ in the success state.
12511  */
12512 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
12513
12514 /**
12515  * Creates a new CResult_NoneNoneZ in the error state.
12516  */
12517 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
12518
12519 /**
12520  * Checks if the given object is currently in the success state
12521  */
12522 bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
12523
12524 /**
12525  * Frees any resources used by the CResult_NoneNoneZ.
12526  */
12527 void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
12528
12529 /**
12530  * Creates a new CResult_NoneNoneZ which has the same data as `orig`
12531  * but with all dynamically-allocated buffers duplicated in new buffers.
12532  */
12533 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
12534
12535 /**
12536  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ in the success state.
12537  */
12538 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_ok(struct LDKCounterpartyCommitmentSecrets o);
12539
12540 /**
12541  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ in the error state.
12542  */
12543 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_err(struct LDKDecodeError e);
12544
12545 /**
12546  * Checks if the given object is currently in the success state
12547  */
12548 bool CResult_CounterpartyCommitmentSecretsDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR o);
12549
12550 /**
12551  * Frees any resources used by the CResult_CounterpartyCommitmentSecretsDecodeErrorZ.
12552  */
12553 void CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ _res);
12554
12555 /**
12556  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ which has the same data as `orig`
12557  * but with all dynamically-allocated buffers duplicated in new buffers.
12558  */
12559 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_clone(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR orig);
12560
12561 /**
12562  * Creates a new CResult_SecretKeyErrorZ in the success state.
12563  */
12564 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
12565
12566 /**
12567  * Creates a new CResult_SecretKeyErrorZ in the error state.
12568  */
12569 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
12570
12571 /**
12572  * Checks if the given object is currently in the success state
12573  */
12574 bool CResult_SecretKeyErrorZ_is_ok(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR o);
12575
12576 /**
12577  * Frees any resources used by the CResult_SecretKeyErrorZ.
12578  */
12579 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
12580
12581 /**
12582  * Creates a new CResult_SecretKeyErrorZ which has the same data as `orig`
12583  * but with all dynamically-allocated buffers duplicated in new buffers.
12584  */
12585 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_clone(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR orig);
12586
12587 /**
12588  * Creates a new CResult_PublicKeyErrorZ in the success state.
12589  */
12590 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
12591
12592 /**
12593  * Creates a new CResult_PublicKeyErrorZ in the error state.
12594  */
12595 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
12596
12597 /**
12598  * Checks if the given object is currently in the success state
12599  */
12600 bool CResult_PublicKeyErrorZ_is_ok(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR o);
12601
12602 /**
12603  * Frees any resources used by the CResult_PublicKeyErrorZ.
12604  */
12605 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
12606
12607 /**
12608  * Creates a new CResult_PublicKeyErrorZ which has the same data as `orig`
12609  * but with all dynamically-allocated buffers duplicated in new buffers.
12610  */
12611 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
12612
12613 /**
12614  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
12615  */
12616 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
12617
12618 /**
12619  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
12620  */
12621 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
12622
12623 /**
12624  * Checks if the given object is currently in the success state
12625  */
12626 bool CResult_TxCreationKeysDecodeErrorZ_is_ok(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR o);
12627
12628 /**
12629  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
12630  */
12631 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
12632
12633 /**
12634  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
12635  * but with all dynamically-allocated buffers duplicated in new buffers.
12636  */
12637 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
12638
12639 /**
12640  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
12641  */
12642 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
12643
12644 /**
12645  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
12646  */
12647 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
12648
12649 /**
12650  * Checks if the given object is currently in the success state
12651  */
12652 bool CResult_ChannelPublicKeysDecodeErrorZ_is_ok(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR o);
12653
12654 /**
12655  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
12656  */
12657 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
12658
12659 /**
12660  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
12661  * but with all dynamically-allocated buffers duplicated in new buffers.
12662  */
12663 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
12664
12665 /**
12666  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
12667  */
12668 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
12669
12670 /**
12671  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
12672  */
12673 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
12674
12675 /**
12676  * Checks if the given object is currently in the success state
12677  */
12678 bool CResult_TxCreationKeysErrorZ_is_ok(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR o);
12679
12680 /**
12681  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
12682  */
12683 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
12684
12685 /**
12686  * Creates a new CResult_TxCreationKeysErrorZ which has the same data as `orig`
12687  * but with all dynamically-allocated buffers duplicated in new buffers.
12688  */
12689 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
12690
12691 /**
12692  * Constructs a new COption_u32Z containing a u32
12693  */
12694 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
12695
12696 /**
12697  * Constructs a new COption_u32Z containing nothing
12698  */
12699 struct LDKCOption_u32Z COption_u32Z_none(void);
12700
12701 /**
12702  * Frees any resources associated with the u32, if we are in the Some state
12703  */
12704 void COption_u32Z_free(struct LDKCOption_u32Z _res);
12705
12706 /**
12707  * Creates a new COption_u32Z which has the same data as `orig`
12708  * but with all dynamically-allocated buffers duplicated in new buffers.
12709  */
12710 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
12711
12712 /**
12713  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
12714  */
12715 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
12716
12717 /**
12718  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
12719  */
12720 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
12721
12722 /**
12723  * Checks if the given object is currently in the success state
12724  */
12725 bool CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR o);
12726
12727 /**
12728  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
12729  */
12730 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
12731
12732 /**
12733  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
12734  * but with all dynamically-allocated buffers duplicated in new buffers.
12735  */
12736 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
12737
12738 /**
12739  * Constructs a new COption_NoneZ containing a
12740  */
12741 enum LDKCOption_NoneZ COption_NoneZ_some(void);
12742
12743 /**
12744  * Constructs a new COption_NoneZ containing nothing
12745  */
12746 enum LDKCOption_NoneZ COption_NoneZ_none(void);
12747
12748 /**
12749  * Frees any resources associated with the , if we are in the Some state
12750  */
12751 void COption_NoneZ_free(enum LDKCOption_NoneZ _res);
12752
12753 /**
12754  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
12755  */
12756 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
12757
12758 /**
12759  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
12760  */
12761 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
12762
12763 /**
12764  * Checks if the given object is currently in the success state
12765  */
12766 bool CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
12767
12768 /**
12769  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
12770  */
12771 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
12772
12773 /**
12774  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
12775  * but with all dynamically-allocated buffers duplicated in new buffers.
12776  */
12777 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
12778
12779 /**
12780  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
12781  */
12782 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
12783
12784 /**
12785  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
12786  */
12787 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
12788
12789 /**
12790  * Checks if the given object is currently in the success state
12791  */
12792 bool CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
12793
12794 /**
12795  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
12796  */
12797 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
12798
12799 /**
12800  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
12801  * but with all dynamically-allocated buffers duplicated in new buffers.
12802  */
12803 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
12804
12805 /**
12806  * Frees the buffer pointed to by `data` if `datalen` is non-0.
12807  */
12808 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
12809
12810 /**
12811  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
12812  */
12813 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
12814
12815 /**
12816  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
12817  */
12818 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
12819
12820 /**
12821  * Checks if the given object is currently in the success state
12822  */
12823 bool CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
12824
12825 /**
12826  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
12827  */
12828 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
12829
12830 /**
12831  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
12832  * but with all dynamically-allocated buffers duplicated in new buffers.
12833  */
12834 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
12835
12836 /**
12837  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
12838  */
12839 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
12840
12841 /**
12842  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
12843  */
12844 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
12845
12846 /**
12847  * Checks if the given object is currently in the success state
12848  */
12849 bool CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
12850
12851 /**
12852  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
12853  */
12854 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
12855
12856 /**
12857  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
12858  * but with all dynamically-allocated buffers duplicated in new buffers.
12859  */
12860 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
12861
12862 /**
12863  * Creates a new CResult_TrustedClosingTransactionNoneZ in the success state.
12864  */
12865 struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_ok(struct LDKTrustedClosingTransaction o);
12866
12867 /**
12868  * Creates a new CResult_TrustedClosingTransactionNoneZ in the error state.
12869  */
12870 struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_err(void);
12871
12872 /**
12873  * Checks if the given object is currently in the success state
12874  */
12875 bool CResult_TrustedClosingTransactionNoneZ_is_ok(const struct LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR o);
12876
12877 /**
12878  * Frees any resources used by the CResult_TrustedClosingTransactionNoneZ.
12879  */
12880 void CResult_TrustedClosingTransactionNoneZ_free(struct LDKCResult_TrustedClosingTransactionNoneZ _res);
12881
12882 /**
12883  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
12884  */
12885 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
12886
12887 /**
12888  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
12889  */
12890 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
12891
12892 /**
12893  * Checks if the given object is currently in the success state
12894  */
12895 bool CResult_CommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
12896
12897 /**
12898  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
12899  */
12900 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
12901
12902 /**
12903  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
12904  * but with all dynamically-allocated buffers duplicated in new buffers.
12905  */
12906 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
12907
12908 /**
12909  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
12910  */
12911 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
12912
12913 /**
12914  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
12915  */
12916 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
12917
12918 /**
12919  * Checks if the given object is currently in the success state
12920  */
12921 bool CResult_TrustedCommitmentTransactionNoneZ_is_ok(const struct LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR o);
12922
12923 /**
12924  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
12925  */
12926 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
12927
12928 /**
12929  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
12930  */
12931 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
12932
12933 /**
12934  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
12935  */
12936 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
12937
12938 /**
12939  * Checks if the given object is currently in the success state
12940  */
12941 bool CResult_CVec_SignatureZNoneZ_is_ok(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR o);
12942
12943 /**
12944  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
12945  */
12946 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
12947
12948 /**
12949  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
12950  * but with all dynamically-allocated buffers duplicated in new buffers.
12951  */
12952 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
12953
12954 /**
12955  * Creates a new CResult_ShutdownScriptDecodeErrorZ in the success state.
12956  */
12957 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_ok(struct LDKShutdownScript o);
12958
12959 /**
12960  * Creates a new CResult_ShutdownScriptDecodeErrorZ in the error state.
12961  */
12962 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_err(struct LDKDecodeError e);
12963
12964 /**
12965  * Checks if the given object is currently in the success state
12966  */
12967 bool CResult_ShutdownScriptDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR o);
12968
12969 /**
12970  * Frees any resources used by the CResult_ShutdownScriptDecodeErrorZ.
12971  */
12972 void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
12973
12974 /**
12975  * Creates a new CResult_ShutdownScriptDecodeErrorZ which has the same data as `orig`
12976  * but with all dynamically-allocated buffers duplicated in new buffers.
12977  */
12978 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
12979
12980 /**
12981  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ in the success state.
12982  */
12983 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_ok(struct LDKShutdownScript o);
12984
12985 /**
12986  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ in the error state.
12987  */
12988 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_err(struct LDKInvalidShutdownScript e);
12989
12990 /**
12991  * Checks if the given object is currently in the success state
12992  */
12993 bool CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR o);
12994
12995 /**
12996  * Frees any resources used by the CResult_ShutdownScriptInvalidShutdownScriptZ.
12997  */
12998 void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
12999
13000 /**
13001  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ which has the same data as `orig`
13002  * but with all dynamically-allocated buffers duplicated in new buffers.
13003  */
13004 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
13005
13006 /**
13007  * Creates a new CResult_NoneErrorZ in the success state.
13008  */
13009 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
13010
13011 /**
13012  * Creates a new CResult_NoneErrorZ in the error state.
13013  */
13014 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
13015
13016 /**
13017  * Checks if the given object is currently in the success state
13018  */
13019 bool CResult_NoneErrorZ_is_ok(const struct LDKCResult_NoneErrorZ *NONNULL_PTR o);
13020
13021 /**
13022  * Frees any resources used by the CResult_NoneErrorZ.
13023  */
13024 void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
13025
13026 /**
13027  * Creates a new CResult_NoneErrorZ which has the same data as `orig`
13028  * but with all dynamically-allocated buffers duplicated in new buffers.
13029  */
13030 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
13031
13032 /**
13033  * Creates a new CResult_RouteHopDecodeErrorZ in the success state.
13034  */
13035 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
13036
13037 /**
13038  * Creates a new CResult_RouteHopDecodeErrorZ in the error state.
13039  */
13040 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
13041
13042 /**
13043  * Checks if the given object is currently in the success state
13044  */
13045 bool CResult_RouteHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR o);
13046
13047 /**
13048  * Frees any resources used by the CResult_RouteHopDecodeErrorZ.
13049  */
13050 void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
13051
13052 /**
13053  * Creates a new CResult_RouteHopDecodeErrorZ which has the same data as `orig`
13054  * but with all dynamically-allocated buffers duplicated in new buffers.
13055  */
13056 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
13057
13058 /**
13059  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13060  */
13061 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
13062
13063 /**
13064  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13065  */
13066 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
13067
13068 /**
13069  * Creates a new CResult_RouteDecodeErrorZ in the success state.
13070  */
13071 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
13072
13073 /**
13074  * Creates a new CResult_RouteDecodeErrorZ in the error state.
13075  */
13076 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
13077
13078 /**
13079  * Checks if the given object is currently in the success state
13080  */
13081 bool CResult_RouteDecodeErrorZ_is_ok(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR o);
13082
13083 /**
13084  * Frees any resources used by the CResult_RouteDecodeErrorZ.
13085  */
13086 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
13087
13088 /**
13089  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
13090  * but with all dynamically-allocated buffers duplicated in new buffers.
13091  */
13092 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
13093
13094 /**
13095  * Creates a new CResult_RouteParametersDecodeErrorZ in the success state.
13096  */
13097 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_ok(struct LDKRouteParameters o);
13098
13099 /**
13100  * Creates a new CResult_RouteParametersDecodeErrorZ in the error state.
13101  */
13102 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_err(struct LDKDecodeError e);
13103
13104 /**
13105  * Checks if the given object is currently in the success state
13106  */
13107 bool CResult_RouteParametersDecodeErrorZ_is_ok(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR o);
13108
13109 /**
13110  * Frees any resources used by the CResult_RouteParametersDecodeErrorZ.
13111  */
13112 void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
13113
13114 /**
13115  * Creates a new CResult_RouteParametersDecodeErrorZ which has the same data as `orig`
13116  * but with all dynamically-allocated buffers duplicated in new buffers.
13117  */
13118 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
13119
13120 /**
13121  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13122  */
13123 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
13124
13125 /**
13126  * Constructs a new COption_u64Z containing a u64
13127  */
13128 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
13129
13130 /**
13131  * Constructs a new COption_u64Z containing nothing
13132  */
13133 struct LDKCOption_u64Z COption_u64Z_none(void);
13134
13135 /**
13136  * Frees any resources associated with the u64, if we are in the Some state
13137  */
13138 void COption_u64Z_free(struct LDKCOption_u64Z _res);
13139
13140 /**
13141  * Creates a new COption_u64Z which has the same data as `orig`
13142  * but with all dynamically-allocated buffers duplicated in new buffers.
13143  */
13144 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
13145
13146 /**
13147  * Creates a new CResult_PaymentParametersDecodeErrorZ in the success state.
13148  */
13149 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_ok(struct LDKPaymentParameters o);
13150
13151 /**
13152  * Creates a new CResult_PaymentParametersDecodeErrorZ in the error state.
13153  */
13154 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_err(struct LDKDecodeError e);
13155
13156 /**
13157  * Checks if the given object is currently in the success state
13158  */
13159 bool CResult_PaymentParametersDecodeErrorZ_is_ok(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR o);
13160
13161 /**
13162  * Frees any resources used by the CResult_PaymentParametersDecodeErrorZ.
13163  */
13164 void CResult_PaymentParametersDecodeErrorZ_free(struct LDKCResult_PaymentParametersDecodeErrorZ _res);
13165
13166 /**
13167  * Creates a new CResult_PaymentParametersDecodeErrorZ which has the same data as `orig`
13168  * but with all dynamically-allocated buffers duplicated in new buffers.
13169  */
13170 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_clone(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR orig);
13171
13172 /**
13173  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13174  */
13175 void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
13176
13177 /**
13178  * Creates a new CResult_RouteHintDecodeErrorZ in the success state.
13179  */
13180 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_ok(struct LDKRouteHint o);
13181
13182 /**
13183  * Creates a new CResult_RouteHintDecodeErrorZ in the error state.
13184  */
13185 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_err(struct LDKDecodeError e);
13186
13187 /**
13188  * Checks if the given object is currently in the success state
13189  */
13190 bool CResult_RouteHintDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR o);
13191
13192 /**
13193  * Frees any resources used by the CResult_RouteHintDecodeErrorZ.
13194  */
13195 void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
13196
13197 /**
13198  * Creates a new CResult_RouteHintDecodeErrorZ which has the same data as `orig`
13199  * but with all dynamically-allocated buffers duplicated in new buffers.
13200  */
13201 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
13202
13203 /**
13204  * Creates a new CResult_RouteHintHopDecodeErrorZ in the success state.
13205  */
13206 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_ok(struct LDKRouteHintHop o);
13207
13208 /**
13209  * Creates a new CResult_RouteHintHopDecodeErrorZ in the error state.
13210  */
13211 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_err(struct LDKDecodeError e);
13212
13213 /**
13214  * Checks if the given object is currently in the success state
13215  */
13216 bool CResult_RouteHintHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR o);
13217
13218 /**
13219  * Frees any resources used by the CResult_RouteHintHopDecodeErrorZ.
13220  */
13221 void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
13222
13223 /**
13224  * Creates a new CResult_RouteHintHopDecodeErrorZ which has the same data as `orig`
13225  * but with all dynamically-allocated buffers duplicated in new buffers.
13226  */
13227 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
13228
13229 /**
13230  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13231  */
13232 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
13233
13234 /**
13235  * Creates a new CResult_RouteLightningErrorZ in the success state.
13236  */
13237 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
13238
13239 /**
13240  * Creates a new CResult_RouteLightningErrorZ in the error state.
13241  */
13242 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
13243
13244 /**
13245  * Checks if the given object is currently in the success state
13246  */
13247 bool CResult_RouteLightningErrorZ_is_ok(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR o);
13248
13249 /**
13250  * Frees any resources used by the CResult_RouteLightningErrorZ.
13251  */
13252 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
13253
13254 /**
13255  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
13256  * but with all dynamically-allocated buffers duplicated in new buffers.
13257  */
13258 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
13259
13260 /**
13261  * Creates a new CResult_TxOutAccessErrorZ in the success state.
13262  */
13263 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
13264
13265 /**
13266  * Creates a new CResult_TxOutAccessErrorZ in the error state.
13267  */
13268 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
13269
13270 /**
13271  * Checks if the given object is currently in the success state
13272  */
13273 bool CResult_TxOutAccessErrorZ_is_ok(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR o);
13274
13275 /**
13276  * Frees any resources used by the CResult_TxOutAccessErrorZ.
13277  */
13278 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
13279
13280 /**
13281  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
13282  * but with all dynamically-allocated buffers duplicated in new buffers.
13283  */
13284 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
13285
13286 /**
13287  * Creates a new tuple which has the same data as `orig`
13288  * but with all dynamically-allocated buffers duplicated in new buffers.
13289  */
13290 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
13291
13292 /**
13293  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
13294  */
13295 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
13296
13297 /**
13298  * Frees any resources used by the C2Tuple_usizeTransactionZ.
13299  */
13300 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
13301
13302 /**
13303  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13304  */
13305 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
13306
13307 /**
13308  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13309  */
13310 void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
13311
13312 /**
13313  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
13314  */
13315 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
13316
13317 /**
13318  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
13319  */
13320 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
13321
13322 /**
13323  * Checks if the given object is currently in the success state
13324  */
13325 bool CResult_NoneChannelMonitorUpdateErrZ_is_ok(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR o);
13326
13327 /**
13328  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
13329  */
13330 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
13331
13332 /**
13333  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
13334  * but with all dynamically-allocated buffers duplicated in new buffers.
13335  */
13336 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
13337
13338 /**
13339  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13340  */
13341 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
13342
13343 /**
13344  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing a crate::c_types::derived::C2Tuple_usizeTransactionZ
13345  */
13346 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
13347
13348 /**
13349  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing nothing
13350  */
13351 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
13352
13353 /**
13354  * Frees any resources associated with the crate::c_types::derived::C2Tuple_usizeTransactionZ, if we are in the Some state
13355  */
13356 void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
13357
13358 /**
13359  * Creates a new COption_C2Tuple_usizeTransactionZZ which has the same data as `orig`
13360  * but with all dynamically-allocated buffers duplicated in new buffers.
13361  */
13362 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
13363
13364 /**
13365  * Constructs a new COption_ClosureReasonZ containing a crate::lightning::util::events::ClosureReason
13366  */
13367 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_some(struct LDKClosureReason o);
13368
13369 /**
13370  * Constructs a new COption_ClosureReasonZ containing nothing
13371  */
13372 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_none(void);
13373
13374 /**
13375  * Frees any resources associated with the crate::lightning::util::events::ClosureReason, if we are in the Some state
13376  */
13377 void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
13378
13379 /**
13380  * Creates a new COption_ClosureReasonZ which has the same data as `orig`
13381  * but with all dynamically-allocated buffers duplicated in new buffers.
13382  */
13383 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
13384
13385 /**
13386  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ in the success state.
13387  */
13388 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_ok(struct LDKCOption_ClosureReasonZ o);
13389
13390 /**
13391  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ in the error state.
13392  */
13393 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_err(struct LDKDecodeError e);
13394
13395 /**
13396  * Checks if the given object is currently in the success state
13397  */
13398 bool CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR o);
13399
13400 /**
13401  * Frees any resources used by the CResult_COption_ClosureReasonZDecodeErrorZ.
13402  */
13403 void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
13404
13405 /**
13406  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ which has the same data as `orig`
13407  * but with all dynamically-allocated buffers duplicated in new buffers.
13408  */
13409 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
13410
13411 /**
13412  * Constructs a new COption_NetworkUpdateZ containing a crate::lightning::routing::network_graph::NetworkUpdate
13413  */
13414 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_some(struct LDKNetworkUpdate o);
13415
13416 /**
13417  * Constructs a new COption_NetworkUpdateZ containing nothing
13418  */
13419 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_none(void);
13420
13421 /**
13422  * Frees any resources associated with the crate::lightning::routing::network_graph::NetworkUpdate, if we are in the Some state
13423  */
13424 void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
13425
13426 /**
13427  * Creates a new COption_NetworkUpdateZ which has the same data as `orig`
13428  * but with all dynamically-allocated buffers duplicated in new buffers.
13429  */
13430 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
13431
13432 /**
13433  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13434  */
13435 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
13436
13437 /**
13438  * Constructs a new COption_EventZ containing a crate::lightning::util::events::Event
13439  */
13440 struct LDKCOption_EventZ COption_EventZ_some(struct LDKEvent o);
13441
13442 /**
13443  * Constructs a new COption_EventZ containing nothing
13444  */
13445 struct LDKCOption_EventZ COption_EventZ_none(void);
13446
13447 /**
13448  * Frees any resources associated with the crate::lightning::util::events::Event, if we are in the Some state
13449  */
13450 void COption_EventZ_free(struct LDKCOption_EventZ _res);
13451
13452 /**
13453  * Creates a new COption_EventZ which has the same data as `orig`
13454  * but with all dynamically-allocated buffers duplicated in new buffers.
13455  */
13456 struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
13457
13458 /**
13459  * Creates a new CResult_COption_EventZDecodeErrorZ in the success state.
13460  */
13461 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_ok(struct LDKCOption_EventZ o);
13462
13463 /**
13464  * Creates a new CResult_COption_EventZDecodeErrorZ in the error state.
13465  */
13466 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_err(struct LDKDecodeError e);
13467
13468 /**
13469  * Checks if the given object is currently in the success state
13470  */
13471 bool CResult_COption_EventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR o);
13472
13473 /**
13474  * Frees any resources used by the CResult_COption_EventZDecodeErrorZ.
13475  */
13476 void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
13477
13478 /**
13479  * Creates a new CResult_COption_EventZDecodeErrorZ which has the same data as `orig`
13480  * but with all dynamically-allocated buffers duplicated in new buffers.
13481  */
13482 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
13483
13484 /**
13485  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13486  */
13487 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
13488
13489 /**
13490  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ in the success state.
13491  */
13492 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_ok(struct LDKFixedPenaltyScorer o);
13493
13494 /**
13495  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ in the error state.
13496  */
13497 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_err(struct LDKDecodeError e);
13498
13499 /**
13500  * Checks if the given object is currently in the success state
13501  */
13502 bool CResult_FixedPenaltyScorerDecodeErrorZ_is_ok(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR o);
13503
13504 /**
13505  * Frees any resources used by the CResult_FixedPenaltyScorerDecodeErrorZ.
13506  */
13507 void CResult_FixedPenaltyScorerDecodeErrorZ_free(struct LDKCResult_FixedPenaltyScorerDecodeErrorZ _res);
13508
13509 /**
13510  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ which has the same data as `orig`
13511  * but with all dynamically-allocated buffers duplicated in new buffers.
13512  */
13513 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_clone(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR orig);
13514
13515 /**
13516  * Creates a new CResult_ScoringParametersDecodeErrorZ in the success state.
13517  */
13518 struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
13519
13520 /**
13521  * Creates a new CResult_ScoringParametersDecodeErrorZ in the error state.
13522  */
13523 struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
13524
13525 /**
13526  * Checks if the given object is currently in the success state
13527  */
13528 bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
13529
13530 /**
13531  * Frees any resources used by the CResult_ScoringParametersDecodeErrorZ.
13532  */
13533 void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
13534
13535 /**
13536  * Creates a new CResult_ScoringParametersDecodeErrorZ which has the same data as `orig`
13537  * but with all dynamically-allocated buffers duplicated in new buffers.
13538  */
13539 struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_clone(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR orig);
13540
13541 /**
13542  * Creates a new CResult_ScorerDecodeErrorZ in the success state.
13543  */
13544 struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_ok(struct LDKScorer o);
13545
13546 /**
13547  * Creates a new CResult_ScorerDecodeErrorZ in the error state.
13548  */
13549 struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_err(struct LDKDecodeError e);
13550
13551 /**
13552  * Checks if the given object is currently in the success state
13553  */
13554 bool CResult_ScorerDecodeErrorZ_is_ok(const struct LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR o);
13555
13556 /**
13557  * Frees any resources used by the CResult_ScorerDecodeErrorZ.
13558  */
13559 void CResult_ScorerDecodeErrorZ_free(struct LDKCResult_ScorerDecodeErrorZ _res);
13560
13561 /**
13562  * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the success state.
13563  */
13564 struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_ok(struct LDKProbabilisticScorer o);
13565
13566 /**
13567  * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the error state.
13568  */
13569 struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_err(struct LDKDecodeError e);
13570
13571 /**
13572  * Checks if the given object is currently in the success state
13573  */
13574 bool CResult_ProbabilisticScorerDecodeErrorZ_is_ok(const struct LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR o);
13575
13576 /**
13577  * Frees any resources used by the CResult_ProbabilisticScorerDecodeErrorZ.
13578  */
13579 void CResult_ProbabilisticScorerDecodeErrorZ_free(struct LDKCResult_ProbabilisticScorerDecodeErrorZ _res);
13580
13581 /**
13582  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
13583  */
13584 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
13585
13586 /**
13587  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
13588  */
13589 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13590
13591 /**
13592  * Checks if the given object is currently in the success state
13593  */
13594 bool CResult_InitFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR o);
13595
13596 /**
13597  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
13598  */
13599 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
13600
13601 /**
13602  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
13603  */
13604 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
13605
13606 /**
13607  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
13608  */
13609 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13610
13611 /**
13612  * Checks if the given object is currently in the success state
13613  */
13614 bool CResult_ChannelFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR o);
13615
13616 /**
13617  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
13618  */
13619 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
13620
13621 /**
13622  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
13623  */
13624 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
13625
13626 /**
13627  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
13628  */
13629 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13630
13631 /**
13632  * Checks if the given object is currently in the success state
13633  */
13634 bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
13635
13636 /**
13637  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
13638  */
13639 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
13640
13641 /**
13642  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
13643  */
13644 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
13645
13646 /**
13647  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
13648  */
13649 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13650
13651 /**
13652  * Checks if the given object is currently in the success state
13653  */
13654 bool CResult_InvoiceFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR o);
13655
13656 /**
13657  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
13658  */
13659 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
13660
13661 /**
13662  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ in the success state.
13663  */
13664 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_ok(struct LDKChannelTypeFeatures o);
13665
13666 /**
13667  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ in the error state.
13668  */
13669 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13670
13671 /**
13672  * Checks if the given object is currently in the success state
13673  */
13674 bool CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR o);
13675
13676 /**
13677  * Frees any resources used by the CResult_ChannelTypeFeaturesDecodeErrorZ.
13678  */
13679 void CResult_ChannelTypeFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res);
13680
13681 /**
13682  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the success state.
13683  */
13684 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
13685
13686 /**
13687  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the error state.
13688  */
13689 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
13690
13691 /**
13692  * Checks if the given object is currently in the success state
13693  */
13694 bool CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
13695
13696 /**
13697  * Frees any resources used by the CResult_DelayedPaymentOutputDescriptorDecodeErrorZ.
13698  */
13699 void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
13700
13701 /**
13702  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
13703  * but with all dynamically-allocated buffers duplicated in new buffers.
13704  */
13705 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
13706
13707 /**
13708  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the success state.
13709  */
13710 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
13711
13712 /**
13713  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the error state.
13714  */
13715 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
13716
13717 /**
13718  * Checks if the given object is currently in the success state
13719  */
13720 bool CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
13721
13722 /**
13723  * Frees any resources used by the CResult_StaticPaymentOutputDescriptorDecodeErrorZ.
13724  */
13725 void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
13726
13727 /**
13728  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
13729  * but with all dynamically-allocated buffers duplicated in new buffers.
13730  */
13731 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
13732
13733 /**
13734  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
13735  */
13736 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
13737
13738 /**
13739  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
13740  */
13741 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
13742
13743 /**
13744  * Checks if the given object is currently in the success state
13745  */
13746 bool CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
13747
13748 /**
13749  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
13750  */
13751 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
13752
13753 /**
13754  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
13755  * but with all dynamically-allocated buffers duplicated in new buffers.
13756  */
13757 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
13758
13759 /**
13760  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13761  */
13762 void CVec_PaymentPreimageZ_free(struct LDKCVec_PaymentPreimageZ _res);
13763
13764 /**
13765  * Creates a new tuple which has the same data as `orig`
13766  * but with all dynamically-allocated buffers duplicated in new buffers.
13767  */
13768 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
13769
13770 /**
13771  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
13772  */
13773 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
13774
13775 /**
13776  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
13777  */
13778 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
13779
13780 /**
13781  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
13782  */
13783 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
13784
13785 /**
13786  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
13787  */
13788 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
13789
13790 /**
13791  * Checks if the given object is currently in the success state
13792  */
13793 bool CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR o);
13794
13795 /**
13796  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
13797  */
13798 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
13799
13800 /**
13801  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
13802  * but with all dynamically-allocated buffers duplicated in new buffers.
13803  */
13804 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
13805
13806 /**
13807  * Creates a new CResult_SignatureNoneZ in the success state.
13808  */
13809 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
13810
13811 /**
13812  * Creates a new CResult_SignatureNoneZ in the error state.
13813  */
13814 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
13815
13816 /**
13817  * Checks if the given object is currently in the success state
13818  */
13819 bool CResult_SignatureNoneZ_is_ok(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR o);
13820
13821 /**
13822  * Frees any resources used by the CResult_SignatureNoneZ.
13823  */
13824 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
13825
13826 /**
13827  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
13828  * but with all dynamically-allocated buffers duplicated in new buffers.
13829  */
13830 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
13831
13832 /**
13833  * Creates a new tuple which has the same data as `orig`
13834  * but with all dynamically-allocated buffers duplicated in new buffers.
13835  */
13836 struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_clone(const struct LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR orig);
13837
13838 /**
13839  * Creates a new C2Tuple_SignatureSignatureZ from the contained elements.
13840  */
13841 struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_new(struct LDKSignature a, struct LDKSignature b);
13842
13843 /**
13844  * Frees any resources used by the C2Tuple_SignatureSignatureZ.
13845  */
13846 void C2Tuple_SignatureSignatureZ_free(struct LDKC2Tuple_SignatureSignatureZ _res);
13847
13848 /**
13849  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ in the success state.
13850  */
13851 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_ok(struct LDKC2Tuple_SignatureSignatureZ o);
13852
13853 /**
13854  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ in the error state.
13855  */
13856 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_err(void);
13857
13858 /**
13859  * Checks if the given object is currently in the success state
13860  */
13861 bool CResult_C2Tuple_SignatureSignatureZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR o);
13862
13863 /**
13864  * Frees any resources used by the CResult_C2Tuple_SignatureSignatureZNoneZ.
13865  */
13866 void CResult_C2Tuple_SignatureSignatureZNoneZ_free(struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ _res);
13867
13868 /**
13869  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ which has the same data as `orig`
13870  * but with all dynamically-allocated buffers duplicated in new buffers.
13871  */
13872 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR orig);
13873
13874 /**
13875  * Creates a new CResult_SecretKeyNoneZ in the success state.
13876  */
13877 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_ok(struct LDKSecretKey o);
13878
13879 /**
13880  * Creates a new CResult_SecretKeyNoneZ in the error state.
13881  */
13882 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_err(void);
13883
13884 /**
13885  * Checks if the given object is currently in the success state
13886  */
13887 bool CResult_SecretKeyNoneZ_is_ok(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR o);
13888
13889 /**
13890  * Frees any resources used by the CResult_SecretKeyNoneZ.
13891  */
13892 void CResult_SecretKeyNoneZ_free(struct LDKCResult_SecretKeyNoneZ _res);
13893
13894 /**
13895  * Creates a new CResult_SecretKeyNoneZ which has the same data as `orig`
13896  * but with all dynamically-allocated buffers duplicated in new buffers.
13897  */
13898 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_clone(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR orig);
13899
13900 /**
13901  * Creates a new CResult_SignDecodeErrorZ in the success state.
13902  */
13903 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
13904
13905 /**
13906  * Creates a new CResult_SignDecodeErrorZ in the error state.
13907  */
13908 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
13909
13910 /**
13911  * Checks if the given object is currently in the success state
13912  */
13913 bool CResult_SignDecodeErrorZ_is_ok(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR o);
13914
13915 /**
13916  * Frees any resources used by the CResult_SignDecodeErrorZ.
13917  */
13918 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
13919
13920 /**
13921  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
13922  * but with all dynamically-allocated buffers duplicated in new buffers.
13923  */
13924 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
13925
13926 /**
13927  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13928  */
13929 void CVec_u5Z_free(struct LDKCVec_u5Z _res);
13930
13931 /**
13932  * Creates a new CResult_RecoverableSignatureNoneZ in the success state.
13933  */
13934 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
13935
13936 /**
13937  * Creates a new CResult_RecoverableSignatureNoneZ in the error state.
13938  */
13939 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
13940
13941 /**
13942  * Checks if the given object is currently in the success state
13943  */
13944 bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
13945
13946 /**
13947  * Frees any resources used by the CResult_RecoverableSignatureNoneZ.
13948  */
13949 void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
13950
13951 /**
13952  * Creates a new CResult_RecoverableSignatureNoneZ which has the same data as `orig`
13953  * but with all dynamically-allocated buffers duplicated in new buffers.
13954  */
13955 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
13956
13957 /**
13958  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13959  */
13960 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
13961
13962 /**
13963  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13964  */
13965 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
13966
13967 /**
13968  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
13969  */
13970 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
13971
13972 /**
13973  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
13974  */
13975 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
13976
13977 /**
13978  * Checks if the given object is currently in the success state
13979  */
13980 bool CResult_CVec_CVec_u8ZZNoneZ_is_ok(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR o);
13981
13982 /**
13983  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
13984  */
13985 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
13986
13987 /**
13988  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
13989  * but with all dynamically-allocated buffers duplicated in new buffers.
13990  */
13991 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
13992
13993 /**
13994  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
13995  */
13996 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
13997
13998 /**
13999  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
14000  */
14001 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
14002
14003 /**
14004  * Checks if the given object is currently in the success state
14005  */
14006 bool CResult_InMemorySignerDecodeErrorZ_is_ok(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR o);
14007
14008 /**
14009  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
14010  */
14011 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
14012
14013 /**
14014  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
14015  * but with all dynamically-allocated buffers duplicated in new buffers.
14016  */
14017 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
14018
14019 /**
14020  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14021  */
14022 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
14023
14024 /**
14025  * Creates a new CResult_TransactionNoneZ in the success state.
14026  */
14027 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
14028
14029 /**
14030  * Creates a new CResult_TransactionNoneZ in the error state.
14031  */
14032 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
14033
14034 /**
14035  * Checks if the given object is currently in the success state
14036  */
14037 bool CResult_TransactionNoneZ_is_ok(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR o);
14038
14039 /**
14040  * Frees any resources used by the CResult_TransactionNoneZ.
14041  */
14042 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
14043
14044 /**
14045  * Creates a new CResult_TransactionNoneZ which has the same data as `orig`
14046  * but with all dynamically-allocated buffers duplicated in new buffers.
14047  */
14048 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
14049
14050 /**
14051  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
14052  */
14053 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
14054
14055 /**
14056  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
14057  */
14058 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
14059
14060 /**
14061  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14062  */
14063 void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res);
14064
14065 /**
14066  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the success state.
14067  */
14068 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o);
14069
14070 /**
14071  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the error state.
14072  */
14073 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
14074
14075 /**
14076  * Checks if the given object is currently in the success state
14077  */
14078 bool CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR o);
14079
14080 /**
14081  * Frees any resources used by the CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.
14082  */
14083 void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
14084
14085 /**
14086  * Constructs a new COption_u16Z containing a u16
14087  */
14088 struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
14089
14090 /**
14091  * Constructs a new COption_u16Z containing nothing
14092  */
14093 struct LDKCOption_u16Z COption_u16Z_none(void);
14094
14095 /**
14096  * Frees any resources associated with the u16, if we are in the Some state
14097  */
14098 void COption_u16Z_free(struct LDKCOption_u16Z _res);
14099
14100 /**
14101  * Creates a new COption_u16Z which has the same data as `orig`
14102  * but with all dynamically-allocated buffers duplicated in new buffers.
14103  */
14104 struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
14105
14106 /**
14107  * Creates a new CResult_NoneAPIErrorZ in the success state.
14108  */
14109 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
14110
14111 /**
14112  * Creates a new CResult_NoneAPIErrorZ in the error state.
14113  */
14114 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
14115
14116 /**
14117  * Checks if the given object is currently in the success state
14118  */
14119 bool CResult_NoneAPIErrorZ_is_ok(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR o);
14120
14121 /**
14122  * Frees any resources used by the CResult_NoneAPIErrorZ.
14123  */
14124 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
14125
14126 /**
14127  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
14128  * but with all dynamically-allocated buffers duplicated in new buffers.
14129  */
14130 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
14131
14132 /**
14133  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14134  */
14135 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
14136
14137 /**
14138  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14139  */
14140 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
14141
14142 /**
14143  * Creates a new CResult__u832APIErrorZ in the success state.
14144  */
14145 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_ok(struct LDKThirtyTwoBytes o);
14146
14147 /**
14148  * Creates a new CResult__u832APIErrorZ in the error state.
14149  */
14150 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_err(struct LDKAPIError e);
14151
14152 /**
14153  * Checks if the given object is currently in the success state
14154  */
14155 bool CResult__u832APIErrorZ_is_ok(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR o);
14156
14157 /**
14158  * Frees any resources used by the CResult__u832APIErrorZ.
14159  */
14160 void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
14161
14162 /**
14163  * Creates a new CResult__u832APIErrorZ which has the same data as `orig`
14164  * but with all dynamically-allocated buffers duplicated in new buffers.
14165  */
14166 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
14167
14168 /**
14169  * Creates a new CResult_PaymentIdPaymentSendFailureZ in the success state.
14170  */
14171 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
14172
14173 /**
14174  * Creates a new CResult_PaymentIdPaymentSendFailureZ in the error state.
14175  */
14176 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
14177
14178 /**
14179  * Checks if the given object is currently in the success state
14180  */
14181 bool CResult_PaymentIdPaymentSendFailureZ_is_ok(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR o);
14182
14183 /**
14184  * Frees any resources used by the CResult_PaymentIdPaymentSendFailureZ.
14185  */
14186 void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
14187
14188 /**
14189  * Creates a new CResult_PaymentIdPaymentSendFailureZ which has the same data as `orig`
14190  * but with all dynamically-allocated buffers duplicated in new buffers.
14191  */
14192 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
14193
14194 /**
14195  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
14196  */
14197 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
14198
14199 /**
14200  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
14201  */
14202 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
14203
14204 /**
14205  * Checks if the given object is currently in the success state
14206  */
14207 bool CResult_NonePaymentSendFailureZ_is_ok(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR o);
14208
14209 /**
14210  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
14211  */
14212 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
14213
14214 /**
14215  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
14216  * but with all dynamically-allocated buffers duplicated in new buffers.
14217  */
14218 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
14219
14220 /**
14221  * Creates a new tuple which has the same data as `orig`
14222  * but with all dynamically-allocated buffers duplicated in new buffers.
14223  */
14224 struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
14225
14226 /**
14227  * Creates a new C2Tuple_PaymentHashPaymentIdZ from the contained elements.
14228  */
14229 struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
14230
14231 /**
14232  * Frees any resources used by the C2Tuple_PaymentHashPaymentIdZ.
14233  */
14234 void C2Tuple_PaymentHashPaymentIdZ_free(struct LDKC2Tuple_PaymentHashPaymentIdZ _res);
14235
14236 /**
14237  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ in the success state.
14238  */
14239 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(struct LDKC2Tuple_PaymentHashPaymentIdZ o);
14240
14241 /**
14242  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ in the error state.
14243  */
14244 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
14245
14246 /**
14247  * Checks if the given object is currently in the success state
14248  */
14249 bool CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR o);
14250
14251 /**
14252  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.
14253  */
14254 void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
14255
14256 /**
14257  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ which has the same data as `orig`
14258  * but with all dynamically-allocated buffers duplicated in new buffers.
14259  */
14260 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
14261
14262 /**
14263  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14264  */
14265 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
14266
14267 /**
14268  * Creates a new tuple which has the same data as `orig`
14269  * but with all dynamically-allocated buffers duplicated in new buffers.
14270  */
14271 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
14272
14273 /**
14274  * Creates a new C2Tuple_PaymentHashPaymentSecretZ from the contained elements.
14275  */
14276 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
14277
14278 /**
14279  * Frees any resources used by the C2Tuple_PaymentHashPaymentSecretZ.
14280  */
14281 void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
14282
14283 /**
14284  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ in the success state.
14285  */
14286 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
14287
14288 /**
14289  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ in the error state.
14290  */
14291 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(void);
14292
14293 /**
14294  * Checks if the given object is currently in the success state
14295  */
14296 bool CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR o);
14297
14298 /**
14299  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ.
14300  */
14301 void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res);
14302
14303 /**
14304  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ which has the same data as `orig`
14305  * but with all dynamically-allocated buffers duplicated in new buffers.
14306  */
14307 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR orig);
14308
14309 /**
14310  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ in the success state.
14311  */
14312 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
14313
14314 /**
14315  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ in the error state.
14316  */
14317 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(struct LDKAPIError e);
14318
14319 /**
14320  * Checks if the given object is currently in the success state
14321  */
14322 bool CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR o);
14323
14324 /**
14325  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.
14326  */
14327 void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res);
14328
14329 /**
14330  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ which has the same data as `orig`
14331  * but with all dynamically-allocated buffers duplicated in new buffers.
14332  */
14333 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR orig);
14334
14335 /**
14336  * Creates a new CResult_PaymentSecretNoneZ in the success state.
14337  */
14338 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
14339
14340 /**
14341  * Creates a new CResult_PaymentSecretNoneZ in the error state.
14342  */
14343 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_err(void);
14344
14345 /**
14346  * Checks if the given object is currently in the success state
14347  */
14348 bool CResult_PaymentSecretNoneZ_is_ok(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR o);
14349
14350 /**
14351  * Frees any resources used by the CResult_PaymentSecretNoneZ.
14352  */
14353 void CResult_PaymentSecretNoneZ_free(struct LDKCResult_PaymentSecretNoneZ _res);
14354
14355 /**
14356  * Creates a new CResult_PaymentSecretNoneZ which has the same data as `orig`
14357  * but with all dynamically-allocated buffers duplicated in new buffers.
14358  */
14359 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_clone(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR orig);
14360
14361 /**
14362  * Creates a new CResult_PaymentSecretAPIErrorZ in the success state.
14363  */
14364 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
14365
14366 /**
14367  * Creates a new CResult_PaymentSecretAPIErrorZ in the error state.
14368  */
14369 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
14370
14371 /**
14372  * Checks if the given object is currently in the success state
14373  */
14374 bool CResult_PaymentSecretAPIErrorZ_is_ok(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR o);
14375
14376 /**
14377  * Frees any resources used by the CResult_PaymentSecretAPIErrorZ.
14378  */
14379 void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
14380
14381 /**
14382  * Creates a new CResult_PaymentSecretAPIErrorZ which has the same data as `orig`
14383  * but with all dynamically-allocated buffers duplicated in new buffers.
14384  */
14385 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
14386
14387 /**
14388  * Creates a new CResult_PaymentPreimageAPIErrorZ in the success state.
14389  */
14390 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
14391
14392 /**
14393  * Creates a new CResult_PaymentPreimageAPIErrorZ in the error state.
14394  */
14395 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_err(struct LDKAPIError e);
14396
14397 /**
14398  * Checks if the given object is currently in the success state
14399  */
14400 bool CResult_PaymentPreimageAPIErrorZ_is_ok(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR o);
14401
14402 /**
14403  * Frees any resources used by the CResult_PaymentPreimageAPIErrorZ.
14404  */
14405 void CResult_PaymentPreimageAPIErrorZ_free(struct LDKCResult_PaymentPreimageAPIErrorZ _res);
14406
14407 /**
14408  * Creates a new CResult_PaymentPreimageAPIErrorZ which has the same data as `orig`
14409  * but with all dynamically-allocated buffers duplicated in new buffers.
14410  */
14411 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_clone(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR orig);
14412
14413 /**
14414  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ in the success state.
14415  */
14416 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_ok(struct LDKCounterpartyForwardingInfo o);
14417
14418 /**
14419  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ in the error state.
14420  */
14421 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_err(struct LDKDecodeError e);
14422
14423 /**
14424  * Checks if the given object is currently in the success state
14425  */
14426 bool CResult_CounterpartyForwardingInfoDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR o);
14427
14428 /**
14429  * Frees any resources used by the CResult_CounterpartyForwardingInfoDecodeErrorZ.
14430  */
14431 void CResult_CounterpartyForwardingInfoDecodeErrorZ_free(struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ _res);
14432
14433 /**
14434  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ which has the same data as `orig`
14435  * but with all dynamically-allocated buffers duplicated in new buffers.
14436  */
14437 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_clone(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR orig);
14438
14439 /**
14440  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ in the success state.
14441  */
14442 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_ok(struct LDKChannelCounterparty o);
14443
14444 /**
14445  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ in the error state.
14446  */
14447 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_err(struct LDKDecodeError e);
14448
14449 /**
14450  * Checks if the given object is currently in the success state
14451  */
14452 bool CResult_ChannelCounterpartyDecodeErrorZ_is_ok(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR o);
14453
14454 /**
14455  * Frees any resources used by the CResult_ChannelCounterpartyDecodeErrorZ.
14456  */
14457 void CResult_ChannelCounterpartyDecodeErrorZ_free(struct LDKCResult_ChannelCounterpartyDecodeErrorZ _res);
14458
14459 /**
14460  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ which has the same data as `orig`
14461  * but with all dynamically-allocated buffers duplicated in new buffers.
14462  */
14463 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_clone(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR orig);
14464
14465 /**
14466  * Creates a new CResult_ChannelDetailsDecodeErrorZ in the success state.
14467  */
14468 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_ok(struct LDKChannelDetails o);
14469
14470 /**
14471  * Creates a new CResult_ChannelDetailsDecodeErrorZ in the error state.
14472  */
14473 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_err(struct LDKDecodeError e);
14474
14475 /**
14476  * Checks if the given object is currently in the success state
14477  */
14478 bool CResult_ChannelDetailsDecodeErrorZ_is_ok(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR o);
14479
14480 /**
14481  * Frees any resources used by the CResult_ChannelDetailsDecodeErrorZ.
14482  */
14483 void CResult_ChannelDetailsDecodeErrorZ_free(struct LDKCResult_ChannelDetailsDecodeErrorZ _res);
14484
14485 /**
14486  * Creates a new CResult_ChannelDetailsDecodeErrorZ which has the same data as `orig`
14487  * but with all dynamically-allocated buffers duplicated in new buffers.
14488  */
14489 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_clone(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR orig);
14490
14491 /**
14492  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ in the success state.
14493  */
14494 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_ok(struct LDKPhantomRouteHints o);
14495
14496 /**
14497  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ in the error state.
14498  */
14499 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_err(struct LDKDecodeError e);
14500
14501 /**
14502  * Checks if the given object is currently in the success state
14503  */
14504 bool CResult_PhantomRouteHintsDecodeErrorZ_is_ok(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR o);
14505
14506 /**
14507  * Frees any resources used by the CResult_PhantomRouteHintsDecodeErrorZ.
14508  */
14509 void CResult_PhantomRouteHintsDecodeErrorZ_free(struct LDKCResult_PhantomRouteHintsDecodeErrorZ _res);
14510
14511 /**
14512  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ which has the same data as `orig`
14513  * but with all dynamically-allocated buffers duplicated in new buffers.
14514  */
14515 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_clone(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR orig);
14516
14517 /**
14518  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14519  */
14520 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
14521
14522 /**
14523  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
14524  */
14525 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
14526
14527 /**
14528  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
14529  */
14530 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
14531
14532 /**
14533  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
14534  */
14535 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
14536
14537 /**
14538  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
14539  */
14540 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
14541
14542 /**
14543  * Checks if the given object is currently in the success state
14544  */
14545 bool CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR o);
14546
14547 /**
14548  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
14549  */
14550 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
14551
14552 /**
14553  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
14554  */
14555 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
14556
14557 /**
14558  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
14559  */
14560 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
14561
14562 /**
14563  * Checks if the given object is currently in the success state
14564  */
14565 bool CResult_ChannelConfigDecodeErrorZ_is_ok(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR o);
14566
14567 /**
14568  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
14569  */
14570 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
14571
14572 /**
14573  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
14574  * but with all dynamically-allocated buffers duplicated in new buffers.
14575  */
14576 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
14577
14578 /**
14579  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
14580  */
14581 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
14582
14583 /**
14584  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
14585  */
14586 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
14587
14588 /**
14589  * Checks if the given object is currently in the success state
14590  */
14591 bool CResult_OutPointDecodeErrorZ_is_ok(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR o);
14592
14593 /**
14594  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
14595  */
14596 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
14597
14598 /**
14599  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
14600  * but with all dynamically-allocated buffers duplicated in new buffers.
14601  */
14602 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
14603
14604 /**
14605  * Constructs a new COption_TypeZ containing a crate::lightning::ln::wire::Type
14606  */
14607 struct LDKCOption_TypeZ COption_TypeZ_some(struct LDKType o);
14608
14609 /**
14610  * Constructs a new COption_TypeZ containing nothing
14611  */
14612 struct LDKCOption_TypeZ COption_TypeZ_none(void);
14613
14614 /**
14615  * Frees any resources associated with the crate::lightning::ln::wire::Type, if we are in the Some state
14616  */
14617 void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
14618
14619 /**
14620  * Creates a new CResult_COption_TypeZDecodeErrorZ in the success state.
14621  */
14622 struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_ok(struct LDKCOption_TypeZ o);
14623
14624 /**
14625  * Creates a new CResult_COption_TypeZDecodeErrorZ in the error state.
14626  */
14627 struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_err(struct LDKDecodeError e);
14628
14629 /**
14630  * Checks if the given object is currently in the success state
14631  */
14632 bool CResult_COption_TypeZDecodeErrorZ_is_ok(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR o);
14633
14634 /**
14635  * Frees any resources used by the CResult_COption_TypeZDecodeErrorZ.
14636  */
14637 void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
14638
14639 /**
14640  * Creates a new CResult_PaymentIdPaymentErrorZ in the success state.
14641  */
14642 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_ok(struct LDKThirtyTwoBytes o);
14643
14644 /**
14645  * Creates a new CResult_PaymentIdPaymentErrorZ in the error state.
14646  */
14647 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_err(struct LDKPaymentError e);
14648
14649 /**
14650  * Checks if the given object is currently in the success state
14651  */
14652 bool CResult_PaymentIdPaymentErrorZ_is_ok(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR o);
14653
14654 /**
14655  * Frees any resources used by the CResult_PaymentIdPaymentErrorZ.
14656  */
14657 void CResult_PaymentIdPaymentErrorZ_free(struct LDKCResult_PaymentIdPaymentErrorZ _res);
14658
14659 /**
14660  * Creates a new CResult_PaymentIdPaymentErrorZ which has the same data as `orig`
14661  * but with all dynamically-allocated buffers duplicated in new buffers.
14662  */
14663 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_clone(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR orig);
14664
14665 /**
14666  * Creates a new CResult_SiPrefixParseErrorZ in the success state.
14667  */
14668 struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_ok(enum LDKSiPrefix o);
14669
14670 /**
14671  * Creates a new CResult_SiPrefixParseErrorZ in the error state.
14672  */
14673 struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_err(struct LDKParseError e);
14674
14675 /**
14676  * Checks if the given object is currently in the success state
14677  */
14678 bool CResult_SiPrefixParseErrorZ_is_ok(const struct LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR o);
14679
14680 /**
14681  * Frees any resources used by the CResult_SiPrefixParseErrorZ.
14682  */
14683 void CResult_SiPrefixParseErrorZ_free(struct LDKCResult_SiPrefixParseErrorZ _res);
14684
14685 /**
14686  * Creates a new CResult_SiPrefixParseErrorZ which has the same data as `orig`
14687  * but with all dynamically-allocated buffers duplicated in new buffers.
14688  */
14689 struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_clone(const struct LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR orig);
14690
14691 /**
14692  * Creates a new CResult_InvoiceParseOrSemanticErrorZ in the success state.
14693  */
14694 struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_ok(struct LDKInvoice o);
14695
14696 /**
14697  * Creates a new CResult_InvoiceParseOrSemanticErrorZ in the error state.
14698  */
14699 struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_err(struct LDKParseOrSemanticError e);
14700
14701 /**
14702  * Checks if the given object is currently in the success state
14703  */
14704 bool CResult_InvoiceParseOrSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR o);
14705
14706 /**
14707  * Frees any resources used by the CResult_InvoiceParseOrSemanticErrorZ.
14708  */
14709 void CResult_InvoiceParseOrSemanticErrorZ_free(struct LDKCResult_InvoiceParseOrSemanticErrorZ _res);
14710
14711 /**
14712  * Creates a new CResult_InvoiceParseOrSemanticErrorZ which has the same data as `orig`
14713  * but with all dynamically-allocated buffers duplicated in new buffers.
14714  */
14715 struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_clone(const struct LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR orig);
14716
14717 /**
14718  * Creates a new CResult_SignedRawInvoiceParseErrorZ in the success state.
14719  */
14720 struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_ok(struct LDKSignedRawInvoice o);
14721
14722 /**
14723  * Creates a new CResult_SignedRawInvoiceParseErrorZ in the error state.
14724  */
14725 struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_err(struct LDKParseError e);
14726
14727 /**
14728  * Checks if the given object is currently in the success state
14729  */
14730 bool CResult_SignedRawInvoiceParseErrorZ_is_ok(const struct LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR o);
14731
14732 /**
14733  * Frees any resources used by the CResult_SignedRawInvoiceParseErrorZ.
14734  */
14735 void CResult_SignedRawInvoiceParseErrorZ_free(struct LDKCResult_SignedRawInvoiceParseErrorZ _res);
14736
14737 /**
14738  * Creates a new CResult_SignedRawInvoiceParseErrorZ which has the same data as `orig`
14739  * but with all dynamically-allocated buffers duplicated in new buffers.
14740  */
14741 struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_clone(const struct LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR orig);
14742
14743 /**
14744  * Creates a new tuple which has the same data as `orig`
14745  * but with all dynamically-allocated buffers duplicated in new buffers.
14746  */
14747 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
14748
14749 /**
14750  * Creates a new C3Tuple_RawInvoice_u832InvoiceSignatureZ from the contained elements.
14751  */
14752 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(struct LDKRawInvoice a, struct LDKThirtyTwoBytes b, struct LDKInvoiceSignature c);
14753
14754 /**
14755  * Frees any resources used by the C3Tuple_RawInvoice_u832InvoiceSignatureZ.
14756  */
14757 void C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res);
14758
14759 /**
14760  * Creates a new CResult_PayeePubKeyErrorZ in the success state.
14761  */
14762 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_ok(struct LDKPayeePubKey o);
14763
14764 /**
14765  * Creates a new CResult_PayeePubKeyErrorZ in the error state.
14766  */
14767 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_err(enum LDKSecp256k1Error e);
14768
14769 /**
14770  * Checks if the given object is currently in the success state
14771  */
14772 bool CResult_PayeePubKeyErrorZ_is_ok(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR o);
14773
14774 /**
14775  * Frees any resources used by the CResult_PayeePubKeyErrorZ.
14776  */
14777 void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
14778
14779 /**
14780  * Creates a new CResult_PayeePubKeyErrorZ which has the same data as `orig`
14781  * but with all dynamically-allocated buffers duplicated in new buffers.
14782  */
14783 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
14784
14785 /**
14786  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14787  */
14788 void CVec_PrivateRouteZ_free(struct LDKCVec_PrivateRouteZ _res);
14789
14790 /**
14791  * Creates a new CResult_PositiveTimestampCreationErrorZ in the success state.
14792  */
14793 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_ok(struct LDKPositiveTimestamp o);
14794
14795 /**
14796  * Creates a new CResult_PositiveTimestampCreationErrorZ in the error state.
14797  */
14798 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_err(enum LDKCreationError e);
14799
14800 /**
14801  * Checks if the given object is currently in the success state
14802  */
14803 bool CResult_PositiveTimestampCreationErrorZ_is_ok(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR o);
14804
14805 /**
14806  * Frees any resources used by the CResult_PositiveTimestampCreationErrorZ.
14807  */
14808 void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
14809
14810 /**
14811  * Creates a new CResult_PositiveTimestampCreationErrorZ which has the same data as `orig`
14812  * but with all dynamically-allocated buffers duplicated in new buffers.
14813  */
14814 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
14815
14816 /**
14817  * Creates a new CResult_NoneSemanticErrorZ in the success state.
14818  */
14819 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_ok(void);
14820
14821 /**
14822  * Creates a new CResult_NoneSemanticErrorZ in the error state.
14823  */
14824 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_err(enum LDKSemanticError e);
14825
14826 /**
14827  * Checks if the given object is currently in the success state
14828  */
14829 bool CResult_NoneSemanticErrorZ_is_ok(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR o);
14830
14831 /**
14832  * Frees any resources used by the CResult_NoneSemanticErrorZ.
14833  */
14834 void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
14835
14836 /**
14837  * Creates a new CResult_NoneSemanticErrorZ which has the same data as `orig`
14838  * but with all dynamically-allocated buffers duplicated in new buffers.
14839  */
14840 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
14841
14842 /**
14843  * Creates a new CResult_InvoiceSemanticErrorZ in the success state.
14844  */
14845 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_ok(struct LDKInvoice o);
14846
14847 /**
14848  * Creates a new CResult_InvoiceSemanticErrorZ in the error state.
14849  */
14850 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_err(enum LDKSemanticError e);
14851
14852 /**
14853  * Checks if the given object is currently in the success state
14854  */
14855 bool CResult_InvoiceSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR o);
14856
14857 /**
14858  * Frees any resources used by the CResult_InvoiceSemanticErrorZ.
14859  */
14860 void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
14861
14862 /**
14863  * Creates a new CResult_InvoiceSemanticErrorZ which has the same data as `orig`
14864  * but with all dynamically-allocated buffers duplicated in new buffers.
14865  */
14866 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
14867
14868 /**
14869  * Creates a new CResult_DescriptionCreationErrorZ in the success state.
14870  */
14871 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_ok(struct LDKDescription o);
14872
14873 /**
14874  * Creates a new CResult_DescriptionCreationErrorZ in the error state.
14875  */
14876 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_err(enum LDKCreationError e);
14877
14878 /**
14879  * Checks if the given object is currently in the success state
14880  */
14881 bool CResult_DescriptionCreationErrorZ_is_ok(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR o);
14882
14883 /**
14884  * Frees any resources used by the CResult_DescriptionCreationErrorZ.
14885  */
14886 void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
14887
14888 /**
14889  * Creates a new CResult_DescriptionCreationErrorZ which has the same data as `orig`
14890  * but with all dynamically-allocated buffers duplicated in new buffers.
14891  */
14892 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
14893
14894 /**
14895  * Creates a new CResult_PrivateRouteCreationErrorZ in the success state.
14896  */
14897 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
14898
14899 /**
14900  * Creates a new CResult_PrivateRouteCreationErrorZ in the error state.
14901  */
14902 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
14903
14904 /**
14905  * Checks if the given object is currently in the success state
14906  */
14907 bool CResult_PrivateRouteCreationErrorZ_is_ok(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR o);
14908
14909 /**
14910  * Frees any resources used by the CResult_PrivateRouteCreationErrorZ.
14911  */
14912 void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
14913
14914 /**
14915  * Creates a new CResult_PrivateRouteCreationErrorZ which has the same data as `orig`
14916  * but with all dynamically-allocated buffers duplicated in new buffers.
14917  */
14918 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
14919
14920 /**
14921  * Creates a new CResult_StringErrorZ in the success state.
14922  */
14923 struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
14924
14925 /**
14926  * Creates a new CResult_StringErrorZ in the error state.
14927  */
14928 struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
14929
14930 /**
14931  * Checks if the given object is currently in the success state
14932  */
14933 bool CResult_StringErrorZ_is_ok(const struct LDKCResult_StringErrorZ *NONNULL_PTR o);
14934
14935 /**
14936  * Frees any resources used by the CResult_StringErrorZ.
14937  */
14938 void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
14939
14940 /**
14941  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
14942  */
14943 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
14944
14945 /**
14946  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
14947  */
14948 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
14949
14950 /**
14951  * Checks if the given object is currently in the success state
14952  */
14953 bool CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR o);
14954
14955 /**
14956  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
14957  */
14958 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
14959
14960 /**
14961  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
14962  * but with all dynamically-allocated buffers duplicated in new buffers.
14963  */
14964 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
14965
14966 /**
14967  * Constructs a new COption_MonitorEventZ containing a crate::lightning::chain::channelmonitor::MonitorEvent
14968  */
14969 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_some(struct LDKMonitorEvent o);
14970
14971 /**
14972  * Constructs a new COption_MonitorEventZ containing nothing
14973  */
14974 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_none(void);
14975
14976 /**
14977  * Frees any resources associated with the crate::lightning::chain::channelmonitor::MonitorEvent, if we are in the Some state
14978  */
14979 void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
14980
14981 /**
14982  * Creates a new COption_MonitorEventZ which has the same data as `orig`
14983  * but with all dynamically-allocated buffers duplicated in new buffers.
14984  */
14985 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
14986
14987 /**
14988  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ in the success state.
14989  */
14990 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_ok(struct LDKCOption_MonitorEventZ o);
14991
14992 /**
14993  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ in the error state.
14994  */
14995 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_err(struct LDKDecodeError e);
14996
14997 /**
14998  * Checks if the given object is currently in the success state
14999  */
15000 bool CResult_COption_MonitorEventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR o);
15001
15002 /**
15003  * Frees any resources used by the CResult_COption_MonitorEventZDecodeErrorZ.
15004  */
15005 void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
15006
15007 /**
15008  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ which has the same data as `orig`
15009  * but with all dynamically-allocated buffers duplicated in new buffers.
15010  */
15011 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
15012
15013 /**
15014  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
15015  */
15016 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
15017
15018 /**
15019  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
15020  */
15021 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
15022
15023 /**
15024  * Checks if the given object is currently in the success state
15025  */
15026 bool CResult_HTLCUpdateDecodeErrorZ_is_ok(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR o);
15027
15028 /**
15029  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
15030  */
15031 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
15032
15033 /**
15034  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
15035  * but with all dynamically-allocated buffers duplicated in new buffers.
15036  */
15037 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
15038
15039 /**
15040  * Creates a new tuple which has the same data as `orig`
15041  * but with all dynamically-allocated buffers duplicated in new buffers.
15042  */
15043 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
15044
15045 /**
15046  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
15047  */
15048 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
15049
15050 /**
15051  * Frees any resources used by the C2Tuple_OutPointScriptZ.
15052  */
15053 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
15054
15055 /**
15056  * Creates a new tuple which has the same data as `orig`
15057  * but with all dynamically-allocated buffers duplicated in new buffers.
15058  */
15059 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
15060
15061 /**
15062  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
15063  */
15064 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
15065
15066 /**
15067  * Frees any resources used by the C2Tuple_u32ScriptZ.
15068  */
15069 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
15070
15071 /**
15072  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15073  */
15074 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
15075
15076 /**
15077  * Creates a new tuple which has the same data as `orig`
15078  * but with all dynamically-allocated buffers duplicated in new buffers.
15079  */
15080 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
15081
15082 /**
15083  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
15084  */
15085 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
15086
15087 /**
15088  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
15089  */
15090 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
15091
15092 /**
15093  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15094  */
15095 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
15096
15097 /**
15098  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15099  */
15100 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
15101
15102 /**
15103  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15104  */
15105 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
15106
15107 /**
15108  * Creates a new tuple which has the same data as `orig`
15109  * but with all dynamically-allocated buffers duplicated in new buffers.
15110  */
15111 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
15112
15113 /**
15114  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
15115  */
15116 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
15117
15118 /**
15119  * Frees any resources used by the C2Tuple_u32TxOutZ.
15120  */
15121 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
15122
15123 /**
15124  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15125  */
15126 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
15127
15128 /**
15129  * Creates a new tuple which has the same data as `orig`
15130  * but with all dynamically-allocated buffers duplicated in new buffers.
15131  */
15132 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
15133
15134 /**
15135  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
15136  */
15137 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
15138
15139 /**
15140  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
15141  */
15142 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
15143
15144 /**
15145  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15146  */
15147 void CVec_TransactionOutputsZ_free(struct LDKCVec_TransactionOutputsZ _res);
15148
15149 /**
15150  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15151  */
15152 void CVec_BalanceZ_free(struct LDKCVec_BalanceZ _res);
15153
15154 /**
15155  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
15156  */
15157 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
15158
15159 /**
15160  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
15161  */
15162 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
15163
15164 /**
15165  * Checks if the given object is currently in the success state
15166  */
15167 bool CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR o);
15168
15169 /**
15170  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
15171  */
15172 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
15173
15174 /**
15175  * Creates a new CResult_NoneLightningErrorZ in the success state.
15176  */
15177 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
15178
15179 /**
15180  * Creates a new CResult_NoneLightningErrorZ in the error state.
15181  */
15182 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
15183
15184 /**
15185  * Checks if the given object is currently in the success state
15186  */
15187 bool CResult_NoneLightningErrorZ_is_ok(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR o);
15188
15189 /**
15190  * Frees any resources used by the CResult_NoneLightningErrorZ.
15191  */
15192 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
15193
15194 /**
15195  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
15196  * but with all dynamically-allocated buffers duplicated in new buffers.
15197  */
15198 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
15199
15200 /**
15201  * Creates a new C2Tuple_PublicKeyTypeZ from the contained elements.
15202  */
15203 struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_new(struct LDKPublicKey a, struct LDKType b);
15204
15205 /**
15206  * Frees any resources used by the C2Tuple_PublicKeyTypeZ.
15207  */
15208 void C2Tuple_PublicKeyTypeZ_free(struct LDKC2Tuple_PublicKeyTypeZ _res);
15209
15210 /**
15211  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15212  */
15213 void CVec_C2Tuple_PublicKeyTypeZZ_free(struct LDKCVec_C2Tuple_PublicKeyTypeZZ _res);
15214
15215 /**
15216  * Creates a new CResult_boolLightningErrorZ in the success state.
15217  */
15218 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
15219
15220 /**
15221  * Creates a new CResult_boolLightningErrorZ in the error state.
15222  */
15223 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
15224
15225 /**
15226  * Checks if the given object is currently in the success state
15227  */
15228 bool CResult_boolLightningErrorZ_is_ok(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR o);
15229
15230 /**
15231  * Frees any resources used by the CResult_boolLightningErrorZ.
15232  */
15233 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
15234
15235 /**
15236  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
15237  * but with all dynamically-allocated buffers duplicated in new buffers.
15238  */
15239 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
15240
15241 /**
15242  * Creates a new tuple which has the same data as `orig`
15243  * but with all dynamically-allocated buffers duplicated in new buffers.
15244  */
15245 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
15246
15247 /**
15248  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
15249  */
15250 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
15251
15252 /**
15253  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
15254  */
15255 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
15256
15257 /**
15258  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15259  */
15260 void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
15261
15262 /**
15263  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15264  */
15265 void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
15266
15267 /**
15268  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15269  */
15270 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
15271
15272 /**
15273  * Constructs a new COption_NetAddressZ containing a crate::lightning::ln::msgs::NetAddress
15274  */
15275 struct LDKCOption_NetAddressZ COption_NetAddressZ_some(struct LDKNetAddress o);
15276
15277 /**
15278  * Constructs a new COption_NetAddressZ containing nothing
15279  */
15280 struct LDKCOption_NetAddressZ COption_NetAddressZ_none(void);
15281
15282 /**
15283  * Frees any resources associated with the crate::lightning::ln::msgs::NetAddress, if we are in the Some state
15284  */
15285 void COption_NetAddressZ_free(struct LDKCOption_NetAddressZ _res);
15286
15287 /**
15288  * Creates a new COption_NetAddressZ which has the same data as `orig`
15289  * but with all dynamically-allocated buffers duplicated in new buffers.
15290  */
15291 struct LDKCOption_NetAddressZ COption_NetAddressZ_clone(const struct LDKCOption_NetAddressZ *NONNULL_PTR orig);
15292
15293 /**
15294  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
15295  */
15296 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
15297
15298 /**
15299  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
15300  */
15301 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
15302
15303 /**
15304  * Checks if the given object is currently in the success state
15305  */
15306 bool CResult_CVec_u8ZPeerHandleErrorZ_is_ok(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR o);
15307
15308 /**
15309  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
15310  */
15311 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
15312
15313 /**
15314  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
15315  * but with all dynamically-allocated buffers duplicated in new buffers.
15316  */
15317 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
15318
15319 /**
15320  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
15321  */
15322 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
15323
15324 /**
15325  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
15326  */
15327 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
15328
15329 /**
15330  * Checks if the given object is currently in the success state
15331  */
15332 bool CResult_NonePeerHandleErrorZ_is_ok(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR o);
15333
15334 /**
15335  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
15336  */
15337 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
15338
15339 /**
15340  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
15341  * but with all dynamically-allocated buffers duplicated in new buffers.
15342  */
15343 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
15344
15345 /**
15346  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
15347  */
15348 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
15349
15350 /**
15351  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
15352  */
15353 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
15354
15355 /**
15356  * Checks if the given object is currently in the success state
15357  */
15358 bool CResult_boolPeerHandleErrorZ_is_ok(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR o);
15359
15360 /**
15361  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
15362  */
15363 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
15364
15365 /**
15366  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
15367  * but with all dynamically-allocated buffers duplicated in new buffers.
15368  */
15369 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
15370
15371 /**
15372  * Creates a new CResult_NodeIdDecodeErrorZ in the success state.
15373  */
15374 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_ok(struct LDKNodeId o);
15375
15376 /**
15377  * Creates a new CResult_NodeIdDecodeErrorZ in the error state.
15378  */
15379 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_err(struct LDKDecodeError e);
15380
15381 /**
15382  * Checks if the given object is currently in the success state
15383  */
15384 bool CResult_NodeIdDecodeErrorZ_is_ok(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR o);
15385
15386 /**
15387  * Frees any resources used by the CResult_NodeIdDecodeErrorZ.
15388  */
15389 void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
15390
15391 /**
15392  * Creates a new CResult_NodeIdDecodeErrorZ which has the same data as `orig`
15393  * but with all dynamically-allocated buffers duplicated in new buffers.
15394  */
15395 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
15396
15397 /**
15398  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ in the success state.
15399  */
15400 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_ok(struct LDKCOption_NetworkUpdateZ o);
15401
15402 /**
15403  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ in the error state.
15404  */
15405 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_err(struct LDKDecodeError e);
15406
15407 /**
15408  * Checks if the given object is currently in the success state
15409  */
15410 bool CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR o);
15411
15412 /**
15413  * Frees any resources used by the CResult_COption_NetworkUpdateZDecodeErrorZ.
15414  */
15415 void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
15416
15417 /**
15418  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ which has the same data as `orig`
15419  * but with all dynamically-allocated buffers duplicated in new buffers.
15420  */
15421 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
15422
15423 /**
15424  * Constructs a new COption_AccessZ containing a crate::lightning::chain::Access
15425  */
15426 struct LDKCOption_AccessZ COption_AccessZ_some(struct LDKAccess o);
15427
15428 /**
15429  * Constructs a new COption_AccessZ containing nothing
15430  */
15431 struct LDKCOption_AccessZ COption_AccessZ_none(void);
15432
15433 /**
15434  * Frees any resources associated with the crate::lightning::chain::Access, if we are in the Some state
15435  */
15436 void COption_AccessZ_free(struct LDKCOption_AccessZ _res);
15437
15438 /**
15439  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ in the success state.
15440  */
15441 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_ok(struct LDKChannelUpdateInfo o);
15442
15443 /**
15444  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ in the error state.
15445  */
15446 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_err(struct LDKDecodeError e);
15447
15448 /**
15449  * Checks if the given object is currently in the success state
15450  */
15451 bool CResult_ChannelUpdateInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR o);
15452
15453 /**
15454  * Frees any resources used by the CResult_ChannelUpdateInfoDecodeErrorZ.
15455  */
15456 void CResult_ChannelUpdateInfoDecodeErrorZ_free(struct LDKCResult_ChannelUpdateInfoDecodeErrorZ _res);
15457
15458 /**
15459  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ which has the same data as `orig`
15460  * but with all dynamically-allocated buffers duplicated in new buffers.
15461  */
15462 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR orig);
15463
15464 /**
15465  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
15466  */
15467 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
15468
15469 /**
15470  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
15471  */
15472 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
15473
15474 /**
15475  * Checks if the given object is currently in the success state
15476  */
15477 bool CResult_ChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR o);
15478
15479 /**
15480  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
15481  */
15482 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
15483
15484 /**
15485  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
15486  * but with all dynamically-allocated buffers duplicated in new buffers.
15487  */
15488 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
15489
15490 /**
15491  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
15492  */
15493 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
15494
15495 /**
15496  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
15497  */
15498 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
15499
15500 /**
15501  * Checks if the given object is currently in the success state
15502  */
15503 bool CResult_RoutingFeesDecodeErrorZ_is_ok(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR o);
15504
15505 /**
15506  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
15507  */
15508 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
15509
15510 /**
15511  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
15512  * but with all dynamically-allocated buffers duplicated in new buffers.
15513  */
15514 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
15515
15516 /**
15517  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
15518  */
15519 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
15520
15521 /**
15522  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
15523  */
15524 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
15525
15526 /**
15527  * Checks if the given object is currently in the success state
15528  */
15529 bool CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR o);
15530
15531 /**
15532  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
15533  */
15534 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
15535
15536 /**
15537  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
15538  * but with all dynamically-allocated buffers duplicated in new buffers.
15539  */
15540 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
15541
15542 /**
15543  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15544  */
15545 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
15546
15547 /**
15548  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
15549  */
15550 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
15551
15552 /**
15553  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
15554  */
15555 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
15556
15557 /**
15558  * Checks if the given object is currently in the success state
15559  */
15560 bool CResult_NodeInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR o);
15561
15562 /**
15563  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
15564  */
15565 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
15566
15567 /**
15568  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
15569  * but with all dynamically-allocated buffers duplicated in new buffers.
15570  */
15571 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
15572
15573 /**
15574  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
15575  */
15576 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
15577
15578 /**
15579  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
15580  */
15581 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
15582
15583 /**
15584  * Checks if the given object is currently in the success state
15585  */
15586 bool CResult_NetworkGraphDecodeErrorZ_is_ok(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR o);
15587
15588 /**
15589  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
15590  */
15591 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
15592
15593 /**
15594  * Creates a new CResult_NetworkGraphDecodeErrorZ which has the same data as `orig`
15595  * but with all dynamically-allocated buffers duplicated in new buffers.
15596  */
15597 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
15598
15599 /**
15600  * Constructs a new COption_CVec_NetAddressZZ containing a crate::c_types::derived::CVec_NetAddressZ
15601  */
15602 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_some(struct LDKCVec_NetAddressZ o);
15603
15604 /**
15605  * Constructs a new COption_CVec_NetAddressZZ containing nothing
15606  */
15607 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_none(void);
15608
15609 /**
15610  * Frees any resources associated with the crate::c_types::derived::CVec_NetAddressZ, if we are in the Some state
15611  */
15612 void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
15613
15614 /**
15615  * Creates a new COption_CVec_NetAddressZZ which has the same data as `orig`
15616  * but with all dynamically-allocated buffers duplicated in new buffers.
15617  */
15618 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
15619
15620 /**
15621  * Creates a new CResult_NetAddressDecodeErrorZ in the success state.
15622  */
15623 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
15624
15625 /**
15626  * Creates a new CResult_NetAddressDecodeErrorZ in the error state.
15627  */
15628 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
15629
15630 /**
15631  * Checks if the given object is currently in the success state
15632  */
15633 bool CResult_NetAddressDecodeErrorZ_is_ok(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR o);
15634
15635 /**
15636  * Frees any resources used by the CResult_NetAddressDecodeErrorZ.
15637  */
15638 void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
15639
15640 /**
15641  * Creates a new CResult_NetAddressDecodeErrorZ which has the same data as `orig`
15642  * but with all dynamically-allocated buffers duplicated in new buffers.
15643  */
15644 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
15645
15646 /**
15647  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15648  */
15649 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
15650
15651 /**
15652  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15653  */
15654 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
15655
15656 /**
15657  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15658  */
15659 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
15660
15661 /**
15662  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15663  */
15664 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
15665
15666 /**
15667  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
15668  */
15669 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
15670
15671 /**
15672  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
15673  */
15674 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
15675
15676 /**
15677  * Checks if the given object is currently in the success state
15678  */
15679 bool CResult_AcceptChannelDecodeErrorZ_is_ok(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR o);
15680
15681 /**
15682  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
15683  */
15684 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
15685
15686 /**
15687  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
15688  * but with all dynamically-allocated buffers duplicated in new buffers.
15689  */
15690 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
15691
15692 /**
15693  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
15694  */
15695 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
15696
15697 /**
15698  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
15699  */
15700 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
15701
15702 /**
15703  * Checks if the given object is currently in the success state
15704  */
15705 bool CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR o);
15706
15707 /**
15708  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
15709  */
15710 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
15711
15712 /**
15713  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
15714  * but with all dynamically-allocated buffers duplicated in new buffers.
15715  */
15716 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
15717
15718 /**
15719  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
15720  */
15721 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
15722
15723 /**
15724  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
15725  */
15726 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
15727
15728 /**
15729  * Checks if the given object is currently in the success state
15730  */
15731 bool CResult_ChannelReestablishDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR o);
15732
15733 /**
15734  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
15735  */
15736 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
15737
15738 /**
15739  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
15740  * but with all dynamically-allocated buffers duplicated in new buffers.
15741  */
15742 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
15743
15744 /**
15745  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
15746  */
15747 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
15748
15749 /**
15750  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
15751  */
15752 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
15753
15754 /**
15755  * Checks if the given object is currently in the success state
15756  */
15757 bool CResult_ClosingSignedDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR o);
15758
15759 /**
15760  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
15761  */
15762 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
15763
15764 /**
15765  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
15766  * but with all dynamically-allocated buffers duplicated in new buffers.
15767  */
15768 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
15769
15770 /**
15771  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ in the success state.
15772  */
15773 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(struct LDKClosingSignedFeeRange o);
15774
15775 /**
15776  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ in the error state.
15777  */
15778 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_err(struct LDKDecodeError e);
15779
15780 /**
15781  * Checks if the given object is currently in the success state
15782  */
15783 bool CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR o);
15784
15785 /**
15786  * Frees any resources used by the CResult_ClosingSignedFeeRangeDecodeErrorZ.
15787  */
15788 void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
15789
15790 /**
15791  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ which has the same data as `orig`
15792  * but with all dynamically-allocated buffers duplicated in new buffers.
15793  */
15794 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
15795
15796 /**
15797  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
15798  */
15799 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
15800
15801 /**
15802  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
15803  */
15804 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
15805
15806 /**
15807  * Checks if the given object is currently in the success state
15808  */
15809 bool CResult_CommitmentSignedDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR o);
15810
15811 /**
15812  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
15813  */
15814 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
15815
15816 /**
15817  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
15818  * but with all dynamically-allocated buffers duplicated in new buffers.
15819  */
15820 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
15821
15822 /**
15823  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
15824  */
15825 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
15826
15827 /**
15828  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
15829  */
15830 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
15831
15832 /**
15833  * Checks if the given object is currently in the success state
15834  */
15835 bool CResult_FundingCreatedDecodeErrorZ_is_ok(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR o);
15836
15837 /**
15838  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
15839  */
15840 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
15841
15842 /**
15843  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
15844  * but with all dynamically-allocated buffers duplicated in new buffers.
15845  */
15846 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
15847
15848 /**
15849  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
15850  */
15851 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
15852
15853 /**
15854  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
15855  */
15856 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
15857
15858 /**
15859  * Checks if the given object is currently in the success state
15860  */
15861 bool CResult_FundingSignedDecodeErrorZ_is_ok(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR o);
15862
15863 /**
15864  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
15865  */
15866 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
15867
15868 /**
15869  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
15870  * but with all dynamically-allocated buffers duplicated in new buffers.
15871  */
15872 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
15873
15874 /**
15875  * Creates a new CResult_FundingLockedDecodeErrorZ in the success state.
15876  */
15877 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
15878
15879 /**
15880  * Creates a new CResult_FundingLockedDecodeErrorZ in the error state.
15881  */
15882 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
15883
15884 /**
15885  * Checks if the given object is currently in the success state
15886  */
15887 bool CResult_FundingLockedDecodeErrorZ_is_ok(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR o);
15888
15889 /**
15890  * Frees any resources used by the CResult_FundingLockedDecodeErrorZ.
15891  */
15892 void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
15893
15894 /**
15895  * Creates a new CResult_FundingLockedDecodeErrorZ which has the same data as `orig`
15896  * but with all dynamically-allocated buffers duplicated in new buffers.
15897  */
15898 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
15899
15900 /**
15901  * Creates a new CResult_InitDecodeErrorZ in the success state.
15902  */
15903 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
15904
15905 /**
15906  * Creates a new CResult_InitDecodeErrorZ in the error state.
15907  */
15908 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
15909
15910 /**
15911  * Checks if the given object is currently in the success state
15912  */
15913 bool CResult_InitDecodeErrorZ_is_ok(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR o);
15914
15915 /**
15916  * Frees any resources used by the CResult_InitDecodeErrorZ.
15917  */
15918 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
15919
15920 /**
15921  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
15922  * but with all dynamically-allocated buffers duplicated in new buffers.
15923  */
15924 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
15925
15926 /**
15927  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
15928  */
15929 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
15930
15931 /**
15932  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
15933  */
15934 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
15935
15936 /**
15937  * Checks if the given object is currently in the success state
15938  */
15939 bool CResult_OpenChannelDecodeErrorZ_is_ok(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR o);
15940
15941 /**
15942  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
15943  */
15944 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
15945
15946 /**
15947  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
15948  * but with all dynamically-allocated buffers duplicated in new buffers.
15949  */
15950 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
15951
15952 /**
15953  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
15954  */
15955 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
15956
15957 /**
15958  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
15959  */
15960 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
15961
15962 /**
15963  * Checks if the given object is currently in the success state
15964  */
15965 bool CResult_RevokeAndACKDecodeErrorZ_is_ok(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR o);
15966
15967 /**
15968  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
15969  */
15970 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
15971
15972 /**
15973  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
15974  * but with all dynamically-allocated buffers duplicated in new buffers.
15975  */
15976 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
15977
15978 /**
15979  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
15980  */
15981 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
15982
15983 /**
15984  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
15985  */
15986 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
15987
15988 /**
15989  * Checks if the given object is currently in the success state
15990  */
15991 bool CResult_ShutdownDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR o);
15992
15993 /**
15994  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
15995  */
15996 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
15997
15998 /**
15999  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
16000  * but with all dynamically-allocated buffers duplicated in new buffers.
16001  */
16002 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
16003
16004 /**
16005  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
16006  */
16007 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
16008
16009 /**
16010  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
16011  */
16012 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
16013
16014 /**
16015  * Checks if the given object is currently in the success state
16016  */
16017 bool CResult_UpdateFailHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR o);
16018
16019 /**
16020  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
16021  */
16022 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
16023
16024 /**
16025  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
16026  * but with all dynamically-allocated buffers duplicated in new buffers.
16027  */
16028 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
16029
16030 /**
16031  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
16032  */
16033 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
16034
16035 /**
16036  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
16037  */
16038 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
16039
16040 /**
16041  * Checks if the given object is currently in the success state
16042  */
16043 bool CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR o);
16044
16045 /**
16046  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
16047  */
16048 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
16049
16050 /**
16051  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
16052  * but with all dynamically-allocated buffers duplicated in new buffers.
16053  */
16054 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
16055
16056 /**
16057  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
16058  */
16059 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
16060
16061 /**
16062  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
16063  */
16064 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
16065
16066 /**
16067  * Checks if the given object is currently in the success state
16068  */
16069 bool CResult_UpdateFeeDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR o);
16070
16071 /**
16072  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
16073  */
16074 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
16075
16076 /**
16077  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
16078  * but with all dynamically-allocated buffers duplicated in new buffers.
16079  */
16080 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
16081
16082 /**
16083  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
16084  */
16085 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
16086
16087 /**
16088  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
16089  */
16090 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
16091
16092 /**
16093  * Checks if the given object is currently in the success state
16094  */
16095 bool CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR o);
16096
16097 /**
16098  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
16099  */
16100 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
16101
16102 /**
16103  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
16104  * but with all dynamically-allocated buffers duplicated in new buffers.
16105  */
16106 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
16107
16108 /**
16109  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
16110  */
16111 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
16112
16113 /**
16114  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
16115  */
16116 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
16117
16118 /**
16119  * Checks if the given object is currently in the success state
16120  */
16121 bool CResult_UpdateAddHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR o);
16122
16123 /**
16124  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
16125  */
16126 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
16127
16128 /**
16129  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
16130  * but with all dynamically-allocated buffers duplicated in new buffers.
16131  */
16132 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
16133
16134 /**
16135  * Creates a new CResult_PingDecodeErrorZ in the success state.
16136  */
16137 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
16138
16139 /**
16140  * Creates a new CResult_PingDecodeErrorZ in the error state.
16141  */
16142 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
16143
16144 /**
16145  * Checks if the given object is currently in the success state
16146  */
16147 bool CResult_PingDecodeErrorZ_is_ok(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR o);
16148
16149 /**
16150  * Frees any resources used by the CResult_PingDecodeErrorZ.
16151  */
16152 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
16153
16154 /**
16155  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
16156  * but with all dynamically-allocated buffers duplicated in new buffers.
16157  */
16158 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
16159
16160 /**
16161  * Creates a new CResult_PongDecodeErrorZ in the success state.
16162  */
16163 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
16164
16165 /**
16166  * Creates a new CResult_PongDecodeErrorZ in the error state.
16167  */
16168 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
16169
16170 /**
16171  * Checks if the given object is currently in the success state
16172  */
16173 bool CResult_PongDecodeErrorZ_is_ok(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR o);
16174
16175 /**
16176  * Frees any resources used by the CResult_PongDecodeErrorZ.
16177  */
16178 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
16179
16180 /**
16181  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
16182  * but with all dynamically-allocated buffers duplicated in new buffers.
16183  */
16184 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
16185
16186 /**
16187  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
16188  */
16189 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
16190
16191 /**
16192  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
16193  */
16194 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16195
16196 /**
16197  * Checks if the given object is currently in the success state
16198  */
16199 bool CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
16200
16201 /**
16202  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
16203  */
16204 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
16205
16206 /**
16207  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
16208  * but with all dynamically-allocated buffers duplicated in new buffers.
16209  */
16210 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16211
16212 /**
16213  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
16214  */
16215 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
16216
16217 /**
16218  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
16219  */
16220 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16221
16222 /**
16223  * Checks if the given object is currently in the success state
16224  */
16225 bool CResult_ChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
16226
16227 /**
16228  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
16229  */
16230 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
16231
16232 /**
16233  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
16234  * but with all dynamically-allocated buffers duplicated in new buffers.
16235  */
16236 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16237
16238 /**
16239  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
16240  */
16241 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
16242
16243 /**
16244  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
16245  */
16246 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
16247
16248 /**
16249  * Checks if the given object is currently in the success state
16250  */
16251 bool CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR o);
16252
16253 /**
16254  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
16255  */
16256 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
16257
16258 /**
16259  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
16260  * but with all dynamically-allocated buffers duplicated in new buffers.
16261  */
16262 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
16263
16264 /**
16265  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
16266  */
16267 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
16268
16269 /**
16270  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
16271  */
16272 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
16273
16274 /**
16275  * Checks if the given object is currently in the success state
16276  */
16277 bool CResult_ChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR o);
16278
16279 /**
16280  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
16281  */
16282 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
16283
16284 /**
16285  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
16286  * but with all dynamically-allocated buffers duplicated in new buffers.
16287  */
16288 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
16289
16290 /**
16291  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
16292  */
16293 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
16294
16295 /**
16296  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
16297  */
16298 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
16299
16300 /**
16301  * Checks if the given object is currently in the success state
16302  */
16303 bool CResult_ErrorMessageDecodeErrorZ_is_ok(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR o);
16304
16305 /**
16306  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
16307  */
16308 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
16309
16310 /**
16311  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
16312  * but with all dynamically-allocated buffers duplicated in new buffers.
16313  */
16314 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
16315
16316 /**
16317  * Creates a new CResult_WarningMessageDecodeErrorZ in the success state.
16318  */
16319 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_ok(struct LDKWarningMessage o);
16320
16321 /**
16322  * Creates a new CResult_WarningMessageDecodeErrorZ in the error state.
16323  */
16324 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_err(struct LDKDecodeError e);
16325
16326 /**
16327  * Checks if the given object is currently in the success state
16328  */
16329 bool CResult_WarningMessageDecodeErrorZ_is_ok(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR o);
16330
16331 /**
16332  * Frees any resources used by the CResult_WarningMessageDecodeErrorZ.
16333  */
16334 void CResult_WarningMessageDecodeErrorZ_free(struct LDKCResult_WarningMessageDecodeErrorZ _res);
16335
16336 /**
16337  * Creates a new CResult_WarningMessageDecodeErrorZ which has the same data as `orig`
16338  * but with all dynamically-allocated buffers duplicated in new buffers.
16339  */
16340 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_clone(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR orig);
16341
16342 /**
16343  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
16344  */
16345 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
16346
16347 /**
16348  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
16349  */
16350 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16351
16352 /**
16353  * Checks if the given object is currently in the success state
16354  */
16355 bool CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
16356
16357 /**
16358  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
16359  */
16360 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
16361
16362 /**
16363  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
16364  * but with all dynamically-allocated buffers duplicated in new buffers.
16365  */
16366 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16367
16368 /**
16369  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
16370  */
16371 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
16372
16373 /**
16374  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
16375  */
16376 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16377
16378 /**
16379  * Checks if the given object is currently in the success state
16380  */
16381 bool CResult_NodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
16382
16383 /**
16384  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
16385  */
16386 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
16387
16388 /**
16389  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
16390  * but with all dynamically-allocated buffers duplicated in new buffers.
16391  */
16392 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16393
16394 /**
16395  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
16396  */
16397 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
16398
16399 /**
16400  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
16401  */
16402 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
16403
16404 /**
16405  * Checks if the given object is currently in the success state
16406  */
16407 bool CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR o);
16408
16409 /**
16410  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
16411  */
16412 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
16413
16414 /**
16415  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
16416  * but with all dynamically-allocated buffers duplicated in new buffers.
16417  */
16418 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
16419
16420 /**
16421  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
16422  */
16423 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
16424
16425 /**
16426  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
16427  */
16428 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
16429
16430 /**
16431  * Checks if the given object is currently in the success state
16432  */
16433 bool CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR o);
16434
16435 /**
16436  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
16437  */
16438 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
16439
16440 /**
16441  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
16442  * but with all dynamically-allocated buffers duplicated in new buffers.
16443  */
16444 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
16445
16446 /**
16447  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
16448  */
16449 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
16450
16451 /**
16452  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
16453  */
16454 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
16455
16456 /**
16457  * Checks if the given object is currently in the success state
16458  */
16459 bool CResult_QueryChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR o);
16460
16461 /**
16462  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
16463  */
16464 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
16465
16466 /**
16467  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
16468  * but with all dynamically-allocated buffers duplicated in new buffers.
16469  */
16470 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
16471
16472 /**
16473  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
16474  */
16475 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
16476
16477 /**
16478  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
16479  */
16480 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
16481
16482 /**
16483  * Checks if the given object is currently in the success state
16484  */
16485 bool CResult_ReplyChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR o);
16486
16487 /**
16488  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
16489  */
16490 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
16491
16492 /**
16493  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
16494  * but with all dynamically-allocated buffers duplicated in new buffers.
16495  */
16496 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
16497
16498 /**
16499  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
16500  */
16501 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
16502
16503 /**
16504  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
16505  */
16506 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
16507
16508 /**
16509  * Checks if the given object is currently in the success state
16510  */
16511 bool CResult_GossipTimestampFilterDecodeErrorZ_is_ok(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR o);
16512
16513 /**
16514  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
16515  */
16516 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
16517
16518 /**
16519  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
16520  * but with all dynamically-allocated buffers duplicated in new buffers.
16521  */
16522 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
16523
16524 /**
16525  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16526  */
16527 void CVec_PhantomRouteHintsZ_free(struct LDKCVec_PhantomRouteHintsZ _res);
16528
16529 /**
16530  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the success state.
16531  */
16532 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
16533
16534 /**
16535  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the error state.
16536  */
16537 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
16538
16539 /**
16540  * Checks if the given object is currently in the success state
16541  */
16542 bool CResult_InvoiceSignOrCreationErrorZ_is_ok(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR o);
16543
16544 /**
16545  * Frees any resources used by the CResult_InvoiceSignOrCreationErrorZ.
16546  */
16547 void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
16548
16549 /**
16550  * Creates a new CResult_InvoiceSignOrCreationErrorZ which has the same data as `orig`
16551  * but with all dynamically-allocated buffers duplicated in new buffers.
16552  */
16553 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
16554
16555 /**
16556  * Constructs a new COption_FilterZ containing a crate::lightning::chain::Filter
16557  */
16558 struct LDKCOption_FilterZ COption_FilterZ_some(struct LDKFilter o);
16559
16560 /**
16561  * Constructs a new COption_FilterZ containing nothing
16562  */
16563 struct LDKCOption_FilterZ COption_FilterZ_none(void);
16564
16565 /**
16566  * Frees any resources associated with the crate::lightning::chain::Filter, if we are in the Some state
16567  */
16568 void COption_FilterZ_free(struct LDKCOption_FilterZ _res);
16569
16570 /**
16571  * Creates a new CResult_LockedChannelMonitorNoneZ in the success state.
16572  */
16573 struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_ok(struct LDKLockedChannelMonitor o);
16574
16575 /**
16576  * Creates a new CResult_LockedChannelMonitorNoneZ in the error state.
16577  */
16578 struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_err(void);
16579
16580 /**
16581  * Checks if the given object is currently in the success state
16582  */
16583 bool CResult_LockedChannelMonitorNoneZ_is_ok(const struct LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR o);
16584
16585 /**
16586  * Frees any resources used by the CResult_LockedChannelMonitorNoneZ.
16587  */
16588 void CResult_LockedChannelMonitorNoneZ_free(struct LDKCResult_LockedChannelMonitorNoneZ _res);
16589
16590 /**
16591  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16592  */
16593 void CVec_OutPointZ_free(struct LDKCVec_OutPointZ _res);
16594
16595 /**
16596  * Frees any resources used by the PaymentPurpose
16597  */
16598 void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
16599
16600 /**
16601  * Creates a copy of the PaymentPurpose
16602  */
16603 struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
16604
16605 /**
16606  * Utility method to constructs a new InvoicePayment-variant PaymentPurpose
16607  */
16608 struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret);
16609
16610 /**
16611  * Utility method to constructs a new SpontaneousPayment-variant PaymentPurpose
16612  */
16613 struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
16614
16615 /**
16616  * Frees any resources used by the ClosureReason
16617  */
16618 void ClosureReason_free(struct LDKClosureReason this_ptr);
16619
16620 /**
16621  * Creates a copy of the ClosureReason
16622  */
16623 struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
16624
16625 /**
16626  * Utility method to constructs a new CounterpartyForceClosed-variant ClosureReason
16627  */
16628 struct LDKClosureReason ClosureReason_counterparty_force_closed(struct LDKStr peer_msg);
16629
16630 /**
16631  * Utility method to constructs a new HolderForceClosed-variant ClosureReason
16632  */
16633 struct LDKClosureReason ClosureReason_holder_force_closed(void);
16634
16635 /**
16636  * Utility method to constructs a new CooperativeClosure-variant ClosureReason
16637  */
16638 struct LDKClosureReason ClosureReason_cooperative_closure(void);
16639
16640 /**
16641  * Utility method to constructs a new CommitmentTxConfirmed-variant ClosureReason
16642  */
16643 struct LDKClosureReason ClosureReason_commitment_tx_confirmed(void);
16644
16645 /**
16646  * Utility method to constructs a new FundingTimedOut-variant ClosureReason
16647  */
16648 struct LDKClosureReason ClosureReason_funding_timed_out(void);
16649
16650 /**
16651  * Utility method to constructs a new ProcessingError-variant ClosureReason
16652  */
16653 struct LDKClosureReason ClosureReason_processing_error(struct LDKStr err);
16654
16655 /**
16656  * Utility method to constructs a new DisconnectedPeer-variant ClosureReason
16657  */
16658 struct LDKClosureReason ClosureReason_disconnected_peer(void);
16659
16660 /**
16661  * Utility method to constructs a new OutdatedChannelManager-variant ClosureReason
16662  */
16663 struct LDKClosureReason ClosureReason_outdated_channel_manager(void);
16664
16665 /**
16666  * Serialize the ClosureReason object into a byte array which can be read by ClosureReason_read
16667  */
16668 struct LDKCVec_u8Z ClosureReason_write(const struct LDKClosureReason *NONNULL_PTR obj);
16669
16670 /**
16671  * Read a ClosureReason from a byte array, created by ClosureReason_write
16672  */
16673 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ ClosureReason_read(struct LDKu8slice ser);
16674
16675 /**
16676  * Frees any resources used by the Event
16677  */
16678 void Event_free(struct LDKEvent this_ptr);
16679
16680 /**
16681  * Creates a copy of the Event
16682  */
16683 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
16684
16685 /**
16686  * Utility method to constructs a new FundingGenerationReady-variant Event
16687  */
16688 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);
16689
16690 /**
16691  * Utility method to constructs a new PaymentReceived-variant Event
16692  */
16693 struct LDKEvent Event_payment_received(struct LDKThirtyTwoBytes payment_hash, uint64_t amt, struct LDKPaymentPurpose purpose);
16694
16695 /**
16696  * Utility method to constructs a new PaymentSent-variant Event
16697  */
16698 struct LDKEvent Event_payment_sent(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z fee_paid_msat);
16699
16700 /**
16701  * Utility method to constructs a new PaymentPathFailed-variant Event
16702  */
16703 struct LDKEvent Event_payment_path_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, bool rejected_by_dest, struct LDKCOption_NetworkUpdateZ network_update, bool all_paths_failed, struct LDKCVec_RouteHopZ path, struct LDKCOption_u64Z short_channel_id, struct LDKRouteParameters retry);
16704
16705 /**
16706  * Utility method to constructs a new PaymentFailed-variant Event
16707  */
16708 struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash);
16709
16710 /**
16711  * Utility method to constructs a new PendingHTLCsForwardable-variant Event
16712  */
16713 struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
16714
16715 /**
16716  * Utility method to constructs a new SpendableOutputs-variant Event
16717  */
16718 struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
16719
16720 /**
16721  * Utility method to constructs a new PaymentForwarded-variant Event
16722  */
16723 struct LDKEvent Event_payment_forwarded(struct LDKCOption_u64Z fee_earned_msat, bool claim_from_onchain_tx);
16724
16725 /**
16726  * Utility method to constructs a new ChannelClosed-variant Event
16727  */
16728 struct LDKEvent Event_channel_closed(struct LDKThirtyTwoBytes channel_id, uint64_t user_channel_id, struct LDKClosureReason reason);
16729
16730 /**
16731  * Utility method to constructs a new DiscardFunding-variant Event
16732  */
16733 struct LDKEvent Event_discard_funding(struct LDKThirtyTwoBytes channel_id, struct LDKTransaction transaction);
16734
16735 /**
16736  * Utility method to constructs a new PaymentPathSuccessful-variant Event
16737  */
16738 struct LDKEvent Event_payment_path_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
16739
16740 /**
16741  * Utility method to constructs a new OpenChannelRequest-variant Event
16742  */
16743 struct LDKEvent Event_open_channel_request(struct LDKThirtyTwoBytes temporary_channel_id, struct LDKPublicKey counterparty_node_id, uint64_t funding_satoshis, uint64_t push_msat, struct LDKChannelTypeFeatures channel_type);
16744
16745 /**
16746  * Serialize the Event object into a byte array which can be read by Event_read
16747  */
16748 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
16749
16750 /**
16751  * Read a Event from a byte array, created by Event_write
16752  */
16753 struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
16754
16755 /**
16756  * Frees any resources used by the MessageSendEvent
16757  */
16758 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
16759
16760 /**
16761  * Creates a copy of the MessageSendEvent
16762  */
16763 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
16764
16765 /**
16766  * Utility method to constructs a new SendAcceptChannel-variant MessageSendEvent
16767  */
16768 struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
16769
16770 /**
16771  * Utility method to constructs a new SendOpenChannel-variant MessageSendEvent
16772  */
16773 struct LDKMessageSendEvent MessageSendEvent_send_open_channel(struct LDKPublicKey node_id, struct LDKOpenChannel msg);
16774
16775 /**
16776  * Utility method to constructs a new SendFundingCreated-variant MessageSendEvent
16777  */
16778 struct LDKMessageSendEvent MessageSendEvent_send_funding_created(struct LDKPublicKey node_id, struct LDKFundingCreated msg);
16779
16780 /**
16781  * Utility method to constructs a new SendFundingSigned-variant MessageSendEvent
16782  */
16783 struct LDKMessageSendEvent MessageSendEvent_send_funding_signed(struct LDKPublicKey node_id, struct LDKFundingSigned msg);
16784
16785 /**
16786  * Utility method to constructs a new SendFundingLocked-variant MessageSendEvent
16787  */
16788 struct LDKMessageSendEvent MessageSendEvent_send_funding_locked(struct LDKPublicKey node_id, struct LDKFundingLocked msg);
16789
16790 /**
16791  * Utility method to constructs a new SendAnnouncementSignatures-variant MessageSendEvent
16792  */
16793 struct LDKMessageSendEvent MessageSendEvent_send_announcement_signatures(struct LDKPublicKey node_id, struct LDKAnnouncementSignatures msg);
16794
16795 /**
16796  * Utility method to constructs a new UpdateHTLCs-variant MessageSendEvent
16797  */
16798 struct LDKMessageSendEvent MessageSendEvent_update_htlcs(struct LDKPublicKey node_id, struct LDKCommitmentUpdate updates);
16799
16800 /**
16801  * Utility method to constructs a new SendRevokeAndACK-variant MessageSendEvent
16802  */
16803 struct LDKMessageSendEvent MessageSendEvent_send_revoke_and_ack(struct LDKPublicKey node_id, struct LDKRevokeAndACK msg);
16804
16805 /**
16806  * Utility method to constructs a new SendClosingSigned-variant MessageSendEvent
16807  */
16808 struct LDKMessageSendEvent MessageSendEvent_send_closing_signed(struct LDKPublicKey node_id, struct LDKClosingSigned msg);
16809
16810 /**
16811  * Utility method to constructs a new SendShutdown-variant MessageSendEvent
16812  */
16813 struct LDKMessageSendEvent MessageSendEvent_send_shutdown(struct LDKPublicKey node_id, struct LDKShutdown msg);
16814
16815 /**
16816  * Utility method to constructs a new SendChannelReestablish-variant MessageSendEvent
16817  */
16818 struct LDKMessageSendEvent MessageSendEvent_send_channel_reestablish(struct LDKPublicKey node_id, struct LDKChannelReestablish msg);
16819
16820 /**
16821  * Utility method to constructs a new BroadcastChannelAnnouncement-variant MessageSendEvent
16822  */
16823 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_announcement(struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
16824
16825 /**
16826  * Utility method to constructs a new BroadcastNodeAnnouncement-variant MessageSendEvent
16827  */
16828 struct LDKMessageSendEvent MessageSendEvent_broadcast_node_announcement(struct LDKNodeAnnouncement msg);
16829
16830 /**
16831  * Utility method to constructs a new BroadcastChannelUpdate-variant MessageSendEvent
16832  */
16833 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_update(struct LDKChannelUpdate msg);
16834
16835 /**
16836  * Utility method to constructs a new SendChannelUpdate-variant MessageSendEvent
16837  */
16838 struct LDKMessageSendEvent MessageSendEvent_send_channel_update(struct LDKPublicKey node_id, struct LDKChannelUpdate msg);
16839
16840 /**
16841  * Utility method to constructs a new HandleError-variant MessageSendEvent
16842  */
16843 struct LDKMessageSendEvent MessageSendEvent_handle_error(struct LDKPublicKey node_id, struct LDKErrorAction action);
16844
16845 /**
16846  * Utility method to constructs a new SendChannelRangeQuery-variant MessageSendEvent
16847  */
16848 struct LDKMessageSendEvent MessageSendEvent_send_channel_range_query(struct LDKPublicKey node_id, struct LDKQueryChannelRange msg);
16849
16850 /**
16851  * Utility method to constructs a new SendShortIdsQuery-variant MessageSendEvent
16852  */
16853 struct LDKMessageSendEvent MessageSendEvent_send_short_ids_query(struct LDKPublicKey node_id, struct LDKQueryShortChannelIds msg);
16854
16855 /**
16856  * Utility method to constructs a new SendReplyChannelRange-variant MessageSendEvent
16857  */
16858 struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
16859
16860 /**
16861  * Utility method to constructs a new SendGossipTimestampFilter-variant MessageSendEvent
16862  */
16863 struct LDKMessageSendEvent MessageSendEvent_send_gossip_timestamp_filter(struct LDKPublicKey node_id, struct LDKGossipTimestampFilter msg);
16864
16865 /**
16866  * Calls the free function if one is set
16867  */
16868 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
16869
16870 /**
16871  * Calls the free function if one is set
16872  */
16873 void EventsProvider_free(struct LDKEventsProvider this_ptr);
16874
16875 /**
16876  * Calls the free function if one is set
16877  */
16878 void EventHandler_free(struct LDKEventHandler this_ptr);
16879
16880 /**
16881  * Frees any resources used by the APIError
16882  */
16883 void APIError_free(struct LDKAPIError this_ptr);
16884
16885 /**
16886  * Creates a copy of the APIError
16887  */
16888 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
16889
16890 /**
16891  * Utility method to constructs a new APIMisuseError-variant APIError
16892  */
16893 struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
16894
16895 /**
16896  * Utility method to constructs a new FeeRateTooHigh-variant APIError
16897  */
16898 struct LDKAPIError APIError_fee_rate_too_high(struct LDKStr err, uint32_t feerate);
16899
16900 /**
16901  * Utility method to constructs a new RouteError-variant APIError
16902  */
16903 struct LDKAPIError APIError_route_error(struct LDKStr err);
16904
16905 /**
16906  * Utility method to constructs a new ChannelUnavailable-variant APIError
16907  */
16908 struct LDKAPIError APIError_channel_unavailable(struct LDKStr err);
16909
16910 /**
16911  * Utility method to constructs a new MonitorUpdateFailed-variant APIError
16912  */
16913 struct LDKAPIError APIError_monitor_update_failed(void);
16914
16915 /**
16916  * Utility method to constructs a new IncompatibleShutdownScript-variant APIError
16917  */
16918 struct LDKAPIError APIError_incompatible_shutdown_script(struct LDKShutdownScript script);
16919
16920 /**
16921  * Creates a digital signature of a message given a SecretKey, like the node's secret.
16922  * 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.
16923  * Signatures are EC recoverable, meaning that given the message and the signature the PublicKey of the signer can be extracted.
16924  */
16925 struct LDKCResult_StringErrorZ sign(struct LDKu8slice msg, const uint8_t (*sk)[32]);
16926
16927 /**
16928  * Recovers the PublicKey of the signer of the message given the message and the signature.
16929  */
16930 struct LDKCResult_PublicKeyErrorZ recover_pk(struct LDKu8slice msg, struct LDKStr sig);
16931
16932 /**
16933  * Verifies a message was signed by a PrivateKey that derives to a given PublicKey, given a message, a signature,
16934  * and the PublicKey.
16935  */
16936 bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
16937
16938 /**
16939  * Construct the invoice's HRP and signatureless data into a preimage to be hashed.
16940  */
16941 struct LDKCVec_u8Z construct_invoice_preimage(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z data_without_signature);
16942
16943 /**
16944  * Creates a copy of the Level
16945  */
16946 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
16947
16948 /**
16949  * Utility method to constructs a new Gossip-variant Level
16950  */
16951 enum LDKLevel Level_gossip(void);
16952
16953 /**
16954  * Utility method to constructs a new Trace-variant Level
16955  */
16956 enum LDKLevel Level_trace(void);
16957
16958 /**
16959  * Utility method to constructs a new Debug-variant Level
16960  */
16961 enum LDKLevel Level_debug(void);
16962
16963 /**
16964  * Utility method to constructs a new Info-variant Level
16965  */
16966 enum LDKLevel Level_info(void);
16967
16968 /**
16969  * Utility method to constructs a new Warn-variant Level
16970  */
16971 enum LDKLevel Level_warn(void);
16972
16973 /**
16974  * Utility method to constructs a new Error-variant Level
16975  */
16976 enum LDKLevel Level_error(void);
16977
16978 /**
16979  * Checks if two Levels contain equal inner contents.
16980  * This ignores pointers and is_owned flags and looks at the values in fields.
16981  */
16982 bool Level_eq(const enum LDKLevel *NONNULL_PTR a, const enum LDKLevel *NONNULL_PTR b);
16983
16984 /**
16985  * Checks if two Levels contain equal inner contents.
16986  */
16987 uint64_t Level_hash(const enum LDKLevel *NONNULL_PTR o);
16988
16989 /**
16990  * Returns the most verbose logging level.
16991  */
16992 MUST_USE_RES enum LDKLevel Level_max(void);
16993
16994 /**
16995  * Frees any resources used by the Record, if is_owned is set and inner is non-NULL.
16996  */
16997 void Record_free(struct LDKRecord this_obj);
16998
16999 /**
17000  * The verbosity level of the message.
17001  */
17002 enum LDKLevel Record_get_level(const struct LDKRecord *NONNULL_PTR this_ptr);
17003
17004 /**
17005  * The verbosity level of the message.
17006  */
17007 void Record_set_level(struct LDKRecord *NONNULL_PTR this_ptr, enum LDKLevel val);
17008
17009 /**
17010  * The message body.
17011  */
17012 struct LDKStr Record_get_args(const struct LDKRecord *NONNULL_PTR this_ptr);
17013
17014 /**
17015  * The message body.
17016  */
17017 void Record_set_args(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
17018
17019 /**
17020  * The module path of the message.
17021  */
17022 struct LDKStr Record_get_module_path(const struct LDKRecord *NONNULL_PTR this_ptr);
17023
17024 /**
17025  * The module path of the message.
17026  */
17027 void Record_set_module_path(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
17028
17029 /**
17030  * The source file containing the message.
17031  */
17032 struct LDKStr Record_get_file(const struct LDKRecord *NONNULL_PTR this_ptr);
17033
17034 /**
17035  * The source file containing the message.
17036  */
17037 void Record_set_file(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
17038
17039 /**
17040  * The line containing the message.
17041  */
17042 uint32_t Record_get_line(const struct LDKRecord *NONNULL_PTR this_ptr);
17043
17044 /**
17045  * The line containing the message.
17046  */
17047 void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
17048
17049 /**
17050  * Creates a copy of the Record
17051  */
17052 struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
17053
17054 /**
17055  * Calls the free function if one is set
17056  */
17057 void Logger_free(struct LDKLogger this_ptr);
17058
17059 /**
17060  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
17061  */
17062 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
17063
17064 /**
17065  * Confirmations we will wait for before considering the channel locked in.
17066  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
17067  * equivalent limit applied to outbound channels).
17068  *
17069  * Default value: 6.
17070  */
17071 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
17072
17073 /**
17074  * Confirmations we will wait for before considering the channel locked in.
17075  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
17076  * equivalent limit applied to outbound channels).
17077  *
17078  * Default value: 6.
17079  */
17080 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
17081
17082 /**
17083  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
17084  * the number of blocks we have to punish our counterparty if they broadcast a revoked
17085  * transaction).
17086  *
17087  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
17088  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
17089  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
17090  * possibly with time in between to RBF the spending transaction).
17091  *
17092  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
17093  * case of an honest unilateral channel close, which implicitly decrease the economic value of
17094  * our channel.
17095  *
17096  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
17097  * can tweak config to ask for more security, not less.
17098  */
17099 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
17100
17101 /**
17102  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
17103  * the number of blocks we have to punish our counterparty if they broadcast a revoked
17104  * transaction).
17105  *
17106  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
17107  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
17108  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
17109  * possibly with time in between to RBF the spending transaction).
17110  *
17111  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
17112  * case of an honest unilateral channel close, which implicitly decrease the economic value of
17113  * our channel.
17114  *
17115  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
17116  * can tweak config to ask for more security, not less.
17117  */
17118 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
17119
17120 /**
17121  * Set to the smallest value HTLC we will accept to process.
17122  *
17123  * This value is sent to our counterparty on channel-open and we close the channel any time
17124  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
17125  *
17126  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
17127  * by the protocol.
17128  */
17129 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
17130
17131 /**
17132  * Set to the smallest value HTLC we will accept to process.
17133  *
17134  * This value is sent to our counterparty on channel-open and we close the channel any time
17135  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
17136  *
17137  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
17138  * by the protocol.
17139  */
17140 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
17141
17142 /**
17143  * If set, we attempt to negotiate the `scid_privacy` (referred to as `scid_alias` in the
17144  * BOLTs) option for outbound private channels. This provides better privacy by not including
17145  * our real on-chain channel UTXO in each invoice and requiring that our counterparty only
17146  * relay HTLCs to us using the channel's SCID alias.
17147  *
17148  * If this option is set, channels may be created that will not be readable by LDK versions
17149  * prior to 0.0.106, causing [`ChannelManager`]'s read method to return a
17150  * [`DecodeError:InvalidValue`].
17151  *
17152  * Note that setting this to true does *not* prevent us from opening channels with
17153  * counterparties that do not support the `scid_alias` option; we will simply fall back to a
17154  * private channel without that option.
17155  *
17156  * Ignored if the channel is negotiated to be announced, see
17157  * [`ChannelConfig::announced_channel`] and
17158  * [`ChannelHandshakeLimits::force_announced_channel_preference`] for more.
17159  *
17160  * Default value: false. This value is likely to change to true in the future.
17161  *
17162  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
17163  * [`DecodeError:InvalidValue`]: crate::ln::msgs::DecodeError::InvalidValue
17164  */
17165 bool ChannelHandshakeConfig_get_negotiate_scid_privacy(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
17166
17167 /**
17168  * If set, we attempt to negotiate the `scid_privacy` (referred to as `scid_alias` in the
17169  * BOLTs) option for outbound private channels. This provides better privacy by not including
17170  * our real on-chain channel UTXO in each invoice and requiring that our counterparty only
17171  * relay HTLCs to us using the channel's SCID alias.
17172  *
17173  * If this option is set, channels may be created that will not be readable by LDK versions
17174  * prior to 0.0.106, causing [`ChannelManager`]'s read method to return a
17175  * [`DecodeError:InvalidValue`].
17176  *
17177  * Note that setting this to true does *not* prevent us from opening channels with
17178  * counterparties that do not support the `scid_alias` option; we will simply fall back to a
17179  * private channel without that option.
17180  *
17181  * Ignored if the channel is negotiated to be announced, see
17182  * [`ChannelConfig::announced_channel`] and
17183  * [`ChannelHandshakeLimits::force_announced_channel_preference`] for more.
17184  *
17185  * Default value: false. This value is likely to change to true in the future.
17186  *
17187  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
17188  * [`DecodeError:InvalidValue`]: crate::ln::msgs::DecodeError::InvalidValue
17189  */
17190 void ChannelHandshakeConfig_set_negotiate_scid_privacy(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, bool val);
17191
17192 /**
17193  * Constructs a new ChannelHandshakeConfig given each field
17194  */
17195 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, bool negotiate_scid_privacy_arg);
17196
17197 /**
17198  * Creates a copy of the ChannelHandshakeConfig
17199  */
17200 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
17201
17202 /**
17203  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
17204  */
17205 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
17206
17207 /**
17208  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
17209  */
17210 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
17211
17212 /**
17213  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
17214  * only applies to inbound channels.
17215  *
17216  * Default value: 0.
17217  */
17218 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17219
17220 /**
17221  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
17222  * only applies to inbound channels.
17223  *
17224  * Default value: 0.
17225  */
17226 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17227
17228 /**
17229  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
17230  * you to limit the maximum minimum-size they can require.
17231  *
17232  * Default value: u64::max_value.
17233  */
17234 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17235
17236 /**
17237  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
17238  * you to limit the maximum minimum-size they can require.
17239  *
17240  * Default value: u64::max_value.
17241  */
17242 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17243
17244 /**
17245  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
17246  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
17247  *
17248  * Default value: 0.
17249  */
17250 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17251
17252 /**
17253  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
17254  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
17255  *
17256  * Default value: 0.
17257  */
17258 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17259
17260 /**
17261  * The remote node will require we keep a certain amount in direct payment to ourselves at all
17262  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
17263  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
17264  *
17265  * Default value: u64::max_value.
17266  */
17267 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17268
17269 /**
17270  * The remote node will require we keep a certain amount in direct payment to ourselves at all
17271  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
17272  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
17273  *
17274  * Default value: u64::max_value.
17275  */
17276 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17277
17278 /**
17279  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
17280  * time. This allows you to set a minimum such value.
17281  *
17282  * Default value: 0.
17283  */
17284 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17285
17286 /**
17287  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
17288  * time. This allows you to set a minimum such value.
17289  *
17290  * Default value: 0.
17291  */
17292 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
17293
17294 /**
17295  * Before a channel is usable the funding transaction will need to be confirmed by at least a
17296  * certain number of blocks, specified by the node which is not the funder (as the funder can
17297  * assume they aren't going to double-spend themselves).
17298  * This config allows you to set a limit on the maximum amount of time to wait.
17299  *
17300  * Default value: 144, or roughly one day and only applies to outbound channels.
17301  */
17302 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17303
17304 /**
17305  * Before a channel is usable the funding transaction will need to be confirmed by at least a
17306  * certain number of blocks, specified by the node which is not the funder (as the funder can
17307  * assume they aren't going to double-spend themselves).
17308  * This config allows you to set a limit on the maximum amount of time to wait.
17309  *
17310  * Default value: 144, or roughly one day and only applies to outbound channels.
17311  */
17312 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
17313
17314 /**
17315  * Set to force an incoming channel to match our announced channel preference in
17316  * [`ChannelConfig::announced_channel`].
17317  *
17318  * For a node which is not online reliably, this should be set to true and
17319  * [`ChannelConfig::announced_channel`] set to false, ensuring that no announced (aka public)
17320  * channels will ever be opened.
17321  *
17322  * Default value: true.
17323  */
17324 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17325
17326 /**
17327  * Set to force an incoming channel to match our announced channel preference in
17328  * [`ChannelConfig::announced_channel`].
17329  *
17330  * For a node which is not online reliably, this should be set to true and
17331  * [`ChannelConfig::announced_channel`] set to false, ensuring that no announced (aka public)
17332  * channels will ever be opened.
17333  *
17334  * Default value: true.
17335  */
17336 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
17337
17338 /**
17339  * Set to the amount of time we're willing to wait to claim money back to us.
17340  *
17341  * Not checking this value would be a security issue, as our peer would be able to set it to
17342  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
17343  *
17344  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
17345  * reduce the loss of having useless locked funds (if your peer accepts)
17346  */
17347 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17348
17349 /**
17350  * Set to the amount of time we're willing to wait to claim money back to us.
17351  *
17352  * Not checking this value would be a security issue, as our peer would be able to set it to
17353  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
17354  *
17355  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
17356  * reduce the loss of having useless locked funds (if your peer accepts)
17357  */
17358 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
17359
17360 /**
17361  * Constructs a new ChannelHandshakeLimits given each field
17362  */
17363 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);
17364
17365 /**
17366  * Creates a copy of the ChannelHandshakeLimits
17367  */
17368 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
17369
17370 /**
17371  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
17372  */
17373 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
17374
17375 /**
17376  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
17377  */
17378 void ChannelConfig_free(struct LDKChannelConfig this_obj);
17379
17380 /**
17381  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
17382  * over the channel.
17383  * This may be allowed to change at runtime in a later update, however doing so must result in
17384  * update messages sent to notify all nodes of our updated relay fee.
17385  *
17386  * Default value: 0.
17387  */
17388 uint32_t ChannelConfig_get_forwarding_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17389
17390 /**
17391  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
17392  * over the channel.
17393  * This may be allowed to change at runtime in a later update, however doing so must result in
17394  * update messages sent to notify all nodes of our updated relay fee.
17395  *
17396  * Default value: 0.
17397  */
17398 void ChannelConfig_set_forwarding_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
17399
17400 /**
17401  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
17402  * excess of [`forwarding_fee_proportional_millionths`].
17403  * This may be allowed to change at runtime in a later update, however doing so must result in
17404  * update messages sent to notify all nodes of our updated relay fee.
17405  *
17406  * The default value of a single satoshi roughly matches the market rate on many routing nodes
17407  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
17408  * this node.
17409  *
17410  * Default value: 1000.
17411  *
17412  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
17413  */
17414 uint32_t ChannelConfig_get_forwarding_fee_base_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17415
17416 /**
17417  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
17418  * excess of [`forwarding_fee_proportional_millionths`].
17419  * This may be allowed to change at runtime in a later update, however doing so must result in
17420  * update messages sent to notify all nodes of our updated relay fee.
17421  *
17422  * The default value of a single satoshi roughly matches the market rate on many routing nodes
17423  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
17424  * this node.
17425  *
17426  * Default value: 1000.
17427  *
17428  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
17429  */
17430 void ChannelConfig_set_forwarding_fee_base_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
17431
17432 /**
17433  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
17434  * the channel this config applies to.
17435  *
17436  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
17437  * HTLC balance when a channel appears on-chain whereas
17438  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
17439  * (non-HTLC-encumbered) balance.
17440  *
17441  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
17442  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
17443  * commitment transaction at least once per this many blocks (minus some margin to allow us
17444  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
17445  * the spending transaction).
17446  *
17447  * Default value: 72 (12 hours at an average of 6 blocks/hour).
17448  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
17449  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
17450  *
17451  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
17452  */
17453 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17454
17455 /**
17456  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
17457  * the channel this config applies to.
17458  *
17459  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
17460  * HTLC balance when a channel appears on-chain whereas
17461  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
17462  * (non-HTLC-encumbered) balance.
17463  *
17464  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
17465  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
17466  * commitment transaction at least once per this many blocks (minus some margin to allow us
17467  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
17468  * the spending transaction).
17469  *
17470  * Default value: 72 (12 hours at an average of 6 blocks/hour).
17471  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
17472  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
17473  *
17474  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
17475  */
17476 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
17477
17478 /**
17479  * Set to announce the channel publicly and notify all nodes that they can route via this
17480  * channel.
17481  *
17482  * This should only be set to true for nodes which expect to be online reliably.
17483  *
17484  * As the node which funds a channel picks this value this will only apply for new outbound
17485  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
17486  *
17487  * This cannot be changed after the initial channel handshake.
17488  *
17489  * Default value: false.
17490  */
17491 bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17492
17493 /**
17494  * Set to announce the channel publicly and notify all nodes that they can route via this
17495  * channel.
17496  *
17497  * This should only be set to true for nodes which expect to be online reliably.
17498  *
17499  * As the node which funds a channel picks this value this will only apply for new outbound
17500  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
17501  *
17502  * This cannot be changed after the initial channel handshake.
17503  *
17504  * Default value: false.
17505  */
17506 void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
17507
17508 /**
17509  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
17510  * supports it, they will then enforce the mutual-close output to us matches what we provided
17511  * at intialization, preventing us from closing to an alternate pubkey.
17512  *
17513  * This is set to true by default to provide a slight increase in security, though ultimately
17514  * any attacker who is able to take control of a channel can just as easily send the funds via
17515  * lightning payments, so we never require that our counterparties support this option.
17516  *
17517  * This cannot be changed after a channel has been initialized.
17518  *
17519  * Default value: true.
17520  */
17521 bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17522
17523 /**
17524  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
17525  * supports it, they will then enforce the mutual-close output to us matches what we provided
17526  * at intialization, preventing us from closing to an alternate pubkey.
17527  *
17528  * This is set to true by default to provide a slight increase in security, though ultimately
17529  * any attacker who is able to take control of a channel can just as easily send the funds via
17530  * lightning payments, so we never require that our counterparties support this option.
17531  *
17532  * This cannot be changed after a channel has been initialized.
17533  *
17534  * Default value: true.
17535  */
17536 void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
17537
17538 /**
17539  * Limit our total exposure to in-flight HTLCs which are burned to fees as they are too
17540  * small to claim on-chain.
17541  *
17542  * When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will
17543  * not be claimable on-chain, instead being turned into additional miner fees if either
17544  * party force-closes the channel. Because the threshold is per-HTLC, our total exposure
17545  * to such payments may be sustantial if there are many dust HTLCs present when the
17546  * channel is force-closed.
17547  *
17548  * This limit is applied for sent, forwarded, and received HTLCs and limits the total
17549  * exposure across all three types per-channel. Setting this too low may prevent the
17550  * sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very
17551  * important to prevent stealing of dust HTLCs by miners.
17552  *
17553  * Default value: 5_000_000 msat.
17554  */
17555 uint64_t ChannelConfig_get_max_dust_htlc_exposure_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17556
17557 /**
17558  * Limit our total exposure to in-flight HTLCs which are burned to fees as they are too
17559  * small to claim on-chain.
17560  *
17561  * When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will
17562  * not be claimable on-chain, instead being turned into additional miner fees if either
17563  * party force-closes the channel. Because the threshold is per-HTLC, our total exposure
17564  * to such payments may be sustantial if there are many dust HTLCs present when the
17565  * channel is force-closed.
17566  *
17567  * This limit is applied for sent, forwarded, and received HTLCs and limits the total
17568  * exposure across all three types per-channel. Setting this too low may prevent the
17569  * sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very
17570  * important to prevent stealing of dust HTLCs by miners.
17571  *
17572  * Default value: 5_000_000 msat.
17573  */
17574 void ChannelConfig_set_max_dust_htlc_exposure_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
17575
17576 /**
17577  * The additional fee we're willing to pay to avoid waiting for the counterparty's
17578  * `to_self_delay` to reclaim funds.
17579  *
17580  * When we close a channel cooperatively with our counterparty, we negotiate a fee for the
17581  * closing transaction which both sides find acceptable, ultimately paid by the channel
17582  * funder/initiator.
17583  *
17584  * When we are the funder, because we have to pay the channel closing fee, we bound the
17585  * acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by
17586  * this value. Because the on-chain fee we'd pay to force-close the channel is kept near our
17587  * [`Normal`] feerate during normal operation, this value represents the additional fee we're
17588  * willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our
17589  * funds.
17590  *
17591  * When we are not the funder, we require the closing transaction fee pay at least our
17592  * [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like.
17593  * Thus, this value is ignored when we are not the funder.
17594  *
17595  * Default value: 1000 satoshis.
17596  *
17597  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
17598  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
17599  */
17600 uint64_t ChannelConfig_get_force_close_avoidance_max_fee_satoshis(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17601
17602 /**
17603  * The additional fee we're willing to pay to avoid waiting for the counterparty's
17604  * `to_self_delay` to reclaim funds.
17605  *
17606  * When we close a channel cooperatively with our counterparty, we negotiate a fee for the
17607  * closing transaction which both sides find acceptable, ultimately paid by the channel
17608  * funder/initiator.
17609  *
17610  * When we are the funder, because we have to pay the channel closing fee, we bound the
17611  * acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by
17612  * this value. Because the on-chain fee we'd pay to force-close the channel is kept near our
17613  * [`Normal`] feerate during normal operation, this value represents the additional fee we're
17614  * willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our
17615  * funds.
17616  *
17617  * When we are not the funder, we require the closing transaction fee pay at least our
17618  * [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like.
17619  * Thus, this value is ignored when we are not the funder.
17620  *
17621  * Default value: 1000 satoshis.
17622  *
17623  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
17624  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
17625  */
17626 void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
17627
17628 /**
17629  * Constructs a new ChannelConfig given each field
17630  */
17631 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, uint64_t max_dust_htlc_exposure_msat_arg, uint64_t force_close_avoidance_max_fee_satoshis_arg);
17632
17633 /**
17634  * Creates a copy of the ChannelConfig
17635  */
17636 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
17637
17638 /**
17639  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
17640  */
17641 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
17642
17643 /**
17644  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
17645  */
17646 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
17647
17648 /**
17649  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
17650  */
17651 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
17652
17653 /**
17654  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
17655  */
17656 void UserConfig_free(struct LDKUserConfig this_obj);
17657
17658 /**
17659  * Channel config that we propose to our counterparty.
17660  */
17661 struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17662
17663 /**
17664  * Channel config that we propose to our counterparty.
17665  */
17666 void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
17667
17668 /**
17669  * Limits applied to our counterparty's proposed channel config settings.
17670  */
17671 struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17672
17673 /**
17674  * Limits applied to our counterparty's proposed channel config settings.
17675  */
17676 void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
17677
17678 /**
17679  * Channel config which affects behavior during channel lifetime.
17680  */
17681 struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17682
17683 /**
17684  * Channel config which affects behavior during channel lifetime.
17685  */
17686 void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
17687
17688 /**
17689  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
17690  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
17691  * node which is not online reliably.
17692  *
17693  * For nodes which are not online reliably, you should set all channels to *not* be announced
17694  * (using [`ChannelConfig::announced_channel`] and
17695  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
17696  * ensure you are not exposed to any forwarding risk.
17697  *
17698  * Note that because you cannot change a channel's announced state after creation, there is no
17699  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
17700  * from a publicly-announced forwarding node to a private non-forwarding node you must close
17701  * all your channels and open new ones. For privacy, you should also change your node_id
17702  * (swapping all private and public key material for new ones) at that time.
17703  *
17704  * Default value: false.
17705  */
17706 bool UserConfig_get_accept_forwards_to_priv_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17707
17708 /**
17709  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
17710  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
17711  * node which is not online reliably.
17712  *
17713  * For nodes which are not online reliably, you should set all channels to *not* be announced
17714  * (using [`ChannelConfig::announced_channel`] and
17715  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
17716  * ensure you are not exposed to any forwarding risk.
17717  *
17718  * Note that because you cannot change a channel's announced state after creation, there is no
17719  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
17720  * from a publicly-announced forwarding node to a private non-forwarding node you must close
17721  * all your channels and open new ones. For privacy, you should also change your node_id
17722  * (swapping all private and public key material for new ones) at that time.
17723  *
17724  * Default value: false.
17725  */
17726 void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
17727
17728 /**
17729  * If this is set to false, we do not accept inbound requests to open a new channel.
17730  * Default value: true.
17731  */
17732 bool UserConfig_get_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17733
17734 /**
17735  * If this is set to false, we do not accept inbound requests to open a new channel.
17736  * Default value: true.
17737  */
17738 void UserConfig_set_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
17739
17740 /**
17741  * If this is set to true, the user needs to manually accept inbound requests to open a new
17742  * channel.
17743  *
17744  * When set to true, [`Event::OpenChannelRequest`] will be triggered once a request to open a
17745  * new inbound channel is received through a [`msgs::OpenChannel`] message. In that case, a
17746  * [`msgs::AcceptChannel`] message will not be sent back to the counterparty node unless the
17747  * user explicitly chooses to accept the request.
17748  *
17749  * Default value: false.
17750  *
17751  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
17752  * [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
17753  * [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
17754  */
17755 bool UserConfig_get_manually_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17756
17757 /**
17758  * If this is set to true, the user needs to manually accept inbound requests to open a new
17759  * channel.
17760  *
17761  * When set to true, [`Event::OpenChannelRequest`] will be triggered once a request to open a
17762  * new inbound channel is received through a [`msgs::OpenChannel`] message. In that case, a
17763  * [`msgs::AcceptChannel`] message will not be sent back to the counterparty node unless the
17764  * user explicitly chooses to accept the request.
17765  *
17766  * Default value: false.
17767  *
17768  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
17769  * [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
17770  * [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
17771  */
17772 void UserConfig_set_manually_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
17773
17774 /**
17775  * Constructs a new UserConfig given each field
17776  */
17777 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, bool accept_inbound_channels_arg, bool manually_accept_inbound_channels_arg);
17778
17779 /**
17780  * Creates a copy of the UserConfig
17781  */
17782 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
17783
17784 /**
17785  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
17786  */
17787 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
17788
17789 /**
17790  * Frees any resources used by the BestBlock, if is_owned is set and inner is non-NULL.
17791  */
17792 void BestBlock_free(struct LDKBestBlock this_obj);
17793
17794 /**
17795  * Creates a copy of the BestBlock
17796  */
17797 struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
17798
17799 /**
17800  * Constructs a `BestBlock` that represents the genesis block at height 0 of the given
17801  * network.
17802  */
17803 MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
17804
17805 /**
17806  * Returns a `BestBlock` as identified by the given block hash and height.
17807  */
17808 MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
17809
17810 /**
17811  * Returns the best block hash.
17812  */
17813 MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
17814
17815 /**
17816  * Returns the best block height.
17817  */
17818 MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
17819
17820 /**
17821  * Creates a copy of the AccessError
17822  */
17823 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
17824
17825 /**
17826  * Utility method to constructs a new UnknownChain-variant AccessError
17827  */
17828 enum LDKAccessError AccessError_unknown_chain(void);
17829
17830 /**
17831  * Utility method to constructs a new UnknownTx-variant AccessError
17832  */
17833 enum LDKAccessError AccessError_unknown_tx(void);
17834
17835 /**
17836  * Calls the free function if one is set
17837  */
17838 void Access_free(struct LDKAccess this_ptr);
17839
17840 /**
17841  * Calls the free function if one is set
17842  */
17843 void Listen_free(struct LDKListen this_ptr);
17844
17845 /**
17846  * Calls the free function if one is set
17847  */
17848 void Confirm_free(struct LDKConfirm this_ptr);
17849
17850 /**
17851  * Creates a copy of the ChannelMonitorUpdateErr
17852  */
17853 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
17854
17855 /**
17856  * Utility method to constructs a new TemporaryFailure-variant ChannelMonitorUpdateErr
17857  */
17858 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_temporary_failure(void);
17859
17860 /**
17861  * Utility method to constructs a new PermanentFailure-variant ChannelMonitorUpdateErr
17862  */
17863 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_permanent_failure(void);
17864
17865 /**
17866  * Calls the free function if one is set
17867  */
17868 void Watch_free(struct LDKWatch this_ptr);
17869
17870 /**
17871  * Calls the free function if one is set
17872  */
17873 void Filter_free(struct LDKFilter this_ptr);
17874
17875 /**
17876  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
17877  */
17878 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
17879
17880 /**
17881  * First block where the transaction output may have been spent.
17882  *
17883  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
17884  */
17885 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
17886
17887 /**
17888  * First block where the transaction output may have been spent.
17889  *
17890  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
17891  */
17892 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
17893
17894 /**
17895  * Outpoint identifying the transaction output.
17896  */
17897 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
17898
17899 /**
17900  * Outpoint identifying the transaction output.
17901  */
17902 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
17903
17904 /**
17905  * Spending condition of the transaction output.
17906  */
17907 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
17908
17909 /**
17910  * Spending condition of the transaction output.
17911  */
17912 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
17913
17914 /**
17915  * Constructs a new WatchedOutput given each field
17916  */
17917 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
17918
17919 /**
17920  * Creates a copy of the WatchedOutput
17921  */
17922 struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
17923
17924 /**
17925  * Checks if two WatchedOutputs contain equal inner contents.
17926  */
17927 uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
17928
17929 /**
17930  * Calls the free function if one is set
17931  */
17932 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
17933
17934 /**
17935  * Creates a copy of the ConfirmationTarget
17936  */
17937 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
17938
17939 /**
17940  * Utility method to constructs a new Background-variant ConfirmationTarget
17941  */
17942 enum LDKConfirmationTarget ConfirmationTarget_background(void);
17943
17944 /**
17945  * Utility method to constructs a new Normal-variant ConfirmationTarget
17946  */
17947 enum LDKConfirmationTarget ConfirmationTarget_normal(void);
17948
17949 /**
17950  * Utility method to constructs a new HighPriority-variant ConfirmationTarget
17951  */
17952 enum LDKConfirmationTarget ConfirmationTarget_high_priority(void);
17953
17954 /**
17955  * Checks if two ConfirmationTargets contain equal inner contents.
17956  * This ignores pointers and is_owned flags and looks at the values in fields.
17957  */
17958 bool ConfirmationTarget_eq(const enum LDKConfirmationTarget *NONNULL_PTR a, const enum LDKConfirmationTarget *NONNULL_PTR b);
17959
17960 /**
17961  * Calls the free function if one is set
17962  */
17963 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
17964
17965 /**
17966  * Frees any resources used by the MonitorUpdateId, if is_owned is set and inner is non-NULL.
17967  */
17968 void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
17969
17970 /**
17971  * Creates a copy of the MonitorUpdateId
17972  */
17973 struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
17974
17975 /**
17976  * Checks if two MonitorUpdateIds contain equal inner contents.
17977  */
17978 uint64_t MonitorUpdateId_hash(const struct LDKMonitorUpdateId *NONNULL_PTR o);
17979
17980 /**
17981  * Checks if two MonitorUpdateIds contain equal inner contents.
17982  * This ignores pointers and is_owned flags and looks at the values in fields.
17983  * Two objects with NULL inner values will be considered "equal" here.
17984  */
17985 bool MonitorUpdateId_eq(const struct LDKMonitorUpdateId *NONNULL_PTR a, const struct LDKMonitorUpdateId *NONNULL_PTR b);
17986
17987 /**
17988  * Calls the free function if one is set
17989  */
17990 void Persist_free(struct LDKPersist this_ptr);
17991
17992 /**
17993  * Frees any resources used by the LockedChannelMonitor, if is_owned is set and inner is non-NULL.
17994  */
17995 void LockedChannelMonitor_free(struct LDKLockedChannelMonitor this_obj);
17996
17997 /**
17998  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
17999  */
18000 void ChainMonitor_free(struct LDKChainMonitor this_obj);
18001
18002 /**
18003  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
18004  *
18005  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
18006  * will call back to it indicating transactions and outputs of interest. This allows clients to
18007  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
18008  * always need to fetch full blocks absent another means for determining which blocks contain
18009  * transactions relevant to the watched channels.
18010  */
18011 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKCOption_FilterZ chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
18012
18013 /**
18014  * Gets the balances in the contained [`ChannelMonitor`]s which are claimable on-chain or
18015  * claims which are awaiting confirmation.
18016  *
18017  * Includes the balances from each [`ChannelMonitor`] *except* those included in
18018  * `ignored_channels`, allowing you to filter out balances from channels which are still open
18019  * (and whose balance should likely be pulled from the [`ChannelDetails`]).
18020  *
18021  * See [`ChannelMonitor::get_claimable_balances`] for more details on the exact criteria for
18022  * inclusion in the return value.
18023  */
18024 MUST_USE_RES struct LDKCVec_BalanceZ ChainMonitor_get_claimable_balances(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKCVec_ChannelDetailsZ ignored_channels);
18025
18026 /**
18027  * Gets the [`LockedChannelMonitor`] for a given funding outpoint, returning an `Err` if no
18028  * such [`ChannelMonitor`] is currently being monitored for.
18029  *
18030  * Note that the result holds a mutex over our monitor set, and should not be held
18031  * indefinitely.
18032  */
18033 MUST_USE_RES struct LDKCResult_LockedChannelMonitorNoneZ ChainMonitor_get_monitor(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo);
18034
18035 /**
18036  * Lists the funding outpoint of each [`ChannelMonitor`] being monitored.
18037  *
18038  * Note that [`ChannelMonitor`]s are not removed when a channel is closed as they are always
18039  * monitoring for on-chain state resolutions.
18040  */
18041 MUST_USE_RES struct LDKCVec_OutPointZ ChainMonitor_list_monitors(const struct LDKChainMonitor *NONNULL_PTR this_arg);
18042
18043 /**
18044  * Indicates the persistence of a [`ChannelMonitor`] has completed after
18045  * [`ChannelMonitorUpdateErr::TemporaryFailure`] was returned from an update operation.
18046  *
18047  * Thus, the anticipated use is, at a high level:
18048  *  1) This [`ChainMonitor`] calls [`Persist::update_persisted_channel`] which stores the
18049  *     update to disk and begins updating any remote (e.g. watchtower/backup) copies,
18050  *     returning [`ChannelMonitorUpdateErr::TemporaryFailure`],
18051  *  2) once all remote copies are updated, you call this function with the
18052  *     `completed_update_id` that completed, and once all pending updates have completed the
18053  *     channel will be re-enabled.
18054  *
18055  * Returns an [`APIError::APIMisuseError`] if `funding_txo` does not match any currently
18056  * registered [`ChannelMonitor`]s.
18057  */
18058 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChainMonitor_channel_monitor_updated(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo, struct LDKMonitorUpdateId completed_update_id);
18059
18060 /**
18061  * Constructs a new Listen which calls the relevant methods on this_arg.
18062  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
18063  */
18064 struct LDKListen ChainMonitor_as_Listen(const struct LDKChainMonitor *NONNULL_PTR this_arg);
18065
18066 /**
18067  * Constructs a new Confirm which calls the relevant methods on this_arg.
18068  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
18069  */
18070 struct LDKConfirm ChainMonitor_as_Confirm(const struct LDKChainMonitor *NONNULL_PTR this_arg);
18071
18072 /**
18073  * Constructs a new Watch which calls the relevant methods on this_arg.
18074  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
18075  */
18076 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
18077
18078 /**
18079  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
18080  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
18081  */
18082 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
18083
18084 /**
18085  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
18086  */
18087 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
18088
18089 /**
18090  * The sequence number of this update. Updates *must* be replayed in-order according to this
18091  * sequence number (and updates may panic if they are not). The update_id values are strictly
18092  * increasing and increase by one for each new update, with one exception specified below.
18093  *
18094  * This sequence number is also used to track up to which points updates which returned
18095  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
18096  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
18097  *
18098  * The only instance where update_id values are not strictly increasing is the case where we
18099  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
18100  * its docs for more details.
18101  */
18102 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
18103
18104 /**
18105  * The sequence number of this update. Updates *must* be replayed in-order according to this
18106  * sequence number (and updates may panic if they are not). The update_id values are strictly
18107  * increasing and increase by one for each new update, with one exception specified below.
18108  *
18109  * This sequence number is also used to track up to which points updates which returned
18110  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
18111  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
18112  *
18113  * The only instance where update_id values are not strictly increasing is the case where we
18114  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
18115  * its docs for more details.
18116  */
18117 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
18118
18119 /**
18120  * Creates a copy of the ChannelMonitorUpdate
18121  */
18122 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
18123
18124 /**
18125  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
18126  */
18127 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
18128
18129 /**
18130  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
18131  */
18132 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
18133
18134 /**
18135  * Frees any resources used by the MonitorEvent
18136  */
18137 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
18138
18139 /**
18140  * Creates a copy of the MonitorEvent
18141  */
18142 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
18143
18144 /**
18145  * Utility method to constructs a new HTLCEvent-variant MonitorEvent
18146  */
18147 struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
18148
18149 /**
18150  * Utility method to constructs a new CommitmentTxConfirmed-variant MonitorEvent
18151  */
18152 struct LDKMonitorEvent MonitorEvent_commitment_tx_confirmed(struct LDKOutPoint a);
18153
18154 /**
18155  * Utility method to constructs a new UpdateCompleted-variant MonitorEvent
18156  */
18157 struct LDKMonitorEvent MonitorEvent_update_completed(struct LDKOutPoint funding_txo, uint64_t monitor_update_id);
18158
18159 /**
18160  * Utility method to constructs a new UpdateFailed-variant MonitorEvent
18161  */
18162 struct LDKMonitorEvent MonitorEvent_update_failed(struct LDKOutPoint a);
18163
18164 /**
18165  * Serialize the MonitorEvent object into a byte array which can be read by MonitorEvent_read
18166  */
18167 struct LDKCVec_u8Z MonitorEvent_write(const struct LDKMonitorEvent *NONNULL_PTR obj);
18168
18169 /**
18170  * Read a MonitorEvent from a byte array, created by MonitorEvent_write
18171  */
18172 struct LDKCResult_COption_MonitorEventZDecodeErrorZ MonitorEvent_read(struct LDKu8slice ser);
18173
18174 /**
18175  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
18176  */
18177 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
18178
18179 /**
18180  * Creates a copy of the HTLCUpdate
18181  */
18182 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
18183
18184 /**
18185  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
18186  */
18187 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
18188
18189 /**
18190  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
18191  */
18192 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
18193
18194 /**
18195  * Frees any resources used by the Balance
18196  */
18197 void Balance_free(struct LDKBalance this_ptr);
18198
18199 /**
18200  * Creates a copy of the Balance
18201  */
18202 struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
18203
18204 /**
18205  * Utility method to constructs a new ClaimableOnChannelClose-variant Balance
18206  */
18207 struct LDKBalance Balance_claimable_on_channel_close(uint64_t claimable_amount_satoshis);
18208
18209 /**
18210  * Utility method to constructs a new ClaimableAwaitingConfirmations-variant Balance
18211  */
18212 struct LDKBalance Balance_claimable_awaiting_confirmations(uint64_t claimable_amount_satoshis, uint32_t confirmation_height);
18213
18214 /**
18215  * Utility method to constructs a new ContentiousClaimable-variant Balance
18216  */
18217 struct LDKBalance Balance_contentious_claimable(uint64_t claimable_amount_satoshis, uint32_t timeout_height);
18218
18219 /**
18220  * Utility method to constructs a new MaybeClaimableHTLCAwaitingTimeout-variant Balance
18221  */
18222 struct LDKBalance Balance_maybe_claimable_htlcawaiting_timeout(uint64_t claimable_amount_satoshis, uint32_t claimable_height);
18223
18224 /**
18225  * Checks if two Balances contain equal inner contents.
18226  * This ignores pointers and is_owned flags and looks at the values in fields.
18227  */
18228 bool Balance_eq(const struct LDKBalance *NONNULL_PTR a, const struct LDKBalance *NONNULL_PTR b);
18229
18230 /**
18231  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
18232  */
18233 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
18234
18235 /**
18236  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
18237  */
18238 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
18239
18240 /**
18241  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
18242  * itself.
18243  *
18244  * panics if the given update is not the next update by update_id.
18245  */
18246 MUST_USE_RES struct LDKCResult_NoneNoneZ 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);
18247
18248 /**
18249  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
18250  * ChannelMonitor.
18251  */
18252 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18253
18254 /**
18255  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
18256  */
18257 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18258
18259 /**
18260  * Gets a list of txids, with their output scripts (in the order they appear in the
18261  * transaction), which we must learn about spends of via block_connected().
18262  */
18263 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18264
18265 /**
18266  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
18267  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
18268  * have been registered.
18269  */
18270 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
18271
18272 /**
18273  * Get the list of HTLCs who's status has been updated on chain. This should be called by
18274  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
18275  */
18276 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18277
18278 /**
18279  * Gets the list of pending events which were generated by previous actions, clearing the list
18280  * in the process.
18281  *
18282  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
18283  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
18284  * no internal locking in ChannelMonitors.
18285  */
18286 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18287
18288 /**
18289  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
18290  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
18291  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
18292  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
18293  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
18294  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
18295  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
18296  * out-of-band the other node operator to coordinate with him if option is available to you.
18297  * In any-case, choice is up to the user.
18298  */
18299 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);
18300
18301 /**
18302  * Processes transactions in a newly connected block, which may result in any of the following:
18303  * - update the monitor's state against resolved HTLCs
18304  * - punish the counterparty in the case of seeing a revoked commitment transaction
18305  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
18306  * - detect settled outputs for later spending
18307  * - schedule and bump any in-flight claims
18308  *
18309  * Returns any new outputs to watch from `txdata`; after called, these are also included in
18310  * [`get_outputs_to_watch`].
18311  *
18312  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
18313  */
18314 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);
18315
18316 /**
18317  * Determines if the disconnected block contained any transactions of interest and updates
18318  * appropriately.
18319  */
18320 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);
18321
18322 /**
18323  * Processes transactions confirmed in a block with the given header and height, returning new
18324  * outputs to watch. See [`block_connected`] for details.
18325  *
18326  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
18327  * blocks. See [`chain::Confirm`] for calling expectations.
18328  *
18329  * [`block_connected`]: Self::block_connected
18330  */
18331 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);
18332
18333 /**
18334  * Processes a transaction that was reorganized out of the chain.
18335  *
18336  * Used instead of [`block_disconnected`] by clients that are notified of transactions rather
18337  * than blocks. See [`chain::Confirm`] for calling expectations.
18338  *
18339  * [`block_disconnected`]: Self::block_disconnected
18340  */
18341 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);
18342
18343 /**
18344  * Updates the monitor with the current best chain tip, returning new outputs to watch. See
18345  * [`block_connected`] for details.
18346  *
18347  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
18348  * blocks. See [`chain::Confirm`] for calling expectations.
18349  *
18350  * [`block_connected`]: Self::block_connected
18351  */
18352 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);
18353
18354 /**
18355  * Returns the set of txids that should be monitored for re-organization out of the chain.
18356  */
18357 MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18358
18359 /**
18360  * Gets the latest best block which was connected either via the [`chain::Listen`] or
18361  * [`chain::Confirm`] interfaces.
18362  */
18363 MUST_USE_RES struct LDKBestBlock ChannelMonitor_current_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18364
18365 /**
18366  * Gets the balances in this channel which are either claimable by us if we were to
18367  * force-close the channel now or which are claimable on-chain (possibly awaiting
18368  * confirmation).
18369  *
18370  * Any balances in the channel which are available on-chain (excluding on-chain fees) are
18371  * included here until an [`Event::SpendableOutputs`] event has been generated for the
18372  * balance, or until our counterparty has claimed the balance and accrued several
18373  * confirmations on the claim transaction.
18374  *
18375  * Note that the balances available when you or your counterparty have broadcasted revoked
18376  * state(s) may not be fully captured here.
18377  *
18378  * See [`Balance`] for additional details on the types of claimable balances which
18379  * may be returned here and their meanings.
18380  */
18381 MUST_USE_RES struct LDKCVec_BalanceZ ChannelMonitor_get_claimable_balances(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18382
18383 /**
18384  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
18385  */
18386 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
18387
18388 /**
18389  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
18390  */
18391 void OutPoint_free(struct LDKOutPoint this_obj);
18392
18393 /**
18394  * The referenced transaction's txid.
18395  */
18396 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
18397
18398 /**
18399  * The referenced transaction's txid.
18400  */
18401 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18402
18403 /**
18404  * The index of the referenced output in its transaction's vout.
18405  */
18406 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
18407
18408 /**
18409  * The index of the referenced output in its transaction's vout.
18410  */
18411 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
18412
18413 /**
18414  * Constructs a new OutPoint given each field
18415  */
18416 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
18417
18418 /**
18419  * Creates a copy of the OutPoint
18420  */
18421 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
18422
18423 /**
18424  * Checks if two OutPoints contain equal inner contents.
18425  * This ignores pointers and is_owned flags and looks at the values in fields.
18426  * Two objects with NULL inner values will be considered "equal" here.
18427  */
18428 bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
18429
18430 /**
18431  * Checks if two OutPoints contain equal inner contents.
18432  */
18433 uint64_t OutPoint_hash(const struct LDKOutPoint *NONNULL_PTR o);
18434
18435 /**
18436  * Convert an `OutPoint` to a lightning channel id.
18437  */
18438 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
18439
18440 /**
18441  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
18442  */
18443 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
18444
18445 /**
18446  * Read a OutPoint from a byte array, created by OutPoint_write
18447  */
18448 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
18449
18450 /**
18451  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
18452  */
18453 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
18454
18455 /**
18456  * The outpoint which is spendable
18457  */
18458 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18459
18460 /**
18461  * The outpoint which is spendable
18462  */
18463 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
18464
18465 /**
18466  * Per commitment point to derive delayed_payment_key by key holder
18467  */
18468 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18469
18470 /**
18471  * Per commitment point to derive delayed_payment_key by key holder
18472  */
18473 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18474
18475 /**
18476  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
18477  * the witness_script.
18478  */
18479 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18480
18481 /**
18482  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
18483  * the witness_script.
18484  */
18485 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
18486
18487 /**
18488  * The output which is referenced by the given outpoint
18489  */
18490 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
18491
18492 /**
18493  * The revocation point specific to the commitment transaction which was broadcast. Used to
18494  * derive the witnessScript for this output.
18495  */
18496 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18497
18498 /**
18499  * The revocation point specific to the commitment transaction which was broadcast. Used to
18500  * derive the witnessScript for this output.
18501  */
18502 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18503
18504 /**
18505  * Arbitrary identification information returned by a call to
18506  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18507  * the channel to spend the output.
18508  */
18509 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
18510
18511 /**
18512  * Arbitrary identification information returned by a call to
18513  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18514  * the channel to spend the output.
18515  */
18516 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18517
18518 /**
18519  * The value of the channel which this output originated from, possibly indirectly.
18520  */
18521 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18522
18523 /**
18524  * The value of the channel which this output originated from, possibly indirectly.
18525  */
18526 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
18527
18528 /**
18529  * Constructs a new DelayedPaymentOutputDescriptor given each field
18530  */
18531 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);
18532
18533 /**
18534  * Creates a copy of the DelayedPaymentOutputDescriptor
18535  */
18536 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
18537
18538 /**
18539  * Serialize the DelayedPaymentOutputDescriptor object into a byte array which can be read by DelayedPaymentOutputDescriptor_read
18540  */
18541 struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
18542
18543 /**
18544  * Read a DelayedPaymentOutputDescriptor from a byte array, created by DelayedPaymentOutputDescriptor_write
18545  */
18546 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ DelayedPaymentOutputDescriptor_read(struct LDKu8slice ser);
18547
18548 /**
18549  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
18550  */
18551 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
18552
18553 /**
18554  * The outpoint which is spendable
18555  */
18556 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18557
18558 /**
18559  * The outpoint which is spendable
18560  */
18561 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
18562
18563 /**
18564  * The output which is referenced by the given outpoint
18565  */
18566 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
18567
18568 /**
18569  * Arbitrary identification information returned by a call to
18570  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18571  * the channel to spend the output.
18572  */
18573 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
18574
18575 /**
18576  * Arbitrary identification information returned by a call to
18577  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18578  * the channel to spend the output.
18579  */
18580 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18581
18582 /**
18583  * The value of the channel which this transactions spends.
18584  */
18585 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18586
18587 /**
18588  * The value of the channel which this transactions spends.
18589  */
18590 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
18591
18592 /**
18593  * Constructs a new StaticPaymentOutputDescriptor given each field
18594  */
18595 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);
18596
18597 /**
18598  * Creates a copy of the StaticPaymentOutputDescriptor
18599  */
18600 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
18601
18602 /**
18603  * Serialize the StaticPaymentOutputDescriptor object into a byte array which can be read by StaticPaymentOutputDescriptor_read
18604  */
18605 struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
18606
18607 /**
18608  * Read a StaticPaymentOutputDescriptor from a byte array, created by StaticPaymentOutputDescriptor_write
18609  */
18610 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ StaticPaymentOutputDescriptor_read(struct LDKu8slice ser);
18611
18612 /**
18613  * Frees any resources used by the SpendableOutputDescriptor
18614  */
18615 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
18616
18617 /**
18618  * Creates a copy of the SpendableOutputDescriptor
18619  */
18620 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
18621
18622 /**
18623  * Utility method to constructs a new StaticOutput-variant SpendableOutputDescriptor
18624  */
18625 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
18626
18627 /**
18628  * Utility method to constructs a new DelayedPaymentOutput-variant SpendableOutputDescriptor
18629  */
18630 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_delayed_payment_output(struct LDKDelayedPaymentOutputDescriptor a);
18631
18632 /**
18633  * Utility method to constructs a new StaticPaymentOutput-variant SpendableOutputDescriptor
18634  */
18635 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_payment_output(struct LDKStaticPaymentOutputDescriptor a);
18636
18637 /**
18638  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
18639  */
18640 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
18641
18642 /**
18643  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
18644  */
18645 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
18646
18647 /**
18648  * Calls the free function if one is set
18649  */
18650 void BaseSign_free(struct LDKBaseSign this_ptr);
18651
18652 /**
18653  * Creates a copy of a Sign
18654  */
18655 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
18656
18657 /**
18658  * Calls the free function if one is set
18659  */
18660 void Sign_free(struct LDKSign this_ptr);
18661
18662 /**
18663  * Creates a copy of the Recipient
18664  */
18665 enum LDKRecipient Recipient_clone(const enum LDKRecipient *NONNULL_PTR orig);
18666
18667 /**
18668  * Utility method to constructs a new Node-variant Recipient
18669  */
18670 enum LDKRecipient Recipient_node(void);
18671
18672 /**
18673  * Utility method to constructs a new PhantomNode-variant Recipient
18674  */
18675 enum LDKRecipient Recipient_phantom_node(void);
18676
18677 /**
18678  * Calls the free function if one is set
18679  */
18680 void KeysInterface_free(struct LDKKeysInterface this_ptr);
18681
18682 /**
18683  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
18684  */
18685 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
18686
18687 /**
18688  * Private key of anchor tx
18689  */
18690 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18691
18692 /**
18693  * Private key of anchor tx
18694  */
18695 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18696
18697 /**
18698  * Holder secret key for blinded revocation pubkey
18699  */
18700 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18701
18702 /**
18703  * Holder secret key for blinded revocation pubkey
18704  */
18705 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18706
18707 /**
18708  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
18709  */
18710 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18711
18712 /**
18713  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
18714  */
18715 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18716
18717 /**
18718  * Holder secret key used in HTLC tx
18719  */
18720 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18721
18722 /**
18723  * Holder secret key used in HTLC tx
18724  */
18725 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18726
18727 /**
18728  * Holder htlc secret key used in commitment tx htlc outputs
18729  */
18730 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18731
18732 /**
18733  * Holder htlc secret key used in commitment tx htlc outputs
18734  */
18735 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18736
18737 /**
18738  * Commitment seed
18739  */
18740 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18741
18742 /**
18743  * Commitment seed
18744  */
18745 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18746
18747 /**
18748  * Creates a copy of the InMemorySigner
18749  */
18750 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
18751
18752 /**
18753  * Create a new InMemorySigner
18754  */
18755 MUST_USE_RES struct LDKInMemorySigner InMemorySigner_new(struct LDKSecretKey node_secret, 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);
18756
18757 /**
18758  * Counterparty pubkeys.
18759  * Will panic if ready_channel wasn't called.
18760  */
18761 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18762
18763 /**
18764  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
18765  * transactions, ie the amount of time that we have to wait to recover our funds if we
18766  * broadcast a transaction.
18767  * Will panic if ready_channel wasn't called.
18768  */
18769 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18770
18771 /**
18772  * The contest_delay value specified by us and applied on transactions broadcastable
18773  * by our counterparty, ie the amount of time that they have to wait to recover their funds
18774  * if they broadcast a transaction.
18775  * Will panic if ready_channel wasn't called.
18776  */
18777 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18778
18779 /**
18780  * Whether the holder is the initiator
18781  * Will panic if ready_channel wasn't called.
18782  */
18783 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18784
18785 /**
18786  * Funding outpoint
18787  * Will panic if ready_channel wasn't called.
18788  */
18789 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18790
18791 /**
18792  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
18793  * building transactions.
18794  *
18795  * Will panic if ready_channel wasn't called.
18796  */
18797 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18798
18799 /**
18800  * Whether anchors should be used.
18801  * Will panic if ready_channel wasn't called.
18802  */
18803 MUST_USE_RES bool InMemorySigner_opt_anchors(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18804
18805 /**
18806  * Sign the single input of spend_tx at index `input_idx` which spends the output
18807  * described by descriptor, returning the witness stack for the input.
18808  *
18809  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
18810  * is not spending the outpoint described by `descriptor.outpoint`,
18811  * or if an output descriptor script_pubkey does not match the one we can spend.
18812  */
18813 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);
18814
18815 /**
18816  * Sign the single input of spend_tx at index `input_idx` which spends the output
18817  * described by descriptor, returning the witness stack for the input.
18818  *
18819  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
18820  * is not spending the outpoint described by `descriptor.outpoint`, does not have a
18821  * sequence set to `descriptor.to_self_delay`, or if an output descriptor
18822  * script_pubkey does not match the one we can spend.
18823  */
18824 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);
18825
18826 /**
18827  * Constructs a new BaseSign which calls the relevant methods on this_arg.
18828  * This copies the `inner` pointer in this_arg and thus the returned BaseSign must be freed before this_arg is
18829  */
18830 struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18831
18832 /**
18833  * Constructs a new Sign which calls the relevant methods on this_arg.
18834  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
18835  */
18836 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18837
18838 /**
18839  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
18840  */
18841 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
18842
18843 /**
18844  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
18845  */
18846 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser, struct LDKSecretKey arg);
18847
18848 /**
18849  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
18850  */
18851 void KeysManager_free(struct LDKKeysManager this_obj);
18852
18853 /**
18854  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
18855  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
18856  * starting_time isn't strictly required to actually be a time, but it must absolutely,
18857  * without a doubt, be unique to this instance. ie if you start multiple times with the same
18858  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
18859  * simply use the current time (with very high precision).
18860  *
18861  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
18862  * obviously, starting_time should be unique every time you reload the library - it is only
18863  * used to generate new ephemeral key data (which will be stored by the individual channel if
18864  * necessary).
18865  *
18866  * Note that the seed is required to recover certain on-chain funds independent of
18867  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
18868  * channel, and some on-chain during-closing funds.
18869  *
18870  * Note that until the 0.1 release there is no guarantee of backward compatibility between
18871  * versions. Once the library is more fully supported, the docs will be updated to include a
18872  * detailed description of the guarantee.
18873  */
18874 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
18875
18876 /**
18877  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
18878  *
18879  * Key derivation parameters are accessible through a per-channel secrets
18880  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
18881  * onchain output detection for which a corresponding delayed_payment_key must be derived.
18882  */
18883 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]);
18884
18885 /**
18886  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
18887  * output to the given change destination (if sufficient change value remains). The
18888  * transaction will have a feerate, at least, of the given value.
18889  *
18890  * Returns `Err(())` if the output value is greater than the input value minus required fee,
18891  * if a descriptor was duplicated, or if an output descriptor `script_pubkey`
18892  * does not match the one we can spend.
18893  *
18894  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
18895  *
18896  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
18897  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
18898  */
18899 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);
18900
18901 /**
18902  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
18903  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
18904  */
18905 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
18906
18907 /**
18908  * Frees any resources used by the PhantomKeysManager, if is_owned is set and inner is non-NULL.
18909  */
18910 void PhantomKeysManager_free(struct LDKPhantomKeysManager this_obj);
18911
18912 /**
18913  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
18914  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
18915  */
18916 struct LDKKeysInterface PhantomKeysManager_as_KeysInterface(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg);
18917
18918 /**
18919  * Constructs a `PhantomKeysManager` given a 32-byte seed and an additional `cross_node_seed`
18920  * that is shared across all nodes that intend to participate in [phantom node payments] together.
18921  *
18922  * See [`KeysManager::new`] for more information on `seed`, `starting_time_secs`, and
18923  * `starting_time_nanos`.
18924  *
18925  * `cross_node_seed` must be the same across all phantom payment-receiving nodes and also the
18926  * same across restarts, or else inbound payments may fail.
18927  *
18928  * [phantom node payments]: PhantomKeysManager
18929  */
18930 MUST_USE_RES struct LDKPhantomKeysManager PhantomKeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos, const uint8_t (*cross_node_seed)[32]);
18931
18932 /**
18933  * See [`KeysManager::spend_spendable_outputs`] for documentation on this method.
18934  */
18935 MUST_USE_RES struct LDKCResult_TransactionNoneZ PhantomKeysManager_spend_spendable_outputs(const struct LDKPhantomKeysManager *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);
18936
18937 /**
18938  * See [`KeysManager::derive_channel_keys`] for documentation on this method.
18939  */
18940 MUST_USE_RES struct LDKInMemorySigner PhantomKeysManager_derive_channel_keys(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg, uint64_t channel_value_satoshis, const uint8_t (*params)[32]);
18941
18942 /**
18943  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
18944  */
18945 void ChannelManager_free(struct LDKChannelManager this_obj);
18946
18947 /**
18948  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
18949  */
18950 void ChainParameters_free(struct LDKChainParameters this_obj);
18951
18952 /**
18953  * The network for determining the `chain_hash` in Lightning messages.
18954  */
18955 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
18956
18957 /**
18958  * The network for determining the `chain_hash` in Lightning messages.
18959  */
18960 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
18961
18962 /**
18963  * The hash and height of the latest block successfully connected.
18964  *
18965  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
18966  */
18967 struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
18968
18969 /**
18970  * The hash and height of the latest block successfully connected.
18971  *
18972  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
18973  */
18974 void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
18975
18976 /**
18977  * Constructs a new ChainParameters given each field
18978  */
18979 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
18980
18981 /**
18982  * Creates a copy of the ChainParameters
18983  */
18984 struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
18985
18986 /**
18987  * Frees any resources used by the CounterpartyForwardingInfo, if is_owned is set and inner is non-NULL.
18988  */
18989 void CounterpartyForwardingInfo_free(struct LDKCounterpartyForwardingInfo this_obj);
18990
18991 /**
18992  * Base routing fee in millisatoshis.
18993  */
18994 uint32_t CounterpartyForwardingInfo_get_fee_base_msat(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
18995
18996 /**
18997  * Base routing fee in millisatoshis.
18998  */
18999 void CounterpartyForwardingInfo_set_fee_base_msat(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
19000
19001 /**
19002  * Amount in millionths of a satoshi the channel will charge per transferred satoshi.
19003  */
19004 uint32_t CounterpartyForwardingInfo_get_fee_proportional_millionths(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
19005
19006 /**
19007  * Amount in millionths of a satoshi the channel will charge per transferred satoshi.
19008  */
19009 void CounterpartyForwardingInfo_set_fee_proportional_millionths(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
19010
19011 /**
19012  * The minimum difference in cltv_expiry between an ingoing HTLC and its outgoing counterpart,
19013  * such that the outgoing HTLC is forwardable to this counterparty. See `msgs::ChannelUpdate`'s
19014  * `cltv_expiry_delta` for more details.
19015  */
19016 uint16_t CounterpartyForwardingInfo_get_cltv_expiry_delta(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
19017
19018 /**
19019  * The minimum difference in cltv_expiry between an ingoing HTLC and its outgoing counterpart,
19020  * such that the outgoing HTLC is forwardable to this counterparty. See `msgs::ChannelUpdate`'s
19021  * `cltv_expiry_delta` for more details.
19022  */
19023 void CounterpartyForwardingInfo_set_cltv_expiry_delta(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint16_t val);
19024
19025 /**
19026  * Constructs a new CounterpartyForwardingInfo given each field
19027  */
19028 MUST_USE_RES struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_new(uint32_t fee_base_msat_arg, uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg);
19029
19030 /**
19031  * Creates a copy of the CounterpartyForwardingInfo
19032  */
19033 struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
19034
19035 /**
19036  * Frees any resources used by the ChannelCounterparty, if is_owned is set and inner is non-NULL.
19037  */
19038 void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
19039
19040 /**
19041  * The node_id of our counterparty
19042  */
19043 struct LDKPublicKey ChannelCounterparty_get_node_id(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
19044
19045 /**
19046  * The node_id of our counterparty
19047  */
19048 void ChannelCounterparty_set_node_id(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKPublicKey val);
19049
19050 /**
19051  * The Features the channel counterparty provided upon last connection.
19052  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
19053  * many routing-relevant features are present in the init context.
19054  */
19055 struct LDKInitFeatures ChannelCounterparty_get_features(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
19056
19057 /**
19058  * The Features the channel counterparty provided upon last connection.
19059  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
19060  * many routing-relevant features are present in the init context.
19061  */
19062 void ChannelCounterparty_set_features(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
19063
19064 /**
19065  * The value, in satoshis, that must always be held in the channel for our counterparty. This
19066  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
19067  * claiming at least this value on chain.
19068  *
19069  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
19070  *
19071  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
19072  */
19073 uint64_t ChannelCounterparty_get_unspendable_punishment_reserve(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
19074
19075 /**
19076  * The value, in satoshis, that must always be held in the channel for our counterparty. This
19077  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
19078  * claiming at least this value on chain.
19079  *
19080  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
19081  *
19082  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
19083  */
19084 void ChannelCounterparty_set_unspendable_punishment_reserve(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, uint64_t val);
19085
19086 /**
19087  * Information on the fees and requirements that the counterparty requires when forwarding
19088  * payments to us through this channel.
19089  *
19090  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19091  */
19092 struct LDKCounterpartyForwardingInfo ChannelCounterparty_get_forwarding_info(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
19093
19094 /**
19095  * Information on the fees and requirements that the counterparty requires when forwarding
19096  * payments to us through this channel.
19097  *
19098  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
19099  */
19100 void ChannelCounterparty_set_forwarding_info(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCounterpartyForwardingInfo val);
19101
19102 /**
19103  * Constructs a new ChannelCounterparty given each field
19104  */
19105 MUST_USE_RES struct LDKChannelCounterparty ChannelCounterparty_new(struct LDKPublicKey node_id_arg, struct LDKInitFeatures features_arg, uint64_t unspendable_punishment_reserve_arg, struct LDKCounterpartyForwardingInfo forwarding_info_arg);
19106
19107 /**
19108  * Creates a copy of the ChannelCounterparty
19109  */
19110 struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
19111
19112 /**
19113  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
19114  */
19115 void ChannelDetails_free(struct LDKChannelDetails this_obj);
19116
19117 /**
19118  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
19119  * thereafter this is the txid of the funding transaction xor the funding transaction output).
19120  * Note that this means this value is *not* persistent - it can change once during the
19121  * lifetime of the channel.
19122  */
19123 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
19124
19125 /**
19126  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
19127  * thereafter this is the txid of the funding transaction xor the funding transaction output).
19128  * Note that this means this value is *not* persistent - it can change once during the
19129  * lifetime of the channel.
19130  */
19131 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
19132
19133 /**
19134  * Parameters which apply to our counterparty. See individual fields for more information.
19135  */
19136 struct LDKChannelCounterparty ChannelDetails_get_counterparty(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19137
19138 /**
19139  * Parameters which apply to our counterparty. See individual fields for more information.
19140  */
19141 void ChannelDetails_set_counterparty(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelCounterparty val);
19142
19143 /**
19144  * The Channel's funding transaction output, if we've negotiated the funding transaction with
19145  * our counterparty already.
19146  *
19147  * Note that, if this has been set, `channel_id` will be equivalent to
19148  * `funding_txo.unwrap().to_channel_id()`.
19149  *
19150  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19151  */
19152 struct LDKOutPoint ChannelDetails_get_funding_txo(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19153
19154 /**
19155  * The Channel's funding transaction output, if we've negotiated the funding transaction with
19156  * our counterparty already.
19157  *
19158  * Note that, if this has been set, `channel_id` will be equivalent to
19159  * `funding_txo.unwrap().to_channel_id()`.
19160  *
19161  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
19162  */
19163 void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
19164
19165 /**
19166  * The features which this channel operates with. See individual features for more info.
19167  *
19168  * `None` until negotiation completes and the channel type is finalized.
19169  *
19170  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19171  */
19172 struct LDKChannelTypeFeatures ChannelDetails_get_channel_type(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19173
19174 /**
19175  * The features which this channel operates with. See individual features for more info.
19176  *
19177  * `None` until negotiation completes and the channel type is finalized.
19178  *
19179  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
19180  */
19181 void ChannelDetails_set_channel_type(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
19182
19183 /**
19184  * The position of the funding transaction in the chain. None if the funding transaction has
19185  * not yet been confirmed and the channel fully opened.
19186  *
19187  * Note that if [`inbound_scid_alias`] is set, it must be used for invoices and inbound
19188  * payments instead of this. See [`get_inbound_payment_scid`].
19189  *
19190  * [`inbound_scid_alias`]: Self::inbound_scid_alias
19191  * [`get_inbound_payment_scid`]: Self::get_inbound_payment_scid
19192  */
19193 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19194
19195 /**
19196  * The position of the funding transaction in the chain. None if the funding transaction has
19197  * not yet been confirmed and the channel fully opened.
19198  *
19199  * Note that if [`inbound_scid_alias`] is set, it must be used for invoices and inbound
19200  * payments instead of this. See [`get_inbound_payment_scid`].
19201  *
19202  * [`inbound_scid_alias`]: Self::inbound_scid_alias
19203  * [`get_inbound_payment_scid`]: Self::get_inbound_payment_scid
19204  */
19205 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
19206
19207 /**
19208  * An optional [`short_channel_id`] alias for this channel, randomly generated by our
19209  * counterparty and usable in place of [`short_channel_id`] in invoice route hints. Our
19210  * counterparty will recognize the alias provided here in place of the [`short_channel_id`]
19211  * when they see a payment to be routed to us.
19212  *
19213  * Our counterparty may choose to rotate this value at any time, though will always recognize
19214  * previous values for inbound payment forwarding.
19215  *
19216  * [`short_channel_id`]: Self::short_channel_id
19217  */
19218 struct LDKCOption_u64Z ChannelDetails_get_inbound_scid_alias(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19219
19220 /**
19221  * An optional [`short_channel_id`] alias for this channel, randomly generated by our
19222  * counterparty and usable in place of [`short_channel_id`] in invoice route hints. Our
19223  * counterparty will recognize the alias provided here in place of the [`short_channel_id`]
19224  * when they see a payment to be routed to us.
19225  *
19226  * Our counterparty may choose to rotate this value at any time, though will always recognize
19227  * previous values for inbound payment forwarding.
19228  *
19229  * [`short_channel_id`]: Self::short_channel_id
19230  */
19231 void ChannelDetails_set_inbound_scid_alias(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
19232
19233 /**
19234  * The value, in satoshis, of this channel as appears in the funding output
19235  */
19236 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19237
19238 /**
19239  * The value, in satoshis, of this channel as appears in the funding output
19240  */
19241 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19242
19243 /**
19244  * The value, in satoshis, that must always be held in the channel for us. This value ensures
19245  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
19246  * this value on chain.
19247  *
19248  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
19249  *
19250  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19251  *
19252  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
19253  */
19254 struct LDKCOption_u64Z ChannelDetails_get_unspendable_punishment_reserve(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19255
19256 /**
19257  * The value, in satoshis, that must always be held in the channel for us. This value ensures
19258  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
19259  * this value on chain.
19260  *
19261  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
19262  *
19263  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19264  *
19265  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
19266  */
19267 void ChannelDetails_set_unspendable_punishment_reserve(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
19268
19269 /**
19270  * The `user_channel_id` passed in to create_channel, or 0 if the channel was inbound.
19271  */
19272 uint64_t ChannelDetails_get_user_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19273
19274 /**
19275  * The `user_channel_id` passed in to create_channel, or 0 if the channel was inbound.
19276  */
19277 void ChannelDetails_set_user_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19278
19279 /**
19280  * Our total balance.  This is the amount we would get if we close the channel.
19281  * This value is not exact. Due to various in-flight changes and feerate changes, exactly this
19282  * amount is not likely to be recoverable on close.
19283  *
19284  * This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
19285  * balance is not available for inclusion in new outbound HTLCs). This further does not include
19286  * any pending outgoing HTLCs which are awaiting some other resolution to be sent.
19287  * This does not consider any on-chain fees.
19288  *
19289  * See also [`ChannelDetails::outbound_capacity_msat`]
19290  */
19291 uint64_t ChannelDetails_get_balance_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19292
19293 /**
19294  * Our total balance.  This is the amount we would get if we close the channel.
19295  * This value is not exact. Due to various in-flight changes and feerate changes, exactly this
19296  * amount is not likely to be recoverable on close.
19297  *
19298  * This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
19299  * balance is not available for inclusion in new outbound HTLCs). This further does not include
19300  * any pending outgoing HTLCs which are awaiting some other resolution to be sent.
19301  * This does not consider any on-chain fees.
19302  *
19303  * See also [`ChannelDetails::outbound_capacity_msat`]
19304  */
19305 void ChannelDetails_set_balance_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19306
19307 /**
19308  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
19309  * any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19310  * available for inclusion in new outbound HTLCs). This further does not include any pending
19311  * outgoing HTLCs which are awaiting some other resolution to be sent.
19312  *
19313  * See also [`ChannelDetails::balance_msat`]
19314  *
19315  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19316  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
19317  * should be able to spend nearly this amount.
19318  */
19319 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19320
19321 /**
19322  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
19323  * any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19324  * available for inclusion in new outbound HTLCs). This further does not include any pending
19325  * outgoing HTLCs which are awaiting some other resolution to be sent.
19326  *
19327  * See also [`ChannelDetails::balance_msat`]
19328  *
19329  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19330  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
19331  * should be able to spend nearly this amount.
19332  */
19333 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19334
19335 /**
19336  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
19337  * include any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19338  * available for inclusion in new inbound HTLCs).
19339  * Note that there are some corner cases not fully handled here, so the actual available
19340  * inbound capacity may be slightly higher than this.
19341  *
19342  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19343  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
19344  * However, our counterparty should be able to spend nearly this amount.
19345  */
19346 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19347
19348 /**
19349  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
19350  * include any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19351  * available for inclusion in new inbound HTLCs).
19352  * Note that there are some corner cases not fully handled here, so the actual available
19353  * inbound capacity may be slightly higher than this.
19354  *
19355  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19356  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
19357  * However, our counterparty should be able to spend nearly this amount.
19358  */
19359 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19360
19361 /**
19362  * The number of required confirmations on the funding transaction before the funding will be
19363  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
19364  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
19365  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
19366  * [`ChannelHandshakeLimits::max_minimum_depth`].
19367  *
19368  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19369  *
19370  * [`is_outbound`]: ChannelDetails::is_outbound
19371  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
19372  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
19373  */
19374 struct LDKCOption_u32Z ChannelDetails_get_confirmations_required(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19375
19376 /**
19377  * The number of required confirmations on the funding transaction before the funding will be
19378  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
19379  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
19380  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
19381  * [`ChannelHandshakeLimits::max_minimum_depth`].
19382  *
19383  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19384  *
19385  * [`is_outbound`]: ChannelDetails::is_outbound
19386  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
19387  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
19388  */
19389 void ChannelDetails_set_confirmations_required(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
19390
19391 /**
19392  * The number of blocks (after our commitment transaction confirms) that we will need to wait
19393  * until we can claim our funds after we force-close the channel. During this time our
19394  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
19395  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
19396  * time to claim our non-HTLC-encumbered funds.
19397  *
19398  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19399  */
19400 struct LDKCOption_u16Z ChannelDetails_get_force_close_spend_delay(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19401
19402 /**
19403  * The number of blocks (after our commitment transaction confirms) that we will need to wait
19404  * until we can claim our funds after we force-close the channel. During this time our
19405  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
19406  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
19407  * time to claim our non-HTLC-encumbered funds.
19408  *
19409  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19410  */
19411 void ChannelDetails_set_force_close_spend_delay(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u16Z val);
19412
19413 /**
19414  * True if the channel was initiated (and thus funded) by us.
19415  */
19416 bool ChannelDetails_get_is_outbound(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19417
19418 /**
19419  * True if the channel was initiated (and thus funded) by us.
19420  */
19421 void ChannelDetails_set_is_outbound(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19422
19423 /**
19424  * True if the channel is confirmed, funding_locked messages have been exchanged, and the
19425  * channel is not currently being shut down. `funding_locked` message exchange implies the
19426  * required confirmation count has been reached (and we were connected to the peer at some
19427  * point after the funding transaction received enough confirmations). The required
19428  * confirmation count is provided in [`confirmations_required`].
19429  *
19430  * [`confirmations_required`]: ChannelDetails::confirmations_required
19431  */
19432 bool ChannelDetails_get_is_funding_locked(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19433
19434 /**
19435  * True if the channel is confirmed, funding_locked messages have been exchanged, and the
19436  * channel is not currently being shut down. `funding_locked` message exchange implies the
19437  * required confirmation count has been reached (and we were connected to the peer at some
19438  * point after the funding transaction received enough confirmations). The required
19439  * confirmation count is provided in [`confirmations_required`].
19440  *
19441  * [`confirmations_required`]: ChannelDetails::confirmations_required
19442  */
19443 void ChannelDetails_set_is_funding_locked(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19444
19445 /**
19446  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
19447  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
19448  *
19449  * This is a strict superset of `is_funding_locked`.
19450  */
19451 bool ChannelDetails_get_is_usable(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19452
19453 /**
19454  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
19455  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
19456  *
19457  * This is a strict superset of `is_funding_locked`.
19458  */
19459 void ChannelDetails_set_is_usable(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19460
19461 /**
19462  * True if this channel is (or will be) publicly-announced.
19463  */
19464 bool ChannelDetails_get_is_public(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19465
19466 /**
19467  * True if this channel is (or will be) publicly-announced.
19468  */
19469 void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19470
19471 /**
19472  * Constructs a new ChannelDetails given each field
19473  */
19474 MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKChannelTypeFeatures channel_type_arg, struct LDKCOption_u64Z short_channel_id_arg, struct LDKCOption_u64Z inbound_scid_alias_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t balance_msat_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);
19475
19476 /**
19477  * Creates a copy of the ChannelDetails
19478  */
19479 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
19480
19481 /**
19482  * Gets the current SCID which should be used to identify this channel for inbound payments.
19483  * This should be used for providing invoice hints or in any other context where our
19484  * counterparty will forward a payment to us.
19485  *
19486  * This is either the [`ChannelDetails::inbound_scid_alias`], if set, or the
19487  * [`ChannelDetails::short_channel_id`]. See those for more information.
19488  */
19489 MUST_USE_RES struct LDKCOption_u64Z ChannelDetails_get_inbound_payment_scid(const struct LDKChannelDetails *NONNULL_PTR this_arg);
19490
19491 /**
19492  * Frees any resources used by the PaymentSendFailure
19493  */
19494 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
19495
19496 /**
19497  * Creates a copy of the PaymentSendFailure
19498  */
19499 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
19500
19501 /**
19502  * Utility method to constructs a new ParameterError-variant PaymentSendFailure
19503  */
19504 struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
19505
19506 /**
19507  * Utility method to constructs a new PathParameterError-variant PaymentSendFailure
19508  */
19509 struct LDKPaymentSendFailure PaymentSendFailure_path_parameter_error(struct LDKCVec_CResult_NoneAPIErrorZZ a);
19510
19511 /**
19512  * Utility method to constructs a new AllFailedRetrySafe-variant PaymentSendFailure
19513  */
19514 struct LDKPaymentSendFailure PaymentSendFailure_all_failed_retry_safe(struct LDKCVec_APIErrorZ a);
19515
19516 /**
19517  * Utility method to constructs a new PartialFailure-variant PaymentSendFailure
19518  */
19519 struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ results, struct LDKRouteParameters failed_paths_retry, struct LDKThirtyTwoBytes payment_id);
19520
19521 /**
19522  * Frees any resources used by the PhantomRouteHints, if is_owned is set and inner is non-NULL.
19523  */
19524 void PhantomRouteHints_free(struct LDKPhantomRouteHints this_obj);
19525
19526 /**
19527  * The list of channels to be included in the invoice route hints.
19528  */
19529 struct LDKCVec_ChannelDetailsZ PhantomRouteHints_get_channels(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
19530
19531 /**
19532  * The list of channels to be included in the invoice route hints.
19533  */
19534 void PhantomRouteHints_set_channels(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKCVec_ChannelDetailsZ val);
19535
19536 /**
19537  * A fake scid used for representing the phantom node's fake channel in generating the invoice
19538  * route hints.
19539  */
19540 uint64_t PhantomRouteHints_get_phantom_scid(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
19541
19542 /**
19543  * A fake scid used for representing the phantom node's fake channel in generating the invoice
19544  * route hints.
19545  */
19546 void PhantomRouteHints_set_phantom_scid(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, uint64_t val);
19547
19548 /**
19549  * The pubkey of the real backing node that would ultimately receive the payment.
19550  */
19551 struct LDKPublicKey PhantomRouteHints_get_real_node_pubkey(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
19552
19553 /**
19554  * The pubkey of the real backing node that would ultimately receive the payment.
19555  */
19556 void PhantomRouteHints_set_real_node_pubkey(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKPublicKey val);
19557
19558 /**
19559  * Constructs a new PhantomRouteHints given each field
19560  */
19561 MUST_USE_RES struct LDKPhantomRouteHints PhantomRouteHints_new(struct LDKCVec_ChannelDetailsZ channels_arg, uint64_t phantom_scid_arg, struct LDKPublicKey real_node_pubkey_arg);
19562
19563 /**
19564  * Creates a copy of the PhantomRouteHints
19565  */
19566 struct LDKPhantomRouteHints PhantomRouteHints_clone(const struct LDKPhantomRouteHints *NONNULL_PTR orig);
19567
19568 /**
19569  * Constructs a new ChannelManager to hold several channels and route between them.
19570  *
19571  * This is the main \"logic hub\" for all channel-related actions, and implements
19572  * ChannelMessageHandler.
19573  *
19574  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
19575  *
19576  * panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
19577  *
19578  * Users need to notify the new ChannelManager when a new block is connected or
19579  * disconnected using its `block_connected` and `block_disconnected` methods, starting
19580  * from after `params.latest_hash`.
19581  */
19582 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);
19583
19584 /**
19585  * Gets the current configuration applied to all new channels,  as
19586  */
19587 MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
19588
19589 /**
19590  * Creates a new outbound channel to the given remote node and with the given value.
19591  *
19592  * `user_channel_id` will be provided back as in
19593  * [`Event::FundingGenerationReady::user_channel_id`] to allow tracking of which events
19594  * correspond with which `create_channel` call. Note that the `user_channel_id` defaults to 0
19595  * for inbound channels, so you may wish to avoid using 0 for `user_channel_id` here.
19596  * `user_channel_id` has no meaning inside of LDK, it is simply copied to events and otherwise
19597  * ignored.
19598  *
19599  * Raises [`APIError::APIMisuseError`] when `channel_value_satoshis` > 2**24 or `push_msat` is
19600  * greater than `channel_value_satoshis * 1k` or `channel_value_satoshis < 1000`.
19601  *
19602  * Note that we do not check if you are currently connected to the given peer. If no
19603  * connection is available, the outbound `open_channel` message may fail to send, resulting in
19604  * the channel eventually being silently forgotten (dropped on reload).
19605  *
19606  * Returns the new Channel's temporary `channel_id`. This ID will appear as
19607  * [`Event::FundingGenerationReady::temporary_channel_id`] and in
19608  * [`ChannelDetails::channel_id`] until after
19609  * [`ChannelManager::funding_transaction_generated`] is called, swapping the Channel's ID for
19610  * one derived from the funding transaction's TXID. If the counterparty rejects the channel
19611  * immediately, this temporary ID will appear in [`Event::ChannelClosed::channel_id`].
19612  *
19613  * [`Event::FundingGenerationReady::user_channel_id`]: events::Event::FundingGenerationReady::user_channel_id
19614  * [`Event::FundingGenerationReady::temporary_channel_id`]: events::Event::FundingGenerationReady::temporary_channel_id
19615  * [`Event::ChannelClosed::channel_id`]: events::Event::ChannelClosed::channel_id
19616  *
19617  * Note that override_config (or a relevant inner pointer) may be NULL or all-0s to represent None
19618  */
19619 MUST_USE_RES struct LDKCResult__u832APIErrorZ 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_channel_id, struct LDKUserConfig override_config);
19620
19621 /**
19622  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
19623  * more information.
19624  */
19625 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
19626
19627 /**
19628  * Gets the list of usable channels, in random order. Useful as an argument to
19629  * get_route to ensure non-announced channels are used.
19630  *
19631  * These are guaranteed to have their [`ChannelDetails::is_usable`] value set to true, see the
19632  * documentation for [`ChannelDetails::is_usable`] for more info on exactly what the criteria
19633  * are.
19634  */
19635 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
19636
19637 /**
19638  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
19639  * will be accepted on the given channel, and after additional timeout/the closing of all
19640  * pending HTLCs, the channel will be closed on chain.
19641  *
19642  *  * If we are the channel initiator, we will pay between our [`Background`] and
19643  *    [`ChannelConfig::force_close_avoidance_max_fee_satoshis`] plus our [`Normal`] fee
19644  *    estimate.
19645  *  * If our counterparty is the channel initiator, we will require a channel closing
19646  *    transaction feerate of at least our [`Background`] feerate or the feerate which
19647  *    would appear on a force-closure transaction, whichever is lower. We will allow our
19648  *    counterparty to pay as much fee as they'd like, however.
19649  *
19650  * May generate a SendShutdown message event on success, which should be relayed.
19651  *
19652  * [`ChannelConfig::force_close_avoidance_max_fee_satoshis`]: crate::util::config::ChannelConfig::force_close_avoidance_max_fee_satoshis
19653  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
19654  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
19655  */
19656 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
19657
19658 /**
19659  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
19660  * will be accepted on the given channel, and after additional timeout/the closing of all
19661  * pending HTLCs, the channel will be closed on chain.
19662  *
19663  * `target_feerate_sat_per_1000_weight` has different meanings depending on if we initiated
19664  * the channel being closed or not:
19665  *  * If we are the channel initiator, we will pay at least this feerate on the closing
19666  *    transaction. The upper-bound is set by
19667  *    [`ChannelConfig::force_close_avoidance_max_fee_satoshis`] plus our [`Normal`] fee
19668  *    estimate (or `target_feerate_sat_per_1000_weight`, if it is greater).
19669  *  * If our counterparty is the channel initiator, we will refuse to accept a channel closure
19670  *    transaction feerate below `target_feerate_sat_per_1000_weight` (or the feerate which
19671  *    will appear on a force-closure transaction, whichever is lower).
19672  *
19673  * May generate a SendShutdown message event on success, which should be relayed.
19674  *
19675  * [`ChannelConfig::force_close_avoidance_max_fee_satoshis`]: crate::util::config::ChannelConfig::force_close_avoidance_max_fee_satoshis
19676  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
19677  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
19678  */
19679 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel_with_target_feerate(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32], uint32_t target_feerate_sats_per_1000_weight);
19680
19681 /**
19682  * Force closes a channel, immediately broadcasting the latest local commitment transaction to
19683  * the chain and rejecting new HTLCs on the given channel. Fails if channel_id is unknown to the manager.
19684  */
19685 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
19686
19687 /**
19688  * Force close all channels, immediately broadcasting the latest local commitment transaction
19689  * for each to the chain and rejecting new HTLCs on each.
19690  */
19691 void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
19692
19693 /**
19694  * Sends a payment along a given route.
19695  *
19696  * Value parameters are provided via the last hop in route, see documentation for RouteHop
19697  * fields for more info.
19698  *
19699  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
19700  * payment), we don't do anything to stop you! We always try to ensure that if the provided
19701  * next hop knows the preimage to payment_hash they can claim an additional amount as
19702  * specified in the last hop in the route! Thus, you should probably do your own
19703  * payment_preimage tracking (which you should already be doing as they represent \"proof of
19704  * payment\") and prevent double-sends yourself.
19705  *
19706  * May generate SendHTLCs message(s) event on success, which should be relayed.
19707  *
19708  * Each path may have a different return value, and PaymentSendValue may return a Vec with
19709  * each entry matching the corresponding-index entry in the route paths, see
19710  * PaymentSendFailure for more info.
19711  *
19712  * In general, a path may raise:
19713  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
19714  *    node public key) is specified.
19715  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
19716  *    (including due to previous monitor update failure or new permanent monitor update
19717  *    failure).
19718  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
19719  *    relevant updates.
19720  *
19721  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
19722  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
19723  * different route unless you intend to pay twice!
19724  *
19725  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
19726  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
19727  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
19728  * must not contain multiple paths as multi-path payments require a recipient-provided
19729  * payment_secret.
19730  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
19731  * bit set (either as required or as available). If multiple paths are present in the Route,
19732  * we assume the invoice had the basic_mpp feature set.
19733  *
19734  * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
19735  */
19736 MUST_USE_RES struct LDKCResult_PaymentIdPaymentSendFailureZ ChannelManager_send_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
19737
19738 /**
19739  * Retries a payment along the given [`Route`].
19740  *
19741  * Errors returned are a superset of those returned from [`send_payment`], so see
19742  * [`send_payment`] documentation for more details on errors. This method will also error if the
19743  * retry amount puts the payment more than 10% over the payment's total amount, if the payment
19744  * for the given `payment_id` cannot be found (likely due to timeout or success), or if
19745  * further retries have been disabled with [`abandon_payment`].
19746  *
19747  * [`send_payment`]: [`ChannelManager::send_payment`]
19748  * [`abandon_payment`]: [`ChannelManager::abandon_payment`]
19749  */
19750 MUST_USE_RES struct LDKCResult_NonePaymentSendFailureZ ChannelManager_retry_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
19751
19752 /**
19753  * Signals that no further retries for the given payment will occur.
19754  *
19755  * After this method returns, any future calls to [`retry_payment`] for the given `payment_id`
19756  * will fail with [`PaymentSendFailure::ParameterError`]. If no such event has been generated,
19757  * an [`Event::PaymentFailed`] event will be generated as soon as there are no remaining
19758  * pending HTLCs for this payment.
19759  *
19760  * Note that calling this method does *not* prevent a payment from succeeding. You must still
19761  * wait until you receive either a [`Event::PaymentFailed`] or [`Event::PaymentSent`] event to
19762  * determine the ultimate status of a payment.
19763  *
19764  * [`retry_payment`]: Self::retry_payment
19765  * [`Event::PaymentFailed`]: events::Event::PaymentFailed
19766  * [`Event::PaymentSent`]: events::Event::PaymentSent
19767  */
19768 void ChannelManager_abandon_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id);
19769
19770 /**
19771  * Send a spontaneous payment, which is a payment that does not require the recipient to have
19772  * generated an invoice. Optionally, you may specify the preimage. If you do choose to specify
19773  * the preimage, it must be a cryptographically secure random value that no intermediate node
19774  * would be able to guess -- otherwise, an intermediate node may claim the payment and it will
19775  * never reach the recipient.
19776  *
19777  * See [`send_payment`] documentation for more details on the return value of this function.
19778  *
19779  * Similar to regular payments, you MUST NOT reuse a `payment_preimage` value. See
19780  * [`send_payment`] for more information about the risks of duplicate preimage usage.
19781  *
19782  * Note that `route` must have exactly one path.
19783  *
19784  * [`send_payment`]: Self::send_payment
19785  *
19786  * Note that payment_preimage (or a relevant inner pointer) may be NULL or all-0s to represent None
19787  */
19788 MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ChannelManager_send_spontaneous_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
19789
19790 /**
19791  * Call this upon creation of a funding transaction for the given channel.
19792  *
19793  * Returns an [`APIError::APIMisuseError`] if the funding_transaction spent non-SegWit outputs
19794  * or if no output was found which matches the parameters in [`Event::FundingGenerationReady`].
19795  *
19796  * Returns [`APIError::ChannelUnavailable`] if a funding transaction has already been provided
19797  * for the channel or if the channel has been closed as indicated by [`Event::ChannelClosed`].
19798  *
19799  * May panic if the output found in the funding transaction is duplicative with some other
19800  * channel (note that this should be trivially prevented by using unique funding transaction
19801  * keys per-channel).
19802  *
19803  * Do NOT broadcast the funding transaction yourself. When we have safely received our
19804  * counterparty's signature the funding transaction will automatically be broadcast via the
19805  * [`BroadcasterInterface`] provided when this `ChannelManager` was constructed.
19806  *
19807  * Note that this includes RBF or similar transaction replacement strategies - lightning does
19808  * not currently support replacing a funding transaction on an existing channel. Instead,
19809  * create a new channel with a conflicting funding transaction.
19810  *
19811  * [`Event::FundingGenerationReady`]: crate::util::events::Event::FundingGenerationReady
19812  * [`Event::ChannelClosed`]: crate::util::events::Event::ChannelClosed
19813  */
19814 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);
19815
19816 /**
19817  * Regenerates channel_announcements and generates a signed node_announcement from the given
19818  * arguments, providing them in corresponding events via
19819  * [`get_and_clear_pending_msg_events`], if at least one public channel has been confirmed
19820  * on-chain. This effectively re-broadcasts all channel announcements and sends our node
19821  * announcement to ensure that the lightning P2P network is aware of the channels we have and
19822  * our network addresses.
19823  *
19824  * `rgb` is a node \"color\" and `alias` is a printable human-readable string to describe this
19825  * node to humans. They carry no in-protocol meaning.
19826  *
19827  * `addresses` represent the set (possibly empty) of socket addresses on which this node
19828  * accepts incoming connections. These will be included in the node_announcement, publicly
19829  * tying these addresses together and to this node. If you wish to preserve user privacy,
19830  * addresses should likely contain only Tor Onion addresses.
19831  *
19832  * Panics if `addresses` is absurdly large (more than 500).
19833  *
19834  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
19835  */
19836 void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
19837
19838 /**
19839  * Processes HTLCs which are pending waiting on random forward delay.
19840  *
19841  * Should only really ever be called in response to a PendingHTLCsForwardable event.
19842  * Will likely generate further events.
19843  */
19844 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
19845
19846 /**
19847  * Performs actions which should happen on startup and roughly once per minute thereafter.
19848  *
19849  * This currently includes:
19850  *  * Increasing or decreasing the on-chain feerate estimates for our outbound channels,
19851  *  * Broadcasting `ChannelUpdate` messages if we've been disconnected from our peer for more
19852  *    than a minute, informing the network that they should no longer attempt to route over
19853  *    the channel.
19854  *
19855  * Note that this may cause reentrancy through `chain::Watch::update_channel` calls or feerate
19856  * estimate fetches.
19857  */
19858 void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
19859
19860 /**
19861  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
19862  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
19863  * along the path (including in our own channel on which we received it).
19864  * Returns false if no payment was found to fail backwards, true if the process of failing the
19865  * HTLC backwards has been started.
19866  */
19867 MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
19868
19869 /**
19870  * Provides a payment preimage in response to [`Event::PaymentReceived`], generating any
19871  * [`MessageSendEvent`]s needed to claim the payment.
19872  *
19873  * Note that if you did not set an `amount_msat` when calling [`create_inbound_payment`] or
19874  * [`create_inbound_payment_for_hash`] you must check that the amount in the `PaymentReceived`
19875  * event matches your expectation. If you fail to do so and call this method, you may provide
19876  * the sender \"proof-of-payment\" when they did not fulfill the full expected payment.
19877  *
19878  * Returns whether any HTLCs were claimed, and thus if any new [`MessageSendEvent`]s are now
19879  * pending for processing via [`get_and_clear_pending_msg_events`].
19880  *
19881  * [`Event::PaymentReceived`]: crate::util::events::Event::PaymentReceived
19882  * [`create_inbound_payment`]: Self::create_inbound_payment
19883  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
19884  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
19885  */
19886 MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage);
19887
19888 /**
19889  * Gets the node_id held by this ChannelManager
19890  */
19891 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
19892
19893 /**
19894  * Called to accept a request to open a channel after [`Event::OpenChannelRequest`] has been
19895  * triggered.
19896  *
19897  * The `temporary_channel_id` parameter indicates which inbound channel should be accepted.
19898  *
19899  * For inbound channels, the `user_channel_id` parameter will be provided back in
19900  * [`Event::ChannelClosed::user_channel_id`] to allow tracking of which events correspond
19901  * with which `accept_inbound_channel` call.
19902  *
19903  * [`Event::OpenChannelRequest`]: events::Event::OpenChannelRequest
19904  * [`Event::ChannelClosed::user_channel_id`]: events::Event::ChannelClosed::user_channel_id
19905  */
19906 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_accept_inbound_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], uint64_t user_channel_id);
19907
19908 /**
19909  * Gets a payment secret and payment hash for use in an invoice given to a third party wishing
19910  * to pay us.
19911  *
19912  * This differs from [`create_inbound_payment_for_hash`] only in that it generates the
19913  * [`PaymentHash`] and [`PaymentPreimage`] for you.
19914  *
19915  * The [`PaymentPreimage`] will ultimately be returned to you in the [`PaymentReceived`], which
19916  * will have the [`PaymentReceived::payment_preimage`] field filled in. That should then be
19917  * passed directly to [`claim_funds`].
19918  *
19919  * See [`create_inbound_payment_for_hash`] for detailed documentation on behavior and requirements.
19920  *
19921  * Note that a malicious eavesdropper can intuit whether an inbound payment was created by
19922  * `create_inbound_payment` or `create_inbound_payment_for_hash` based on runtime.
19923  *
19924  * # Note
19925  *
19926  * If you register an inbound payment with this method, then serialize the `ChannelManager`, then
19927  * deserialize it with a node running 0.0.103 and earlier, the payment will fail to be received.
19928  *
19929  * Errors if `min_value_msat` is greater than total bitcoin supply.
19930  *
19931  * [`claim_funds`]: Self::claim_funds
19932  * [`PaymentReceived`]: events::Event::PaymentReceived
19933  * [`PaymentReceived::payment_preimage`]: events::Event::PaymentReceived::payment_preimage
19934  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
19935  */
19936 MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ ChannelManager_create_inbound_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
19937
19938 /**
19939  * Legacy version of [`create_inbound_payment`]. Use this method if you wish to share
19940  * serialized state with LDK node(s) running 0.0.103 and earlier.
19941  *
19942  * May panic if `invoice_expiry_delta_secs` is greater than one year.
19943  *
19944  * # Note
19945  * This method is deprecated and will be removed soon.
19946  *
19947  * [`create_inbound_payment`]: Self::create_inbound_payment
19948  */
19949 MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ ChannelManager_create_inbound_payment_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
19950
19951 /**
19952  * Gets a [`PaymentSecret`] for a given [`PaymentHash`], for which the payment preimage is
19953  * stored external to LDK.
19954  *
19955  * A [`PaymentReceived`] event will only be generated if the [`PaymentSecret`] matches a
19956  * payment secret fetched via this method or [`create_inbound_payment`], and which is at least
19957  * the `min_value_msat` provided here, if one is provided.
19958  *
19959  * The [`PaymentHash`] (and corresponding [`PaymentPreimage`]) should be globally unique, though
19960  * note that LDK will not stop you from registering duplicate payment hashes for inbound
19961  * payments.
19962  *
19963  * `min_value_msat` should be set if the invoice being generated contains a value. Any payment
19964  * received for the returned [`PaymentHash`] will be required to be at least `min_value_msat`
19965  * before a [`PaymentReceived`] event will be generated, ensuring that we do not provide the
19966  * sender \"proof-of-payment\" unless they have paid the required amount.
19967  *
19968  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
19969  * in excess of the current time. This should roughly match the expiry time set in the invoice.
19970  * After this many seconds, we will remove the inbound payment, resulting in any attempts to
19971  * pay the invoice failing. The BOLT spec suggests 3,600 secs as a default validity time for
19972  * invoices when no timeout is set.
19973  *
19974  * Note that we use block header time to time-out pending inbound payments (with some margin
19975  * to compensate for the inaccuracy of block header timestamps). Thus, in practice we will
19976  * accept a payment and generate a [`PaymentReceived`] event for some time after the expiry.
19977  * If you need exact expiry semantics, you should enforce them upon receipt of
19978  * [`PaymentReceived`].
19979  *
19980  * Note that invoices generated for inbound payments should have their `min_final_cltv_expiry`
19981  * set to at least [`MIN_FINAL_CLTV_EXPIRY`].
19982  *
19983  * Note that a malicious eavesdropper can intuit whether an inbound payment was created by
19984  * `create_inbound_payment` or `create_inbound_payment_for_hash` based on runtime.
19985  *
19986  * # Note
19987  *
19988  * If you register an inbound payment with this method, then serialize the `ChannelManager`, then
19989  * deserialize it with a node running 0.0.103 and earlier, the payment will fail to be received.
19990  *
19991  * Errors if `min_value_msat` is greater than total bitcoin supply.
19992  *
19993  * [`create_inbound_payment`]: Self::create_inbound_payment
19994  * [`PaymentReceived`]: events::Event::PaymentReceived
19995  */
19996 MUST_USE_RES struct LDKCResult_PaymentSecretNoneZ 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);
19997
19998 /**
19999  * Legacy version of [`create_inbound_payment_for_hash`]. Use this method if you wish to share
20000  * serialized state with LDK node(s) running 0.0.103 and earlier.
20001  *
20002  * May panic if `invoice_expiry_delta_secs` is greater than one year.
20003  *
20004  * # Note
20005  * This method is deprecated and will be removed soon.
20006  *
20007  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
20008  */
20009 MUST_USE_RES struct LDKCResult_PaymentSecretAPIErrorZ ChannelManager_create_inbound_payment_for_hash_legacy(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs);
20010
20011 /**
20012  * Gets an LDK-generated payment preimage from a payment hash and payment secret that were
20013  * previously returned from [`create_inbound_payment`].
20014  *
20015  * [`create_inbound_payment`]: Self::create_inbound_payment
20016  */
20017 MUST_USE_RES struct LDKCResult_PaymentPreimageAPIErrorZ ChannelManager_get_payment_preimage(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
20018
20019 /**
20020  * Gets a fake short channel id for use in receiving [phantom node payments]. These fake scids
20021  * are used when constructing the phantom invoice's route hints.
20022  *
20023  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
20024  */
20025 MUST_USE_RES uint64_t ChannelManager_get_phantom_scid(const struct LDKChannelManager *NONNULL_PTR this_arg);
20026
20027 /**
20028  * Gets route hints for use in receiving [phantom node payments].
20029  *
20030  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
20031  */
20032 MUST_USE_RES struct LDKPhantomRouteHints ChannelManager_get_phantom_route_hints(const struct LDKChannelManager *NONNULL_PTR this_arg);
20033
20034 /**
20035  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
20036  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
20037  */
20038 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
20039
20040 /**
20041  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
20042  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
20043  */
20044 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
20045
20046 /**
20047  * Constructs a new Listen which calls the relevant methods on this_arg.
20048  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
20049  */
20050 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
20051
20052 /**
20053  * Constructs a new Confirm which calls the relevant methods on this_arg.
20054  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
20055  */
20056 struct LDKConfirm ChannelManager_as_Confirm(const struct LDKChannelManager *NONNULL_PTR this_arg);
20057
20058 /**
20059  * Blocks until ChannelManager needs to be persisted or a timeout is reached. It returns a bool
20060  * indicating whether persistence is necessary. Only one listener on
20061  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
20062  * up.
20063  *
20064  * Note that this method is not available with the `no-std` feature.
20065  */
20066 MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
20067
20068 /**
20069  * Blocks until ChannelManager needs to be persisted. Only one listener on
20070  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
20071  * up.
20072  */
20073 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
20074
20075 /**
20076  * Gets the latest best block which was connected either via the [`chain::Listen`] or
20077  * [`chain::Confirm`] interfaces.
20078  */
20079 MUST_USE_RES struct LDKBestBlock ChannelManager_current_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg);
20080
20081 /**
20082  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
20083  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
20084  */
20085 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
20086
20087 /**
20088  * Serialize the CounterpartyForwardingInfo object into a byte array which can be read by CounterpartyForwardingInfo_read
20089  */
20090 struct LDKCVec_u8Z CounterpartyForwardingInfo_write(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR obj);
20091
20092 /**
20093  * Read a CounterpartyForwardingInfo from a byte array, created by CounterpartyForwardingInfo_write
20094  */
20095 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CounterpartyForwardingInfo_read(struct LDKu8slice ser);
20096
20097 /**
20098  * Serialize the ChannelCounterparty object into a byte array which can be read by ChannelCounterparty_read
20099  */
20100 struct LDKCVec_u8Z ChannelCounterparty_write(const struct LDKChannelCounterparty *NONNULL_PTR obj);
20101
20102 /**
20103  * Read a ChannelCounterparty from a byte array, created by ChannelCounterparty_write
20104  */
20105 struct LDKCResult_ChannelCounterpartyDecodeErrorZ ChannelCounterparty_read(struct LDKu8slice ser);
20106
20107 /**
20108  * Serialize the ChannelDetails object into a byte array which can be read by ChannelDetails_read
20109  */
20110 struct LDKCVec_u8Z ChannelDetails_write(const struct LDKChannelDetails *NONNULL_PTR obj);
20111
20112 /**
20113  * Read a ChannelDetails from a byte array, created by ChannelDetails_write
20114  */
20115 struct LDKCResult_ChannelDetailsDecodeErrorZ ChannelDetails_read(struct LDKu8slice ser);
20116
20117 /**
20118  * Serialize the PhantomRouteHints object into a byte array which can be read by PhantomRouteHints_read
20119  */
20120 struct LDKCVec_u8Z PhantomRouteHints_write(const struct LDKPhantomRouteHints *NONNULL_PTR obj);
20121
20122 /**
20123  * Read a PhantomRouteHints from a byte array, created by PhantomRouteHints_write
20124  */
20125 struct LDKCResult_PhantomRouteHintsDecodeErrorZ PhantomRouteHints_read(struct LDKu8slice ser);
20126
20127 /**
20128  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
20129  */
20130 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
20131
20132 /**
20133  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
20134  */
20135 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
20136
20137 /**
20138  * The keys provider which will give us relevant keys. Some keys will be loaded during
20139  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
20140  * signing data.
20141  */
20142 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
20143
20144 /**
20145  * The keys provider which will give us relevant keys. Some keys will be loaded during
20146  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
20147  * signing data.
20148  */
20149 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
20150
20151 /**
20152  * The fee_estimator for use in the ChannelManager in the future.
20153  *
20154  * No calls to the FeeEstimator will be made during deserialization.
20155  */
20156 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
20157
20158 /**
20159  * The fee_estimator for use in the ChannelManager in the future.
20160  *
20161  * No calls to the FeeEstimator will be made during deserialization.
20162  */
20163 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
20164
20165 /**
20166  * The chain::Watch for use in the ChannelManager in the future.
20167  *
20168  * No calls to the chain::Watch will be made during deserialization. It is assumed that
20169  * you have deserialized ChannelMonitors separately and will add them to your
20170  * chain::Watch after deserializing this ChannelManager.
20171  */
20172 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
20173
20174 /**
20175  * The chain::Watch for use in the ChannelManager in the future.
20176  *
20177  * No calls to the chain::Watch will be made during deserialization. It is assumed that
20178  * you have deserialized ChannelMonitors separately and will add them to your
20179  * chain::Watch after deserializing this ChannelManager.
20180  */
20181 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
20182
20183 /**
20184  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
20185  * used to broadcast the latest local commitment transactions of channels which must be
20186  * force-closed during deserialization.
20187  */
20188 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
20189
20190 /**
20191  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
20192  * used to broadcast the latest local commitment transactions of channels which must be
20193  * force-closed during deserialization.
20194  */
20195 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
20196
20197 /**
20198  * The Logger for use in the ChannelManager and which may be used to log information during
20199  * deserialization.
20200  */
20201 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
20202
20203 /**
20204  * The Logger for use in the ChannelManager and which may be used to log information during
20205  * deserialization.
20206  */
20207 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
20208
20209 /**
20210  * Default settings used for new channels. Any existing channels will continue to use the
20211  * runtime settings which were stored when the ChannelManager was serialized.
20212  */
20213 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
20214
20215 /**
20216  * Default settings used for new channels. Any existing channels will continue to use the
20217  * runtime settings which were stored when the ChannelManager was serialized.
20218  */
20219 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
20220
20221 /**
20222  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
20223  * HashMap for you. This is primarily useful for C bindings where it is not practical to
20224  * populate a HashMap directly from C.
20225  */
20226 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);
20227
20228 /**
20229  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
20230  */
20231 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
20232
20233 /**
20234  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
20235  */
20236 void DecodeError_free(struct LDKDecodeError this_obj);
20237
20238 /**
20239  * Creates a copy of the DecodeError
20240  */
20241 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
20242
20243 /**
20244  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
20245  */
20246 void Init_free(struct LDKInit this_obj);
20247
20248 /**
20249  * The relevant features which the sender supports
20250  */
20251 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
20252
20253 /**
20254  * The relevant features which the sender supports
20255  */
20256 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
20257
20258 /**
20259  * The receipient's network address. This adds the option to report a remote IP address
20260  * back to a connecting peer using the init message. A node can decide to use that information
20261  * to discover a potential update to its public IPv4 address (NAT) and use
20262  * that for a node_announcement update message containing the new address.
20263  */
20264 struct LDKCOption_NetAddressZ Init_get_remote_network_address(const struct LDKInit *NONNULL_PTR this_ptr);
20265
20266 /**
20267  * The receipient's network address. This adds the option to report a remote IP address
20268  * back to a connecting peer using the init message. A node can decide to use that information
20269  * to discover a potential update to its public IPv4 address (NAT) and use
20270  * that for a node_announcement update message containing the new address.
20271  */
20272 void Init_set_remote_network_address(struct LDKInit *NONNULL_PTR this_ptr, struct LDKCOption_NetAddressZ val);
20273
20274 /**
20275  * Constructs a new Init given each field
20276  */
20277 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg, struct LDKCOption_NetAddressZ remote_network_address_arg);
20278
20279 /**
20280  * Creates a copy of the Init
20281  */
20282 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
20283
20284 /**
20285  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
20286  */
20287 void ErrorMessage_free(struct LDKErrorMessage this_obj);
20288
20289 /**
20290  * The channel ID involved in the error.
20291  *
20292  * All-0s indicates a general error unrelated to a specific channel, after which all channels
20293  * with the sending peer should be closed.
20294  */
20295 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
20296
20297 /**
20298  * The channel ID involved in the error.
20299  *
20300  * All-0s indicates a general error unrelated to a specific channel, after which all channels
20301  * with the sending peer should be closed.
20302  */
20303 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20304
20305 /**
20306  * A possibly human-readable error description.
20307  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
20308  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20309  * the terminal emulator or the logging subsystem.
20310  */
20311 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
20312
20313 /**
20314  * A possibly human-readable error description.
20315  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
20316  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20317  * the terminal emulator or the logging subsystem.
20318  */
20319 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKStr val);
20320
20321 /**
20322  * Constructs a new ErrorMessage given each field
20323  */
20324 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
20325
20326 /**
20327  * Creates a copy of the ErrorMessage
20328  */
20329 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
20330
20331 /**
20332  * Frees any resources used by the WarningMessage, if is_owned is set and inner is non-NULL.
20333  */
20334 void WarningMessage_free(struct LDKWarningMessage this_obj);
20335
20336 /**
20337  * The channel ID involved in the warning.
20338  *
20339  * All-0s indicates a warning unrelated to a specific channel.
20340  */
20341 const uint8_t (*WarningMessage_get_channel_id(const struct LDKWarningMessage *NONNULL_PTR this_ptr))[32];
20342
20343 /**
20344  * The channel ID involved in the warning.
20345  *
20346  * All-0s indicates a warning unrelated to a specific channel.
20347  */
20348 void WarningMessage_set_channel_id(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20349
20350 /**
20351  * A possibly human-readable warning description.
20352  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
20353  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20354  * the terminal emulator or the logging subsystem.
20355  */
20356 struct LDKStr WarningMessage_get_data(const struct LDKWarningMessage *NONNULL_PTR this_ptr);
20357
20358 /**
20359  * A possibly human-readable warning description.
20360  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
20361  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20362  * the terminal emulator or the logging subsystem.
20363  */
20364 void WarningMessage_set_data(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKStr val);
20365
20366 /**
20367  * Constructs a new WarningMessage given each field
20368  */
20369 MUST_USE_RES struct LDKWarningMessage WarningMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
20370
20371 /**
20372  * Creates a copy of the WarningMessage
20373  */
20374 struct LDKWarningMessage WarningMessage_clone(const struct LDKWarningMessage *NONNULL_PTR orig);
20375
20376 /**
20377  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
20378  */
20379 void Ping_free(struct LDKPing this_obj);
20380
20381 /**
20382  * The desired response length
20383  */
20384 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
20385
20386 /**
20387  * The desired response length
20388  */
20389 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
20390
20391 /**
20392  * The ping packet size.
20393  * This field is not sent on the wire. byteslen zeros are sent.
20394  */
20395 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
20396
20397 /**
20398  * The ping packet size.
20399  * This field is not sent on the wire. byteslen zeros are sent.
20400  */
20401 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
20402
20403 /**
20404  * Constructs a new Ping given each field
20405  */
20406 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
20407
20408 /**
20409  * Creates a copy of the Ping
20410  */
20411 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
20412
20413 /**
20414  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
20415  */
20416 void Pong_free(struct LDKPong this_obj);
20417
20418 /**
20419  * The pong packet size.
20420  * This field is not sent on the wire. byteslen zeros are sent.
20421  */
20422 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
20423
20424 /**
20425  * The pong packet size.
20426  * This field is not sent on the wire. byteslen zeros are sent.
20427  */
20428 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
20429
20430 /**
20431  * Constructs a new Pong given each field
20432  */
20433 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
20434
20435 /**
20436  * Creates a copy of the Pong
20437  */
20438 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
20439
20440 /**
20441  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
20442  */
20443 void OpenChannel_free(struct LDKOpenChannel this_obj);
20444
20445 /**
20446  * The genesis hash of the blockchain where the channel is to be opened
20447  */
20448 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
20449
20450 /**
20451  * The genesis hash of the blockchain where the channel is to be opened
20452  */
20453 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20454
20455 /**
20456  * A temporary channel ID, until the funding outpoint is announced
20457  */
20458 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
20459
20460 /**
20461  * A temporary channel ID, until the funding outpoint is announced
20462  */
20463 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20464
20465 /**
20466  * The channel value
20467  */
20468 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20469
20470 /**
20471  * The channel value
20472  */
20473 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20474
20475 /**
20476  * The amount to push to the counterparty as part of the open, in milli-satoshi
20477  */
20478 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20479
20480 /**
20481  * The amount to push to the counterparty as part of the open, in milli-satoshi
20482  */
20483 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20484
20485 /**
20486  * The threshold below which outputs on transactions broadcast by sender will be omitted
20487  */
20488 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20489
20490 /**
20491  * The threshold below which outputs on transactions broadcast by sender will be omitted
20492  */
20493 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20494
20495 /**
20496  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20497  */
20498 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20499
20500 /**
20501  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20502  */
20503 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20504
20505 /**
20506  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20507  */
20508 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20509
20510 /**
20511  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20512  */
20513 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20514
20515 /**
20516  * The minimum HTLC size incoming to sender, in milli-satoshi
20517  */
20518 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20519
20520 /**
20521  * The minimum HTLC size incoming to sender, in milli-satoshi
20522  */
20523 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20524
20525 /**
20526  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
20527  */
20528 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20529
20530 /**
20531  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
20532  */
20533 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
20534
20535 /**
20536  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20537  */
20538 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20539
20540 /**
20541  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20542  */
20543 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
20544
20545 /**
20546  * The maximum number of inbound HTLCs towards sender
20547  */
20548 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20549
20550 /**
20551  * The maximum number of inbound HTLCs towards sender
20552  */
20553 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
20554
20555 /**
20556  * The sender's key controlling the funding transaction
20557  */
20558 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20559
20560 /**
20561  * The sender's key controlling the funding transaction
20562  */
20563 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20564
20565 /**
20566  * Used to derive a revocation key for transactions broadcast by counterparty
20567  */
20568 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20569
20570 /**
20571  * Used to derive a revocation key for transactions broadcast by counterparty
20572  */
20573 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20574
20575 /**
20576  * A payment key to sender for transactions broadcast by counterparty
20577  */
20578 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20579
20580 /**
20581  * A payment key to sender for transactions broadcast by counterparty
20582  */
20583 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20584
20585 /**
20586  * Used to derive a payment key to sender for transactions broadcast by sender
20587  */
20588 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20589
20590 /**
20591  * Used to derive a payment key to sender for transactions broadcast by sender
20592  */
20593 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20594
20595 /**
20596  * Used to derive an HTLC payment key to sender
20597  */
20598 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20599
20600 /**
20601  * Used to derive an HTLC payment key to sender
20602  */
20603 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20604
20605 /**
20606  * The first to-be-broadcast-by-sender transaction's per commitment point
20607  */
20608 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20609
20610 /**
20611  * The first to-be-broadcast-by-sender transaction's per commitment point
20612  */
20613 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20614
20615 /**
20616  * Channel flags
20617  */
20618 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20619
20620 /**
20621  * Channel flags
20622  */
20623 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
20624
20625 /**
20626  * The channel type that this channel will represent. If none is set, we derive the channel
20627  * type from the intersection of our feature bits with our counterparty's feature bits from
20628  * the Init message.
20629  *
20630  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
20631  */
20632 struct LDKChannelTypeFeatures OpenChannel_get_channel_type(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20633
20634 /**
20635  * The channel type that this channel will represent. If none is set, we derive the channel
20636  * type from the intersection of our feature bits with our counterparty's feature bits from
20637  * the Init message.
20638  *
20639  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
20640  */
20641 void OpenChannel_set_channel_type(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
20642
20643 /**
20644  * Creates a copy of the OpenChannel
20645  */
20646 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
20647
20648 /**
20649  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
20650  */
20651 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
20652
20653 /**
20654  * A temporary channel ID, until the funding outpoint is announced
20655  */
20656 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
20657
20658 /**
20659  * A temporary channel ID, until the funding outpoint is announced
20660  */
20661 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20662
20663 /**
20664  * The threshold below which outputs on transactions broadcast by sender will be omitted
20665  */
20666 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20667
20668 /**
20669  * The threshold below which outputs on transactions broadcast by sender will be omitted
20670  */
20671 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20672
20673 /**
20674  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20675  */
20676 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20677
20678 /**
20679  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20680  */
20681 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20682
20683 /**
20684  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20685  */
20686 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20687
20688 /**
20689  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20690  */
20691 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20692
20693 /**
20694  * The minimum HTLC size incoming to sender, in milli-satoshi
20695  */
20696 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20697
20698 /**
20699  * The minimum HTLC size incoming to sender, in milli-satoshi
20700  */
20701 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20702
20703 /**
20704  * Minimum depth of the funding transaction before the channel is considered open
20705  */
20706 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20707
20708 /**
20709  * Minimum depth of the funding transaction before the channel is considered open
20710  */
20711 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
20712
20713 /**
20714  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20715  */
20716 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20717
20718 /**
20719  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20720  */
20721 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
20722
20723 /**
20724  * The maximum number of inbound HTLCs towards sender
20725  */
20726 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20727
20728 /**
20729  * The maximum number of inbound HTLCs towards sender
20730  */
20731 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
20732
20733 /**
20734  * The sender's key controlling the funding transaction
20735  */
20736 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20737
20738 /**
20739  * The sender's key controlling the funding transaction
20740  */
20741 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20742
20743 /**
20744  * Used to derive a revocation key for transactions broadcast by counterparty
20745  */
20746 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20747
20748 /**
20749  * Used to derive a revocation key for transactions broadcast by counterparty
20750  */
20751 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20752
20753 /**
20754  * A payment key to sender for transactions broadcast by counterparty
20755  */
20756 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20757
20758 /**
20759  * A payment key to sender for transactions broadcast by counterparty
20760  */
20761 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20762
20763 /**
20764  * Used to derive a payment key to sender for transactions broadcast by sender
20765  */
20766 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20767
20768 /**
20769  * Used to derive a payment key to sender for transactions broadcast by sender
20770  */
20771 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20772
20773 /**
20774  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
20775  */
20776 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20777
20778 /**
20779  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
20780  */
20781 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20782
20783 /**
20784  * The first to-be-broadcast-by-sender transaction's per commitment point
20785  */
20786 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20787
20788 /**
20789  * The first to-be-broadcast-by-sender transaction's per commitment point
20790  */
20791 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20792
20793 /**
20794  * The channel type that this channel will represent. If none is set, we derive the channel
20795  * type from the intersection of our feature bits with our counterparty's feature bits from
20796  * the Init message.
20797  *
20798  * This is required to match the equivalent field in [`OpenChannel::channel_type`].
20799  *
20800  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
20801  */
20802 struct LDKChannelTypeFeatures AcceptChannel_get_channel_type(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20803
20804 /**
20805  * The channel type that this channel will represent. If none is set, we derive the channel
20806  * type from the intersection of our feature bits with our counterparty's feature bits from
20807  * the Init message.
20808  *
20809  * This is required to match the equivalent field in [`OpenChannel::channel_type`].
20810  *
20811  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
20812  */
20813 void AcceptChannel_set_channel_type(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
20814
20815 /**
20816  * Creates a copy of the AcceptChannel
20817  */
20818 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
20819
20820 /**
20821  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
20822  */
20823 void FundingCreated_free(struct LDKFundingCreated this_obj);
20824
20825 /**
20826  * A temporary channel ID, until the funding is established
20827  */
20828 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
20829
20830 /**
20831  * A temporary channel ID, until the funding is established
20832  */
20833 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20834
20835 /**
20836  * The funding transaction ID
20837  */
20838 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
20839
20840 /**
20841  * The funding transaction ID
20842  */
20843 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20844
20845 /**
20846  * The specific output index funding this channel
20847  */
20848 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
20849
20850 /**
20851  * The specific output index funding this channel
20852  */
20853 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
20854
20855 /**
20856  * The signature of the channel initiator (funder) on the initial commitment transaction
20857  */
20858 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
20859
20860 /**
20861  * The signature of the channel initiator (funder) on the initial commitment transaction
20862  */
20863 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
20864
20865 /**
20866  * Constructs a new FundingCreated given each field
20867  */
20868 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);
20869
20870 /**
20871  * Creates a copy of the FundingCreated
20872  */
20873 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
20874
20875 /**
20876  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
20877  */
20878 void FundingSigned_free(struct LDKFundingSigned this_obj);
20879
20880 /**
20881  * The channel ID
20882  */
20883 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
20884
20885 /**
20886  * The channel ID
20887  */
20888 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20889
20890 /**
20891  * The signature of the channel acceptor (fundee) on the initial commitment transaction
20892  */
20893 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
20894
20895 /**
20896  * The signature of the channel acceptor (fundee) on the initial commitment transaction
20897  */
20898 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
20899
20900 /**
20901  * Constructs a new FundingSigned given each field
20902  */
20903 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
20904
20905 /**
20906  * Creates a copy of the FundingSigned
20907  */
20908 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
20909
20910 /**
20911  * Frees any resources used by the FundingLocked, if is_owned is set and inner is non-NULL.
20912  */
20913 void FundingLocked_free(struct LDKFundingLocked this_obj);
20914
20915 /**
20916  * The channel ID
20917  */
20918 const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32];
20919
20920 /**
20921  * The channel ID
20922  */
20923 void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20924
20925 /**
20926  * The per-commitment point of the second commitment transaction
20927  */
20928 struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
20929
20930 /**
20931  * The per-commitment point of the second commitment transaction
20932  */
20933 void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20934
20935 /**
20936  * If set, provides a short_channel_id alias for this channel. The sender will accept payments
20937  * to be forwarded over this SCID and forward them to this messages' recipient.
20938  */
20939 struct LDKCOption_u64Z FundingLocked_get_short_channel_id_alias(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
20940
20941 /**
20942  * If set, provides a short_channel_id alias for this channel. The sender will accept payments
20943  * to be forwarded over this SCID and forward them to this messages' recipient.
20944  */
20945 void FundingLocked_set_short_channel_id_alias(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
20946
20947 /**
20948  * Constructs a new FundingLocked given each field
20949  */
20950 MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg, struct LDKCOption_u64Z short_channel_id_alias_arg);
20951
20952 /**
20953  * Creates a copy of the FundingLocked
20954  */
20955 struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
20956
20957 /**
20958  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
20959  */
20960 void Shutdown_free(struct LDKShutdown this_obj);
20961
20962 /**
20963  * The channel ID
20964  */
20965 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
20966
20967 /**
20968  * The channel ID
20969  */
20970 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20971
20972 /**
20973  * The destination of this peer's funds on closing.
20974  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
20975  */
20976 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
20977
20978 /**
20979  * The destination of this peer's funds on closing.
20980  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
20981  */
20982 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
20983
20984 /**
20985  * Constructs a new Shutdown given each field
20986  */
20987 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
20988
20989 /**
20990  * Creates a copy of the Shutdown
20991  */
20992 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
20993
20994 /**
20995  * Frees any resources used by the ClosingSignedFeeRange, if is_owned is set and inner is non-NULL.
20996  */
20997 void ClosingSignedFeeRange_free(struct LDKClosingSignedFeeRange this_obj);
20998
20999 /**
21000  * The minimum absolute fee, in satoshis, which the sender is willing to place on the closing
21001  * transaction.
21002  */
21003 uint64_t ClosingSignedFeeRange_get_min_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
21004
21005 /**
21006  * The minimum absolute fee, in satoshis, which the sender is willing to place on the closing
21007  * transaction.
21008  */
21009 void ClosingSignedFeeRange_set_min_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
21010
21011 /**
21012  * The maximum absolute fee, in satoshis, which the sender is willing to place on the closing
21013  * transaction.
21014  */
21015 uint64_t ClosingSignedFeeRange_get_max_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
21016
21017 /**
21018  * The maximum absolute fee, in satoshis, which the sender is willing to place on the closing
21019  * transaction.
21020  */
21021 void ClosingSignedFeeRange_set_max_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
21022
21023 /**
21024  * Constructs a new ClosingSignedFeeRange given each field
21025  */
21026 MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
21027
21028 /**
21029  * Creates a copy of the ClosingSignedFeeRange
21030  */
21031 struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
21032
21033 /**
21034  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
21035  */
21036 void ClosingSigned_free(struct LDKClosingSigned this_obj);
21037
21038 /**
21039  * The channel ID
21040  */
21041 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
21042
21043 /**
21044  * The channel ID
21045  */
21046 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21047
21048 /**
21049  * The proposed total fee for the closing transaction
21050  */
21051 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
21052
21053 /**
21054  * The proposed total fee for the closing transaction
21055  */
21056 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
21057
21058 /**
21059  * A signature on the closing transaction
21060  */
21061 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
21062
21063 /**
21064  * A signature on the closing transaction
21065  */
21066 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
21067
21068 /**
21069  * The minimum and maximum fees which the sender is willing to accept, provided only by new
21070  * nodes.
21071  *
21072  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
21073  */
21074 struct LDKClosingSignedFeeRange ClosingSigned_get_fee_range(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
21075
21076 /**
21077  * The minimum and maximum fees which the sender is willing to accept, provided only by new
21078  * nodes.
21079  *
21080  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
21081  */
21082 void ClosingSigned_set_fee_range(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKClosingSignedFeeRange val);
21083
21084 /**
21085  * Constructs a new ClosingSigned given each field
21086  */
21087 MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg, struct LDKClosingSignedFeeRange fee_range_arg);
21088
21089 /**
21090  * Creates a copy of the ClosingSigned
21091  */
21092 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
21093
21094 /**
21095  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
21096  */
21097 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
21098
21099 /**
21100  * The channel ID
21101  */
21102 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
21103
21104 /**
21105  * The channel ID
21106  */
21107 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21108
21109 /**
21110  * The HTLC ID
21111  */
21112 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
21113
21114 /**
21115  * The HTLC ID
21116  */
21117 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
21118
21119 /**
21120  * The HTLC value in milli-satoshi
21121  */
21122 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
21123
21124 /**
21125  * The HTLC value in milli-satoshi
21126  */
21127 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
21128
21129 /**
21130  * The payment hash, the pre-image of which controls HTLC redemption
21131  */
21132 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
21133
21134 /**
21135  * The payment hash, the pre-image of which controls HTLC redemption
21136  */
21137 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21138
21139 /**
21140  * The expiry height of the HTLC
21141  */
21142 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
21143
21144 /**
21145  * The expiry height of the HTLC
21146  */
21147 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
21148
21149 /**
21150  * Creates a copy of the UpdateAddHTLC
21151  */
21152 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
21153
21154 /**
21155  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
21156  */
21157 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
21158
21159 /**
21160  * The channel ID
21161  */
21162 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
21163
21164 /**
21165  * The channel ID
21166  */
21167 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21168
21169 /**
21170  * The HTLC ID
21171  */
21172 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
21173
21174 /**
21175  * The HTLC ID
21176  */
21177 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
21178
21179 /**
21180  * The pre-image of the payment hash, allowing HTLC redemption
21181  */
21182 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
21183
21184 /**
21185  * The pre-image of the payment hash, allowing HTLC redemption
21186  */
21187 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21188
21189 /**
21190  * Constructs a new UpdateFulfillHTLC given each field
21191  */
21192 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
21193
21194 /**
21195  * Creates a copy of the UpdateFulfillHTLC
21196  */
21197 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
21198
21199 /**
21200  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
21201  */
21202 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
21203
21204 /**
21205  * The channel ID
21206  */
21207 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
21208
21209 /**
21210  * The channel ID
21211  */
21212 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21213
21214 /**
21215  * The HTLC ID
21216  */
21217 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
21218
21219 /**
21220  * The HTLC ID
21221  */
21222 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
21223
21224 /**
21225  * Creates a copy of the UpdateFailHTLC
21226  */
21227 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
21228
21229 /**
21230  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
21231  */
21232 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
21233
21234 /**
21235  * The channel ID
21236  */
21237 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
21238
21239 /**
21240  * The channel ID
21241  */
21242 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21243
21244 /**
21245  * The HTLC ID
21246  */
21247 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
21248
21249 /**
21250  * The HTLC ID
21251  */
21252 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
21253
21254 /**
21255  * The failure code
21256  */
21257 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
21258
21259 /**
21260  * The failure code
21261  */
21262 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
21263
21264 /**
21265  * Creates a copy of the UpdateFailMalformedHTLC
21266  */
21267 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
21268
21269 /**
21270  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
21271  */
21272 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
21273
21274 /**
21275  * The channel ID
21276  */
21277 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
21278
21279 /**
21280  * The channel ID
21281  */
21282 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21283
21284 /**
21285  * A signature on the commitment transaction
21286  */
21287 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
21288
21289 /**
21290  * A signature on the commitment transaction
21291  */
21292 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
21293
21294 /**
21295  * Signatures on the HTLC transactions
21296  */
21297 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
21298
21299 /**
21300  * Constructs a new CommitmentSigned given each field
21301  */
21302 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
21303
21304 /**
21305  * Creates a copy of the CommitmentSigned
21306  */
21307 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
21308
21309 /**
21310  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
21311  */
21312 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
21313
21314 /**
21315  * The channel ID
21316  */
21317 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
21318
21319 /**
21320  * The channel ID
21321  */
21322 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21323
21324 /**
21325  * The secret corresponding to the per-commitment point
21326  */
21327 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
21328
21329 /**
21330  * The secret corresponding to the per-commitment point
21331  */
21332 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21333
21334 /**
21335  * The next sender-broadcast commitment transaction's per-commitment point
21336  */
21337 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
21338
21339 /**
21340  * The next sender-broadcast commitment transaction's per-commitment point
21341  */
21342 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21343
21344 /**
21345  * Constructs a new RevokeAndACK given each field
21346  */
21347 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);
21348
21349 /**
21350  * Creates a copy of the RevokeAndACK
21351  */
21352 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
21353
21354 /**
21355  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
21356  */
21357 void UpdateFee_free(struct LDKUpdateFee this_obj);
21358
21359 /**
21360  * The channel ID
21361  */
21362 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
21363
21364 /**
21365  * The channel ID
21366  */
21367 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21368
21369 /**
21370  * Fee rate per 1000-weight of the transaction
21371  */
21372 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
21373
21374 /**
21375  * Fee rate per 1000-weight of the transaction
21376  */
21377 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
21378
21379 /**
21380  * Constructs a new UpdateFee given each field
21381  */
21382 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
21383
21384 /**
21385  * Creates a copy of the UpdateFee
21386  */
21387 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
21388
21389 /**
21390  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
21391  */
21392 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
21393
21394 /**
21395  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
21396  * belonging to the recipient
21397  */
21398 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
21399
21400 /**
21401  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
21402  * belonging to the recipient
21403  */
21404 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21405
21406 /**
21407  * The sender's per-commitment point for their current commitment transaction
21408  */
21409 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
21410
21411 /**
21412  * The sender's per-commitment point for their current commitment transaction
21413  */
21414 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21415
21416 /**
21417  * Constructs a new DataLossProtect given each field
21418  */
21419 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
21420
21421 /**
21422  * Creates a copy of the DataLossProtect
21423  */
21424 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
21425
21426 /**
21427  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
21428  */
21429 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
21430
21431 /**
21432  * The channel ID
21433  */
21434 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
21435
21436 /**
21437  * The channel ID
21438  */
21439 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21440
21441 /**
21442  * The next commitment number for the sender
21443  */
21444 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
21445
21446 /**
21447  * The next commitment number for the sender
21448  */
21449 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
21450
21451 /**
21452  * The next commitment number for the recipient
21453  */
21454 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
21455
21456 /**
21457  * The next commitment number for the recipient
21458  */
21459 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
21460
21461 /**
21462  * Creates a copy of the ChannelReestablish
21463  */
21464 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
21465
21466 /**
21467  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
21468  */
21469 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
21470
21471 /**
21472  * The channel ID
21473  */
21474 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
21475
21476 /**
21477  * The channel ID
21478  */
21479 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21480
21481 /**
21482  * The short channel ID
21483  */
21484 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
21485
21486 /**
21487  * The short channel ID
21488  */
21489 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
21490
21491 /**
21492  * A signature by the node key
21493  */
21494 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
21495
21496 /**
21497  * A signature by the node key
21498  */
21499 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
21500
21501 /**
21502  * A signature by the funding key
21503  */
21504 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
21505
21506 /**
21507  * A signature by the funding key
21508  */
21509 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
21510
21511 /**
21512  * Constructs a new AnnouncementSignatures given each field
21513  */
21514 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);
21515
21516 /**
21517  * Creates a copy of the AnnouncementSignatures
21518  */
21519 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
21520
21521 /**
21522  * Frees any resources used by the NetAddress
21523  */
21524 void NetAddress_free(struct LDKNetAddress this_ptr);
21525
21526 /**
21527  * Creates a copy of the NetAddress
21528  */
21529 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
21530
21531 /**
21532  * Utility method to constructs a new IPv4-variant NetAddress
21533  */
21534 struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
21535
21536 /**
21537  * Utility method to constructs a new IPv6-variant NetAddress
21538  */
21539 struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
21540
21541 /**
21542  * Utility method to constructs a new OnionV2-variant NetAddress
21543  */
21544 struct LDKNetAddress NetAddress_onion_v2(struct LDKTwelveBytes a);
21545
21546 /**
21547  * Utility method to constructs a new OnionV3-variant NetAddress
21548  */
21549 struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
21550
21551 /**
21552  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
21553  */
21554 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
21555
21556 /**
21557  * Read a NetAddress from a byte array, created by NetAddress_write
21558  */
21559 struct LDKCResult_NetAddressDecodeErrorZ NetAddress_read(struct LDKu8slice ser);
21560
21561 /**
21562  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
21563  */
21564 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
21565
21566 /**
21567  * The advertised features
21568  */
21569 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
21570
21571 /**
21572  * The advertised features
21573  */
21574 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
21575
21576 /**
21577  * A strictly monotonic announcement counter, with gaps allowed
21578  */
21579 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
21580
21581 /**
21582  * A strictly monotonic announcement counter, with gaps allowed
21583  */
21584 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
21585
21586 /**
21587  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
21588  * to this node).
21589  */
21590 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
21591
21592 /**
21593  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
21594  * to this node).
21595  */
21596 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21597
21598 /**
21599  * An RGB color for UI purposes
21600  */
21601 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
21602
21603 /**
21604  * An RGB color for UI purposes
21605  */
21606 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
21607
21608 /**
21609  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
21610  * of uniqueness.
21611  */
21612 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
21613
21614 /**
21615  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
21616  * of uniqueness.
21617  */
21618 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21619
21620 /**
21621  * List of addresses on which this node is reachable
21622  */
21623 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
21624
21625 /**
21626  * Creates a copy of the UnsignedNodeAnnouncement
21627  */
21628 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
21629
21630 /**
21631  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
21632  */
21633 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
21634
21635 /**
21636  * The signature by the node key
21637  */
21638 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
21639
21640 /**
21641  * The signature by the node key
21642  */
21643 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21644
21645 /**
21646  * The actual content of the announcement
21647  */
21648 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
21649
21650 /**
21651  * The actual content of the announcement
21652  */
21653 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
21654
21655 /**
21656  * Constructs a new NodeAnnouncement given each field
21657  */
21658 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
21659
21660 /**
21661  * Creates a copy of the NodeAnnouncement
21662  */
21663 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
21664
21665 /**
21666  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
21667  */
21668 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
21669
21670 /**
21671  * The advertised channel features
21672  */
21673 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21674
21675 /**
21676  * The advertised channel features
21677  */
21678 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
21679
21680 /**
21681  * The genesis hash of the blockchain where the channel is to be opened
21682  */
21683 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
21684
21685 /**
21686  * The genesis hash of the blockchain where the channel is to be opened
21687  */
21688 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21689
21690 /**
21691  * The short channel ID
21692  */
21693 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21694
21695 /**
21696  * The short channel ID
21697  */
21698 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
21699
21700 /**
21701  * One of the two node_ids which are endpoints of this channel
21702  */
21703 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21704
21705 /**
21706  * One of the two node_ids which are endpoints of this channel
21707  */
21708 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21709
21710 /**
21711  * The other of the two node_ids which are endpoints of this channel
21712  */
21713 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21714
21715 /**
21716  * The other of the two node_ids which are endpoints of this channel
21717  */
21718 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21719
21720 /**
21721  * The funding key for the first node
21722  */
21723 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21724
21725 /**
21726  * The funding key for the first node
21727  */
21728 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21729
21730 /**
21731  * The funding key for the second node
21732  */
21733 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21734
21735 /**
21736  * The funding key for the second node
21737  */
21738 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21739
21740 /**
21741  * Creates a copy of the UnsignedChannelAnnouncement
21742  */
21743 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
21744
21745 /**
21746  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
21747  */
21748 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
21749
21750 /**
21751  * Authentication of the announcement by the first public node
21752  */
21753 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21754
21755 /**
21756  * Authentication of the announcement by the first public node
21757  */
21758 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21759
21760 /**
21761  * Authentication of the announcement by the second public node
21762  */
21763 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21764
21765 /**
21766  * Authentication of the announcement by the second public node
21767  */
21768 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21769
21770 /**
21771  * Proof of funding UTXO ownership by the first public node
21772  */
21773 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21774
21775 /**
21776  * Proof of funding UTXO ownership by the first public node
21777  */
21778 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21779
21780 /**
21781  * Proof of funding UTXO ownership by the second public node
21782  */
21783 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21784
21785 /**
21786  * Proof of funding UTXO ownership by the second public node
21787  */
21788 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21789
21790 /**
21791  * The actual announcement
21792  */
21793 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21794
21795 /**
21796  * The actual announcement
21797  */
21798 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
21799
21800 /**
21801  * Constructs a new ChannelAnnouncement given each field
21802  */
21803 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);
21804
21805 /**
21806  * Creates a copy of the ChannelAnnouncement
21807  */
21808 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
21809
21810 /**
21811  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
21812  */
21813 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
21814
21815 /**
21816  * The genesis hash of the blockchain where the channel is to be opened
21817  */
21818 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
21819
21820 /**
21821  * The genesis hash of the blockchain where the channel is to be opened
21822  */
21823 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21824
21825 /**
21826  * The short channel ID
21827  */
21828 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21829
21830 /**
21831  * The short channel ID
21832  */
21833 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
21834
21835 /**
21836  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
21837  */
21838 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21839
21840 /**
21841  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
21842  */
21843 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
21844
21845 /**
21846  * Channel flags
21847  */
21848 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21849
21850 /**
21851  * Channel flags
21852  */
21853 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
21854
21855 /**
21856  * The number of blocks such that if:
21857  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
21858  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
21859  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
21860  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
21861  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
21862  * forwarding. Note that the HTLC sender is the one who originally sets this value when
21863  * constructing the route.
21864  */
21865 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21866
21867 /**
21868  * The number of blocks such that if:
21869  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
21870  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
21871  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
21872  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
21873  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
21874  * forwarding. Note that the HTLC sender is the one who originally sets this value when
21875  * constructing the route.
21876  */
21877 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
21878
21879 /**
21880  * The minimum HTLC size incoming to sender, in milli-satoshi
21881  */
21882 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21883
21884 /**
21885  * The minimum HTLC size incoming to sender, in milli-satoshi
21886  */
21887 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
21888
21889 /**
21890  * The base HTLC fee charged by sender, in milli-satoshi
21891  */
21892 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21893
21894 /**
21895  * The base HTLC fee charged by sender, in milli-satoshi
21896  */
21897 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
21898
21899 /**
21900  * The amount to fee multiplier, in micro-satoshi
21901  */
21902 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21903
21904 /**
21905  * The amount to fee multiplier, in micro-satoshi
21906  */
21907 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
21908
21909 /**
21910  * Creates a copy of the UnsignedChannelUpdate
21911  */
21912 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
21913
21914 /**
21915  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
21916  */
21917 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
21918
21919 /**
21920  * A signature of the channel update
21921  */
21922 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
21923
21924 /**
21925  * A signature of the channel update
21926  */
21927 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
21928
21929 /**
21930  * The actual channel update
21931  */
21932 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
21933
21934 /**
21935  * The actual channel update
21936  */
21937 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
21938
21939 /**
21940  * Constructs a new ChannelUpdate given each field
21941  */
21942 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
21943
21944 /**
21945  * Creates a copy of the ChannelUpdate
21946  */
21947 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
21948
21949 /**
21950  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
21951  */
21952 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
21953
21954 /**
21955  * The genesis hash of the blockchain being queried
21956  */
21957 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
21958
21959 /**
21960  * The genesis hash of the blockchain being queried
21961  */
21962 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21963
21964 /**
21965  * The height of the first block for the channel UTXOs being queried
21966  */
21967 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
21968
21969 /**
21970  * The height of the first block for the channel UTXOs being queried
21971  */
21972 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
21973
21974 /**
21975  * The number of blocks to include in the query results
21976  */
21977 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
21978
21979 /**
21980  * The number of blocks to include in the query results
21981  */
21982 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
21983
21984 /**
21985  * Constructs a new QueryChannelRange given each field
21986  */
21987 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
21988
21989 /**
21990  * Creates a copy of the QueryChannelRange
21991  */
21992 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
21993
21994 /**
21995  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
21996  */
21997 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
21998
21999 /**
22000  * The genesis hash of the blockchain being queried
22001  */
22002 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
22003
22004 /**
22005  * The genesis hash of the blockchain being queried
22006  */
22007 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22008
22009 /**
22010  * The height of the first block in the range of the reply
22011  */
22012 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
22013
22014 /**
22015  * The height of the first block in the range of the reply
22016  */
22017 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
22018
22019 /**
22020  * The number of blocks included in the range of the reply
22021  */
22022 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
22023
22024 /**
22025  * The number of blocks included in the range of the reply
22026  */
22027 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
22028
22029 /**
22030  * True when this is the final reply for a query
22031  */
22032 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
22033
22034 /**
22035  * True when this is the final reply for a query
22036  */
22037 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
22038
22039 /**
22040  * The short_channel_ids in the channel range
22041  */
22042 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
22043
22044 /**
22045  * Constructs a new ReplyChannelRange given each field
22046  */
22047 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);
22048
22049 /**
22050  * Creates a copy of the ReplyChannelRange
22051  */
22052 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
22053
22054 /**
22055  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
22056  */
22057 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
22058
22059 /**
22060  * The genesis hash of the blockchain being queried
22061  */
22062 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
22063
22064 /**
22065  * The genesis hash of the blockchain being queried
22066  */
22067 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22068
22069 /**
22070  * The short_channel_ids that are being queried
22071  */
22072 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
22073
22074 /**
22075  * Constructs a new QueryShortChannelIds given each field
22076  */
22077 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
22078
22079 /**
22080  * Creates a copy of the QueryShortChannelIds
22081  */
22082 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
22083
22084 /**
22085  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
22086  */
22087 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
22088
22089 /**
22090  * The genesis hash of the blockchain that was queried
22091  */
22092 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
22093
22094 /**
22095  * The genesis hash of the blockchain that was queried
22096  */
22097 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22098
22099 /**
22100  * Indicates if the query recipient maintains up-to-date channel
22101  * information for the chain_hash
22102  */
22103 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
22104
22105 /**
22106  * Indicates if the query recipient maintains up-to-date channel
22107  * information for the chain_hash
22108  */
22109 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
22110
22111 /**
22112  * Constructs a new ReplyShortChannelIdsEnd given each field
22113  */
22114 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
22115
22116 /**
22117  * Creates a copy of the ReplyShortChannelIdsEnd
22118  */
22119 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
22120
22121 /**
22122  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
22123  */
22124 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
22125
22126 /**
22127  * The genesis hash of the blockchain for channel and node information
22128  */
22129 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
22130
22131 /**
22132  * The genesis hash of the blockchain for channel and node information
22133  */
22134 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22135
22136 /**
22137  * The starting unix timestamp
22138  */
22139 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
22140
22141 /**
22142  * The starting unix timestamp
22143  */
22144 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
22145
22146 /**
22147  * The range of information in seconds
22148  */
22149 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
22150
22151 /**
22152  * The range of information in seconds
22153  */
22154 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
22155
22156 /**
22157  * Constructs a new GossipTimestampFilter given each field
22158  */
22159 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
22160
22161 /**
22162  * Creates a copy of the GossipTimestampFilter
22163  */
22164 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
22165
22166 /**
22167  * Frees any resources used by the ErrorAction
22168  */
22169 void ErrorAction_free(struct LDKErrorAction this_ptr);
22170
22171 /**
22172  * Creates a copy of the ErrorAction
22173  */
22174 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
22175
22176 /**
22177  * Utility method to constructs a new DisconnectPeer-variant ErrorAction
22178  */
22179 struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
22180
22181 /**
22182  * Utility method to constructs a new IgnoreError-variant ErrorAction
22183  */
22184 struct LDKErrorAction ErrorAction_ignore_error(void);
22185
22186 /**
22187  * Utility method to constructs a new IgnoreAndLog-variant ErrorAction
22188  */
22189 struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
22190
22191 /**
22192  * Utility method to constructs a new IgnoreDuplicateGossip-variant ErrorAction
22193  */
22194 struct LDKErrorAction ErrorAction_ignore_duplicate_gossip(void);
22195
22196 /**
22197  * Utility method to constructs a new SendErrorMessage-variant ErrorAction
22198  */
22199 struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
22200
22201 /**
22202  * Utility method to constructs a new SendWarningMessage-variant ErrorAction
22203  */
22204 struct LDKErrorAction ErrorAction_send_warning_message(struct LDKWarningMessage msg, enum LDKLevel log_level);
22205
22206 /**
22207  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
22208  */
22209 void LightningError_free(struct LDKLightningError this_obj);
22210
22211 /**
22212  * A human-readable message describing the error
22213  */
22214 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
22215
22216 /**
22217  * A human-readable message describing the error
22218  */
22219 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKStr val);
22220
22221 /**
22222  * The action which should be taken against the offending peer.
22223  */
22224 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
22225
22226 /**
22227  * The action which should be taken against the offending peer.
22228  */
22229 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
22230
22231 /**
22232  * Constructs a new LightningError given each field
22233  */
22234 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
22235
22236 /**
22237  * Creates a copy of the LightningError
22238  */
22239 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
22240
22241 /**
22242  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
22243  */
22244 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
22245
22246 /**
22247  * update_add_htlc messages which should be sent
22248  */
22249 struct LDKCVec_UpdateAddHTLCZ CommitmentUpdate_get_update_add_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
22250
22251 /**
22252  * update_add_htlc messages which should be sent
22253  */
22254 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
22255
22256 /**
22257  * update_fulfill_htlc messages which should be sent
22258  */
22259 struct LDKCVec_UpdateFulfillHTLCZ CommitmentUpdate_get_update_fulfill_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
22260
22261 /**
22262  * update_fulfill_htlc messages which should be sent
22263  */
22264 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
22265
22266 /**
22267  * update_fail_htlc messages which should be sent
22268  */
22269 struct LDKCVec_UpdateFailHTLCZ CommitmentUpdate_get_update_fail_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
22270
22271 /**
22272  * update_fail_htlc messages which should be sent
22273  */
22274 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
22275
22276 /**
22277  * update_fail_malformed_htlc messages which should be sent
22278  */
22279 struct LDKCVec_UpdateFailMalformedHTLCZ CommitmentUpdate_get_update_fail_malformed_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
22280
22281 /**
22282  * update_fail_malformed_htlc messages which should be sent
22283  */
22284 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
22285
22286 /**
22287  * An update_fee message which should be sent
22288  *
22289  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
22290  */
22291 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
22292
22293 /**
22294  * An update_fee message which should be sent
22295  *
22296  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
22297  */
22298 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
22299
22300 /**
22301  * Finally, the commitment_signed message which should be sent
22302  */
22303 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
22304
22305 /**
22306  * Finally, the commitment_signed message which should be sent
22307  */
22308 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
22309
22310 /**
22311  * Constructs a new CommitmentUpdate given each field
22312  */
22313 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);
22314
22315 /**
22316  * Creates a copy of the CommitmentUpdate
22317  */
22318 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
22319
22320 /**
22321  * Calls the free function if one is set
22322  */
22323 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
22324
22325 /**
22326  * Calls the free function if one is set
22327  */
22328 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
22329
22330 /**
22331  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
22332  */
22333 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
22334
22335 /**
22336  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
22337  */
22338 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
22339
22340 /**
22341  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
22342  */
22343 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
22344
22345 /**
22346  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
22347  */
22348 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
22349
22350 /**
22351  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
22352  */
22353 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
22354
22355 /**
22356  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
22357  */
22358 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
22359
22360 /**
22361  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
22362  */
22363 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
22364
22365 /**
22366  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
22367  */
22368 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
22369
22370 /**
22371  * Serialize the ClosingSignedFeeRange object into a byte array which can be read by ClosingSignedFeeRange_read
22372  */
22373 struct LDKCVec_u8Z ClosingSignedFeeRange_write(const struct LDKClosingSignedFeeRange *NONNULL_PTR obj);
22374
22375 /**
22376  * Read a ClosingSignedFeeRange from a byte array, created by ClosingSignedFeeRange_write
22377  */
22378 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ ClosingSignedFeeRange_read(struct LDKu8slice ser);
22379
22380 /**
22381  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
22382  */
22383 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
22384
22385 /**
22386  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
22387  */
22388 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
22389
22390 /**
22391  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
22392  */
22393 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
22394
22395 /**
22396  * Read a FundingCreated from a byte array, created by FundingCreated_write
22397  */
22398 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
22399
22400 /**
22401  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
22402  */
22403 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
22404
22405 /**
22406  * Read a FundingSigned from a byte array, created by FundingSigned_write
22407  */
22408 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
22409
22410 /**
22411  * Serialize the FundingLocked object into a byte array which can be read by FundingLocked_read
22412  */
22413 struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
22414
22415 /**
22416  * Read a FundingLocked from a byte array, created by FundingLocked_write
22417  */
22418 struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser);
22419
22420 /**
22421  * Serialize the Init object into a byte array which can be read by Init_read
22422  */
22423 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
22424
22425 /**
22426  * Read a Init from a byte array, created by Init_write
22427  */
22428 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
22429
22430 /**
22431  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
22432  */
22433 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
22434
22435 /**
22436  * Read a OpenChannel from a byte array, created by OpenChannel_write
22437  */
22438 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
22439
22440 /**
22441  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
22442  */
22443 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
22444
22445 /**
22446  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
22447  */
22448 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
22449
22450 /**
22451  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
22452  */
22453 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
22454
22455 /**
22456  * Read a Shutdown from a byte array, created by Shutdown_write
22457  */
22458 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
22459
22460 /**
22461  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
22462  */
22463 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
22464
22465 /**
22466  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
22467  */
22468 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
22469
22470 /**
22471  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
22472  */
22473 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
22474
22475 /**
22476  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
22477  */
22478 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
22479
22480 /**
22481  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
22482  */
22483 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
22484
22485 /**
22486  * Read a UpdateFee from a byte array, created by UpdateFee_write
22487  */
22488 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
22489
22490 /**
22491  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
22492  */
22493 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
22494
22495 /**
22496  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
22497  */
22498 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
22499
22500 /**
22501  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
22502  */
22503 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
22504
22505 /**
22506  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
22507  */
22508 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
22509
22510 /**
22511  * Serialize the Ping object into a byte array which can be read by Ping_read
22512  */
22513 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
22514
22515 /**
22516  * Read a Ping from a byte array, created by Ping_write
22517  */
22518 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
22519
22520 /**
22521  * Serialize the Pong object into a byte array which can be read by Pong_read
22522  */
22523 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
22524
22525 /**
22526  * Read a Pong from a byte array, created by Pong_write
22527  */
22528 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
22529
22530 /**
22531  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
22532  */
22533 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
22534
22535 /**
22536  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
22537  */
22538 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
22539
22540 /**
22541  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
22542  */
22543 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
22544
22545 /**
22546  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
22547  */
22548 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
22549
22550 /**
22551  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
22552  */
22553 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
22554
22555 /**
22556  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
22557  */
22558 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
22559
22560 /**
22561  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
22562  */
22563 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
22564
22565 /**
22566  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
22567  */
22568 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
22569
22570 /**
22571  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
22572  */
22573 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
22574
22575 /**
22576  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
22577  */
22578 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
22579
22580 /**
22581  * Serialize the WarningMessage object into a byte array which can be read by WarningMessage_read
22582  */
22583 struct LDKCVec_u8Z WarningMessage_write(const struct LDKWarningMessage *NONNULL_PTR obj);
22584
22585 /**
22586  * Read a WarningMessage from a byte array, created by WarningMessage_write
22587  */
22588 struct LDKCResult_WarningMessageDecodeErrorZ WarningMessage_read(struct LDKu8slice ser);
22589
22590 /**
22591  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
22592  */
22593 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
22594
22595 /**
22596  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
22597  */
22598 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
22599
22600 /**
22601  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
22602  */
22603 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
22604
22605 /**
22606  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
22607  */
22608 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
22609
22610 /**
22611  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
22612  */
22613 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
22614
22615 /**
22616  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
22617  */
22618 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
22619
22620 /**
22621  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
22622  */
22623 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
22624
22625 /**
22626  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
22627  */
22628 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
22629
22630 /**
22631  *\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
22632  */
22633 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
22634
22635 /**
22636  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
22637  */
22638 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
22639
22640 /**
22641  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
22642  */
22643 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
22644
22645 /**
22646  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
22647  */
22648 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
22649
22650 /**
22651  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
22652  */
22653 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
22654
22655 /**
22656  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
22657  */
22658 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
22659
22660 /**
22661  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
22662  */
22663 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
22664
22665 /**
22666  * Calls the free function if one is set
22667  */
22668 void CustomMessageHandler_free(struct LDKCustomMessageHandler this_ptr);
22669
22670 /**
22671  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
22672  */
22673 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
22674
22675 /**
22676  * Constructs a new IgnoringMessageHandler given each field
22677  */
22678 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
22679
22680 /**
22681  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
22682  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
22683  */
22684 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22685
22686 /**
22687  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
22688  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
22689  */
22690 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22691
22692 /**
22693  * Constructs a new CustomMessageReader which calls the relevant methods on this_arg.
22694  * This copies the `inner` pointer in this_arg and thus the returned CustomMessageReader must be freed before this_arg is
22695  */
22696 struct LDKCustomMessageReader IgnoringMessageHandler_as_CustomMessageReader(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22697
22698 /**
22699  * Constructs a new CustomMessageHandler which calls the relevant methods on this_arg.
22700  * This copies the `inner` pointer in this_arg and thus the returned CustomMessageHandler must be freed before this_arg is
22701  */
22702 struct LDKCustomMessageHandler IgnoringMessageHandler_as_CustomMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22703
22704 /**
22705  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
22706  */
22707 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
22708
22709 /**
22710  * Constructs a new ErroringMessageHandler
22711  */
22712 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
22713
22714 /**
22715  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
22716  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
22717  */
22718 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
22719
22720 /**
22721  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
22722  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
22723  */
22724 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
22725
22726 /**
22727  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
22728  */
22729 void MessageHandler_free(struct LDKMessageHandler this_obj);
22730
22731 /**
22732  * A message handler which handles messages specific to channels. Usually this is just a
22733  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
22734  *
22735  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
22736  */
22737 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
22738
22739 /**
22740  * A message handler which handles messages specific to channels. Usually this is just a
22741  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
22742  *
22743  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
22744  */
22745 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
22746
22747 /**
22748  * A message handler which handles messages updating our knowledge of the network channel
22749  * graph. Usually this is just a [`NetGraphMsgHandler`] object or an
22750  * [`IgnoringMessageHandler`].
22751  *
22752  * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
22753  */
22754 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
22755
22756 /**
22757  * A message handler which handles messages updating our knowledge of the network channel
22758  * graph. Usually this is just a [`NetGraphMsgHandler`] object or an
22759  * [`IgnoringMessageHandler`].
22760  *
22761  * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
22762  */
22763 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
22764
22765 /**
22766  * Constructs a new MessageHandler given each field
22767  */
22768 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
22769
22770 /**
22771  * Creates a copy of a SocketDescriptor
22772  */
22773 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
22774
22775 /**
22776  * Calls the free function if one is set
22777  */
22778 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
22779
22780 /**
22781  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
22782  */
22783 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
22784
22785 /**
22786  * Used to indicate that we probably can't make any future connections to this peer, implying
22787  * we should go ahead and force-close any channels we have with it.
22788  */
22789 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
22790
22791 /**
22792  * Used to indicate that we probably can't make any future connections to this peer, implying
22793  * we should go ahead and force-close any channels we have with it.
22794  */
22795 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
22796
22797 /**
22798  * Constructs a new PeerHandleError given each field
22799  */
22800 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
22801
22802 /**
22803  * Creates a copy of the PeerHandleError
22804  */
22805 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
22806
22807 /**
22808  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
22809  */
22810 void PeerManager_free(struct LDKPeerManager this_obj);
22811
22812 /**
22813  * Constructs a new PeerManager with the given message handlers and node_id secret key
22814  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
22815  * cryptographically secure random bytes.
22816  */
22817 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, struct LDKCustomMessageHandler custom_message_handler);
22818
22819 /**
22820  * Get the list of node ids for peers which have completed the initial handshake.
22821  *
22822  * For outbound connections, this will be the same as the their_node_id parameter passed in to
22823  * new_outbound_connection, however entries will only appear once the initial handshake has
22824  * completed and we are sure the remote peer has the private key for the given node_id.
22825  */
22826 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
22827
22828 /**
22829  * Indicates a new outbound connection has been established to a node with the given node_id
22830  * and an optional remote network address.
22831  *
22832  * The remote network address adds the option to report a remote IP address back to a connecting
22833  * peer using the init message.
22834  * The user should pass the remote network address of the host they are connected to.
22835  *
22836  * Note that if an Err is returned here you MUST NOT call socket_disconnected for the new
22837  * descriptor but must disconnect the connection immediately.
22838  *
22839  * Returns a small number of bytes to send to the remote node (currently always 50).
22840  *
22841  * Panics if descriptor is duplicative with some other descriptor which has not yet been
22842  * [`socket_disconnected()`].
22843  *
22844  * [`socket_disconnected()`]: PeerManager::socket_disconnected
22845  */
22846 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, struct LDKCOption_NetAddressZ remote_network_address);
22847
22848 /**
22849  * Indicates a new inbound connection has been established to a node with an optional remote
22850  * network address.
22851  *
22852  * The remote network address adds the option to report a remote IP address back to a connecting
22853  * peer using the init message.
22854  * The user should pass the remote network address of the host they are connected to.
22855  *
22856  * May refuse the connection by returning an Err, but will never write bytes to the remote end
22857  * (outbound connector always speaks first). Note that if an Err is returned here you MUST NOT
22858  * call socket_disconnected for the new descriptor but must disconnect the connection
22859  * immediately.
22860  *
22861  * Panics if descriptor is duplicative with some other descriptor which has not yet been
22862  * [`socket_disconnected()`].
22863  *
22864  * [`socket_disconnected()`]: PeerManager::socket_disconnected
22865  */
22866 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor, struct LDKCOption_NetAddressZ remote_network_address);
22867
22868 /**
22869  * Indicates that there is room to write data to the given socket descriptor.
22870  *
22871  * May return an Err to indicate that the connection should be closed.
22872  *
22873  * May call [`send_data`] on the descriptor passed in (or an equal descriptor) before
22874  * returning. Thus, be very careful with reentrancy issues! The invariants around calling
22875  * [`write_buffer_space_avail`] in case a write did not fully complete must still hold - be
22876  * ready to call `[write_buffer_space_avail`] again if a write call generated here isn't
22877  * sufficient!
22878  *
22879  * [`send_data`]: SocketDescriptor::send_data
22880  * [`write_buffer_space_avail`]: PeerManager::write_buffer_space_avail
22881  */
22882 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
22883
22884 /**
22885  * Indicates that data was read from the given socket descriptor.
22886  *
22887  * May return an Err to indicate that the connection should be closed.
22888  *
22889  * Will *not* call back into [`send_data`] on any descriptors to avoid reentrancy complexity.
22890  * Thus, however, you should call [`process_events`] after any `read_event` to generate
22891  * [`send_data`] calls to handle responses.
22892  *
22893  * If `Ok(true)` is returned, further read_events should not be triggered until a
22894  * [`send_data`] call on this descriptor has `resume_read` set (preventing DoS issues in the
22895  * send buffer).
22896  *
22897  * [`send_data`]: SocketDescriptor::send_data
22898  * [`process_events`]: PeerManager::process_events
22899  */
22900 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);
22901
22902 /**
22903  * Checks for any events generated by our handlers and processes them. Includes sending most
22904  * response messages as well as messages generated by calls to handler functions directly (eg
22905  * functions like [`ChannelManager::process_pending_htlc_forwards`] or [`send_payment`]).
22906  *
22907  * May call [`send_data`] on [`SocketDescriptor`]s. Thus, be very careful with reentrancy
22908  * issues!
22909  *
22910  * You don't have to call this function explicitly if you are using [`lightning-net-tokio`]
22911  * or one of the other clients provided in our language bindings.
22912  *
22913  * [`send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
22914  * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
22915  * [`send_data`]: SocketDescriptor::send_data
22916  */
22917 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
22918
22919 /**
22920  * Indicates that the given socket descriptor's connection is now closed.
22921  */
22922 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
22923
22924 /**
22925  * Disconnect a peer given its node id.
22926  *
22927  * Set `no_connection_possible` to true to prevent any further connection with this peer,
22928  * force-closing any channels we have with it.
22929  *
22930  * If a peer is connected, this will call [`disconnect_socket`] on the descriptor for the
22931  * peer. Thus, be very careful about reentrancy issues.
22932  *
22933  * [`disconnect_socket`]: SocketDescriptor::disconnect_socket
22934  */
22935 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
22936
22937 /**
22938  * Disconnects all currently-connected peers. This is useful on platforms where there may be
22939  * an indication that TCP sockets have stalled even if we weren't around to time them out
22940  * using regular ping/pongs.
22941  */
22942 void PeerManager_disconnect_all_peers(const struct LDKPeerManager *NONNULL_PTR this_arg);
22943
22944 /**
22945  * Send pings to each peer and disconnect those which did not respond to the last round of
22946  * pings.
22947  *
22948  * This may be called on any timescale you want, however, roughly once every ten seconds is
22949  * preferred. The call rate determines both how often we send a ping to our peers and how much
22950  * time they have to respond before we disconnect them.
22951  *
22952  * May call [`send_data`] on all [`SocketDescriptor`]s. Thus, be very careful with reentrancy
22953  * issues!
22954  *
22955  * [`send_data`]: SocketDescriptor::send_data
22956  */
22957 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
22958
22959 /**
22960  * Gets the weight for an HTLC-Success transaction.
22961  */
22962 uint64_t htlc_success_tx_weight(bool opt_anchors);
22963
22964 /**
22965  * Gets the weight for an HTLC-Timeout transaction.
22966  */
22967 uint64_t htlc_timeout_tx_weight(bool opt_anchors);
22968
22969 /**
22970  * Build the commitment secret from the seed and the commitment number
22971  */
22972 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
22973
22974 /**
22975  * Build a closing transaction
22976  */
22977 struct LDKTransaction build_closing_transaction(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
22978
22979 /**
22980  * Frees any resources used by the CounterpartyCommitmentSecrets, if is_owned is set and inner is non-NULL.
22981  */
22982 void CounterpartyCommitmentSecrets_free(struct LDKCounterpartyCommitmentSecrets this_obj);
22983
22984 /**
22985  * Creates a copy of the CounterpartyCommitmentSecrets
22986  */
22987 struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_clone(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR orig);
22988
22989 /**
22990  * Creates a new empty `CounterpartyCommitmentSecrets` structure.
22991  */
22992 MUST_USE_RES struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_new(void);
22993
22994 /**
22995  * Returns the minimum index of all stored secrets. Note that indexes start
22996  * at 1 << 48 and get decremented by one for each new secret.
22997  */
22998 MUST_USE_RES uint64_t CounterpartyCommitmentSecrets_get_min_seen_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg);
22999
23000 /**
23001  * Inserts the `secret` at `idx`. Returns `Ok(())` if the secret
23002  * was generated in accordance with BOLT 3 and is consistent with previous secrets.
23003  */
23004 MUST_USE_RES struct LDKCResult_NoneNoneZ CounterpartyCommitmentSecrets_provide_secret(struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx, struct LDKThirtyTwoBytes secret);
23005
23006 /**
23007  * Returns the secret at `idx`.
23008  * Returns `None` if `idx` is < [`CounterpartyCommitmentSecrets::get_min_seen_secret`].
23009  *
23010  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23011  */
23012 MUST_USE_RES struct LDKThirtyTwoBytes CounterpartyCommitmentSecrets_get_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx);
23013
23014 /**
23015  * Serialize the CounterpartyCommitmentSecrets object into a byte array which can be read by CounterpartyCommitmentSecrets_read
23016  */
23017 struct LDKCVec_u8Z CounterpartyCommitmentSecrets_write(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR obj);
23018
23019 /**
23020  * Read a CounterpartyCommitmentSecrets from a byte array, created by CounterpartyCommitmentSecrets_write
23021  */
23022 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CounterpartyCommitmentSecrets_read(struct LDKu8slice ser);
23023
23024 /**
23025  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
23026  * from the base secret and the per_commitment_point.
23027  *
23028  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
23029  * generated (ie our own).
23030  */
23031 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
23032
23033 /**
23034  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
23035  * from the base point and the per_commitment_key. This is the public equivalent of
23036  * derive_private_key - using only public keys to derive a public key instead of private keys.
23037  *
23038  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
23039  * generated (ie our own).
23040  */
23041 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
23042
23043 /**
23044  * Derives a per-commitment-transaction revocation key from its constituent parts.
23045  *
23046  * Only the cheating participant owns a valid witness to propagate a revoked
23047  * commitment transaction, thus per_commitment_secret always come from cheater
23048  * and revocation_base_secret always come from punisher, which is the broadcaster
23049  * of the transaction spending with this key knowledge.
23050  *
23051  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
23052  * generated (ie our own).
23053  */
23054 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
23055
23056 /**
23057  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
23058  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
23059  * public key instead of private keys.
23060  *
23061  * Only the cheating participant owns a valid witness to propagate a revoked
23062  * commitment transaction, thus per_commitment_point always come from cheater
23063  * and revocation_base_point always come from punisher, which is the broadcaster
23064  * of the transaction spending with this key knowledge.
23065  *
23066  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
23067  * generated (ie our own).
23068  */
23069 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
23070
23071 /**
23072  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
23073  */
23074 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
23075
23076 /**
23077  * The broadcaster's per-commitment public key which was used to derive the other keys.
23078  */
23079 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
23080
23081 /**
23082  * The broadcaster's per-commitment public key which was used to derive the other keys.
23083  */
23084 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23085
23086 /**
23087  * The revocation key which is used to allow the broadcaster of the commitment
23088  * transaction to provide their counterparty the ability to punish them if they broadcast
23089  * an old state.
23090  */
23091 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
23092
23093 /**
23094  * The revocation key which is used to allow the broadcaster of the commitment
23095  * transaction to provide their counterparty the ability to punish them if they broadcast
23096  * an old state.
23097  */
23098 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23099
23100 /**
23101  * Broadcaster's HTLC Key
23102  */
23103 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
23104
23105 /**
23106  * Broadcaster's HTLC Key
23107  */
23108 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23109
23110 /**
23111  * Countersignatory's HTLC Key
23112  */
23113 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
23114
23115 /**
23116  * Countersignatory's HTLC Key
23117  */
23118 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23119
23120 /**
23121  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
23122  */
23123 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
23124
23125 /**
23126  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
23127  */
23128 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23129
23130 /**
23131  * Constructs a new TxCreationKeys given each field
23132  */
23133 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);
23134
23135 /**
23136  * Creates a copy of the TxCreationKeys
23137  */
23138 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
23139
23140 /**
23141  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
23142  */
23143 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
23144
23145 /**
23146  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
23147  */
23148 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
23149
23150 /**
23151  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
23152  */
23153 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
23154
23155 /**
23156  * The public key which is used to sign all commitment transactions, as it appears in the
23157  * on-chain channel lock-in 2-of-2 multisig output.
23158  */
23159 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
23160
23161 /**
23162  * The public key which is used to sign all commitment transactions, as it appears in the
23163  * on-chain channel lock-in 2-of-2 multisig output.
23164  */
23165 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23166
23167 /**
23168  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
23169  * revocation keys. This is combined with the per-commitment-secret generated by the
23170  * counterparty to create a secret which the counterparty can reveal to revoke previous
23171  * states.
23172  */
23173 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
23174
23175 /**
23176  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
23177  * revocation keys. This is combined with the per-commitment-secret generated by the
23178  * counterparty to create a secret which the counterparty can reveal to revoke previous
23179  * states.
23180  */
23181 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23182
23183 /**
23184  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
23185  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
23186  * static across every commitment transaction.
23187  */
23188 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
23189
23190 /**
23191  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
23192  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
23193  * static across every commitment transaction.
23194  */
23195 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23196
23197 /**
23198  * The base point which is used (with derive_public_key) to derive a per-commitment payment
23199  * public key which receives non-HTLC-encumbered funds which are only available for spending
23200  * after some delay (or can be claimed via the revocation path).
23201  */
23202 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
23203
23204 /**
23205  * The base point which is used (with derive_public_key) to derive a per-commitment payment
23206  * public key which receives non-HTLC-encumbered funds which are only available for spending
23207  * after some delay (or can be claimed via the revocation path).
23208  */
23209 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23210
23211 /**
23212  * The base point which is used (with derive_public_key) to derive a per-commitment public key
23213  * which is used to encumber HTLC-in-flight outputs.
23214  */
23215 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
23216
23217 /**
23218  * The base point which is used (with derive_public_key) to derive a per-commitment public key
23219  * which is used to encumber HTLC-in-flight outputs.
23220  */
23221 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23222
23223 /**
23224  * Constructs a new ChannelPublicKeys given each field
23225  */
23226 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);
23227
23228 /**
23229  * Creates a copy of the ChannelPublicKeys
23230  */
23231 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
23232
23233 /**
23234  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
23235  */
23236 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
23237
23238 /**
23239  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
23240  */
23241 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
23242
23243 /**
23244  * Create per-state keys from channel base points and the per-commitment point.
23245  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
23246  */
23247 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);
23248
23249 /**
23250  * Generate per-state keys from channel static keys.
23251  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
23252  */
23253 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);
23254
23255 /**
23256  * A script either spendable by the revocation
23257  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
23258  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
23259  */
23260 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
23261
23262 /**
23263  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
23264  */
23265 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
23266
23267 /**
23268  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
23269  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
23270  * need to compare this value to whether the commitment transaction in question is that of
23271  * the counterparty or our own.
23272  */
23273 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
23274
23275 /**
23276  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
23277  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
23278  * need to compare this value to whether the commitment transaction in question is that of
23279  * the counterparty or our own.
23280  */
23281 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
23282
23283 /**
23284  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
23285  * this divided by 1000.
23286  */
23287 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
23288
23289 /**
23290  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
23291  * this divided by 1000.
23292  */
23293 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
23294
23295 /**
23296  * The CLTV lock-time at which this HTLC expires.
23297  */
23298 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
23299
23300 /**
23301  * The CLTV lock-time at which this HTLC expires.
23302  */
23303 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
23304
23305 /**
23306  * The hash of the preimage which unlocks this HTLC.
23307  */
23308 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
23309
23310 /**
23311  * The hash of the preimage which unlocks this HTLC.
23312  */
23313 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23314
23315 /**
23316  * The position within the commitment transactions' outputs. This may be None if the value is
23317  * below the dust limit (in which case no output appears in the commitment transaction and the
23318  * value is spent to additional transaction fees).
23319  */
23320 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
23321
23322 /**
23323  * The position within the commitment transactions' outputs. This may be None if the value is
23324  * below the dust limit (in which case no output appears in the commitment transaction and the
23325  * value is spent to additional transaction fees).
23326  */
23327 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
23328
23329 /**
23330  * Constructs a new HTLCOutputInCommitment given each field
23331  */
23332 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);
23333
23334 /**
23335  * Creates a copy of the HTLCOutputInCommitment
23336  */
23337 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
23338
23339 /**
23340  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
23341  */
23342 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
23343
23344 /**
23345  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
23346  */
23347 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
23348
23349 /**
23350  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
23351  * does not need to have its previous_output_index filled.
23352  */
23353 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, const struct LDKTxCreationKeys *NONNULL_PTR keys);
23354
23355 /**
23356  * Gets the redeemscript for a funding output from the two funding public keys.
23357  * Note that the order of funding public keys does not matter.
23358  */
23359 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
23360
23361 /**
23362  * Builds an unsigned HTLC-Success or HTLC-Timeout transaction from the given channel and HTLC
23363  * parameters. This is used by [`TrustedCommitmentTransaction::get_htlc_sigs`] to fetch the
23364  * transaction which needs signing, and can be used to construct an HTLC transaction which is
23365  * broadcastable given a counterparty HTLC signature.
23366  *
23367  * Panics if htlc.transaction_output_index.is_none() (as such HTLCs do not appear in the
23368  * commitment transaction).
23369  */
23370 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, bool opt_anchors, struct LDKPublicKey broadcaster_delayed_payment_key, struct LDKPublicKey revocation_key);
23371
23372 /**
23373  * Gets the witnessScript for an anchor output from the funding public key.
23374  * The witness in the spending input must be:
23375  * <BIP 143 funding_signature>
23376  * After 16 blocks of confirmation, an alternative satisfying witness could be:
23377  * <>
23378  * (empty vector required to satisfy compliance with MINIMALIF-standard rule)
23379  */
23380 struct LDKCVec_u8Z get_anchor_redeemscript(struct LDKPublicKey funding_pubkey);
23381
23382 /**
23383  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
23384  */
23385 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
23386
23387 /**
23388  * Holder public keys
23389  */
23390 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23391
23392 /**
23393  * Holder public keys
23394  */
23395 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
23396
23397 /**
23398  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
23399  */
23400 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23401
23402 /**
23403  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
23404  */
23405 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
23406
23407 /**
23408  * Whether the holder is the initiator of this channel.
23409  * This is an input to the commitment number obscure factor computation.
23410  */
23411 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23412
23413 /**
23414  * Whether the holder is the initiator of this channel.
23415  * This is an input to the commitment number obscure factor computation.
23416  */
23417 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
23418
23419 /**
23420  * The late-bound counterparty channel transaction parameters.
23421  * These parameters are populated at the point in the protocol where the counterparty provides them.
23422  *
23423  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23424  */
23425 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23426
23427 /**
23428  * The late-bound counterparty channel transaction parameters.
23429  * These parameters are populated at the point in the protocol where the counterparty provides them.
23430  *
23431  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23432  */
23433 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
23434
23435 /**
23436  * The late-bound funding outpoint
23437  *
23438  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23439  */
23440 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23441
23442 /**
23443  * The late-bound funding outpoint
23444  *
23445  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23446  */
23447 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
23448
23449 /**
23450  * Are anchors used for this channel.  Boolean is serialization backwards-compatible
23451  */
23452 enum LDKCOption_NoneZ ChannelTransactionParameters_get_opt_anchors(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23453
23454 /**
23455  * Are anchors used for this channel.  Boolean is serialization backwards-compatible
23456  */
23457 void ChannelTransactionParameters_set_opt_anchors(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, enum LDKCOption_NoneZ val);
23458
23459 /**
23460  * Constructs a new ChannelTransactionParameters given each field
23461  */
23462 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, enum LDKCOption_NoneZ opt_anchors_arg);
23463
23464 /**
23465  * Creates a copy of the ChannelTransactionParameters
23466  */
23467 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
23468
23469 /**
23470  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
23471  */
23472 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
23473
23474 /**
23475  * Counter-party public keys
23476  */
23477 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
23478
23479 /**
23480  * Counter-party public keys
23481  */
23482 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
23483
23484 /**
23485  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
23486  */
23487 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
23488
23489 /**
23490  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
23491  */
23492 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
23493
23494 /**
23495  * Constructs a new CounterpartyChannelTransactionParameters given each field
23496  */
23497 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
23498
23499 /**
23500  * Creates a copy of the CounterpartyChannelTransactionParameters
23501  */
23502 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
23503
23504 /**
23505  * Whether the late bound parameters are populated.
23506  */
23507 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
23508
23509 /**
23510  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
23511  * given that the holder is the broadcaster.
23512  *
23513  * self.is_populated() must be true before calling this function.
23514  */
23515 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
23516
23517 /**
23518  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
23519  * given that the counterparty is the broadcaster.
23520  *
23521  * self.is_populated() must be true before calling this function.
23522  */
23523 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
23524
23525 /**
23526  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
23527  */
23528 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
23529
23530 /**
23531  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
23532  */
23533 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
23534
23535 /**
23536  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
23537  */
23538 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
23539
23540 /**
23541  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
23542  */
23543 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
23544
23545 /**
23546  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
23547  */
23548 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
23549
23550 /**
23551  * Get the channel pubkeys for the broadcaster
23552  */
23553 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23554
23555 /**
23556  * Get the channel pubkeys for the countersignatory
23557  */
23558 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23559
23560 /**
23561  * Get the contest delay applicable to the transactions.
23562  * Note that the contest delay was selected by the countersignatory.
23563  */
23564 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23565
23566 /**
23567  * Whether the channel is outbound from the broadcaster.
23568  *
23569  * The boolean representing the side that initiated the channel is
23570  * an input to the commitment number obscure factor computation.
23571  */
23572 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23573
23574 /**
23575  * The funding outpoint
23576  */
23577 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23578
23579 /**
23580  * Whether to use anchors for this channel
23581  */
23582 MUST_USE_RES bool DirectedChannelTransactionParameters_opt_anchors(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23583
23584 /**
23585  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
23586  */
23587 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
23588
23589 /**
23590  * Our counterparty's signature for the transaction
23591  */
23592 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
23593
23594 /**
23595  * Our counterparty's signature for the transaction
23596  */
23597 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
23598
23599 /**
23600  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
23601  */
23602 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
23603
23604 /**
23605  * Creates a copy of the HolderCommitmentTransaction
23606  */
23607 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
23608
23609 /**
23610  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
23611  */
23612 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
23613
23614 /**
23615  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
23616  */
23617 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
23618
23619 /**
23620  * Create a new holder transaction with the given counterparty signatures.
23621  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
23622  */
23623 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);
23624
23625 /**
23626  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
23627  */
23628 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
23629
23630 /**
23631  * The commitment transaction
23632  */
23633 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
23634
23635 /**
23636  * The commitment transaction
23637  */
23638 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
23639
23640 /**
23641  * The txid for the commitment transaction.
23642  *
23643  * This is provided as a performance optimization, instead of calling transaction.txid()
23644  * multiple times.
23645  */
23646 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
23647
23648 /**
23649  * The txid for the commitment transaction.
23650  *
23651  * This is provided as a performance optimization, instead of calling transaction.txid()
23652  * multiple times.
23653  */
23654 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23655
23656 /**
23657  * Constructs a new BuiltCommitmentTransaction given each field
23658  */
23659 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
23660
23661 /**
23662  * Creates a copy of the BuiltCommitmentTransaction
23663  */
23664 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
23665
23666 /**
23667  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
23668  */
23669 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
23670
23671 /**
23672  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
23673  */
23674 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
23675
23676 /**
23677  * Get the SIGHASH_ALL sighash value of the transaction.
23678  *
23679  * This can be used to verify a signature.
23680  */
23681 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);
23682
23683 /**
23684  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
23685  * because we are about to broadcast a holder transaction.
23686  */
23687 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);
23688
23689 /**
23690  * Frees any resources used by the ClosingTransaction, if is_owned is set and inner is non-NULL.
23691  */
23692 void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
23693
23694 /**
23695  * Creates a copy of the ClosingTransaction
23696  */
23697 struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
23698
23699 /**
23700  * Checks if two ClosingTransactions contain equal inner contents.
23701  */
23702 uint64_t ClosingTransaction_hash(const struct LDKClosingTransaction *NONNULL_PTR o);
23703
23704 /**
23705  * Construct an object of the class
23706  */
23707 MUST_USE_RES struct LDKClosingTransaction ClosingTransaction_new(uint64_t to_holder_value_sat, uint64_t to_counterparty_value_sat, struct LDKCVec_u8Z to_holder_script, struct LDKCVec_u8Z to_counterparty_script, struct LDKOutPoint funding_outpoint);
23708
23709 /**
23710  * Trust our pre-built transaction.
23711  *
23712  * Applies a wrapper which allows access to the transaction.
23713  *
23714  * This should only be used if you fully trust the builder of this object. It should not
23715  * be used by an external signer - instead use the verify function.
23716  */
23717 MUST_USE_RES struct LDKTrustedClosingTransaction ClosingTransaction_trust(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23718
23719 /**
23720  * Verify our pre-built transaction.
23721  *
23722  * Applies a wrapper which allows access to the transaction.
23723  *
23724  * An external validating signer must call this method before signing
23725  * or using the built transaction.
23726  */
23727 MUST_USE_RES struct LDKCResult_TrustedClosingTransactionNoneZ ClosingTransaction_verify(const struct LDKClosingTransaction *NONNULL_PTR this_arg, struct LDKOutPoint funding_outpoint);
23728
23729 /**
23730  * The value to be sent to the holder, or zero if the output will be omitted
23731  */
23732 MUST_USE_RES uint64_t ClosingTransaction_to_holder_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23733
23734 /**
23735  * The value to be sent to the counterparty, or zero if the output will be omitted
23736  */
23737 MUST_USE_RES uint64_t ClosingTransaction_to_counterparty_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23738
23739 /**
23740  * The destination of the holder's output
23741  */
23742 MUST_USE_RES struct LDKu8slice ClosingTransaction_to_holder_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23743
23744 /**
23745  * The destination of the counterparty's output
23746  */
23747 MUST_USE_RES struct LDKu8slice ClosingTransaction_to_counterparty_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23748
23749 /**
23750  * Frees any resources used by the TrustedClosingTransaction, if is_owned is set and inner is non-NULL.
23751  */
23752 void TrustedClosingTransaction_free(struct LDKTrustedClosingTransaction this_obj);
23753
23754 /**
23755  * The pre-built Bitcoin commitment transaction
23756  */
23757 MUST_USE_RES struct LDKTransaction TrustedClosingTransaction_built_transaction(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg);
23758
23759 /**
23760  * Get the SIGHASH_ALL sighash value of the transaction.
23761  *
23762  * This can be used to verify a signature.
23763  */
23764 MUST_USE_RES struct LDKThirtyTwoBytes TrustedClosingTransaction_get_sighash_all(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg, struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
23765
23766 /**
23767  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
23768  * because we are about to broadcast a holder transaction.
23769  */
23770 MUST_USE_RES struct LDKSignature TrustedClosingTransaction_sign(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg, const uint8_t (*funding_key)[32], struct LDKu8slice funding_redeemscript, uint64_t channel_value_satoshis);
23771
23772 /**
23773  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
23774  */
23775 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
23776
23777 /**
23778  * Creates a copy of the CommitmentTransaction
23779  */
23780 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
23781
23782 /**
23783  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
23784  */
23785 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
23786
23787 /**
23788  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
23789  */
23790 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
23791
23792 /**
23793  * The backwards-counting commitment number
23794  */
23795 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23796
23797 /**
23798  * The value to be sent to the broadcaster
23799  */
23800 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23801
23802 /**
23803  * The value to be sent to the counterparty
23804  */
23805 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23806
23807 /**
23808  * The feerate paid per 1000-weight-unit in this commitment transaction.
23809  */
23810 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23811
23812 /**
23813  * Trust our pre-built transaction and derived transaction creation public keys.
23814  *
23815  * Applies a wrapper which allows access to these fields.
23816  *
23817  * This should only be used if you fully trust the builder of this object.  It should not
23818  * be used by an external signer - instead use the verify function.
23819  */
23820 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23821
23822 /**
23823  * Verify our pre-built transaction and derived transaction creation public keys.
23824  *
23825  * Applies a wrapper which allows access to these fields.
23826  *
23827  * An external validating signer must call this method before signing
23828  * or using the built transaction.
23829  */
23830 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);
23831
23832 /**
23833  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
23834  */
23835 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
23836
23837 /**
23838  * The transaction ID of the built Bitcoin transaction
23839  */
23840 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23841
23842 /**
23843  * The pre-built Bitcoin commitment transaction
23844  */
23845 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23846
23847 /**
23848  * The pre-calculated transaction creation public keys.
23849  */
23850 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23851
23852 /**
23853  * Should anchors be used.
23854  */
23855 MUST_USE_RES bool TrustedCommitmentTransaction_opt_anchors(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23856
23857 /**
23858  * Get a signature for each HTLC which was included in the commitment transaction (ie for
23859  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
23860  *
23861  * The returned Vec has one entry for each HTLC, and in the same order.
23862  *
23863  * This function is only valid in the holder commitment context, it always uses SigHashType::All.
23864  */
23865 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);
23866
23867 /**
23868  * Commitment transaction numbers which appear in the transactions themselves are XOR'd with a
23869  * shared secret first. This prevents on-chain observers from discovering how many commitment
23870  * transactions occurred in a channel before it was closed.
23871  *
23872  * This function gets the shared secret from relevant channel public keys and can be used to
23873  * \"decrypt\" the commitment transaction number given a commitment transaction on-chain.
23874  */
23875 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
23876
23877 /**
23878  * Checks if two InitFeaturess contain equal inner contents.
23879  * This ignores pointers and is_owned flags and looks at the values in fields.
23880  * Two objects with NULL inner values will be considered "equal" here.
23881  */
23882 bool InitFeatures_eq(const struct LDKInitFeatures *NONNULL_PTR a, const struct LDKInitFeatures *NONNULL_PTR b);
23883
23884 /**
23885  * Checks if two NodeFeaturess contain equal inner contents.
23886  * This ignores pointers and is_owned flags and looks at the values in fields.
23887  * Two objects with NULL inner values will be considered "equal" here.
23888  */
23889 bool NodeFeatures_eq(const struct LDKNodeFeatures *NONNULL_PTR a, const struct LDKNodeFeatures *NONNULL_PTR b);
23890
23891 /**
23892  * Checks if two ChannelFeaturess contain equal inner contents.
23893  * This ignores pointers and is_owned flags and looks at the values in fields.
23894  * Two objects with NULL inner values will be considered "equal" here.
23895  */
23896 bool ChannelFeatures_eq(const struct LDKChannelFeatures *NONNULL_PTR a, const struct LDKChannelFeatures *NONNULL_PTR b);
23897
23898 /**
23899  * Checks if two InvoiceFeaturess contain equal inner contents.
23900  * This ignores pointers and is_owned flags and looks at the values in fields.
23901  * Two objects with NULL inner values will be considered "equal" here.
23902  */
23903 bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
23904
23905 /**
23906  * Checks if two ChannelTypeFeaturess contain equal inner contents.
23907  * This ignores pointers and is_owned flags and looks at the values in fields.
23908  * Two objects with NULL inner values will be considered "equal" here.
23909  */
23910 bool ChannelTypeFeatures_eq(const struct LDKChannelTypeFeatures *NONNULL_PTR a, const struct LDKChannelTypeFeatures *NONNULL_PTR b);
23911
23912 /**
23913  * Creates a copy of the InitFeatures
23914  */
23915 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
23916
23917 /**
23918  * Creates a copy of the NodeFeatures
23919  */
23920 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
23921
23922 /**
23923  * Creates a copy of the ChannelFeatures
23924  */
23925 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
23926
23927 /**
23928  * Creates a copy of the InvoiceFeatures
23929  */
23930 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
23931
23932 /**
23933  * Creates a copy of the ChannelTypeFeatures
23934  */
23935 struct LDKChannelTypeFeatures ChannelTypeFeatures_clone(const struct LDKChannelTypeFeatures *NONNULL_PTR orig);
23936
23937 /**
23938  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
23939  */
23940 void InitFeatures_free(struct LDKInitFeatures this_obj);
23941
23942 /**
23943  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
23944  */
23945 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
23946
23947 /**
23948  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
23949  */
23950 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
23951
23952 /**
23953  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
23954  */
23955 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
23956
23957 /**
23958  * Frees any resources used by the ChannelTypeFeatures, if is_owned is set and inner is non-NULL.
23959  */
23960 void ChannelTypeFeatures_free(struct LDKChannelTypeFeatures this_obj);
23961
23962 /**
23963  * Create a blank Features with no features set
23964  */
23965 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
23966
23967 /**
23968  * Creates a Features with the bits set which are known by the implementation
23969  */
23970 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
23971
23972 /**
23973  * Returns true if this `Features` object contains unknown feature flags which are set as
23974  * \"required\".
23975  */
23976 MUST_USE_RES bool InitFeatures_requires_unknown_bits(const struct LDKInitFeatures *NONNULL_PTR this_arg);
23977
23978 /**
23979  * Create a blank Features with no features set
23980  */
23981 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
23982
23983 /**
23984  * Creates a Features with the bits set which are known by the implementation
23985  */
23986 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
23987
23988 /**
23989  * Returns true if this `Features` object contains unknown feature flags which are set as
23990  * \"required\".
23991  */
23992 MUST_USE_RES bool NodeFeatures_requires_unknown_bits(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
23993
23994 /**
23995  * Create a blank Features with no features set
23996  */
23997 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
23998
23999 /**
24000  * Creates a Features with the bits set which are known by the implementation
24001  */
24002 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
24003
24004 /**
24005  * Returns true if this `Features` object contains unknown feature flags which are set as
24006  * \"required\".
24007  */
24008 MUST_USE_RES bool ChannelFeatures_requires_unknown_bits(const struct LDKChannelFeatures *NONNULL_PTR this_arg);
24009
24010 /**
24011  * Create a blank Features with no features set
24012  */
24013 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
24014
24015 /**
24016  * Creates a Features with the bits set which are known by the implementation
24017  */
24018 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
24019
24020 /**
24021  * Returns true if this `Features` object contains unknown feature flags which are set as
24022  * \"required\".
24023  */
24024 MUST_USE_RES bool InvoiceFeatures_requires_unknown_bits(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
24025
24026 /**
24027  * Create a blank Features with no features set
24028  */
24029 MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_empty(void);
24030
24031 /**
24032  * Creates a Features with the bits set which are known by the implementation
24033  */
24034 MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_known(void);
24035
24036 /**
24037  * Returns true if this `Features` object contains unknown feature flags which are set as
24038  * \"required\".
24039  */
24040 MUST_USE_RES bool ChannelTypeFeatures_requires_unknown_bits(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
24041
24042 /**
24043  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
24044  */
24045 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
24046
24047 /**
24048  * Read a InitFeatures from a byte array, created by InitFeatures_write
24049  */
24050 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
24051
24052 /**
24053  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
24054  */
24055 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
24056
24057 /**
24058  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
24059  */
24060 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
24061
24062 /**
24063  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
24064  */
24065 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
24066
24067 /**
24068  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
24069  */
24070 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
24071
24072 /**
24073  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
24074  */
24075 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
24076
24077 /**
24078  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
24079  */
24080 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
24081
24082 /**
24083  * Serialize the ChannelTypeFeatures object into a byte array which can be read by ChannelTypeFeatures_read
24084  */
24085 struct LDKCVec_u8Z ChannelTypeFeatures_write(const struct LDKChannelTypeFeatures *NONNULL_PTR obj);
24086
24087 /**
24088  * Read a ChannelTypeFeatures from a byte array, created by ChannelTypeFeatures_write
24089  */
24090 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ ChannelTypeFeatures_read(struct LDKu8slice ser);
24091
24092 /**
24093  * Frees any resources used by the ShutdownScript, if is_owned is set and inner is non-NULL.
24094  */
24095 void ShutdownScript_free(struct LDKShutdownScript this_obj);
24096
24097 /**
24098  * Creates a copy of the ShutdownScript
24099  */
24100 struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
24101
24102 /**
24103  * Frees any resources used by the InvalidShutdownScript, if is_owned is set and inner is non-NULL.
24104  */
24105 void InvalidShutdownScript_free(struct LDKInvalidShutdownScript this_obj);
24106
24107 /**
24108  * The script that did not meet the requirements from [BOLT #2].
24109  *
24110  * [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md
24111  */
24112 struct LDKu8slice InvalidShutdownScript_get_script(const struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr);
24113
24114 /**
24115  * The script that did not meet the requirements from [BOLT #2].
24116  *
24117  * [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md
24118  */
24119 void InvalidShutdownScript_set_script(struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
24120
24121 /**
24122  * Constructs a new InvalidShutdownScript given each field
24123  */
24124 MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
24125
24126 /**
24127  * Creates a copy of the InvalidShutdownScript
24128  */
24129 struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
24130
24131 /**
24132  * Serialize the ShutdownScript object into a byte array which can be read by ShutdownScript_read
24133  */
24134 struct LDKCVec_u8Z ShutdownScript_write(const struct LDKShutdownScript *NONNULL_PTR obj);
24135
24136 /**
24137  * Read a ShutdownScript from a byte array, created by ShutdownScript_write
24138  */
24139 struct LDKCResult_ShutdownScriptDecodeErrorZ ShutdownScript_read(struct LDKu8slice ser);
24140
24141 /**
24142  * Generates a P2WPKH script pubkey from the given [`WPubkeyHash`].
24143  */
24144 MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wpkh(const uint8_t (*pubkey_hash)[20]);
24145
24146 /**
24147  * Generates a P2WSH script pubkey from the given [`WScriptHash`].
24148  */
24149 MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wsh(const uint8_t (*script_hash)[32]);
24150
24151 /**
24152  * Generates a witness script pubkey from the given segwit version and program.
24153  *
24154  * Note for version-zero witness scripts you must use [`ShutdownScript::new_p2wpkh`] or
24155  * [`ShutdownScript::new_p2wsh`] instead.
24156  *
24157  * # Errors
24158  *
24159  * This function may return an error if `program` is invalid for the segwit `version`.
24160  */
24161 MUST_USE_RES struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ ShutdownScript_new_witness_program(uint8_t version, struct LDKu8slice program);
24162
24163 /**
24164  * Converts the shutdown script into the underlying [`Script`].
24165  */
24166 MUST_USE_RES struct LDKCVec_u8Z ShutdownScript_into_inner(struct LDKShutdownScript this_arg);
24167
24168 /**
24169  * Returns the [`PublicKey`] used for a P2WPKH shutdown script if constructed directly from it.
24170  *
24171  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24172  */
24173 MUST_USE_RES struct LDKPublicKey ShutdownScript_as_legacy_pubkey(const struct LDKShutdownScript *NONNULL_PTR this_arg);
24174
24175 /**
24176  * Returns whether the shutdown script is compatible with the features as defined by BOLT #2.
24177  *
24178  * Specifically, checks for compliance with feature `option_shutdown_anysegwit`.
24179  */
24180 MUST_USE_RES bool ShutdownScript_is_compatible(const struct LDKShutdownScript *NONNULL_PTR this_arg, const struct LDKInitFeatures *NONNULL_PTR features);
24181
24182 /**
24183  * Calls the free function if one is set
24184  */
24185 void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
24186
24187 /**
24188  * Calls the free function if one is set
24189  */
24190 void Type_free(struct LDKType this_ptr);
24191
24192 /**
24193  * Frees any resources used by the NodeId, if is_owned is set and inner is non-NULL.
24194  */
24195 void NodeId_free(struct LDKNodeId this_obj);
24196
24197 /**
24198  * Creates a copy of the NodeId
24199  */
24200 struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
24201
24202 /**
24203  * Create a new NodeId from a public key
24204  */
24205 MUST_USE_RES struct LDKNodeId NodeId_from_pubkey(struct LDKPublicKey pubkey);
24206
24207 /**
24208  * Get the public key slice from this NodeId
24209  */
24210 MUST_USE_RES struct LDKu8slice NodeId_as_slice(const struct LDKNodeId *NONNULL_PTR this_arg);
24211
24212 /**
24213  * Checks if two NodeIds contain equal inner contents.
24214  */
24215 uint64_t NodeId_hash(const struct LDKNodeId *NONNULL_PTR o);
24216
24217 /**
24218  * Serialize the NodeId object into a byte array which can be read by NodeId_read
24219  */
24220 struct LDKCVec_u8Z NodeId_write(const struct LDKNodeId *NONNULL_PTR obj);
24221
24222 /**
24223  * Read a NodeId from a byte array, created by NodeId_write
24224  */
24225 struct LDKCResult_NodeIdDecodeErrorZ NodeId_read(struct LDKu8slice ser);
24226
24227 /**
24228  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
24229  */
24230 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
24231
24232 /**
24233  * Creates a copy of the NetworkGraph
24234  */
24235 struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
24236
24237 /**
24238  * Frees any resources used by the ReadOnlyNetworkGraph, if is_owned is set and inner is non-NULL.
24239  */
24240 void ReadOnlyNetworkGraph_free(struct LDKReadOnlyNetworkGraph this_obj);
24241
24242 /**
24243  * Frees any resources used by the NetworkUpdate
24244  */
24245 void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
24246
24247 /**
24248  * Creates a copy of the NetworkUpdate
24249  */
24250 struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
24251
24252 /**
24253  * Utility method to constructs a new ChannelUpdateMessage-variant NetworkUpdate
24254  */
24255 struct LDKNetworkUpdate NetworkUpdate_channel_update_message(struct LDKChannelUpdate msg);
24256
24257 /**
24258  * Utility method to constructs a new ChannelClosed-variant NetworkUpdate
24259  */
24260 struct LDKNetworkUpdate NetworkUpdate_channel_closed(uint64_t short_channel_id, bool is_permanent);
24261
24262 /**
24263  * Utility method to constructs a new NodeFailure-variant NetworkUpdate
24264  */
24265 struct LDKNetworkUpdate NetworkUpdate_node_failure(struct LDKPublicKey node_id, bool is_permanent);
24266
24267 /**
24268  * Serialize the NetworkUpdate object into a byte array which can be read by NetworkUpdate_read
24269  */
24270 struct LDKCVec_u8Z NetworkUpdate_write(const struct LDKNetworkUpdate *NONNULL_PTR obj);
24271
24272 /**
24273  * Read a NetworkUpdate from a byte array, created by NetworkUpdate_write
24274  */
24275 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ NetworkUpdate_read(struct LDKu8slice ser);
24276
24277 /**
24278  * Constructs a new EventHandler which calls the relevant methods on this_arg.
24279  * This copies the `inner` pointer in this_arg and thus the returned EventHandler must be freed before this_arg is
24280  */
24281 struct LDKEventHandler NetGraphMsgHandler_as_EventHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
24282
24283 /**
24284  * Frees any resources used by the NetGraphMsgHandler, if is_owned is set and inner is non-NULL.
24285  */
24286 void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
24287
24288 /**
24289  * Creates a new tracker of the actual state of the network of channels and nodes,
24290  * assuming an existing Network Graph.
24291  * Chain monitor is used to make sure announced channels exist on-chain,
24292  * channel data is correct, and that the announcement is signed with
24293  * channel owners' keys.
24294  */
24295 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKCOption_AccessZ chain_access, struct LDKLogger logger);
24296
24297 /**
24298  * Adds a provider used to check new announcements. Does not affect
24299  * existing announcements unless they are updated.
24300  * Add, update or remove the provider would replace the current one.
24301  */
24302 void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKCOption_AccessZ chain_access);
24303
24304 /**
24305  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
24306  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
24307  */
24308 struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
24309
24310 /**
24311  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
24312  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
24313  */
24314 struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
24315
24316 /**
24317  * Frees any resources used by the ChannelUpdateInfo, if is_owned is set and inner is non-NULL.
24318  */
24319 void ChannelUpdateInfo_free(struct LDKChannelUpdateInfo this_obj);
24320
24321 /**
24322  * When the last update to the channel direction was issued.
24323  * Value is opaque, as set in the announcement.
24324  */
24325 uint32_t ChannelUpdateInfo_get_last_update(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24326
24327 /**
24328  * When the last update to the channel direction was issued.
24329  * Value is opaque, as set in the announcement.
24330  */
24331 void ChannelUpdateInfo_set_last_update(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint32_t val);
24332
24333 /**
24334  * Whether the channel can be currently used for payments (in this one direction).
24335  */
24336 bool ChannelUpdateInfo_get_enabled(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24337
24338 /**
24339  * Whether the channel can be currently used for payments (in this one direction).
24340  */
24341 void ChannelUpdateInfo_set_enabled(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, bool val);
24342
24343 /**
24344  * The difference in CLTV values that you must have when routing through this channel.
24345  */
24346 uint16_t ChannelUpdateInfo_get_cltv_expiry_delta(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24347
24348 /**
24349  * The difference in CLTV values that you must have when routing through this channel.
24350  */
24351 void ChannelUpdateInfo_set_cltv_expiry_delta(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint16_t val);
24352
24353 /**
24354  * The minimum value, which must be relayed to the next hop via the channel
24355  */
24356 uint64_t ChannelUpdateInfo_get_htlc_minimum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24357
24358 /**
24359  * The minimum value, which must be relayed to the next hop via the channel
24360  */
24361 void ChannelUpdateInfo_set_htlc_minimum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint64_t val);
24362
24363 /**
24364  * The maximum value which may be relayed to the next hop via the channel.
24365  */
24366 struct LDKCOption_u64Z ChannelUpdateInfo_get_htlc_maximum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24367
24368 /**
24369  * The maximum value which may be relayed to the next hop via the channel.
24370  */
24371 void ChannelUpdateInfo_set_htlc_maximum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
24372
24373 /**
24374  * Fees charged when the channel is used for routing
24375  */
24376 struct LDKRoutingFees ChannelUpdateInfo_get_fees(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24377
24378 /**
24379  * Fees charged when the channel is used for routing
24380  */
24381 void ChannelUpdateInfo_set_fees(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
24382
24383 /**
24384  * Most recent update for the channel received from the network
24385  * Mostly redundant with the data we store in fields explicitly.
24386  * Everything else is useful only for sending out for initial routing sync.
24387  * Not stored if contains excess data to prevent DoS.
24388  *
24389  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24390  */
24391 struct LDKChannelUpdate ChannelUpdateInfo_get_last_update_message(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24392
24393 /**
24394  * Most recent update for the channel received from the network
24395  * Mostly redundant with the data we store in fields explicitly.
24396  * Everything else is useful only for sending out for initial routing sync.
24397  * Not stored if contains excess data to prevent DoS.
24398  *
24399  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24400  */
24401 void ChannelUpdateInfo_set_last_update_message(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
24402
24403 /**
24404  * Constructs a new ChannelUpdateInfo given each field
24405  */
24406 MUST_USE_RES struct LDKChannelUpdateInfo ChannelUpdateInfo_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);
24407
24408 /**
24409  * Creates a copy of the ChannelUpdateInfo
24410  */
24411 struct LDKChannelUpdateInfo ChannelUpdateInfo_clone(const struct LDKChannelUpdateInfo *NONNULL_PTR orig);
24412
24413 /**
24414  * Serialize the ChannelUpdateInfo object into a byte array which can be read by ChannelUpdateInfo_read
24415  */
24416 struct LDKCVec_u8Z ChannelUpdateInfo_write(const struct LDKChannelUpdateInfo *NONNULL_PTR obj);
24417
24418 /**
24419  * Read a ChannelUpdateInfo from a byte array, created by ChannelUpdateInfo_write
24420  */
24421 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ ChannelUpdateInfo_read(struct LDKu8slice ser);
24422
24423 /**
24424  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
24425  */
24426 void ChannelInfo_free(struct LDKChannelInfo this_obj);
24427
24428 /**
24429  * Protocol features of a channel communicated during its announcement
24430  */
24431 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24432
24433 /**
24434  * Protocol features of a channel communicated during its announcement
24435  */
24436 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
24437
24438 /**
24439  * Source node of the first direction of a channel
24440  */
24441 struct LDKNodeId ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24442
24443 /**
24444  * Source node of the first direction of a channel
24445  */
24446 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
24447
24448 /**
24449  * Details about the first direction of a channel
24450  *
24451  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24452  */
24453 struct LDKChannelUpdateInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24454
24455 /**
24456  * Details about the first direction of a channel
24457  *
24458  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24459  */
24460 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
24461
24462 /**
24463  * Source node of the second direction of a channel
24464  */
24465 struct LDKNodeId ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24466
24467 /**
24468  * Source node of the second direction of a channel
24469  */
24470 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
24471
24472 /**
24473  * Details about the second direction of a channel
24474  *
24475  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24476  */
24477 struct LDKChannelUpdateInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24478
24479 /**
24480  * Details about the second direction of a channel
24481  *
24482  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24483  */
24484 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
24485
24486 /**
24487  * The channel capacity as seen on-chain, if chain lookup is available.
24488  */
24489 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24490
24491 /**
24492  * The channel capacity as seen on-chain, if chain lookup is available.
24493  */
24494 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
24495
24496 /**
24497  * An initial announcement of the channel
24498  * Mostly redundant with the data we store in fields explicitly.
24499  * Everything else is useful only for sending out for initial routing sync.
24500  * Not stored if contains excess data to prevent DoS.
24501  *
24502  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24503  */
24504 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24505
24506 /**
24507  * An initial announcement of the channel
24508  * Mostly redundant with the data we store in fields explicitly.
24509  * Everything else is useful only for sending out for initial routing sync.
24510  * Not stored if contains excess data to prevent DoS.
24511  *
24512  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24513  */
24514 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
24515
24516 /**
24517  * Creates a copy of the ChannelInfo
24518  */
24519 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
24520
24521 /**
24522  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
24523  */
24524 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
24525
24526 /**
24527  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
24528  */
24529 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
24530
24531 /**
24532  * Frees any resources used by the DirectedChannelInfo, if is_owned is set and inner is non-NULL.
24533  */
24534 void DirectedChannelInfo_free(struct LDKDirectedChannelInfo this_obj);
24535
24536 /**
24537  * Creates a copy of the DirectedChannelInfo
24538  */
24539 struct LDKDirectedChannelInfo DirectedChannelInfo_clone(const struct LDKDirectedChannelInfo *NONNULL_PTR orig);
24540
24541 /**
24542  * Returns information for the channel.
24543  */
24544 MUST_USE_RES struct LDKChannelInfo DirectedChannelInfo_channel(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
24545
24546 /**
24547  * Returns information for the direction.
24548  *
24549  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24550  */
24551 MUST_USE_RES struct LDKChannelUpdateInfo DirectedChannelInfo_direction(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
24552
24553 /**
24554  * Returns the [`EffectiveCapacity`] of the channel in the direction.
24555  *
24556  * This is either the total capacity from the funding transaction, if known, or the
24557  * `htlc_maximum_msat` for the direction as advertised by the gossip network, if known,
24558  * whichever is smaller.
24559  */
24560 MUST_USE_RES struct LDKEffectiveCapacity DirectedChannelInfo_effective_capacity(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
24561
24562 /**
24563  * Frees any resources used by the EffectiveCapacity
24564  */
24565 void EffectiveCapacity_free(struct LDKEffectiveCapacity this_ptr);
24566
24567 /**
24568  * Creates a copy of the EffectiveCapacity
24569  */
24570 struct LDKEffectiveCapacity EffectiveCapacity_clone(const struct LDKEffectiveCapacity *NONNULL_PTR orig);
24571
24572 /**
24573  * Utility method to constructs a new ExactLiquidity-variant EffectiveCapacity
24574  */
24575 struct LDKEffectiveCapacity EffectiveCapacity_exact_liquidity(uint64_t liquidity_msat);
24576
24577 /**
24578  * Utility method to constructs a new MaximumHTLC-variant EffectiveCapacity
24579  */
24580 struct LDKEffectiveCapacity EffectiveCapacity_maximum_htlc(uint64_t amount_msat);
24581
24582 /**
24583  * Utility method to constructs a new Total-variant EffectiveCapacity
24584  */
24585 struct LDKEffectiveCapacity EffectiveCapacity_total(uint64_t capacity_msat);
24586
24587 /**
24588  * Utility method to constructs a new Infinite-variant EffectiveCapacity
24589  */
24590 struct LDKEffectiveCapacity EffectiveCapacity_infinite(void);
24591
24592 /**
24593  * Utility method to constructs a new Unknown-variant EffectiveCapacity
24594  */
24595 struct LDKEffectiveCapacity EffectiveCapacity_unknown(void);
24596
24597 /**
24598  * Returns the effective capacity denominated in millisatoshi.
24599  */
24600 MUST_USE_RES uint64_t EffectiveCapacity_as_msat(const struct LDKEffectiveCapacity *NONNULL_PTR this_arg);
24601
24602 /**
24603  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
24604  */
24605 void RoutingFees_free(struct LDKRoutingFees this_obj);
24606
24607 /**
24608  * Flat routing fee in satoshis
24609  */
24610 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
24611
24612 /**
24613  * Flat routing fee in satoshis
24614  */
24615 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
24616
24617 /**
24618  * Liquidity-based routing fee in millionths of a routed amount.
24619  * In other words, 10000 is 1%.
24620  */
24621 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
24622
24623 /**
24624  * Liquidity-based routing fee in millionths of a routed amount.
24625  * In other words, 10000 is 1%.
24626  */
24627 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
24628
24629 /**
24630  * Constructs a new RoutingFees given each field
24631  */
24632 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
24633
24634 /**
24635  * Checks if two RoutingFeess contain equal inner contents.
24636  * This ignores pointers and is_owned flags and looks at the values in fields.
24637  * Two objects with NULL inner values will be considered "equal" here.
24638  */
24639 bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
24640
24641 /**
24642  * Creates a copy of the RoutingFees
24643  */
24644 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
24645
24646 /**
24647  * Checks if two RoutingFeess contain equal inner contents.
24648  */
24649 uint64_t RoutingFees_hash(const struct LDKRoutingFees *NONNULL_PTR o);
24650
24651 /**
24652  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
24653  */
24654 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
24655
24656 /**
24657  * Read a RoutingFees from a byte array, created by RoutingFees_write
24658  */
24659 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
24660
24661 /**
24662  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
24663  */
24664 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
24665
24666 /**
24667  * Protocol features the node announced support for
24668  */
24669 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
24670
24671 /**
24672  * Protocol features the node announced support for
24673  */
24674 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
24675
24676 /**
24677  * When the last known update to the node state was issued.
24678  * Value is opaque, as set in the announcement.
24679  */
24680 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
24681
24682 /**
24683  * When the last known update to the node state was issued.
24684  * Value is opaque, as set in the announcement.
24685  */
24686 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
24687
24688 /**
24689  * Color assigned to the node
24690  */
24691 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
24692
24693 /**
24694  * Color assigned to the node
24695  */
24696 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
24697
24698 /**
24699  * Moniker assigned to the node.
24700  * May be invalid or malicious (eg control chars),
24701  * should not be exposed to the user.
24702  */
24703 const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
24704
24705 /**
24706  * Moniker assigned to the node.
24707  * May be invalid or malicious (eg control chars),
24708  * should not be exposed to the user.
24709  */
24710 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24711
24712 /**
24713  * Internet-level addresses via which one can connect to the node
24714  */
24715 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
24716
24717 /**
24718  * An initial announcement of the node
24719  * Mostly redundant with the data we store in fields explicitly.
24720  * Everything else is useful only for sending out for initial routing sync.
24721  * Not stored if contains excess data to prevent DoS.
24722  *
24723  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24724  */
24725 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
24726
24727 /**
24728  * An initial announcement of the node
24729  * Mostly redundant with the data we store in fields explicitly.
24730  * Everything else is useful only for sending out for initial routing sync.
24731  * Not stored if contains excess data to prevent DoS.
24732  *
24733  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24734  */
24735 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
24736
24737 /**
24738  * Constructs a new NodeAnnouncementInfo given each field
24739  */
24740 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);
24741
24742 /**
24743  * Creates a copy of the NodeAnnouncementInfo
24744  */
24745 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
24746
24747 /**
24748  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
24749  */
24750 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
24751
24752 /**
24753  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
24754  */
24755 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
24756
24757 /**
24758  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
24759  */
24760 void NodeInfo_free(struct LDKNodeInfo this_obj);
24761
24762 /**
24763  * All valid channels a node has announced
24764  */
24765 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
24766
24767 /**
24768  * Lowest fees enabling routing via any of the enabled, known channels to a node.
24769  * The two fields (flat and proportional fee) are independent,
24770  * meaning they don't have to refer to the same channel.
24771  *
24772  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24773  */
24774 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
24775
24776 /**
24777  * Lowest fees enabling routing via any of the enabled, known channels to a node.
24778  * The two fields (flat and proportional fee) are independent,
24779  * meaning they don't have to refer to the same channel.
24780  *
24781  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24782  */
24783 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
24784
24785 /**
24786  * More information about a node from node_announcement.
24787  * Optional because we store a Node entry after learning about it from
24788  * a channel announcement, but before receiving a node announcement.
24789  *
24790  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24791  */
24792 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
24793
24794 /**
24795  * More information about a node from node_announcement.
24796  * Optional because we store a Node entry after learning about it from
24797  * a channel announcement, but before receiving a node announcement.
24798  *
24799  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24800  */
24801 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
24802
24803 /**
24804  * Constructs a new NodeInfo given each field
24805  */
24806 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
24807
24808 /**
24809  * Creates a copy of the NodeInfo
24810  */
24811 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
24812
24813 /**
24814  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
24815  */
24816 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
24817
24818 /**
24819  * Read a NodeInfo from a byte array, created by NodeInfo_write
24820  */
24821 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
24822
24823 /**
24824  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
24825  */
24826 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
24827
24828 /**
24829  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
24830  */
24831 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
24832
24833 /**
24834  * Creates a new, empty, network graph.
24835  */
24836 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
24837
24838 /**
24839  * Returns a read-only view of the network graph.
24840  */
24841 MUST_USE_RES struct LDKReadOnlyNetworkGraph NetworkGraph_read_only(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
24842
24843 /**
24844  * For an already known node (from channel announcements), update its stored properties from a
24845  * given node announcement.
24846  *
24847  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
24848  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
24849  * routing messages from a source using a protocol other than the lightning P2P protocol.
24850  */
24851 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
24852
24853 /**
24854  * For an already known node (from channel announcements), update its stored properties from a
24855  * given node announcement without verifying the associated signatures. Because we aren't
24856  * given the associated signatures here we cannot relay the node announcement to any of our
24857  * peers.
24858  */
24859 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_unsigned_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR msg);
24860
24861 /**
24862  * Store or update channel info from a channel announcement.
24863  *
24864  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
24865  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
24866  * routing messages from a source using a protocol other than the lightning P2P protocol.
24867  *
24868  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
24869  * the corresponding UTXO exists on chain and is correctly-formatted.
24870  */
24871 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg, struct LDKCOption_AccessZ chain_access);
24872
24873 /**
24874  * Store or update channel info from a channel announcement without verifying the associated
24875  * signatures. Because we aren't given the associated signatures here we cannot relay the
24876  * channel announcement to any of our peers.
24877  *
24878  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
24879  * the corresponding UTXO exists on chain and is correctly-formatted.
24880  */
24881 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_from_unsigned_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg, struct LDKCOption_AccessZ chain_access);
24882
24883 /**
24884  * Close a channel if a corresponding HTLC fail was sent.
24885  * If permanent, removes a channel from the local storage.
24886  * May cause the removal of nodes too, if this was their last channel.
24887  * If not permanent, makes channels unavailable for routing.
24888  */
24889 void NetworkGraph_close_channel_from_update(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
24890
24891 /**
24892  * Marks a node in the graph as failed.
24893  */
24894 void NetworkGraph_fail_node(const struct LDKNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey _node_id, bool is_permanent);
24895
24896 /**
24897  * Removes information about channels that we haven't heard any updates about in some time.
24898  * This can be used regularly to prune the network graph of channels that likely no longer
24899  * exist.
24900  *
24901  * While there is no formal requirement that nodes regularly re-broadcast their channel
24902  * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
24903  * pruning occur for updates which are at least two weeks old, which we implement here.
24904  *
24905  * Note that for users of the `lightning-background-processor` crate this method may be
24906  * automatically called regularly for you.
24907  *
24908  * This method is only available with the `std` feature. See
24909  * [`NetworkGraph::remove_stale_channels_with_time`] for `no-std` use.
24910  */
24911 void NetworkGraph_remove_stale_channels(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
24912
24913 /**
24914  * Removes information about channels that we haven't heard any updates about in some time.
24915  * This can be used regularly to prune the network graph of channels that likely no longer
24916  * exist.
24917  *
24918  * While there is no formal requirement that nodes regularly re-broadcast their channel
24919  * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
24920  * pruning occur for updates which are at least two weeks old, which we implement here.
24921  *
24922  * This function takes the current unix time as an argument. For users with the `std` feature
24923  * enabled, [`NetworkGraph::remove_stale_channels`] may be preferable.
24924  */
24925 void NetworkGraph_remove_stale_channels_with_time(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t current_time_unix);
24926
24927 /**
24928  * For an already known (from announcement) channel, update info about one of the directions
24929  * of the channel.
24930  *
24931  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
24932  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
24933  * routing messages from a source using a protocol other than the lightning P2P protocol.
24934  *
24935  * If built with `no-std`, any updates with a timestamp more than two weeks in the past or
24936  * materially in the future will be rejected.
24937  */
24938 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
24939
24940 /**
24941  * For an already known (from announcement) channel, update info about one of the directions
24942  * of the channel without verifying the associated signatures. Because we aren't given the
24943  * associated signatures here we cannot relay the channel update to any of our peers.
24944  *
24945  * If built with `no-std`, any updates with a timestamp more than two weeks in the past or
24946  * materially in the future will be rejected.
24947  */
24948 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
24949
24950 /**
24951  * Get network addresses by node id.
24952  * Returns None if the requested node is completely unknown,
24953  * or if node announcement for the node was never received.
24954  */
24955 MUST_USE_RES struct LDKCOption_CVec_NetAddressZZ ReadOnlyNetworkGraph_get_addresses(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey pubkey);
24956
24957 /**
24958  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
24959  */
24960 void RouteHop_free(struct LDKRouteHop this_obj);
24961
24962 /**
24963  * The node_id of the node at this hop.
24964  */
24965 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24966
24967 /**
24968  * The node_id of the node at this hop.
24969  */
24970 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24971
24972 /**
24973  * The node_announcement features of the node at this hop. For the last hop, these may be
24974  * amended to match the features present in the invoice this node generated.
24975  */
24976 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24977
24978 /**
24979  * The node_announcement features of the node at this hop. For the last hop, these may be
24980  * amended to match the features present in the invoice this node generated.
24981  */
24982 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
24983
24984 /**
24985  * The channel that should be used from the previous hop to reach this node.
24986  */
24987 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24988
24989 /**
24990  * The channel that should be used from the previous hop to reach this node.
24991  */
24992 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
24993
24994 /**
24995  * The channel_announcement features of the channel that should be used from the previous hop
24996  * to reach this node.
24997  */
24998 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24999
25000 /**
25001  * The channel_announcement features of the channel that should be used from the previous hop
25002  * to reach this node.
25003  */
25004 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
25005
25006 /**
25007  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
25008  * For the last hop, this should be the full value of the payment (might be more than
25009  * requested if we had to match htlc_minimum_msat).
25010  */
25011 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
25012
25013 /**
25014  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
25015  * For the last hop, this should be the full value of the payment (might be more than
25016  * requested if we had to match htlc_minimum_msat).
25017  */
25018 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
25019
25020 /**
25021  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
25022  * expected at the destination, in excess of the current block height.
25023  */
25024 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
25025
25026 /**
25027  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
25028  * expected at the destination, in excess of the current block height.
25029  */
25030 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
25031
25032 /**
25033  * Constructs a new RouteHop given each field
25034  */
25035 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);
25036
25037 /**
25038  * Creates a copy of the RouteHop
25039  */
25040 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
25041
25042 /**
25043  * Checks if two RouteHops contain equal inner contents.
25044  */
25045 uint64_t RouteHop_hash(const struct LDKRouteHop *NONNULL_PTR o);
25046
25047 /**
25048  * Checks if two RouteHops contain equal inner contents.
25049  * This ignores pointers and is_owned flags and looks at the values in fields.
25050  * Two objects with NULL inner values will be considered "equal" here.
25051  */
25052 bool RouteHop_eq(const struct LDKRouteHop *NONNULL_PTR a, const struct LDKRouteHop *NONNULL_PTR b);
25053
25054 /**
25055  * Serialize the RouteHop object into a byte array which can be read by RouteHop_read
25056  */
25057 struct LDKCVec_u8Z RouteHop_write(const struct LDKRouteHop *NONNULL_PTR obj);
25058
25059 /**
25060  * Read a RouteHop from a byte array, created by RouteHop_write
25061  */
25062 struct LDKCResult_RouteHopDecodeErrorZ RouteHop_read(struct LDKu8slice ser);
25063
25064 /**
25065  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
25066  */
25067 void Route_free(struct LDKRoute this_obj);
25068
25069 /**
25070  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
25071  * last RouteHop in each path must be the same.
25072  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
25073  * destination. Thus, this must always be at least length one. While the maximum length of any
25074  * given path is variable, keeping the length of any path to less than 20 should currently
25075  * ensure it is viable.
25076  */
25077 struct LDKCVec_CVec_RouteHopZZ Route_get_paths(const struct LDKRoute *NONNULL_PTR this_ptr);
25078
25079 /**
25080  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
25081  * last RouteHop in each path must be the same.
25082  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
25083  * destination. Thus, this must always be at least length one. While the maximum length of any
25084  * given path is variable, keeping the length of any path to less than 20 should currently
25085  * ensure it is viable.
25086  */
25087 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
25088
25089 /**
25090  * The `payment_params` parameter passed to [`find_route`].
25091  * This is used by `ChannelManager` to track information which may be required for retries,
25092  * provided back to you via [`Event::PaymentPathFailed`].
25093  *
25094  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
25095  *
25096  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
25097  */
25098 struct LDKPaymentParameters Route_get_payment_params(const struct LDKRoute *NONNULL_PTR this_ptr);
25099
25100 /**
25101  * The `payment_params` parameter passed to [`find_route`].
25102  * This is used by `ChannelManager` to track information which may be required for retries,
25103  * provided back to you via [`Event::PaymentPathFailed`].
25104  *
25105  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
25106  *
25107  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
25108  */
25109 void Route_set_payment_params(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
25110
25111 /**
25112  * Constructs a new Route given each field
25113  */
25114 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPaymentParameters payment_params_arg);
25115
25116 /**
25117  * Creates a copy of the Route
25118  */
25119 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
25120
25121 /**
25122  * Checks if two Routes contain equal inner contents.
25123  */
25124 uint64_t Route_hash(const struct LDKRoute *NONNULL_PTR o);
25125
25126 /**
25127  * Checks if two Routes contain equal inner contents.
25128  * This ignores pointers and is_owned flags and looks at the values in fields.
25129  * Two objects with NULL inner values will be considered "equal" here.
25130  */
25131 bool Route_eq(const struct LDKRoute *NONNULL_PTR a, const struct LDKRoute *NONNULL_PTR b);
25132
25133 /**
25134  * Returns the total amount of fees paid on this [`Route`].
25135  *
25136  * This doesn't include any extra payment made to the recipient, which can happen in excess of
25137  * the amount passed to [`find_route`]'s `params.final_value_msat`.
25138  */
25139 MUST_USE_RES uint64_t Route_get_total_fees(const struct LDKRoute *NONNULL_PTR this_arg);
25140
25141 /**
25142  * Returns the total amount paid on this [`Route`], excluding the fees.
25143  */
25144 MUST_USE_RES uint64_t Route_get_total_amount(const struct LDKRoute *NONNULL_PTR this_arg);
25145
25146 /**
25147  * Serialize the Route object into a byte array which can be read by Route_read
25148  */
25149 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
25150
25151 /**
25152  * Read a Route from a byte array, created by Route_write
25153  */
25154 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
25155
25156 /**
25157  * Frees any resources used by the RouteParameters, if is_owned is set and inner is non-NULL.
25158  */
25159 void RouteParameters_free(struct LDKRouteParameters this_obj);
25160
25161 /**
25162  * The parameters of the failed payment path.
25163  */
25164 struct LDKPaymentParameters RouteParameters_get_payment_params(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
25165
25166 /**
25167  * The parameters of the failed payment path.
25168  */
25169 void RouteParameters_set_payment_params(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
25170
25171 /**
25172  * The amount in msats sent on the failed payment path.
25173  */
25174 uint64_t RouteParameters_get_final_value_msat(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
25175
25176 /**
25177  * The amount in msats sent on the failed payment path.
25178  */
25179 void RouteParameters_set_final_value_msat(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint64_t val);
25180
25181 /**
25182  * The CLTV on the final hop of the failed payment path.
25183  */
25184 uint32_t RouteParameters_get_final_cltv_expiry_delta(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
25185
25186 /**
25187  * The CLTV on the final hop of the failed payment path.
25188  */
25189 void RouteParameters_set_final_cltv_expiry_delta(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint32_t val);
25190
25191 /**
25192  * Constructs a new RouteParameters given each field
25193  */
25194 MUST_USE_RES struct LDKRouteParameters RouteParameters_new(struct LDKPaymentParameters payment_params_arg, uint64_t final_value_msat_arg, uint32_t final_cltv_expiry_delta_arg);
25195
25196 /**
25197  * Creates a copy of the RouteParameters
25198  */
25199 struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
25200
25201 /**
25202  * Serialize the RouteParameters object into a byte array which can be read by RouteParameters_read
25203  */
25204 struct LDKCVec_u8Z RouteParameters_write(const struct LDKRouteParameters *NONNULL_PTR obj);
25205
25206 /**
25207  * Read a RouteParameters from a byte array, created by RouteParameters_write
25208  */
25209 struct LDKCResult_RouteParametersDecodeErrorZ RouteParameters_read(struct LDKu8slice ser);
25210
25211 /**
25212  * Frees any resources used by the PaymentParameters, if is_owned is set and inner is non-NULL.
25213  */
25214 void PaymentParameters_free(struct LDKPaymentParameters this_obj);
25215
25216 /**
25217  * The node id of the payee.
25218  */
25219 struct LDKPublicKey PaymentParameters_get_payee_pubkey(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
25220
25221 /**
25222  * The node id of the payee.
25223  */
25224 void PaymentParameters_set_payee_pubkey(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25225
25226 /**
25227  * Features supported by the payee.
25228  *
25229  * May be set from the payee's invoice or via [`for_keysend`]. May be `None` if the invoice
25230  * does not contain any features.
25231  *
25232  * [`for_keysend`]: Self::for_keysend
25233  *
25234  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
25235  */
25236 struct LDKInvoiceFeatures PaymentParameters_get_features(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
25237
25238 /**
25239  * Features supported by the payee.
25240  *
25241  * May be set from the payee's invoice or via [`for_keysend`]. May be `None` if the invoice
25242  * does not contain any features.
25243  *
25244  * [`for_keysend`]: Self::for_keysend
25245  *
25246  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
25247  */
25248 void PaymentParameters_set_features(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
25249
25250 /**
25251  * Hints for routing to the payee, containing channels connecting the payee to public nodes.
25252  */
25253 struct LDKCVec_RouteHintZ PaymentParameters_get_route_hints(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
25254
25255 /**
25256  * Hints for routing to the payee, containing channels connecting the payee to public nodes.
25257  */
25258 void PaymentParameters_set_route_hints(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
25259
25260 /**
25261  * Expiration of a payment to the payee, in seconds relative to the UNIX epoch.
25262  */
25263 struct LDKCOption_u64Z PaymentParameters_get_expiry_time(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
25264
25265 /**
25266  * Expiration of a payment to the payee, in seconds relative to the UNIX epoch.
25267  */
25268 void PaymentParameters_set_expiry_time(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
25269
25270 /**
25271  * The maximum total CLTV delta we accept for the route.
25272  */
25273 uint32_t PaymentParameters_get_max_total_cltv_expiry_delta(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
25274
25275 /**
25276  * The maximum total CLTV delta we accept for the route.
25277  */
25278 void PaymentParameters_set_max_total_cltv_expiry_delta(struct LDKPaymentParameters *NONNULL_PTR this_ptr, uint32_t val);
25279
25280 /**
25281  * Constructs a new PaymentParameters given each field
25282  */
25283 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_new(struct LDKPublicKey payee_pubkey_arg, struct LDKInvoiceFeatures features_arg, struct LDKCVec_RouteHintZ route_hints_arg, struct LDKCOption_u64Z expiry_time_arg, uint32_t max_total_cltv_expiry_delta_arg);
25284
25285 /**
25286  * Creates a copy of the PaymentParameters
25287  */
25288 struct LDKPaymentParameters PaymentParameters_clone(const struct LDKPaymentParameters *NONNULL_PTR orig);
25289
25290 /**
25291  * Checks if two PaymentParameterss contain equal inner contents.
25292  */
25293 uint64_t PaymentParameters_hash(const struct LDKPaymentParameters *NONNULL_PTR o);
25294
25295 /**
25296  * Checks if two PaymentParameterss contain equal inner contents.
25297  * This ignores pointers and is_owned flags and looks at the values in fields.
25298  * Two objects with NULL inner values will be considered "equal" here.
25299  */
25300 bool PaymentParameters_eq(const struct LDKPaymentParameters *NONNULL_PTR a, const struct LDKPaymentParameters *NONNULL_PTR b);
25301
25302 /**
25303  * Serialize the PaymentParameters object into a byte array which can be read by PaymentParameters_read
25304  */
25305 struct LDKCVec_u8Z PaymentParameters_write(const struct LDKPaymentParameters *NONNULL_PTR obj);
25306
25307 /**
25308  * Read a PaymentParameters from a byte array, created by PaymentParameters_write
25309  */
25310 struct LDKCResult_PaymentParametersDecodeErrorZ PaymentParameters_read(struct LDKu8slice ser);
25311
25312 /**
25313  * Creates a payee with the node id of the given `pubkey`.
25314  */
25315 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_from_node_id(struct LDKPublicKey payee_pubkey);
25316
25317 /**
25318  * Creates a payee with the node id of the given `pubkey` to use for keysend payments.
25319  */
25320 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_for_keysend(struct LDKPublicKey payee_pubkey);
25321
25322 /**
25323  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
25324  */
25325 void RouteHint_free(struct LDKRouteHint this_obj);
25326
25327 struct LDKCVec_RouteHintHopZ RouteHint_get_a(const struct LDKRouteHint *NONNULL_PTR this_ptr);
25328
25329 void RouteHint_set_a(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintHopZ val);
25330
25331 /**
25332  * Constructs a new RouteHint given each field
25333  */
25334 MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
25335
25336 /**
25337  * Creates a copy of the RouteHint
25338  */
25339 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
25340
25341 /**
25342  * Checks if two RouteHints contain equal inner contents.
25343  */
25344 uint64_t RouteHint_hash(const struct LDKRouteHint *NONNULL_PTR o);
25345
25346 /**
25347  * Checks if two RouteHints contain equal inner contents.
25348  * This ignores pointers and is_owned flags and looks at the values in fields.
25349  * Two objects with NULL inner values will be considered "equal" here.
25350  */
25351 bool RouteHint_eq(const struct LDKRouteHint *NONNULL_PTR a, const struct LDKRouteHint *NONNULL_PTR b);
25352
25353 /**
25354  * Serialize the RouteHint object into a byte array which can be read by RouteHint_read
25355  */
25356 struct LDKCVec_u8Z RouteHint_write(const struct LDKRouteHint *NONNULL_PTR obj);
25357
25358 /**
25359  * Read a RouteHint from a byte array, created by RouteHint_write
25360  */
25361 struct LDKCResult_RouteHintDecodeErrorZ RouteHint_read(struct LDKu8slice ser);
25362
25363 /**
25364  * Frees any resources used by the RouteHintHop, if is_owned is set and inner is non-NULL.
25365  */
25366 void RouteHintHop_free(struct LDKRouteHintHop this_obj);
25367
25368 /**
25369  * The node_id of the non-target end of the route
25370  */
25371 struct LDKPublicKey RouteHintHop_get_src_node_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25372
25373 /**
25374  * The node_id of the non-target end of the route
25375  */
25376 void RouteHintHop_set_src_node_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25377
25378 /**
25379  * The short_channel_id of this channel
25380  */
25381 uint64_t RouteHintHop_get_short_channel_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25382
25383 /**
25384  * The short_channel_id of this channel
25385  */
25386 void RouteHintHop_set_short_channel_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint64_t val);
25387
25388 /**
25389  * The fees which must be paid to use this channel
25390  */
25391 struct LDKRoutingFees RouteHintHop_get_fees(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25392
25393 /**
25394  * The fees which must be paid to use this channel
25395  */
25396 void RouteHintHop_set_fees(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
25397
25398 /**
25399  * The difference in CLTV values between this node and the next node.
25400  */
25401 uint16_t RouteHintHop_get_cltv_expiry_delta(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25402
25403 /**
25404  * The difference in CLTV values between this node and the next node.
25405  */
25406 void RouteHintHop_set_cltv_expiry_delta(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint16_t val);
25407
25408 /**
25409  * The minimum value, in msat, which must be relayed to the next hop.
25410  */
25411 struct LDKCOption_u64Z RouteHintHop_get_htlc_minimum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25412
25413 /**
25414  * The minimum value, in msat, which must be relayed to the next hop.
25415  */
25416 void RouteHintHop_set_htlc_minimum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
25417
25418 /**
25419  * The maximum value in msat available for routing with a single HTLC.
25420  */
25421 struct LDKCOption_u64Z RouteHintHop_get_htlc_maximum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25422
25423 /**
25424  * The maximum value in msat available for routing with a single HTLC.
25425  */
25426 void RouteHintHop_set_htlc_maximum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
25427
25428 /**
25429  * Constructs a new RouteHintHop given each field
25430  */
25431 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);
25432
25433 /**
25434  * Creates a copy of the RouteHintHop
25435  */
25436 struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
25437
25438 /**
25439  * Checks if two RouteHintHops contain equal inner contents.
25440  */
25441 uint64_t RouteHintHop_hash(const struct LDKRouteHintHop *NONNULL_PTR o);
25442
25443 /**
25444  * Checks if two RouteHintHops contain equal inner contents.
25445  * This ignores pointers and is_owned flags and looks at the values in fields.
25446  * Two objects with NULL inner values will be considered "equal" here.
25447  */
25448 bool RouteHintHop_eq(const struct LDKRouteHintHop *NONNULL_PTR a, const struct LDKRouteHintHop *NONNULL_PTR b);
25449
25450 /**
25451  * Serialize the RouteHintHop object into a byte array which can be read by RouteHintHop_read
25452  */
25453 struct LDKCVec_u8Z RouteHintHop_write(const struct LDKRouteHintHop *NONNULL_PTR obj);
25454
25455 /**
25456  * Read a RouteHintHop from a byte array, created by RouteHintHop_write
25457  */
25458 struct LDKCResult_RouteHintHopDecodeErrorZ RouteHintHop_read(struct LDKu8slice ser);
25459
25460 /**
25461  * Finds a route from us (payer) to the given target node (payee).
25462  *
25463  * If the payee provided features in their invoice, they should be provided via `params.payee`.
25464  * Without this, MPP will only be used if the payee's features are available in the network graph.
25465  *
25466  * Private routing paths between a public node and the target may be included in `params.payee`.
25467  *
25468  * If some channels aren't announced, it may be useful to fill in `first_hops` with the results
25469  * from [`ChannelManager::list_usable_channels`]. If it is filled in, the view of our local
25470  * channels from [`NetworkGraph`] will be ignored, and only those in `first_hops` will be used.
25471  *
25472  * The fees on channels from us to the next hop are ignored as they are assumed to all be equal.
25473  * However, the enabled/disabled bit on such channels as well as the `htlc_minimum_msat` /
25474  * `htlc_maximum_msat` *are* checked as they may change based on the receiving node.
25475  *
25476  * # Note
25477  *
25478  * May be used to re-compute a [`Route`] when handling a [`Event::PaymentPathFailed`]. Any
25479  * adjustments to the [`NetworkGraph`] and channel scores should be made prior to calling this
25480  * function.
25481  *
25482  * # Panics
25483  *
25484  * Panics if first_hops contains channels without short_channel_ids;
25485  * [`ChannelManager::list_usable_channels`] will never include such channels.
25486  *
25487  * [`ChannelManager::list_usable_channels`]: crate::ln::channelmanager::ChannelManager::list_usable_channels
25488  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
25489  *
25490  * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
25491  */
25492 struct LDKCResult_RouteLightningErrorZ find_route(struct LDKPublicKey our_node_pubkey, const struct LDKRouteParameters *NONNULL_PTR route_params, const struct LDKNetworkGraph *NONNULL_PTR network, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKLogger logger, const struct LDKScore *NONNULL_PTR scorer, const uint8_t (*random_seed_bytes)[32]);
25493
25494 /**
25495  * Calls the free function if one is set
25496  */
25497 void Score_free(struct LDKScore this_ptr);
25498
25499 /**
25500  * Calls the free function if one is set
25501  */
25502 void LockableScore_free(struct LDKLockableScore this_ptr);
25503
25504 /**
25505  * Frees any resources used by the MultiThreadedLockableScore, if is_owned is set and inner is non-NULL.
25506  */
25507 void MultiThreadedLockableScore_free(struct LDKMultiThreadedLockableScore this_obj);
25508
25509 /**
25510  * Creates a new [`MultiThreadedLockableScore`] given an underlying [`Score`].
25511  */
25512 MUST_USE_RES struct LDKMultiThreadedLockableScore MultiThreadedLockableScore_new(struct LDKScore score);
25513
25514 /**
25515  * Frees any resources used by the FixedPenaltyScorer, if is_owned is set and inner is non-NULL.
25516  */
25517 void FixedPenaltyScorer_free(struct LDKFixedPenaltyScorer this_obj);
25518
25519 /**
25520  * Creates a copy of the FixedPenaltyScorer
25521  */
25522 struct LDKFixedPenaltyScorer FixedPenaltyScorer_clone(const struct LDKFixedPenaltyScorer *NONNULL_PTR orig);
25523
25524 /**
25525  * Creates a new scorer using `penalty_msat`.
25526  */
25527 MUST_USE_RES struct LDKFixedPenaltyScorer FixedPenaltyScorer_with_penalty(uint64_t penalty_msat);
25528
25529 /**
25530  * Constructs a new Score which calls the relevant methods on this_arg.
25531  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
25532  */
25533 struct LDKScore FixedPenaltyScorer_as_Score(const struct LDKFixedPenaltyScorer *NONNULL_PTR this_arg);
25534
25535 /**
25536  * Serialize the FixedPenaltyScorer object into a byte array which can be read by FixedPenaltyScorer_read
25537  */
25538 struct LDKCVec_u8Z FixedPenaltyScorer_write(const struct LDKFixedPenaltyScorer *NONNULL_PTR obj);
25539
25540 /**
25541  * Read a FixedPenaltyScorer from a byte array, created by FixedPenaltyScorer_write
25542  */
25543 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ FixedPenaltyScorer_read(struct LDKu8slice ser, uint64_t arg);
25544
25545 /**
25546  * Frees any resources used by the Scorer, if is_owned is set and inner is non-NULL.
25547  */
25548 void Scorer_free(struct LDKScorer this_obj);
25549
25550 /**
25551  * Frees any resources used by the ScoringParameters, if is_owned is set and inner is non-NULL.
25552  */
25553 void ScoringParameters_free(struct LDKScoringParameters this_obj);
25554
25555 /**
25556  * A fixed penalty in msats to apply to each channel.
25557  *
25558  * Default value: 500 msat
25559  */
25560 uint64_t ScoringParameters_get_base_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25561
25562 /**
25563  * A fixed penalty in msats to apply to each channel.
25564  *
25565  * Default value: 500 msat
25566  */
25567 void ScoringParameters_set_base_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25568
25569 /**
25570  * A penalty in msats to apply to a channel upon failing to relay a payment.
25571  *
25572  * This accumulates for each failure but may be reduced over time based on
25573  * [`failure_penalty_half_life`] or when successfully routing through a channel.
25574  *
25575  * Default value: 1,024,000 msat
25576  *
25577  * [`failure_penalty_half_life`]: Self::failure_penalty_half_life
25578  */
25579 uint64_t ScoringParameters_get_failure_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25580
25581 /**
25582  * A penalty in msats to apply to a channel upon failing to relay a payment.
25583  *
25584  * This accumulates for each failure but may be reduced over time based on
25585  * [`failure_penalty_half_life`] or when successfully routing through a channel.
25586  *
25587  * Default value: 1,024,000 msat
25588  *
25589  * [`failure_penalty_half_life`]: Self::failure_penalty_half_life
25590  */
25591 void ScoringParameters_set_failure_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25592
25593 /**
25594  * When the amount being sent over a channel is this many 1024ths of the total channel
25595  * capacity, we begin applying [`overuse_penalty_msat_per_1024th`].
25596  *
25597  * Default value: 128 1024ths (i.e. begin penalizing when an HTLC uses 1/8th of a channel)
25598  *
25599  * [`overuse_penalty_msat_per_1024th`]: Self::overuse_penalty_msat_per_1024th
25600  */
25601 uint16_t ScoringParameters_get_overuse_penalty_start_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25602
25603 /**
25604  * When the amount being sent over a channel is this many 1024ths of the total channel
25605  * capacity, we begin applying [`overuse_penalty_msat_per_1024th`].
25606  *
25607  * Default value: 128 1024ths (i.e. begin penalizing when an HTLC uses 1/8th of a channel)
25608  *
25609  * [`overuse_penalty_msat_per_1024th`]: Self::overuse_penalty_msat_per_1024th
25610  */
25611 void ScoringParameters_set_overuse_penalty_start_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint16_t val);
25612
25613 /**
25614  * A penalty applied, per whole 1024ths of the channel capacity which the amount being sent
25615  * over the channel exceeds [`overuse_penalty_start_1024th`] by.
25616  *
25617  * Default value: 20 msat (i.e. 2560 msat penalty to use 1/4th of a channel, 7680 msat penalty
25618  *                to use half a channel, and 12,560 msat penalty to use 3/4ths of a channel)
25619  *
25620  * [`overuse_penalty_start_1024th`]: Self::overuse_penalty_start_1024th
25621  */
25622 uint64_t ScoringParameters_get_overuse_penalty_msat_per_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25623
25624 /**
25625  * A penalty applied, per whole 1024ths of the channel capacity which the amount being sent
25626  * over the channel exceeds [`overuse_penalty_start_1024th`] by.
25627  *
25628  * Default value: 20 msat (i.e. 2560 msat penalty to use 1/4th of a channel, 7680 msat penalty
25629  *                to use half a channel, and 12,560 msat penalty to use 3/4ths of a channel)
25630  *
25631  * [`overuse_penalty_start_1024th`]: Self::overuse_penalty_start_1024th
25632  */
25633 void ScoringParameters_set_overuse_penalty_msat_per_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25634
25635 /**
25636  * The time required to elapse before any accumulated [`failure_penalty_msat`] penalties are
25637  * cut in half.
25638  *
25639  * Successfully routing through a channel will immediately cut the penalty in half as well.
25640  *
25641  * Default value: 1 hour
25642  *
25643  * # Note
25644  *
25645  * When built with the `no-std` feature, time will never elapse. Therefore, this penalty will
25646  * never decay.
25647  *
25648  * [`failure_penalty_msat`]: Self::failure_penalty_msat
25649  */
25650 uint64_t ScoringParameters_get_failure_penalty_half_life(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25651
25652 /**
25653  * The time required to elapse before any accumulated [`failure_penalty_msat`] penalties are
25654  * cut in half.
25655  *
25656  * Successfully routing through a channel will immediately cut the penalty in half as well.
25657  *
25658  * Default value: 1 hour
25659  *
25660  * # Note
25661  *
25662  * When built with the `no-std` feature, time will never elapse. Therefore, this penalty will
25663  * never decay.
25664  *
25665  * [`failure_penalty_msat`]: Self::failure_penalty_msat
25666  */
25667 void ScoringParameters_set_failure_penalty_half_life(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25668
25669 /**
25670  * Constructs a new ScoringParameters given each field
25671  */
25672 MUST_USE_RES struct LDKScoringParameters ScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t failure_penalty_msat_arg, uint16_t overuse_penalty_start_1024th_arg, uint64_t overuse_penalty_msat_per_1024th_arg, uint64_t failure_penalty_half_life_arg);
25673
25674 /**
25675  * Creates a copy of the ScoringParameters
25676  */
25677 struct LDKScoringParameters ScoringParameters_clone(const struct LDKScoringParameters *NONNULL_PTR orig);
25678
25679 /**
25680  * Serialize the ScoringParameters object into a byte array which can be read by ScoringParameters_read
25681  */
25682 struct LDKCVec_u8Z ScoringParameters_write(const struct LDKScoringParameters *NONNULL_PTR obj);
25683
25684 /**
25685  * Read a ScoringParameters from a byte array, created by ScoringParameters_write
25686  */
25687 struct LDKCResult_ScoringParametersDecodeErrorZ ScoringParameters_read(struct LDKu8slice ser);
25688
25689 /**
25690  * Creates a new scorer using the given scoring parameters.
25691  */
25692 MUST_USE_RES struct LDKScorer Scorer_new(struct LDKScoringParameters params);
25693
25694 /**
25695  * Creates a "default" Scorer. See struct and individual field documentaiton for details on which values are used.
25696  */
25697 MUST_USE_RES struct LDKScorer Scorer_default(void);
25698
25699 /**
25700  * Creates a "default" ScoringParameters. See struct and individual field documentaiton for details on which values are used.
25701  */
25702 MUST_USE_RES struct LDKScoringParameters ScoringParameters_default(void);
25703
25704 /**
25705  * Constructs a new Score which calls the relevant methods on this_arg.
25706  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
25707  */
25708 struct LDKScore Scorer_as_Score(const struct LDKScorer *NONNULL_PTR this_arg);
25709
25710 /**
25711  * Serialize the Scorer object into a byte array which can be read by Scorer_read
25712  */
25713 struct LDKCVec_u8Z Scorer_write(const struct LDKScorer *NONNULL_PTR obj);
25714
25715 /**
25716  * Read a Scorer from a byte array, created by Scorer_write
25717  */
25718 struct LDKCResult_ScorerDecodeErrorZ Scorer_read(struct LDKu8slice ser);
25719
25720 /**
25721  * Frees any resources used by the ProbabilisticScorer, if is_owned is set and inner is non-NULL.
25722  */
25723 void ProbabilisticScorer_free(struct LDKProbabilisticScorer this_obj);
25724
25725 /**
25726  * Frees any resources used by the ProbabilisticScoringParameters, if is_owned is set and inner is non-NULL.
25727  */
25728 void ProbabilisticScoringParameters_free(struct LDKProbabilisticScoringParameters this_obj);
25729
25730 /**
25731  * A fixed penalty in msats to apply to each channel.
25732  *
25733  * Default value: 500 msat
25734  */
25735 uint64_t ProbabilisticScoringParameters_get_base_penalty_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
25736
25737 /**
25738  * A fixed penalty in msats to apply to each channel.
25739  *
25740  * Default value: 500 msat
25741  */
25742 void ProbabilisticScoringParameters_set_base_penalty_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25743
25744 /**
25745  * A multiplier used in conjunction with the negative `log10` of the channel's success
25746  * probability for a payment to determine the liquidity penalty.
25747  *
25748  * The penalty is based in part on the knowledge learned from prior successful and unsuccessful
25749  * payments. This knowledge is decayed over time based on [`liquidity_offset_half_life`]. The
25750  * penalty is effectively limited to `2 * liquidity_penalty_multiplier_msat` (corresponding to
25751  * lower bounding the success probability to `0.01`) when the amount falls within the
25752  * uncertainty bounds of the channel liquidity balance. Amounts above the upper bound will
25753  * result in a `u64::max_value` penalty, however.
25754  *
25755  * Default value: 40,000 msat
25756  *
25757  * [`liquidity_offset_half_life`]: Self::liquidity_offset_half_life
25758  */
25759 uint64_t ProbabilisticScoringParameters_get_liquidity_penalty_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
25760
25761 /**
25762  * A multiplier used in conjunction with the negative `log10` of the channel's success
25763  * probability for a payment to determine the liquidity penalty.
25764  *
25765  * The penalty is based in part on the knowledge learned from prior successful and unsuccessful
25766  * payments. This knowledge is decayed over time based on [`liquidity_offset_half_life`]. The
25767  * penalty is effectively limited to `2 * liquidity_penalty_multiplier_msat` (corresponding to
25768  * lower bounding the success probability to `0.01`) when the amount falls within the
25769  * uncertainty bounds of the channel liquidity balance. Amounts above the upper bound will
25770  * result in a `u64::max_value` penalty, however.
25771  *
25772  * Default value: 40,000 msat
25773  *
25774  * [`liquidity_offset_half_life`]: Self::liquidity_offset_half_life
25775  */
25776 void ProbabilisticScoringParameters_set_liquidity_penalty_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25777
25778 /**
25779  * The time required to elapse before any knowledge learned about channel liquidity balances is
25780  * cut in half.
25781  *
25782  * The bounds are defined in terms of offsets and are initially zero. Increasing the offsets
25783  * gives tighter bounds on the channel liquidity balance. Thus, halving the offsets decreases
25784  * the certainty of the channel liquidity balance.
25785  *
25786  * Default value: 1 hour
25787  *
25788  * # Note
25789  *
25790  * When built with the `no-std` feature, time will never elapse. Therefore, the channel
25791  * liquidity knowledge will never decay except when the bounds cross.
25792  */
25793 uint64_t ProbabilisticScoringParameters_get_liquidity_offset_half_life(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
25794
25795 /**
25796  * The time required to elapse before any knowledge learned about channel liquidity balances is
25797  * cut in half.
25798  *
25799  * The bounds are defined in terms of offsets and are initially zero. Increasing the offsets
25800  * gives tighter bounds on the channel liquidity balance. Thus, halving the offsets decreases
25801  * the certainty of the channel liquidity balance.
25802  *
25803  * Default value: 1 hour
25804  *
25805  * # Note
25806  *
25807  * When built with the `no-std` feature, time will never elapse. Therefore, the channel
25808  * liquidity knowledge will never decay except when the bounds cross.
25809  */
25810 void ProbabilisticScoringParameters_set_liquidity_offset_half_life(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25811
25812 /**
25813  * A multiplier used in conjunction with a payment amount and the negative `log10` of the
25814  * channel's success probability for the payment to determine the amount penalty.
25815  *
25816  * The purpose of the amount penalty is to avoid having fees dominate the channel cost (i.e.,
25817  * fees plus penalty) for large payments. The penalty is computed as the product of this
25818  * multiplier and `2^20`ths of the payment amount, weighted by the negative `log10` of the
25819  * success probability.
25820  *
25821  * `-log10(success_probability) * amount_penalty_multiplier_msat * amount_msat / 2^20`
25822  *
25823  * In practice, this means for 0.1 success probability (`-log10(0.1) == 1`) each `2^20`th of
25824  * the amount will result in a penalty of the multiplier. And, as the success probability
25825  * decreases, the negative `log10` weighting will increase dramatically. For higher success
25826  * probabilities, the multiplier will have a decreasing effect as the negative `log10` will
25827  * fall below `1`.
25828  *
25829  * Default value: 256 msat
25830  */
25831 uint64_t ProbabilisticScoringParameters_get_amount_penalty_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
25832
25833 /**
25834  * A multiplier used in conjunction with a payment amount and the negative `log10` of the
25835  * channel's success probability for the payment to determine the amount penalty.
25836  *
25837  * The purpose of the amount penalty is to avoid having fees dominate the channel cost (i.e.,
25838  * fees plus penalty) for large payments. The penalty is computed as the product of this
25839  * multiplier and `2^20`ths of the payment amount, weighted by the negative `log10` of the
25840  * success probability.
25841  *
25842  * `-log10(success_probability) * amount_penalty_multiplier_msat * amount_msat / 2^20`
25843  *
25844  * In practice, this means for 0.1 success probability (`-log10(0.1) == 1`) each `2^20`th of
25845  * the amount will result in a penalty of the multiplier. And, as the success probability
25846  * decreases, the negative `log10` weighting will increase dramatically. For higher success
25847  * probabilities, the multiplier will have a decreasing effect as the negative `log10` will
25848  * fall below `1`.
25849  *
25850  * Default value: 256 msat
25851  */
25852 void ProbabilisticScoringParameters_set_amount_penalty_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25853
25854 /**
25855  * Constructs a new ProbabilisticScoringParameters given each field
25856  */
25857 MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_new(uint64_t base_penalty_msat_arg, uint64_t liquidity_penalty_multiplier_msat_arg, uint64_t liquidity_offset_half_life_arg, uint64_t amount_penalty_multiplier_msat_arg);
25858
25859 /**
25860  * Creates a copy of the ProbabilisticScoringParameters
25861  */
25862 struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_clone(const struct LDKProbabilisticScoringParameters *NONNULL_PTR orig);
25863
25864 /**
25865  * Creates a new scorer using the given scoring parameters for sending payments from a node
25866  * through a network graph.
25867  */
25868 MUST_USE_RES struct LDKProbabilisticScorer ProbabilisticScorer_new(struct LDKProbabilisticScoringParameters params, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
25869
25870 /**
25871  * Creates a "default" ProbabilisticScoringParameters. See struct and individual field documentaiton for details on which values are used.
25872  */
25873 MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_default(void);
25874
25875 /**
25876  * Constructs a new Score which calls the relevant methods on this_arg.
25877  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
25878  */
25879 struct LDKScore ProbabilisticScorer_as_Score(const struct LDKProbabilisticScorer *NONNULL_PTR this_arg);
25880
25881 /**
25882  * Serialize the ProbabilisticScorer object into a byte array which can be read by ProbabilisticScorer_read
25883  */
25884 struct LDKCVec_u8Z ProbabilisticScorer_write(const struct LDKProbabilisticScorer *NONNULL_PTR obj);
25885
25886 /**
25887  * Read a ProbabilisticScorer from a byte array, created by ProbabilisticScorer_write
25888  */
25889 struct LDKCResult_ProbabilisticScorerDecodeErrorZ ProbabilisticScorer_read(struct LDKu8slice ser, struct LDKProbabilisticScoringParameters arg_a, const struct LDKNetworkGraph *NONNULL_PTR arg_b);
25890
25891 /**
25892  * Frees any resources used by the FilesystemPersister, if is_owned is set and inner is non-NULL.
25893  */
25894 void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
25895
25896 /**
25897  * Initialize a new FilesystemPersister and set the path to the individual channels'
25898  * files.
25899  */
25900 MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKStr path_to_channel_data);
25901
25902 /**
25903  * Get the directory which was provided when this persister was initialized.
25904  */
25905 MUST_USE_RES struct LDKStr FilesystemPersister_get_data_dir(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
25906
25907 /**
25908  * Writes the provided `ChannelManager` to the path provided at `FilesystemPersister`
25909  * initialization, within a file called \"manager\".
25910  */
25911 MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_manager(struct LDKStr data_dir, const struct LDKChannelManager *NONNULL_PTR manager);
25912
25913 /**
25914  * Write the provided `NetworkGraph` to the path provided at `FilesystemPersister`
25915  * initialization, within a file called \"network_graph\"
25916  */
25917 MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_network_graph(struct LDKStr data_dir, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
25918
25919 /**
25920  * Read `ChannelMonitor`s from disk.
25921  */
25922 MUST_USE_RES struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ FilesystemPersister_read_channelmonitors(const struct LDKFilesystemPersister *NONNULL_PTR this_arg, struct LDKKeysInterface keys_manager);
25923
25924 /**
25925  * Constructs a new Persist which calls the relevant methods on this_arg.
25926  * This copies the `inner` pointer in this_arg and thus the returned Persist must be freed before this_arg is
25927  */
25928 struct LDKPersist FilesystemPersister_as_Persist(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
25929
25930 /**
25931  * Frees any resources used by the BackgroundProcessor, if is_owned is set and inner is non-NULL.
25932  */
25933 void BackgroundProcessor_free(struct LDKBackgroundProcessor this_obj);
25934
25935 /**
25936  * Calls the free function if one is set
25937  */
25938 void Persister_free(struct LDKPersister this_ptr);
25939
25940 /**
25941  * Start a background thread that takes care of responsibilities enumerated in the [top-level
25942  * documentation].
25943  *
25944  * The thread runs indefinitely unless the object is dropped, [`stop`] is called, or
25945  * [`Persister::persist_manager`] returns an error. In case of an error, the error is retrieved by calling
25946  * either [`join`] or [`stop`].
25947  *
25948  * # Data Persistence
25949  *
25950  * [`Persister::persist_manager`] is responsible for writing out the [`ChannelManager`] to disk, and/or
25951  * uploading to one or more backup services. See [`ChannelManager::write`] for writing out a
25952  * [`ChannelManager`]. See [`FilesystemPersister::persist_manager`] for Rust-Lightning's
25953  * provided implementation.
25954  *
25955  * [`Persister::persist_graph`] is responsible for writing out the [`NetworkGraph`] to disk. See
25956  * [`NetworkGraph::write`] for writing out a [`NetworkGraph`]. See [`FilesystemPersister::persist_network_graph`]
25957  * for Rust-Lightning's provided implementation.
25958  *
25959  * Typically, users should either implement [`Persister::persist_manager`] to never return an
25960  * error or call [`join`] and handle any error that may arise. For the latter case,
25961  * `BackgroundProcessor` must be restarted by calling `start` again after handling the error.
25962  *
25963  * # Event Handling
25964  *
25965  * `event_handler` is responsible for handling events that users should be notified of (e.g.,
25966  * payment failed). [`BackgroundProcessor`] may decorate the given [`EventHandler`] with common
25967  * functionality implemented by other handlers.
25968  * * [`NetGraphMsgHandler`] if given will update the [`NetworkGraph`] based on payment failures.
25969  *
25970  * [top-level documentation]: BackgroundProcessor
25971  * [`join`]: Self::join
25972  * [`stop`]: Self::stop
25973  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
25974  * [`ChannelManager::write`]: lightning::ln::channelmanager::ChannelManager#impl-Writeable
25975  * [`FilesystemPersister::persist_manager`]: lightning_persister::FilesystemPersister::persist_manager
25976  * [`FilesystemPersister::persist_network_graph`]: lightning_persister::FilesystemPersister::persist_network_graph
25977  * [`NetworkGraph`]: lightning::routing::network_graph::NetworkGraph
25978  * [`NetworkGraph::write`]: lightning::routing::network_graph::NetworkGraph#impl-Writeable
25979  *
25980  * Note that net_graph_msg_handler (or a relevant inner pointer) may be NULL or all-0s to represent None
25981  */
25982 MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, struct LDKNetGraphMsgHandler net_graph_msg_handler, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger);
25983
25984 /**
25985  * Join `BackgroundProcessor`'s thread, returning any error that occurred while persisting
25986  * [`ChannelManager`].
25987  *
25988  * # Panics
25989  *
25990  * This function panics if the background thread has panicked such as while persisting or
25991  * handling events.
25992  *
25993  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
25994  */
25995 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_join(struct LDKBackgroundProcessor this_arg);
25996
25997 /**
25998  * Stop `BackgroundProcessor`'s thread, returning any error that occurred while persisting
25999  * [`ChannelManager`].
26000  *
26001  * # Panics
26002  *
26003  * This function panics if the background thread has panicked such as while persisting or
26004  * handling events.
26005  *
26006  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
26007  */
26008 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_stop(struct LDKBackgroundProcessor this_arg);
26009
26010 /**
26011  * Frees any resources used by the ParseError
26012  */
26013 void ParseError_free(struct LDKParseError this_ptr);
26014
26015 /**
26016  * Creates a copy of the ParseError
26017  */
26018 struct LDKParseError ParseError_clone(const struct LDKParseError *NONNULL_PTR orig);
26019
26020 /**
26021  * Utility method to constructs a new Bech32Error-variant ParseError
26022  */
26023 struct LDKParseError ParseError_bech32_error(struct LDKBech32Error a);
26024
26025 /**
26026  * Utility method to constructs a new ParseAmountError-variant ParseError
26027  */
26028 struct LDKParseError ParseError_parse_amount_error(struct LDKError a);
26029
26030 /**
26031  * Utility method to constructs a new MalformedSignature-variant ParseError
26032  */
26033 struct LDKParseError ParseError_malformed_signature(enum LDKSecp256k1Error a);
26034
26035 /**
26036  * Utility method to constructs a new BadPrefix-variant ParseError
26037  */
26038 struct LDKParseError ParseError_bad_prefix(void);
26039
26040 /**
26041  * Utility method to constructs a new UnknownCurrency-variant ParseError
26042  */
26043 struct LDKParseError ParseError_unknown_currency(void);
26044
26045 /**
26046  * Utility method to constructs a new UnknownSiPrefix-variant ParseError
26047  */
26048 struct LDKParseError ParseError_unknown_si_prefix(void);
26049
26050 /**
26051  * Utility method to constructs a new MalformedHRP-variant ParseError
26052  */
26053 struct LDKParseError ParseError_malformed_hrp(void);
26054
26055 /**
26056  * Utility method to constructs a new TooShortDataPart-variant ParseError
26057  */
26058 struct LDKParseError ParseError_too_short_data_part(void);
26059
26060 /**
26061  * Utility method to constructs a new UnexpectedEndOfTaggedFields-variant ParseError
26062  */
26063 struct LDKParseError ParseError_unexpected_end_of_tagged_fields(void);
26064
26065 /**
26066  * Utility method to constructs a new DescriptionDecodeError-variant ParseError
26067  */
26068 struct LDKParseError ParseError_description_decode_error(struct LDKError a);
26069
26070 /**
26071  * Utility method to constructs a new PaddingError-variant ParseError
26072  */
26073 struct LDKParseError ParseError_padding_error(void);
26074
26075 /**
26076  * Utility method to constructs a new IntegerOverflowError-variant ParseError
26077  */
26078 struct LDKParseError ParseError_integer_overflow_error(void);
26079
26080 /**
26081  * Utility method to constructs a new InvalidSegWitProgramLength-variant ParseError
26082  */
26083 struct LDKParseError ParseError_invalid_seg_wit_program_length(void);
26084
26085 /**
26086  * Utility method to constructs a new InvalidPubKeyHashLength-variant ParseError
26087  */
26088 struct LDKParseError ParseError_invalid_pub_key_hash_length(void);
26089
26090 /**
26091  * Utility method to constructs a new InvalidScriptHashLength-variant ParseError
26092  */
26093 struct LDKParseError ParseError_invalid_script_hash_length(void);
26094
26095 /**
26096  * Utility method to constructs a new InvalidRecoveryId-variant ParseError
26097  */
26098 struct LDKParseError ParseError_invalid_recovery_id(void);
26099
26100 /**
26101  * Utility method to constructs a new InvalidSliceLength-variant ParseError
26102  */
26103 struct LDKParseError ParseError_invalid_slice_length(struct LDKStr a);
26104
26105 /**
26106  * Utility method to constructs a new Skip-variant ParseError
26107  */
26108 struct LDKParseError ParseError_skip(void);
26109
26110 /**
26111  * Frees any resources used by the ParseOrSemanticError
26112  */
26113 void ParseOrSemanticError_free(struct LDKParseOrSemanticError this_ptr);
26114
26115 /**
26116  * Creates a copy of the ParseOrSemanticError
26117  */
26118 struct LDKParseOrSemanticError ParseOrSemanticError_clone(const struct LDKParseOrSemanticError *NONNULL_PTR orig);
26119
26120 /**
26121  * Utility method to constructs a new ParseError-variant ParseOrSemanticError
26122  */
26123 struct LDKParseOrSemanticError ParseOrSemanticError_parse_error(struct LDKParseError a);
26124
26125 /**
26126  * Utility method to constructs a new SemanticError-variant ParseOrSemanticError
26127  */
26128 struct LDKParseOrSemanticError ParseOrSemanticError_semantic_error(enum LDKSemanticError a);
26129
26130 /**
26131  * Frees any resources used by the Invoice, if is_owned is set and inner is non-NULL.
26132  */
26133 void Invoice_free(struct LDKInvoice this_obj);
26134
26135 /**
26136  * Checks if two Invoices contain equal inner contents.
26137  * This ignores pointers and is_owned flags and looks at the values in fields.
26138  * Two objects with NULL inner values will be considered "equal" here.
26139  */
26140 bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
26141
26142 /**
26143  * Creates a copy of the Invoice
26144  */
26145 struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
26146
26147 /**
26148  * Frees any resources used by the SignedRawInvoice, if is_owned is set and inner is non-NULL.
26149  */
26150 void SignedRawInvoice_free(struct LDKSignedRawInvoice this_obj);
26151
26152 /**
26153  * Checks if two SignedRawInvoices contain equal inner contents.
26154  * This ignores pointers and is_owned flags and looks at the values in fields.
26155  * Two objects with NULL inner values will be considered "equal" here.
26156  */
26157 bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
26158
26159 /**
26160  * Creates a copy of the SignedRawInvoice
26161  */
26162 struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
26163
26164 /**
26165  * Frees any resources used by the RawInvoice, if is_owned is set and inner is non-NULL.
26166  */
26167 void RawInvoice_free(struct LDKRawInvoice this_obj);
26168
26169 /**
26170  * data part
26171  */
26172 struct LDKRawDataPart RawInvoice_get_data(const struct LDKRawInvoice *NONNULL_PTR this_ptr);
26173
26174 /**
26175  * data part
26176  */
26177 void RawInvoice_set_data(struct LDKRawInvoice *NONNULL_PTR this_ptr, struct LDKRawDataPart val);
26178
26179 /**
26180  * Checks if two RawInvoices contain equal inner contents.
26181  * This ignores pointers and is_owned flags and looks at the values in fields.
26182  * Two objects with NULL inner values will be considered "equal" here.
26183  */
26184 bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
26185
26186 /**
26187  * Creates a copy of the RawInvoice
26188  */
26189 struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
26190
26191 /**
26192  * Frees any resources used by the RawDataPart, if is_owned is set and inner is non-NULL.
26193  */
26194 void RawDataPart_free(struct LDKRawDataPart this_obj);
26195
26196 /**
26197  * generation time of the invoice
26198  */
26199 struct LDKPositiveTimestamp RawDataPart_get_timestamp(const struct LDKRawDataPart *NONNULL_PTR this_ptr);
26200
26201 /**
26202  * generation time of the invoice
26203  */
26204 void RawDataPart_set_timestamp(struct LDKRawDataPart *NONNULL_PTR this_ptr, struct LDKPositiveTimestamp val);
26205
26206 /**
26207  * Checks if two RawDataParts contain equal inner contents.
26208  * This ignores pointers and is_owned flags and looks at the values in fields.
26209  * Two objects with NULL inner values will be considered "equal" here.
26210  */
26211 bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
26212
26213 /**
26214  * Creates a copy of the RawDataPart
26215  */
26216 struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
26217
26218 /**
26219  * Frees any resources used by the PositiveTimestamp, if is_owned is set and inner is non-NULL.
26220  */
26221 void PositiveTimestamp_free(struct LDKPositiveTimestamp this_obj);
26222
26223 /**
26224  * Checks if two PositiveTimestamps contain equal inner contents.
26225  * This ignores pointers and is_owned flags and looks at the values in fields.
26226  * Two objects with NULL inner values will be considered "equal" here.
26227  */
26228 bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
26229
26230 /**
26231  * Creates a copy of the PositiveTimestamp
26232  */
26233 struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
26234
26235 /**
26236  * Creates a copy of the SiPrefix
26237  */
26238 enum LDKSiPrefix SiPrefix_clone(const enum LDKSiPrefix *NONNULL_PTR orig);
26239
26240 /**
26241  * Utility method to constructs a new Milli-variant SiPrefix
26242  */
26243 enum LDKSiPrefix SiPrefix_milli(void);
26244
26245 /**
26246  * Utility method to constructs a new Micro-variant SiPrefix
26247  */
26248 enum LDKSiPrefix SiPrefix_micro(void);
26249
26250 /**
26251  * Utility method to constructs a new Nano-variant SiPrefix
26252  */
26253 enum LDKSiPrefix SiPrefix_nano(void);
26254
26255 /**
26256  * Utility method to constructs a new Pico-variant SiPrefix
26257  */
26258 enum LDKSiPrefix SiPrefix_pico(void);
26259
26260 /**
26261  * Checks if two SiPrefixs contain equal inner contents.
26262  * This ignores pointers and is_owned flags and looks at the values in fields.
26263  */
26264 bool SiPrefix_eq(const enum LDKSiPrefix *NONNULL_PTR a, const enum LDKSiPrefix *NONNULL_PTR b);
26265
26266 /**
26267  * Returns the multiplier to go from a BTC value to picoBTC implied by this SiPrefix.
26268  * This is effectively 10^12 * the prefix multiplier
26269  */
26270 MUST_USE_RES uint64_t SiPrefix_multiplier(const enum LDKSiPrefix *NONNULL_PTR this_arg);
26271
26272 /**
26273  * Creates a copy of the Currency
26274  */
26275 enum LDKCurrency Currency_clone(const enum LDKCurrency *NONNULL_PTR orig);
26276
26277 /**
26278  * Utility method to constructs a new Bitcoin-variant Currency
26279  */
26280 enum LDKCurrency Currency_bitcoin(void);
26281
26282 /**
26283  * Utility method to constructs a new BitcoinTestnet-variant Currency
26284  */
26285 enum LDKCurrency Currency_bitcoin_testnet(void);
26286
26287 /**
26288  * Utility method to constructs a new Regtest-variant Currency
26289  */
26290 enum LDKCurrency Currency_regtest(void);
26291
26292 /**
26293  * Utility method to constructs a new Simnet-variant Currency
26294  */
26295 enum LDKCurrency Currency_simnet(void);
26296
26297 /**
26298  * Utility method to constructs a new Signet-variant Currency
26299  */
26300 enum LDKCurrency Currency_signet(void);
26301
26302 /**
26303  * Checks if two Currencys contain equal inner contents.
26304  */
26305 uint64_t Currency_hash(const enum LDKCurrency *NONNULL_PTR o);
26306
26307 /**
26308  * Checks if two Currencys contain equal inner contents.
26309  * This ignores pointers and is_owned flags and looks at the values in fields.
26310  */
26311 bool Currency_eq(const enum LDKCurrency *NONNULL_PTR a, const enum LDKCurrency *NONNULL_PTR b);
26312
26313 /**
26314  * Frees any resources used by the Sha256, if is_owned is set and inner is non-NULL.
26315  */
26316 void Sha256_free(struct LDKSha256 this_obj);
26317
26318 /**
26319  * Creates a copy of the Sha256
26320  */
26321 struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
26322
26323 /**
26324  * Checks if two Sha256s contain equal inner contents.
26325  */
26326 uint64_t Sha256_hash(const struct LDKSha256 *NONNULL_PTR o);
26327
26328 /**
26329  * Checks if two Sha256s contain equal inner contents.
26330  * This ignores pointers and is_owned flags and looks at the values in fields.
26331  * Two objects with NULL inner values will be considered "equal" here.
26332  */
26333 bool Sha256_eq(const struct LDKSha256 *NONNULL_PTR a, const struct LDKSha256 *NONNULL_PTR b);
26334
26335 /**
26336  * Frees any resources used by the Description, if is_owned is set and inner is non-NULL.
26337  */
26338 void Description_free(struct LDKDescription this_obj);
26339
26340 /**
26341  * Creates a copy of the Description
26342  */
26343 struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
26344
26345 /**
26346  * Checks if two Descriptions contain equal inner contents.
26347  */
26348 uint64_t Description_hash(const struct LDKDescription *NONNULL_PTR o);
26349
26350 /**
26351  * Checks if two Descriptions contain equal inner contents.
26352  * This ignores pointers and is_owned flags and looks at the values in fields.
26353  * Two objects with NULL inner values will be considered "equal" here.
26354  */
26355 bool Description_eq(const struct LDKDescription *NONNULL_PTR a, const struct LDKDescription *NONNULL_PTR b);
26356
26357 /**
26358  * Frees any resources used by the PayeePubKey, if is_owned is set and inner is non-NULL.
26359  */
26360 void PayeePubKey_free(struct LDKPayeePubKey this_obj);
26361
26362 struct LDKPublicKey PayeePubKey_get_a(const struct LDKPayeePubKey *NONNULL_PTR this_ptr);
26363
26364 void PayeePubKey_set_a(struct LDKPayeePubKey *NONNULL_PTR this_ptr, struct LDKPublicKey val);
26365
26366 /**
26367  * Constructs a new PayeePubKey given each field
26368  */
26369 MUST_USE_RES struct LDKPayeePubKey PayeePubKey_new(struct LDKPublicKey a_arg);
26370
26371 /**
26372  * Creates a copy of the PayeePubKey
26373  */
26374 struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
26375
26376 /**
26377  * Checks if two PayeePubKeys contain equal inner contents.
26378  */
26379 uint64_t PayeePubKey_hash(const struct LDKPayeePubKey *NONNULL_PTR o);
26380
26381 /**
26382  * Checks if two PayeePubKeys contain equal inner contents.
26383  * This ignores pointers and is_owned flags and looks at the values in fields.
26384  * Two objects with NULL inner values will be considered "equal" here.
26385  */
26386 bool PayeePubKey_eq(const struct LDKPayeePubKey *NONNULL_PTR a, const struct LDKPayeePubKey *NONNULL_PTR b);
26387
26388 /**
26389  * Frees any resources used by the ExpiryTime, if is_owned is set and inner is non-NULL.
26390  */
26391 void ExpiryTime_free(struct LDKExpiryTime this_obj);
26392
26393 /**
26394  * Creates a copy of the ExpiryTime
26395  */
26396 struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
26397
26398 /**
26399  * Checks if two ExpiryTimes contain equal inner contents.
26400  */
26401 uint64_t ExpiryTime_hash(const struct LDKExpiryTime *NONNULL_PTR o);
26402
26403 /**
26404  * Checks if two ExpiryTimes contain equal inner contents.
26405  * This ignores pointers and is_owned flags and looks at the values in fields.
26406  * Two objects with NULL inner values will be considered "equal" here.
26407  */
26408 bool ExpiryTime_eq(const struct LDKExpiryTime *NONNULL_PTR a, const struct LDKExpiryTime *NONNULL_PTR b);
26409
26410 /**
26411  * Frees any resources used by the MinFinalCltvExpiry, if is_owned is set and inner is non-NULL.
26412  */
26413 void MinFinalCltvExpiry_free(struct LDKMinFinalCltvExpiry this_obj);
26414
26415 uint64_t MinFinalCltvExpiry_get_a(const struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr);
26416
26417 void MinFinalCltvExpiry_set_a(struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr, uint64_t val);
26418
26419 /**
26420  * Constructs a new MinFinalCltvExpiry given each field
26421  */
26422 MUST_USE_RES struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_new(uint64_t a_arg);
26423
26424 /**
26425  * Creates a copy of the MinFinalCltvExpiry
26426  */
26427 struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
26428
26429 /**
26430  * Checks if two MinFinalCltvExpirys contain equal inner contents.
26431  */
26432 uint64_t MinFinalCltvExpiry_hash(const struct LDKMinFinalCltvExpiry *NONNULL_PTR o);
26433
26434 /**
26435  * Checks if two MinFinalCltvExpirys contain equal inner contents.
26436  * This ignores pointers and is_owned flags and looks at the values in fields.
26437  * Two objects with NULL inner values will be considered "equal" here.
26438  */
26439 bool MinFinalCltvExpiry_eq(const struct LDKMinFinalCltvExpiry *NONNULL_PTR a, const struct LDKMinFinalCltvExpiry *NONNULL_PTR b);
26440
26441 /**
26442  * Frees any resources used by the Fallback
26443  */
26444 void Fallback_free(struct LDKFallback this_ptr);
26445
26446 /**
26447  * Creates a copy of the Fallback
26448  */
26449 struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
26450
26451 /**
26452  * Utility method to constructs a new SegWitProgram-variant Fallback
26453  */
26454 struct LDKFallback Fallback_seg_wit_program(struct LDKu5 version, struct LDKCVec_u8Z program);
26455
26456 /**
26457  * Utility method to constructs a new PubKeyHash-variant Fallback
26458  */
26459 struct LDKFallback Fallback_pub_key_hash(struct LDKTwentyBytes a);
26460
26461 /**
26462  * Utility method to constructs a new ScriptHash-variant Fallback
26463  */
26464 struct LDKFallback Fallback_script_hash(struct LDKTwentyBytes a);
26465
26466 /**
26467  * Checks if two Fallbacks contain equal inner contents.
26468  */
26469 uint64_t Fallback_hash(const struct LDKFallback *NONNULL_PTR o);
26470
26471 /**
26472  * Checks if two Fallbacks contain equal inner contents.
26473  * This ignores pointers and is_owned flags and looks at the values in fields.
26474  */
26475 bool Fallback_eq(const struct LDKFallback *NONNULL_PTR a, const struct LDKFallback *NONNULL_PTR b);
26476
26477 /**
26478  * Frees any resources used by the InvoiceSignature, if is_owned is set and inner is non-NULL.
26479  */
26480 void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
26481
26482 /**
26483  * Creates a copy of the InvoiceSignature
26484  */
26485 struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
26486
26487 /**
26488  * Checks if two InvoiceSignatures contain equal inner contents.
26489  * This ignores pointers and is_owned flags and looks at the values in fields.
26490  * Two objects with NULL inner values will be considered "equal" here.
26491  */
26492 bool InvoiceSignature_eq(const struct LDKInvoiceSignature *NONNULL_PTR a, const struct LDKInvoiceSignature *NONNULL_PTR b);
26493
26494 /**
26495  * Frees any resources used by the PrivateRoute, if is_owned is set and inner is non-NULL.
26496  */
26497 void PrivateRoute_free(struct LDKPrivateRoute this_obj);
26498
26499 /**
26500  * Creates a copy of the PrivateRoute
26501  */
26502 struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
26503
26504 /**
26505  * Checks if two PrivateRoutes contain equal inner contents.
26506  */
26507 uint64_t PrivateRoute_hash(const struct LDKPrivateRoute *NONNULL_PTR o);
26508
26509 /**
26510  * Checks if two PrivateRoutes contain equal inner contents.
26511  * This ignores pointers and is_owned flags and looks at the values in fields.
26512  * Two objects with NULL inner values will be considered "equal" here.
26513  */
26514 bool PrivateRoute_eq(const struct LDKPrivateRoute *NONNULL_PTR a, const struct LDKPrivateRoute *NONNULL_PTR b);
26515
26516 /**
26517  * Disassembles the `SignedRawInvoice` into its three parts:
26518  *  1. raw invoice
26519  *  2. hash of the raw invoice
26520  *  3. signature
26521  */
26522 MUST_USE_RES struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ SignedRawInvoice_into_parts(struct LDKSignedRawInvoice this_arg);
26523
26524 /**
26525  * The `RawInvoice` which was signed.
26526  */
26527 MUST_USE_RES struct LDKRawInvoice SignedRawInvoice_raw_invoice(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26528
26529 /**
26530  * The hash of the `RawInvoice` that was signed.
26531  */
26532 MUST_USE_RES const uint8_t (*SignedRawInvoice_hash(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg))[32];
26533
26534 /**
26535  * InvoiceSignature for the invoice.
26536  */
26537 MUST_USE_RES struct LDKInvoiceSignature SignedRawInvoice_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26538
26539 /**
26540  * Recovers the public key used for signing the invoice from the recoverable signature.
26541  */
26542 MUST_USE_RES struct LDKCResult_PayeePubKeyErrorZ SignedRawInvoice_recover_payee_pub_key(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26543
26544 /**
26545  * Checks if the signature is valid for the included payee public key or if none exists if it's
26546  * valid for the recovered signature (which should always be true?).
26547  */
26548 MUST_USE_RES bool SignedRawInvoice_check_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26549
26550 /**
26551  * Calculate the hash of the encoded `RawInvoice`
26552  */
26553 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26554
26555 /**
26556  *
26557  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26558  */
26559 MUST_USE_RES struct LDKSha256 RawInvoice_payment_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26560
26561 /**
26562  *
26563  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26564  */
26565 MUST_USE_RES struct LDKDescription RawInvoice_description(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26566
26567 /**
26568  *
26569  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26570  */
26571 MUST_USE_RES struct LDKPayeePubKey RawInvoice_payee_pub_key(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26572
26573 /**
26574  *
26575  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26576  */
26577 MUST_USE_RES struct LDKSha256 RawInvoice_description_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26578
26579 /**
26580  *
26581  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26582  */
26583 MUST_USE_RES struct LDKExpiryTime RawInvoice_expiry_time(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26584
26585 /**
26586  *
26587  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26588  */
26589 MUST_USE_RES struct LDKMinFinalCltvExpiry RawInvoice_min_final_cltv_expiry(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26590
26591 /**
26592  *
26593  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26594  */
26595 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_payment_secret(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26596
26597 /**
26598  *
26599  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26600  */
26601 MUST_USE_RES struct LDKInvoiceFeatures RawInvoice_features(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26602
26603 MUST_USE_RES struct LDKCVec_PrivateRouteZ RawInvoice_private_routes(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26604
26605 MUST_USE_RES struct LDKCOption_u64Z RawInvoice_amount_pico_btc(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26606
26607 MUST_USE_RES enum LDKCurrency RawInvoice_currency(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26608
26609 /**
26610  * Creates a `PositiveTimestamp` from a Unix timestamp in the range `0..=MAX_TIMESTAMP`.
26611  *
26612  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
26613  */
26614 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_unix_timestamp(uint64_t unix_seconds);
26615
26616 /**
26617  * Creates a `PositiveTimestamp` from a [`SystemTime`] with a corresponding Unix timestamp in
26618  * the range `0..=MAX_TIMESTAMP`.
26619  *
26620  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
26621  */
26622 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_system_time(uint64_t time);
26623
26624 /**
26625  * Creates a `PositiveTimestamp` from a [`Duration`] since the Unix epoch in the range
26626  * `0..=MAX_TIMESTAMP`.
26627  *
26628  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
26629  */
26630 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_duration_since_epoch(uint64_t duration);
26631
26632 /**
26633  * Returns the Unix timestamp representing the stored time
26634  */
26635 MUST_USE_RES uint64_t PositiveTimestamp_as_unix_timestamp(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
26636
26637 /**
26638  * Returns the duration of the stored time since the Unix epoch
26639  */
26640 MUST_USE_RES uint64_t PositiveTimestamp_as_duration_since_epoch(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
26641
26642 /**
26643  * Returns the [`SystemTime`] representing the stored time
26644  */
26645 MUST_USE_RES uint64_t PositiveTimestamp_as_time(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
26646
26647 /**
26648  * Transform the `Invoice` into it's unchecked version
26649  */
26650 MUST_USE_RES struct LDKSignedRawInvoice Invoice_into_signed_raw(struct LDKInvoice this_arg);
26651
26652 /**
26653  * Check that the invoice is signed correctly and that key recovery works
26654  */
26655 MUST_USE_RES struct LDKCResult_NoneSemanticErrorZ Invoice_check_signature(const struct LDKInvoice *NONNULL_PTR this_arg);
26656
26657 /**
26658  * Constructs an `Invoice` from a `SignedRawInvoice` by checking all its invariants.
26659  * ```
26660  * use lightning_invoice::*;
26661  *
26662  * let invoice = \"lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\\
26663  * h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\\
26664  * 5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\\
26665  * h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\\
26666  * j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\\
26667  * ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\\
26668  * guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\\
26669  * ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\\
26670  * p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\\
26671  * 8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\\
26672  * j5r6drg6k6zcqj0fcwg\";
26673  *
26674  * let signed = invoice.parse::<SignedRawInvoice>().unwrap();
26675  *
26676  * assert!(Invoice::from_signed(signed).is_ok());
26677  * ```
26678  */
26679 MUST_USE_RES struct LDKCResult_InvoiceSemanticErrorZ Invoice_from_signed(struct LDKSignedRawInvoice signed_invoice);
26680
26681 /**
26682  * Returns the `Invoice`'s timestamp (should equal its creation time)
26683  */
26684 MUST_USE_RES uint64_t Invoice_timestamp(const struct LDKInvoice *NONNULL_PTR this_arg);
26685
26686 /**
26687  * Returns the `Invoice`'s timestamp as a duration since the Unix epoch
26688  */
26689 MUST_USE_RES uint64_t Invoice_duration_since_epoch(const struct LDKInvoice *NONNULL_PTR this_arg);
26690
26691 /**
26692  * Returns the hash to which we will receive the preimage on completion of the payment
26693  */
26694 MUST_USE_RES const uint8_t (*Invoice_payment_hash(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
26695
26696 /**
26697  * Get the payee's public key if one was included in the invoice
26698  *
26699  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26700  */
26701 MUST_USE_RES struct LDKPublicKey Invoice_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
26702
26703 /**
26704  * Get the payment secret if one was included in the invoice
26705  */
26706 MUST_USE_RES const uint8_t (*Invoice_payment_secret(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
26707
26708 /**
26709  * Get the invoice features if they were included in the invoice
26710  *
26711  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26712  */
26713 MUST_USE_RES struct LDKInvoiceFeatures Invoice_features(const struct LDKInvoice *NONNULL_PTR this_arg);
26714
26715 /**
26716  * Recover the payee's public key (only to be used if none was included in the invoice)
26717  */
26718 MUST_USE_RES struct LDKPublicKey Invoice_recover_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
26719
26720 /**
26721  * Returns the invoice's expiry time, if present, otherwise [`DEFAULT_EXPIRY_TIME`].
26722  */
26723 MUST_USE_RES uint64_t Invoice_expiry_time(const struct LDKInvoice *NONNULL_PTR this_arg);
26724
26725 /**
26726  * Returns whether the invoice has expired.
26727  */
26728 MUST_USE_RES bool Invoice_is_expired(const struct LDKInvoice *NONNULL_PTR this_arg);
26729
26730 /**
26731  * Returns whether the expiry time would pass at the given point in time.
26732  * `at_time` is the timestamp as a duration since the Unix epoch.
26733  */
26734 MUST_USE_RES bool Invoice_would_expire(const struct LDKInvoice *NONNULL_PTR this_arg, uint64_t at_time);
26735
26736 /**
26737  * Returns the invoice's `min_final_cltv_expiry` time, if present, otherwise
26738  * [`DEFAULT_MIN_FINAL_CLTV_EXPIRY`].
26739  */
26740 MUST_USE_RES uint64_t Invoice_min_final_cltv_expiry(const struct LDKInvoice *NONNULL_PTR this_arg);
26741
26742 /**
26743  * Returns a list of all routes included in the invoice
26744  */
26745 MUST_USE_RES struct LDKCVec_PrivateRouteZ Invoice_private_routes(const struct LDKInvoice *NONNULL_PTR this_arg);
26746
26747 /**
26748  * Returns a list of all routes included in the invoice as the underlying hints
26749  */
26750 MUST_USE_RES struct LDKCVec_RouteHintZ Invoice_route_hints(const struct LDKInvoice *NONNULL_PTR this_arg);
26751
26752 /**
26753  * Returns the currency for which the invoice was issued
26754  */
26755 MUST_USE_RES enum LDKCurrency Invoice_currency(const struct LDKInvoice *NONNULL_PTR this_arg);
26756
26757 /**
26758  * Returns the amount if specified in the invoice as millisatoshis.
26759  */
26760 MUST_USE_RES struct LDKCOption_u64Z Invoice_amount_milli_satoshis(const struct LDKInvoice *NONNULL_PTR this_arg);
26761
26762 /**
26763  * Creates a new `Description` if `description` is at most 1023 __bytes__ long,
26764  * returns `CreationError::DescriptionTooLong` otherwise
26765  *
26766  * Please note that single characters may use more than one byte due to UTF8 encoding.
26767  */
26768 MUST_USE_RES struct LDKCResult_DescriptionCreationErrorZ Description_new(struct LDKStr description);
26769
26770 /**
26771  * Returns the underlying description `String`
26772  */
26773 MUST_USE_RES struct LDKStr Description_into_inner(struct LDKDescription this_arg);
26774
26775 /**
26776  * Construct an `ExpiryTime` from seconds.
26777  */
26778 MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_seconds(uint64_t seconds);
26779
26780 /**
26781  * Construct an `ExpiryTime` from a `Duration`.
26782  */
26783 MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_duration(uint64_t duration);
26784
26785 /**
26786  * Returns the expiry time in seconds
26787  */
26788 MUST_USE_RES uint64_t ExpiryTime_as_seconds(const struct LDKExpiryTime *NONNULL_PTR this_arg);
26789
26790 /**
26791  * Returns a reference to the underlying `Duration` (=expiry time)
26792  */
26793 MUST_USE_RES uint64_t ExpiryTime_as_duration(const struct LDKExpiryTime *NONNULL_PTR this_arg);
26794
26795 /**
26796  * Creates a new (partial) route from a list of hops
26797  */
26798 MUST_USE_RES struct LDKCResult_PrivateRouteCreationErrorZ PrivateRoute_new(struct LDKRouteHint hops);
26799
26800 /**
26801  * Returns the underlying list of hops
26802  */
26803 MUST_USE_RES struct LDKRouteHint PrivateRoute_into_inner(struct LDKPrivateRoute this_arg);
26804
26805 /**
26806  * Creates a copy of the CreationError
26807  */
26808 enum LDKCreationError CreationError_clone(const enum LDKCreationError *NONNULL_PTR orig);
26809
26810 /**
26811  * Utility method to constructs a new DescriptionTooLong-variant CreationError
26812  */
26813 enum LDKCreationError CreationError_description_too_long(void);
26814
26815 /**
26816  * Utility method to constructs a new RouteTooLong-variant CreationError
26817  */
26818 enum LDKCreationError CreationError_route_too_long(void);
26819
26820 /**
26821  * Utility method to constructs a new TimestampOutOfBounds-variant CreationError
26822  */
26823 enum LDKCreationError CreationError_timestamp_out_of_bounds(void);
26824
26825 /**
26826  * Utility method to constructs a new InvalidAmount-variant CreationError
26827  */
26828 enum LDKCreationError CreationError_invalid_amount(void);
26829
26830 /**
26831  * Utility method to constructs a new MissingRouteHints-variant CreationError
26832  */
26833 enum LDKCreationError CreationError_missing_route_hints(void);
26834
26835 /**
26836  * Checks if two CreationErrors contain equal inner contents.
26837  * This ignores pointers and is_owned flags and looks at the values in fields.
26838  */
26839 bool CreationError_eq(const enum LDKCreationError *NONNULL_PTR a, const enum LDKCreationError *NONNULL_PTR b);
26840
26841 /**
26842  * Get the string representation of a CreationError object
26843  */
26844 struct LDKStr CreationError_to_str(const enum LDKCreationError *NONNULL_PTR o);
26845
26846 /**
26847  * Creates a copy of the SemanticError
26848  */
26849 enum LDKSemanticError SemanticError_clone(const enum LDKSemanticError *NONNULL_PTR orig);
26850
26851 /**
26852  * Utility method to constructs a new NoPaymentHash-variant SemanticError
26853  */
26854 enum LDKSemanticError SemanticError_no_payment_hash(void);
26855
26856 /**
26857  * Utility method to constructs a new MultiplePaymentHashes-variant SemanticError
26858  */
26859 enum LDKSemanticError SemanticError_multiple_payment_hashes(void);
26860
26861 /**
26862  * Utility method to constructs a new NoDescription-variant SemanticError
26863  */
26864 enum LDKSemanticError SemanticError_no_description(void);
26865
26866 /**
26867  * Utility method to constructs a new MultipleDescriptions-variant SemanticError
26868  */
26869 enum LDKSemanticError SemanticError_multiple_descriptions(void);
26870
26871 /**
26872  * Utility method to constructs a new NoPaymentSecret-variant SemanticError
26873  */
26874 enum LDKSemanticError SemanticError_no_payment_secret(void);
26875
26876 /**
26877  * Utility method to constructs a new MultiplePaymentSecrets-variant SemanticError
26878  */
26879 enum LDKSemanticError SemanticError_multiple_payment_secrets(void);
26880
26881 /**
26882  * Utility method to constructs a new InvalidFeatures-variant SemanticError
26883  */
26884 enum LDKSemanticError SemanticError_invalid_features(void);
26885
26886 /**
26887  * Utility method to constructs a new InvalidRecoveryId-variant SemanticError
26888  */
26889 enum LDKSemanticError SemanticError_invalid_recovery_id(void);
26890
26891 /**
26892  * Utility method to constructs a new InvalidSignature-variant SemanticError
26893  */
26894 enum LDKSemanticError SemanticError_invalid_signature(void);
26895
26896 /**
26897  * Utility method to constructs a new ImpreciseAmount-variant SemanticError
26898  */
26899 enum LDKSemanticError SemanticError_imprecise_amount(void);
26900
26901 /**
26902  * Checks if two SemanticErrors contain equal inner contents.
26903  * This ignores pointers and is_owned flags and looks at the values in fields.
26904  */
26905 bool SemanticError_eq(const enum LDKSemanticError *NONNULL_PTR a, const enum LDKSemanticError *NONNULL_PTR b);
26906
26907 /**
26908  * Get the string representation of a SemanticError object
26909  */
26910 struct LDKStr SemanticError_to_str(const enum LDKSemanticError *NONNULL_PTR o);
26911
26912 /**
26913  * Frees any resources used by the SignOrCreationError
26914  */
26915 void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
26916
26917 /**
26918  * Creates a copy of the SignOrCreationError
26919  */
26920 struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
26921
26922 /**
26923  * Utility method to constructs a new SignError-variant SignOrCreationError
26924  */
26925 struct LDKSignOrCreationError SignOrCreationError_sign_error(void);
26926
26927 /**
26928  * Utility method to constructs a new CreationError-variant SignOrCreationError
26929  */
26930 struct LDKSignOrCreationError SignOrCreationError_creation_error(enum LDKCreationError a);
26931
26932 /**
26933  * Checks if two SignOrCreationErrors contain equal inner contents.
26934  * This ignores pointers and is_owned flags and looks at the values in fields.
26935  */
26936 bool SignOrCreationError_eq(const struct LDKSignOrCreationError *NONNULL_PTR a, const struct LDKSignOrCreationError *NONNULL_PTR b);
26937
26938 /**
26939  * Get the string representation of a SignOrCreationError object
26940  */
26941 struct LDKStr SignOrCreationError_to_str(const struct LDKSignOrCreationError *NONNULL_PTR o);
26942
26943 /**
26944  * Frees any resources used by the InvoicePayer, if is_owned is set and inner is non-NULL.
26945  */
26946 void InvoicePayer_free(struct LDKInvoicePayer this_obj);
26947
26948 /**
26949  * Calls the free function if one is set
26950  */
26951 void Payer_free(struct LDKPayer this_ptr);
26952
26953 /**
26954  * Calls the free function if one is set
26955  */
26956 void Router_free(struct LDKRouter this_ptr);
26957
26958 /**
26959  * Frees any resources used by the RetryAttempts, if is_owned is set and inner is non-NULL.
26960  */
26961 void RetryAttempts_free(struct LDKRetryAttempts this_obj);
26962
26963 uintptr_t RetryAttempts_get_a(const struct LDKRetryAttempts *NONNULL_PTR this_ptr);
26964
26965 void RetryAttempts_set_a(struct LDKRetryAttempts *NONNULL_PTR this_ptr, uintptr_t val);
26966
26967 /**
26968  * Constructs a new RetryAttempts given each field
26969  */
26970 MUST_USE_RES struct LDKRetryAttempts RetryAttempts_new(uintptr_t a_arg);
26971
26972 /**
26973  * Creates a copy of the RetryAttempts
26974  */
26975 struct LDKRetryAttempts RetryAttempts_clone(const struct LDKRetryAttempts *NONNULL_PTR orig);
26976
26977 /**
26978  * Checks if two RetryAttemptss contain equal inner contents.
26979  * This ignores pointers and is_owned flags and looks at the values in fields.
26980  * Two objects with NULL inner values will be considered "equal" here.
26981  */
26982 bool RetryAttempts_eq(const struct LDKRetryAttempts *NONNULL_PTR a, const struct LDKRetryAttempts *NONNULL_PTR b);
26983
26984 /**
26985  * Checks if two RetryAttemptss contain equal inner contents.
26986  */
26987 uint64_t RetryAttempts_hash(const struct LDKRetryAttempts *NONNULL_PTR o);
26988
26989 /**
26990  * Frees any resources used by the PaymentError
26991  */
26992 void PaymentError_free(struct LDKPaymentError this_ptr);
26993
26994 /**
26995  * Creates a copy of the PaymentError
26996  */
26997 struct LDKPaymentError PaymentError_clone(const struct LDKPaymentError *NONNULL_PTR orig);
26998
26999 /**
27000  * Utility method to constructs a new Invoice-variant PaymentError
27001  */
27002 struct LDKPaymentError PaymentError_invoice(struct LDKStr a);
27003
27004 /**
27005  * Utility method to constructs a new Routing-variant PaymentError
27006  */
27007 struct LDKPaymentError PaymentError_routing(struct LDKLightningError a);
27008
27009 /**
27010  * Utility method to constructs a new Sending-variant PaymentError
27011  */
27012 struct LDKPaymentError PaymentError_sending(struct LDKPaymentSendFailure a);
27013
27014 /**
27015  * Creates an invoice payer that retries failed payment paths.
27016  *
27017  * Will forward any [`Event::PaymentPathFailed`] events to the decorated `event_handler` once
27018  * `retry_attempts` has been exceeded for a given [`Invoice`].
27019  */
27020 MUST_USE_RES struct LDKInvoicePayer InvoicePayer_new(struct LDKPayer payer, struct LDKRouter router, const struct LDKMultiThreadedLockableScore *NONNULL_PTR scorer, struct LDKLogger logger, struct LDKEventHandler event_handler, struct LDKRetryAttempts retry_attempts);
27021
27022 /**
27023  * Pays the given [`Invoice`], caching it for later use in case a retry is needed.
27024  *
27025  * You should ensure that the `invoice.payment_hash()` is unique and the same payment_hash has
27026  * never been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so
27027  * for you.
27028  */
27029 MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice);
27030
27031 /**
27032  * Pays the given zero-value [`Invoice`] using the given amount, caching it for later use in
27033  * case a retry is needed.
27034  *
27035  * You should ensure that the `invoice.payment_hash()` is unique and the same payment_hash has
27036  * never been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so
27037  * for you.
27038  */
27039 MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_zero_value_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice, uint64_t amount_msats);
27040
27041 /**
27042  * Pays `pubkey` an amount using the hash of the given preimage, caching it for later use in
27043  * case a retry is needed.
27044  *
27045  * You should ensure that `payment_preimage` is unique and that its `payment_hash` has never
27046  * been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so for you.
27047  */
27048 MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_pubkey(const struct LDKInvoicePayer *NONNULL_PTR this_arg, struct LDKPublicKey pubkey, struct LDKThirtyTwoBytes payment_preimage, uint64_t amount_msats, uint32_t final_cltv_expiry_delta);
27049
27050 /**
27051  * Removes the payment cached by the given payment hash.
27052  *
27053  * Should be called once a payment has failed or succeeded if not using [`InvoicePayer`] as an
27054  * [`EventHandler`]. Otherwise, calling this method is unnecessary.
27055  */
27056 void InvoicePayer_remove_cached_payment(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
27057
27058 /**
27059  * Constructs a new EventHandler which calls the relevant methods on this_arg.
27060  * This copies the `inner` pointer in this_arg and thus the returned EventHandler must be freed before this_arg is
27061  */
27062 struct LDKEventHandler InvoicePayer_as_EventHandler(const struct LDKInvoicePayer *NONNULL_PTR this_arg);
27063
27064 /**
27065  * Utility to create an invoice that can be paid to one of multiple nodes, or a \"phantom invoice.\"
27066  * See [`PhantomKeysManager`] for more information on phantom node payments.
27067  *
27068  * `phantom_route_hints` parameter:
27069  * * Contains channel info for all nodes participating in the phantom invoice
27070  * * Entries are retrieved from a call to [`ChannelManager::get_phantom_route_hints`] on each
27071  *   participating node
27072  * * It is fine to cache `phantom_route_hints` and reuse it across invoices, as long as the data is
27073  *   updated when a channel becomes disabled or closes
27074  * * Note that if too many channels are included in [`PhantomRouteHints::channels`], the invoice
27075  *   may be too long for QR code scanning. To fix this, `PhantomRouteHints::channels` may be pared
27076  *   down
27077  *
27078  * `payment_hash` and `payment_secret` come from [`ChannelManager::create_inbound_payment`] or
27079  * [`ChannelManager::create_inbound_payment_for_hash`]. These values can be retrieved from any
27080  * participating node.
27081  *
27082  * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
27083  * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
27084  * requirement).
27085  *
27086  * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
27087  * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
27088  * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
27089  */
27090 struct LDKCResult_InvoiceSignOrCreationErrorZ create_phantom_invoice(struct LDKCOption_u64Z amt_msat, struct LDKStr description, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret, struct LDKCVec_PhantomRouteHintsZ phantom_route_hints, struct LDKKeysInterface keys_manager, enum LDKCurrency network);
27091
27092 /**
27093  * Utility to create an invoice that can be paid to one of multiple nodes, or a \"phantom invoice.\"
27094  * See [`PhantomKeysManager`] for more information on phantom node payments.
27095  *
27096  * `phantom_route_hints` parameter:
27097  * * Contains channel info for all nodes participating in the phantom invoice
27098  * * Entries are retrieved from a call to [`ChannelManager::get_phantom_route_hints`] on each
27099  *   participating node
27100  * * It is fine to cache `phantom_route_hints` and reuse it across invoices, as long as the data is
27101  *   updated when a channel becomes disabled or closes
27102  * * Note that if too many channels are included in [`PhantomRouteHints::channels`], the invoice
27103  *   may be too long for QR code scanning. To fix this, `PhantomRouteHints::channels` may be pared
27104  *   down
27105  *
27106  * `description_hash` is a SHA-256 hash of the description text
27107  *
27108  * `payment_hash` and `payment_secret` come from [`ChannelManager::create_inbound_payment`] or
27109  * [`ChannelManager::create_inbound_payment_for_hash`]. These values can be retrieved from any
27110  * participating node.
27111  *
27112  * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
27113  * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
27114  * requirement).
27115  *
27116  * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
27117  * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
27118  * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
27119  */
27120 struct LDKCResult_InvoiceSignOrCreationErrorZ create_phantom_invoice_with_description_hash(struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret, struct LDKCVec_PhantomRouteHintsZ phantom_route_hints, struct LDKKeysInterface keys_manager, enum LDKCurrency network);
27121
27122 /**
27123  * Utility to construct an invoice. Generally, unless you want to do something like a custom
27124  * cltv_expiry, this is what you should be using to create an invoice. The reason being, this
27125  * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
27126  * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
27127  * that the payment secret is valid when the invoice is paid.
27128  */
27129 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);
27130
27131 /**
27132  * Utility to construct an invoice. Generally, unless you want to do something like a custom
27133  * cltv_expiry, this is what you should be using to create an invoice. The reason being, this
27134  * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
27135  * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
27136  * that the payment secret is valid when the invoice is paid.
27137  * Use this variant if you want to pass the `description_hash` to the invoice.
27138  */
27139 struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash);
27140
27141 /**
27142  * See [`create_invoice_from_channelmanager_with_description_hash`]
27143  * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
27144  * available and the current time is supplied by the caller.
27145  */
27146 struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash, uint64_t duration_since_epoch);
27147
27148 /**
27149  * See [`create_invoice_from_channelmanager`]
27150  * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
27151  * available and the current time is supplied by the caller.
27152  */
27153 struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_and_duration_since_epoch(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKStr description, uint64_t duration_since_epoch);
27154
27155 /**
27156  * Frees any resources used by the DefaultRouter, if is_owned is set and inner is non-NULL.
27157  */
27158 void DefaultRouter_free(struct LDKDefaultRouter this_obj);
27159
27160 /**
27161  * Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source
27162  * `random_seed_bytes`.
27163  */
27164 MUST_USE_RES struct LDKDefaultRouter DefaultRouter_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger, struct LDKThirtyTwoBytes random_seed_bytes);
27165
27166 /**
27167  * Constructs a new Router which calls the relevant methods on this_arg.
27168  * This copies the `inner` pointer in this_arg and thus the returned Router must be freed before this_arg is
27169  */
27170 struct LDKRouter DefaultRouter_as_Router(const struct LDKDefaultRouter *NONNULL_PTR this_arg);
27171
27172 /**
27173  * Constructs a new Payer which calls the relevant methods on this_arg.
27174  * This copies the `inner` pointer in this_arg and thus the returned Payer must be freed before this_arg is
27175  */
27176 struct LDKPayer ChannelManager_as_Payer(const struct LDKChannelManager *NONNULL_PTR this_arg);
27177
27178 /**
27179  * Read a SiPrefix object from a string
27180  */
27181 struct LDKCResult_SiPrefixParseErrorZ SiPrefix_from_str(struct LDKStr s);
27182
27183 /**
27184  * Read a Invoice object from a string
27185  */
27186 struct LDKCResult_InvoiceParseOrSemanticErrorZ Invoice_from_str(struct LDKStr s);
27187
27188 /**
27189  * Read a SignedRawInvoice object from a string
27190  */
27191 struct LDKCResult_SignedRawInvoiceParseErrorZ SignedRawInvoice_from_str(struct LDKStr s);
27192
27193 /**
27194  * Get the string representation of a ParseError object
27195  */
27196 struct LDKStr ParseError_to_str(const struct LDKParseError *NONNULL_PTR o);
27197
27198 /**
27199  * Get the string representation of a ParseOrSemanticError object
27200  */
27201 struct LDKStr ParseOrSemanticError_to_str(const struct LDKParseOrSemanticError *NONNULL_PTR o);
27202
27203 /**
27204  * Get the string representation of a Invoice object
27205  */
27206 struct LDKStr Invoice_to_str(const struct LDKInvoice *NONNULL_PTR o);
27207
27208 /**
27209  * Get the string representation of a SignedRawInvoice object
27210  */
27211 struct LDKStr SignedRawInvoice_to_str(const struct LDKSignedRawInvoice *NONNULL_PTR o);
27212
27213 /**
27214  * Get the string representation of a Currency object
27215  */
27216 struct LDKStr Currency_to_str(const enum LDKCurrency *NONNULL_PTR o);
27217
27218 /**
27219  * Get the string representation of a SiPrefix object
27220  */
27221 struct LDKStr SiPrefix_to_str(const enum LDKSiPrefix *NONNULL_PTR o);
27222
27223 #endif /* LDK_C_BINDINGS_H */
27224
27225 #include "ldk_ver.h"