Update auto-generated bindings with the ProbabilisticScorer
[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  * An Event which you should probably take some action in response to.
2773  *
2774  * Note that while Writeable and Readable are implemented for Event, you probably shouldn't use
2775  * them directly as they don't round-trip exactly (for example FundingGenerationReady is never
2776  * written as it makes no sense to respond to it after reconnecting to peers).
2777  */
2778 typedef enum LDKEvent_Tag {
2779    /**
2780     * Used to indicate that the client should generate a funding transaction with the given
2781     * parameters and then call [`ChannelManager::funding_transaction_generated`].
2782     * Generated in [`ChannelManager`] message handling.
2783     * Note that *all inputs* in the funding transaction must spend SegWit outputs or your
2784     * counterparty can steal your funds!
2785     *
2786     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2787     * [`ChannelManager::funding_transaction_generated`]: crate::ln::channelmanager::ChannelManager::funding_transaction_generated
2788     */
2789    LDKEvent_FundingGenerationReady,
2790    /**
2791     * Indicates we've received money! Just gotta dig out that payment preimage and feed it to
2792     * [`ChannelManager::claim_funds`] to get it....
2793     * Note that if the preimage is not known, you should call
2794     * [`ChannelManager::fail_htlc_backwards`] to free up resources for this HTLC and avoid
2795     * network congestion.
2796     * If you fail to call either [`ChannelManager::claim_funds`] or
2797     * [`ChannelManager::fail_htlc_backwards`] within the HTLC's timeout, the HTLC will be
2798     * automatically failed.
2799     *
2800     * # Note
2801     * LDK will not stop an inbound payment from being paid multiple times, so multiple
2802     * `PaymentReceived` events may be generated for the same payment.
2803     *
2804     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
2805     * [`ChannelManager::fail_htlc_backwards`]: crate::ln::channelmanager::ChannelManager::fail_htlc_backwards
2806     */
2807    LDKEvent_PaymentReceived,
2808    /**
2809     * Indicates an outbound payment we made succeeded (i.e. it made it all the way to its target
2810     * and we got back the payment preimage for it).
2811     *
2812     * Note for MPP payments: in rare cases, this event may be preceded by a `PaymentPathFailed`
2813     * event. In this situation, you SHOULD treat this payment as having succeeded.
2814     */
2815    LDKEvent_PaymentSent,
2816    /**
2817     * Indicates an outbound HTLC we sent failed. Probably some intermediary node dropped
2818     * something. You may wish to retry with a different route.
2819     *
2820     * Note that this does *not* indicate that all paths for an MPP payment have failed, see
2821     * [`Event::PaymentFailed`] and [`all_paths_failed`].
2822     *
2823     * [`all_paths_failed`]: Self::PaymentPathFailed::all_paths_failed
2824     */
2825    LDKEvent_PaymentPathFailed,
2826    /**
2827     * Indicates an outbound payment failed. Individual [`Event::PaymentPathFailed`] events
2828     * provide failure information for each MPP part in the payment.
2829     *
2830     * This event is provided once there are no further pending HTLCs for the payment and the
2831     * payment is no longer retryable, either due to a several-block timeout or because
2832     * [`ChannelManager::abandon_payment`] was previously called for the corresponding payment.
2833     *
2834     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
2835     */
2836    LDKEvent_PaymentFailed,
2837    /**
2838     * Used to indicate that [`ChannelManager::process_pending_htlc_forwards`] should be called at
2839     * a time in the future.
2840     *
2841     * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
2842     */
2843    LDKEvent_PendingHTLCsForwardable,
2844    /**
2845     * Used to indicate that an output which you should know how to spend was confirmed on chain
2846     * and is now spendable.
2847     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
2848     * counterparty spending them due to some kind of timeout. Thus, you need to store them
2849     * somewhere and spend them when you create on-chain transactions.
2850     */
2851    LDKEvent_SpendableOutputs,
2852    /**
2853     * This event is generated when a payment has been successfully forwarded through us and a
2854     * forwarding fee earned.
2855     */
2856    LDKEvent_PaymentForwarded,
2857    /**
2858     * Used to indicate that a channel with the given `channel_id` is in the process of closure.
2859     */
2860    LDKEvent_ChannelClosed,
2861    /**
2862     * Used to indicate to the user that they can abandon the funding transaction and recycle the
2863     * inputs for another purpose.
2864     */
2865    LDKEvent_DiscardFunding,
2866    /**
2867     * Indicates that a path for an outbound payment was successful.
2868     *
2869     * Always generated after [`Event::PaymentSent`] and thus useful for scoring channels. See
2870     * [`Event::PaymentSent`] for obtaining the payment preimage.
2871     */
2872    LDKEvent_PaymentPathSuccessful,
2873    /**
2874     * Indicates a request to open a new channel by a peer.
2875     *
2876     * To accept the request, call [`ChannelManager::accept_inbound_channel`]. To reject the
2877     * request, call [`ChannelManager::force_close_channel`].
2878     *
2879     * The event is only triggered when a new open channel request is received and the
2880     * [`UserConfig::manually_accept_inbound_channels`] config flag is set to true.
2881     *
2882     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
2883     * [`ChannelManager::force_close_channel`]: crate::ln::channelmanager::ChannelManager::force_close_channel
2884     * [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
2885     */
2886    LDKEvent_OpenChannelRequest,
2887    /**
2888     * Must be last for serialization purposes
2889     */
2890    LDKEvent_Sentinel,
2891 } LDKEvent_Tag;
2892
2893 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
2894    /**
2895     * The random channel_id we picked which you'll need to pass into
2896     * ChannelManager::funding_transaction_generated.
2897     */
2898    struct LDKThirtyTwoBytes temporary_channel_id;
2899    /**
2900     * The value, in satoshis, that the output should have.
2901     */
2902    uint64_t channel_value_satoshis;
2903    /**
2904     * The script which should be used in the transaction output.
2905     */
2906    struct LDKCVec_u8Z output_script;
2907    /**
2908     * The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or 0 for
2909     * an inbound channel.
2910     *
2911     * [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
2912     */
2913    uint64_t user_channel_id;
2914 } LDKEvent_LDKFundingGenerationReady_Body;
2915
2916 typedef struct LDKEvent_LDKPaymentReceived_Body {
2917    /**
2918     * The hash for which the preimage should be handed to the ChannelManager. Note that LDK will
2919     * not stop you from registering duplicate payment hashes for inbound payments.
2920     */
2921    struct LDKThirtyTwoBytes payment_hash;
2922    /**
2923     * The value, in thousandths of a satoshi, that this payment is for.
2924     */
2925    uint64_t amt;
2926    /**
2927     * Information for claiming this received payment, based on whether the purpose of the
2928     * payment is to pay an invoice or to send a spontaneous payment.
2929     */
2930    struct LDKPaymentPurpose purpose;
2931 } LDKEvent_LDKPaymentReceived_Body;
2932
2933 typedef struct LDKEvent_LDKPaymentSent_Body {
2934    /**
2935     * The id returned by [`ChannelManager::send_payment`] and used with
2936     * [`ChannelManager::retry_payment`].
2937     *
2938     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
2939     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
2940     *
2941     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2942     */
2943    struct LDKThirtyTwoBytes payment_id;
2944    /**
2945     * The preimage to the hash given to ChannelManager::send_payment.
2946     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
2947     * store it somehow!
2948     */
2949    struct LDKThirtyTwoBytes payment_preimage;
2950    /**
2951     * The hash that was given to [`ChannelManager::send_payment`].
2952     *
2953     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
2954     */
2955    struct LDKThirtyTwoBytes payment_hash;
2956    /**
2957     * The total fee which was spent at intermediate hops in this payment, across all paths.
2958     *
2959     * Note that, like [`Route::get_total_fees`] this does *not* include any potential
2960     * overpayment to the recipient node.
2961     *
2962     * If the recipient or an intermediate node misbehaves and gives us free money, this may
2963     * overstate the amount paid, though this is unlikely.
2964     *
2965     * [`Route::get_total_fees`]: crate::routing::router::Route::get_total_fees
2966     */
2967    struct LDKCOption_u64Z fee_paid_msat;
2968 } LDKEvent_LDKPaymentSent_Body;
2969
2970 typedef struct LDKEvent_LDKPaymentPathFailed_Body {
2971    /**
2972     * The id returned by [`ChannelManager::send_payment`] and used with
2973     * [`ChannelManager::retry_payment`] and [`ChannelManager::abandon_payment`].
2974     *
2975     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
2976     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
2977     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
2978     *
2979     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2980     */
2981    struct LDKThirtyTwoBytes payment_id;
2982    /**
2983     * The hash that was given to [`ChannelManager::send_payment`].
2984     *
2985     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
2986     */
2987    struct LDKThirtyTwoBytes payment_hash;
2988    /**
2989     * Indicates the payment was rejected for some reason by the recipient. This implies that
2990     * the payment has failed, not just the route in question. If this is not set, you may
2991     * retry the payment via a different route.
2992     */
2993    bool rejected_by_dest;
2994    /**
2995     * Any failure information conveyed via the Onion return packet by a node along the failed
2996     * payment route.
2997     *
2998     * Should be applied to the [`NetworkGraph`] so that routing decisions can take into
2999     * account the update. [`NetGraphMsgHandler`] is capable of doing this.
3000     *
3001     * [`NetworkGraph`]: crate::routing::network_graph::NetworkGraph
3002     * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
3003     */
3004    struct LDKCOption_NetworkUpdateZ network_update;
3005    /**
3006     * For both single-path and multi-path payments, this is set if all paths of the payment have
3007     * failed. This will be set to false if (1) this is an MPP payment and (2) other parts of the
3008     * larger MPP payment were still in flight when this event was generated.
3009     *
3010     * Note that if you are retrying individual MPP parts, using this value to determine if a
3011     * payment has fully failed is race-y. Because multiple failures can happen prior to events
3012     * being processed, you may retry in response to a first failure, with a second failure
3013     * (with `all_paths_failed` set) still pending. Then, when the second failure is processed
3014     * you will see `all_paths_failed` set even though the retry of the first failure still
3015     * has an associated in-flight HTLC. See (1) for an example of such a failure.
3016     *
3017     * If you wish to retry individual MPP parts and learn when a payment has failed, you must
3018     * call [`ChannelManager::abandon_payment`] and wait for a [`Event::PaymentFailed`] event.
3019     *
3020     * (1) <https://github.com/lightningdevkit/rust-lightning/issues/1164>
3021     *
3022     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3023     */
3024    bool all_paths_failed;
3025    /**
3026     * The payment path that failed.
3027     */
3028    struct LDKCVec_RouteHopZ path;
3029    /**
3030     * The channel responsible for the failed payment path.
3031     *
3032     * If this is `Some`, then the corresponding channel should be avoided when the payment is
3033     * retried. May be `None` for older [`Event`] serializations.
3034     */
3035    struct LDKCOption_u64Z short_channel_id;
3036    /**
3037     * Parameters needed to compute a new [`Route`] when retrying the failed payment path.
3038     *
3039     * See [`find_route`] for details.
3040     *
3041     * [`Route`]: crate::routing::router::Route
3042     * [`find_route`]: crate::routing::router::find_route
3043     *
3044     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3045     */
3046    struct LDKRouteParameters retry;
3047 } LDKEvent_LDKPaymentPathFailed_Body;
3048
3049 typedef struct LDKEvent_LDKPaymentFailed_Body {
3050    /**
3051     * The id returned by [`ChannelManager::send_payment`] and used with
3052     * [`ChannelManager::retry_payment`] and [`ChannelManager::abandon_payment`].
3053     *
3054     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3055     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3056     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3057     */
3058    struct LDKThirtyTwoBytes payment_id;
3059    /**
3060     * The hash that was given to [`ChannelManager::send_payment`].
3061     *
3062     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3063     */
3064    struct LDKThirtyTwoBytes payment_hash;
3065 } LDKEvent_LDKPaymentFailed_Body;
3066
3067 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
3068    /**
3069     * The minimum amount of time that should be waited prior to calling
3070     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
3071     * you should wait a random amount of time in roughly the range (now + time_forwardable,
3072     * now + 5*time_forwardable).
3073     */
3074    uint64_t time_forwardable;
3075 } LDKEvent_LDKPendingHTLCsForwardable_Body;
3076
3077 typedef struct LDKEvent_LDKSpendableOutputs_Body {
3078    /**
3079     * The outputs which you should store as spendable by you.
3080     */
3081    struct LDKCVec_SpendableOutputDescriptorZ outputs;
3082 } LDKEvent_LDKSpendableOutputs_Body;
3083
3084 typedef struct LDKEvent_LDKPaymentForwarded_Body {
3085    /**
3086     * The fee, in milli-satoshis, which was earned as a result of the payment.
3087     *
3088     * Note that if we force-closed the channel over which we forwarded an HTLC while the HTLC
3089     * was pending, the amount the next hop claimed will have been rounded down to the nearest
3090     * whole satoshi. Thus, the fee calculated here may be higher than expected as we still
3091     * claimed the full value in millisatoshis from the source. In this case,
3092     * `claim_from_onchain_tx` will be set.
3093     *
3094     * If the channel which sent us the payment has been force-closed, we will claim the funds
3095     * via an on-chain transaction. In that case we do not yet know the on-chain transaction
3096     * fees which we will spend and will instead set this to `None`. It is possible duplicate
3097     * `PaymentForwarded` events are generated for the same payment iff `fee_earned_msat` is
3098     * `None`.
3099     */
3100    struct LDKCOption_u64Z fee_earned_msat;
3101    /**
3102     * If this is `true`, the forwarded HTLC was claimed by our counterparty via an on-chain
3103     * transaction.
3104     */
3105    bool claim_from_onchain_tx;
3106 } LDKEvent_LDKPaymentForwarded_Body;
3107
3108 typedef struct LDKEvent_LDKChannelClosed_Body {
3109    /**
3110     * The channel_id of the channel which has been closed. Note that on-chain transactions
3111     * resolving the channel are likely still awaiting confirmation.
3112     */
3113    struct LDKThirtyTwoBytes channel_id;
3114    /**
3115     * The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or 0 for
3116     * an inbound channel. This will always be zero for objects serialized with LDK versions
3117     * prior to 0.0.102.
3118     *
3119     * [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
3120     */
3121    uint64_t user_channel_id;
3122    /**
3123     * The reason the channel was closed.
3124     */
3125    struct LDKClosureReason reason;
3126 } LDKEvent_LDKChannelClosed_Body;
3127
3128 typedef struct LDKEvent_LDKDiscardFunding_Body {
3129    /**
3130     * The channel_id of the channel which has been closed.
3131     */
3132    struct LDKThirtyTwoBytes channel_id;
3133    /**
3134     * The full transaction received from the user
3135     */
3136    struct LDKTransaction transaction;
3137 } LDKEvent_LDKDiscardFunding_Body;
3138
3139 typedef struct LDKEvent_LDKPaymentPathSuccessful_Body {
3140    /**
3141     * The id returned by [`ChannelManager::send_payment`] and used with
3142     * [`ChannelManager::retry_payment`].
3143     *
3144     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3145     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3146     */
3147    struct LDKThirtyTwoBytes payment_id;
3148    /**
3149     * The hash that was given to [`ChannelManager::send_payment`].
3150     *
3151     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3152     *
3153     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3154     */
3155    struct LDKThirtyTwoBytes payment_hash;
3156    /**
3157     * The payment path that was successful.
3158     *
3159     * May contain a closed channel if the HTLC sent along the path was fulfilled on chain.
3160     */
3161    struct LDKCVec_RouteHopZ path;
3162 } LDKEvent_LDKPaymentPathSuccessful_Body;
3163
3164 typedef struct LDKEvent_LDKOpenChannelRequest_Body {
3165    /**
3166     * The temporary channel ID of the channel requested to be opened.
3167     *
3168     * When responding to the request, the `temporary_channel_id` should be passed
3169     * back to the ChannelManager with [`ChannelManager::accept_inbound_channel`] to accept,
3170     * or to [`ChannelManager::force_close_channel`] to reject.
3171     *
3172     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3173     * [`ChannelManager::force_close_channel`]: crate::ln::channelmanager::ChannelManager::force_close_channel
3174     */
3175    struct LDKThirtyTwoBytes temporary_channel_id;
3176    /**
3177     * The node_id of the counterparty requesting to open the channel.
3178     */
3179    struct LDKPublicKey counterparty_node_id;
3180    /**
3181     * The channel value of the requested channel.
3182     */
3183    uint64_t funding_satoshis;
3184    /**
3185     * Our starting balance in the channel if the request is accepted, in milli-satoshi.
3186     */
3187    uint64_t push_msat;
3188 } LDKEvent_LDKOpenChannelRequest_Body;
3189
3190 typedef struct MUST_USE_STRUCT LDKEvent {
3191    LDKEvent_Tag tag;
3192    union {
3193       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
3194       LDKEvent_LDKPaymentReceived_Body payment_received;
3195       LDKEvent_LDKPaymentSent_Body payment_sent;
3196       LDKEvent_LDKPaymentPathFailed_Body payment_path_failed;
3197       LDKEvent_LDKPaymentFailed_Body payment_failed;
3198       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
3199       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
3200       LDKEvent_LDKPaymentForwarded_Body payment_forwarded;
3201       LDKEvent_LDKChannelClosed_Body channel_closed;
3202       LDKEvent_LDKDiscardFunding_Body discard_funding;
3203       LDKEvent_LDKPaymentPathSuccessful_Body payment_path_successful;
3204       LDKEvent_LDKOpenChannelRequest_Body open_channel_request;
3205    };
3206 } LDKEvent;
3207
3208 /**
3209  * An enum which can either contain a crate::lightning::util::events::Event or not
3210  */
3211 typedef enum LDKCOption_EventZ_Tag {
3212    /**
3213     * When we're in this state, this COption_EventZ contains a crate::lightning::util::events::Event
3214     */
3215    LDKCOption_EventZ_Some,
3216    /**
3217     * When we're in this state, this COption_EventZ contains nothing
3218     */
3219    LDKCOption_EventZ_None,
3220    /**
3221     * Must be last for serialization purposes
3222     */
3223    LDKCOption_EventZ_Sentinel,
3224 } LDKCOption_EventZ_Tag;
3225
3226 typedef struct LDKCOption_EventZ {
3227    LDKCOption_EventZ_Tag tag;
3228    union {
3229       struct {
3230          struct LDKEvent some;
3231       };
3232    };
3233 } LDKCOption_EventZ;
3234
3235 /**
3236  * The contents of CResult_COption_EventZDecodeErrorZ
3237  */
3238 typedef union LDKCResult_COption_EventZDecodeErrorZPtr {
3239    /**
3240     * A pointer to the contents in the success state.
3241     * Reading from this pointer when `result_ok` is not set is undefined.
3242     */
3243    struct LDKCOption_EventZ *result;
3244    /**
3245     * A pointer to the contents in the error state.
3246     * Reading from this pointer when `result_ok` is set is undefined.
3247     */
3248    struct LDKDecodeError *err;
3249 } LDKCResult_COption_EventZDecodeErrorZPtr;
3250
3251 /**
3252  * A CResult_COption_EventZDecodeErrorZ represents the result of a fallible operation,
3253  * containing a crate::c_types::derived::COption_EventZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
3254  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3255  */
3256 typedef struct LDKCResult_COption_EventZDecodeErrorZ {
3257    /**
3258     * The contents of this CResult_COption_EventZDecodeErrorZ, accessible via either
3259     * `err` or `result` depending on the state of `result_ok`.
3260     */
3261    union LDKCResult_COption_EventZDecodeErrorZPtr contents;
3262    /**
3263     * Whether this CResult_COption_EventZDecodeErrorZ represents a success state.
3264     */
3265    bool result_ok;
3266 } LDKCResult_COption_EventZDecodeErrorZ;
3267
3268
3269
3270 /**
3271  * An accept_channel message to be sent or received from a peer
3272  */
3273 typedef struct MUST_USE_STRUCT LDKAcceptChannel {
3274    /**
3275     * A pointer to the opaque Rust object.
3276     * Nearly everywhere, inner must be non-null, however in places where
3277     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3278     */
3279    LDKnativeAcceptChannel *inner;
3280    /**
3281     * Indicates that this is the only struct which contains the same pointer.
3282     * Rust functions which take ownership of an object provided via an argument require
3283     * this to be true and invalidate the object pointed to by inner.
3284     */
3285    bool is_owned;
3286 } LDKAcceptChannel;
3287
3288
3289
3290 /**
3291  * An open_channel message to be sent or received from a peer
3292  */
3293 typedef struct MUST_USE_STRUCT LDKOpenChannel {
3294    /**
3295     * A pointer to the opaque Rust object.
3296     * Nearly everywhere, inner must be non-null, however in places where
3297     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3298     */
3299    LDKnativeOpenChannel *inner;
3300    /**
3301     * Indicates that this is the only struct which contains the same pointer.
3302     * Rust functions which take ownership of an object provided via an argument require
3303     * this to be true and invalidate the object pointed to by inner.
3304     */
3305    bool is_owned;
3306 } LDKOpenChannel;
3307
3308
3309
3310 /**
3311  * A funding_created message to be sent or received from a peer
3312  */
3313 typedef struct MUST_USE_STRUCT LDKFundingCreated {
3314    /**
3315     * A pointer to the opaque Rust object.
3316     * Nearly everywhere, inner must be non-null, however in places where
3317     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3318     */
3319    LDKnativeFundingCreated *inner;
3320    /**
3321     * Indicates that this is the only struct which contains the same pointer.
3322     * Rust functions which take ownership of an object provided via an argument require
3323     * this to be true and invalidate the object pointed to by inner.
3324     */
3325    bool is_owned;
3326 } LDKFundingCreated;
3327
3328
3329
3330 /**
3331  * A funding_signed message to be sent or received from a peer
3332  */
3333 typedef struct MUST_USE_STRUCT LDKFundingSigned {
3334    /**
3335     * A pointer to the opaque Rust object.
3336     * Nearly everywhere, inner must be non-null, however in places where
3337     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3338     */
3339    LDKnativeFundingSigned *inner;
3340    /**
3341     * Indicates that this is the only struct which contains the same pointer.
3342     * Rust functions which take ownership of an object provided via an argument require
3343     * this to be true and invalidate the object pointed to by inner.
3344     */
3345    bool is_owned;
3346 } LDKFundingSigned;
3347
3348
3349
3350 /**
3351  * A funding_locked message to be sent or received from a peer
3352  */
3353 typedef struct MUST_USE_STRUCT LDKFundingLocked {
3354    /**
3355     * A pointer to the opaque Rust object.
3356     * Nearly everywhere, inner must be non-null, however in places where
3357     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3358     */
3359    LDKnativeFundingLocked *inner;
3360    /**
3361     * Indicates that this is the only struct which contains the same pointer.
3362     * Rust functions which take ownership of an object provided via an argument require
3363     * this to be true and invalidate the object pointed to by inner.
3364     */
3365    bool is_owned;
3366 } LDKFundingLocked;
3367
3368
3369
3370 /**
3371  * An announcement_signatures message to be sent or received from a peer
3372  */
3373 typedef struct MUST_USE_STRUCT LDKAnnouncementSignatures {
3374    /**
3375     * A pointer to the opaque Rust object.
3376     * Nearly everywhere, inner must be non-null, however in places where
3377     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3378     */
3379    LDKnativeAnnouncementSignatures *inner;
3380    /**
3381     * Indicates that this is the only struct which contains the same pointer.
3382     * Rust functions which take ownership of an object provided via an argument require
3383     * this to be true and invalidate the object pointed to by inner.
3384     */
3385    bool is_owned;
3386 } LDKAnnouncementSignatures;
3387
3388
3389
3390 /**
3391  * Struct used to return values from revoke_and_ack messages, containing a bunch of commitment
3392  * transaction updates if they were pending.
3393  */
3394 typedef struct MUST_USE_STRUCT LDKCommitmentUpdate {
3395    /**
3396     * A pointer to the opaque Rust object.
3397     * Nearly everywhere, inner must be non-null, however in places where
3398     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3399     */
3400    LDKnativeCommitmentUpdate *inner;
3401    /**
3402     * Indicates that this is the only struct which contains the same pointer.
3403     * Rust functions which take ownership of an object provided via an argument require
3404     * this to be true and invalidate the object pointed to by inner.
3405     */
3406    bool is_owned;
3407 } LDKCommitmentUpdate;
3408
3409
3410
3411 /**
3412  * A revoke_and_ack message to be sent or received from a peer
3413  */
3414 typedef struct MUST_USE_STRUCT LDKRevokeAndACK {
3415    /**
3416     * A pointer to the opaque Rust object.
3417     * Nearly everywhere, inner must be non-null, however in places where
3418     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3419     */
3420    LDKnativeRevokeAndACK *inner;
3421    /**
3422     * Indicates that this is the only struct which contains the same pointer.
3423     * Rust functions which take ownership of an object provided via an argument require
3424     * this to be true and invalidate the object pointed to by inner.
3425     */
3426    bool is_owned;
3427 } LDKRevokeAndACK;
3428
3429
3430
3431 /**
3432  * A closing_signed message to be sent or received from a peer
3433  */
3434 typedef struct MUST_USE_STRUCT LDKClosingSigned {
3435    /**
3436     * A pointer to the opaque Rust object.
3437     * Nearly everywhere, inner must be non-null, however in places where
3438     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3439     */
3440    LDKnativeClosingSigned *inner;
3441    /**
3442     * Indicates that this is the only struct which contains the same pointer.
3443     * Rust functions which take ownership of an object provided via an argument require
3444     * this to be true and invalidate the object pointed to by inner.
3445     */
3446    bool is_owned;
3447 } LDKClosingSigned;
3448
3449
3450
3451 /**
3452  * A shutdown message to be sent or received from a peer
3453  */
3454 typedef struct MUST_USE_STRUCT LDKShutdown {
3455    /**
3456     * A pointer to the opaque Rust object.
3457     * Nearly everywhere, inner must be non-null, however in places where
3458     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3459     */
3460    LDKnativeShutdown *inner;
3461    /**
3462     * Indicates that this is the only struct which contains the same pointer.
3463     * Rust functions which take ownership of an object provided via an argument require
3464     * this to be true and invalidate the object pointed to by inner.
3465     */
3466    bool is_owned;
3467 } LDKShutdown;
3468
3469
3470
3471 /**
3472  * A channel_reestablish message to be sent or received from a peer
3473  */
3474 typedef struct MUST_USE_STRUCT LDKChannelReestablish {
3475    /**
3476     * A pointer to the opaque Rust object.
3477     * Nearly everywhere, inner must be non-null, however in places where
3478     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3479     */
3480    LDKnativeChannelReestablish *inner;
3481    /**
3482     * Indicates that this is the only struct which contains the same pointer.
3483     * Rust functions which take ownership of an object provided via an argument require
3484     * this to be true and invalidate the object pointed to by inner.
3485     */
3486    bool is_owned;
3487 } LDKChannelReestablish;
3488
3489
3490
3491 /**
3492  * A channel_announcement message to be sent or received from a peer
3493  */
3494 typedef struct MUST_USE_STRUCT LDKChannelAnnouncement {
3495    /**
3496     * A pointer to the opaque Rust object.
3497     * Nearly everywhere, inner must be non-null, however in places where
3498     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3499     */
3500    LDKnativeChannelAnnouncement *inner;
3501    /**
3502     * Indicates that this is the only struct which contains the same pointer.
3503     * Rust functions which take ownership of an object provided via an argument require
3504     * this to be true and invalidate the object pointed to by inner.
3505     */
3506    bool is_owned;
3507 } LDKChannelAnnouncement;
3508
3509
3510
3511 /**
3512  * A node_announcement message to be sent or received from a peer
3513  */
3514 typedef struct MUST_USE_STRUCT LDKNodeAnnouncement {
3515    /**
3516     * A pointer to the opaque Rust object.
3517     * Nearly everywhere, inner must be non-null, however in places where
3518     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3519     */
3520    LDKnativeNodeAnnouncement *inner;
3521    /**
3522     * Indicates that this is the only struct which contains the same pointer.
3523     * Rust functions which take ownership of an object provided via an argument require
3524     * this to be true and invalidate the object pointed to by inner.
3525     */
3526    bool is_owned;
3527 } LDKNodeAnnouncement;
3528
3529
3530
3531 /**
3532  * An error message to be sent or received from a peer
3533  */
3534 typedef struct MUST_USE_STRUCT LDKErrorMessage {
3535    /**
3536     * A pointer to the opaque Rust object.
3537     * Nearly everywhere, inner must be non-null, however in places where
3538     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3539     */
3540    LDKnativeErrorMessage *inner;
3541    /**
3542     * Indicates that this is the only struct which contains the same pointer.
3543     * Rust functions which take ownership of an object provided via an argument require
3544     * this to be true and invalidate the object pointed to by inner.
3545     */
3546    bool is_owned;
3547 } LDKErrorMessage;
3548
3549
3550
3551 /**
3552  * A warning message to be sent or received from a peer
3553  */
3554 typedef struct MUST_USE_STRUCT LDKWarningMessage {
3555    /**
3556     * A pointer to the opaque Rust object.
3557     * Nearly everywhere, inner must be non-null, however in places where
3558     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3559     */
3560    LDKnativeWarningMessage *inner;
3561    /**
3562     * Indicates that this is the only struct which contains the same pointer.
3563     * Rust functions which take ownership of an object provided via an argument require
3564     * this to be true and invalidate the object pointed to by inner.
3565     */
3566    bool is_owned;
3567 } LDKWarningMessage;
3568
3569 /**
3570  * Used to put an error message in a LightningError
3571  */
3572 typedef enum LDKErrorAction_Tag {
3573    /**
3574     * The peer took some action which made us think they were useless. Disconnect them.
3575     */
3576    LDKErrorAction_DisconnectPeer,
3577    /**
3578     * The peer did something harmless that we weren't able to process, just log and ignore
3579     */
3580    LDKErrorAction_IgnoreError,
3581    /**
3582     * The peer did something harmless that we weren't able to meaningfully process.
3583     * If the error is logged, log it at the given level.
3584     */
3585    LDKErrorAction_IgnoreAndLog,
3586    /**
3587     * The peer provided us with a gossip message which we'd already seen. In most cases this
3588     * should be ignored, but it may result in the message being forwarded if it is a duplicate of
3589     * our own channel announcements.
3590     */
3591    LDKErrorAction_IgnoreDuplicateGossip,
3592    /**
3593     * The peer did something incorrect. Tell them.
3594     */
3595    LDKErrorAction_SendErrorMessage,
3596    /**
3597     * The peer did something incorrect. Tell them without closing any channels.
3598     */
3599    LDKErrorAction_SendWarningMessage,
3600    /**
3601     * Must be last for serialization purposes
3602     */
3603    LDKErrorAction_Sentinel,
3604 } LDKErrorAction_Tag;
3605
3606 typedef struct LDKErrorAction_LDKDisconnectPeer_Body {
3607    /**
3608     * An error message which we should make an effort to send before we disconnect.
3609     *
3610     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3611     */
3612    struct LDKErrorMessage msg;
3613 } LDKErrorAction_LDKDisconnectPeer_Body;
3614
3615 typedef struct LDKErrorAction_LDKSendErrorMessage_Body {
3616    /**
3617     * The message to send.
3618     */
3619    struct LDKErrorMessage msg;
3620 } LDKErrorAction_LDKSendErrorMessage_Body;
3621
3622 typedef struct LDKErrorAction_LDKSendWarningMessage_Body {
3623    /**
3624     * The message to send.
3625     */
3626    struct LDKWarningMessage msg;
3627    /**
3628     * The peer may have done something harmless that we weren't able to meaningfully process,
3629     * though we should still tell them about it.
3630     * If this event is logged, log it at the given level.
3631     */
3632    enum LDKLevel log_level;
3633 } LDKErrorAction_LDKSendWarningMessage_Body;
3634
3635 typedef struct MUST_USE_STRUCT LDKErrorAction {
3636    LDKErrorAction_Tag tag;
3637    union {
3638       LDKErrorAction_LDKDisconnectPeer_Body disconnect_peer;
3639       struct {
3640          enum LDKLevel ignore_and_log;
3641       };
3642       LDKErrorAction_LDKSendErrorMessage_Body send_error_message;
3643       LDKErrorAction_LDKSendWarningMessage_Body send_warning_message;
3644    };
3645 } LDKErrorAction;
3646
3647
3648
3649 /**
3650  * A query_channel_range message is used to query a peer for channel
3651  * UTXOs in a range of blocks. The recipient of a query makes a best
3652  * effort to reply to the query using one or more reply_channel_range
3653  * messages.
3654  */
3655 typedef struct MUST_USE_STRUCT LDKQueryChannelRange {
3656    /**
3657     * A pointer to the opaque Rust object.
3658     * Nearly everywhere, inner must be non-null, however in places where
3659     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3660     */
3661    LDKnativeQueryChannelRange *inner;
3662    /**
3663     * Indicates that this is the only struct which contains the same pointer.
3664     * Rust functions which take ownership of an object provided via an argument require
3665     * this to be true and invalidate the object pointed to by inner.
3666     */
3667    bool is_owned;
3668 } LDKQueryChannelRange;
3669
3670
3671
3672 /**
3673  * A query_short_channel_ids message is used to query a peer for
3674  * routing gossip messages related to one or more short_channel_ids.
3675  * The query recipient will reply with the latest, if available,
3676  * channel_announcement, channel_update and node_announcement messages
3677  * it maintains for the requested short_channel_ids followed by a
3678  * reply_short_channel_ids_end message. The short_channel_ids sent in
3679  * this query are encoded. We only support encoding_type=0 uncompressed
3680  * serialization and do not support encoding_type=1 zlib serialization.
3681  */
3682 typedef struct MUST_USE_STRUCT LDKQueryShortChannelIds {
3683    /**
3684     * A pointer to the opaque Rust object.
3685     * Nearly everywhere, inner must be non-null, however in places where
3686     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3687     */
3688    LDKnativeQueryShortChannelIds *inner;
3689    /**
3690     * Indicates that this is the only struct which contains the same pointer.
3691     * Rust functions which take ownership of an object provided via an argument require
3692     * this to be true and invalidate the object pointed to by inner.
3693     */
3694    bool is_owned;
3695 } LDKQueryShortChannelIds;
3696
3697
3698
3699 /**
3700  * A reply_channel_range message is a reply to a query_channel_range
3701  * message. Multiple reply_channel_range messages can be sent in reply
3702  * to a single query_channel_range message. The query recipient makes a
3703  * best effort to respond based on their local network view which may
3704  * not be a perfect view of the network. The short_channel_ids in the
3705  * reply are encoded. We only support encoding_type=0 uncompressed
3706  * serialization and do not support encoding_type=1 zlib serialization.
3707  */
3708 typedef struct MUST_USE_STRUCT LDKReplyChannelRange {
3709    /**
3710     * A pointer to the opaque Rust object.
3711     * Nearly everywhere, inner must be non-null, however in places where
3712     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3713     */
3714    LDKnativeReplyChannelRange *inner;
3715    /**
3716     * Indicates that this is the only struct which contains the same pointer.
3717     * Rust functions which take ownership of an object provided via an argument require
3718     * this to be true and invalidate the object pointed to by inner.
3719     */
3720    bool is_owned;
3721 } LDKReplyChannelRange;
3722
3723 /**
3724  * An event generated by ChannelManager which indicates a message should be sent to a peer (or
3725  * broadcast to most peers).
3726  * These events are handled by PeerManager::process_events if you are using a PeerManager.
3727  */
3728 typedef enum LDKMessageSendEvent_Tag {
3729    /**
3730     * Used to indicate that we've accepted a channel open and should send the accept_channel
3731     * message provided to the given peer.
3732     */
3733    LDKMessageSendEvent_SendAcceptChannel,
3734    /**
3735     * Used to indicate that we've initiated a channel open and should send the open_channel
3736     * message provided to the given peer.
3737     */
3738    LDKMessageSendEvent_SendOpenChannel,
3739    /**
3740     * Used to indicate that a funding_created message should be sent to the peer with the given node_id.
3741     */
3742    LDKMessageSendEvent_SendFundingCreated,
3743    /**
3744     * Used to indicate that a funding_signed message should be sent to the peer with the given node_id.
3745     */
3746    LDKMessageSendEvent_SendFundingSigned,
3747    /**
3748     * Used to indicate that a funding_locked message should be sent to the peer with the given node_id.
3749     */
3750    LDKMessageSendEvent_SendFundingLocked,
3751    /**
3752     * Used to indicate that an announcement_signatures message should be sent to the peer with the given node_id.
3753     */
3754    LDKMessageSendEvent_SendAnnouncementSignatures,
3755    /**
3756     * Used to indicate that a series of HTLC update messages, as well as a commitment_signed
3757     * message should be sent to the peer with the given node_id.
3758     */
3759    LDKMessageSendEvent_UpdateHTLCs,
3760    /**
3761     * Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
3762     */
3763    LDKMessageSendEvent_SendRevokeAndACK,
3764    /**
3765     * Used to indicate that a closing_signed message should be sent to the peer with the given node_id.
3766     */
3767    LDKMessageSendEvent_SendClosingSigned,
3768    /**
3769     * Used to indicate that a shutdown message should be sent to the peer with the given node_id.
3770     */
3771    LDKMessageSendEvent_SendShutdown,
3772    /**
3773     * Used to indicate that a channel_reestablish message should be sent to the peer with the given node_id.
3774     */
3775    LDKMessageSendEvent_SendChannelReestablish,
3776    /**
3777     * Used to indicate that a channel_announcement and channel_update should be broadcast to all
3778     * peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
3779     *
3780     * Note that after doing so, you very likely (unless you did so very recently) want to call
3781     * ChannelManager::broadcast_node_announcement to trigger a BroadcastNodeAnnouncement event.
3782     * This ensures that any nodes which see our channel_announcement also have a relevant
3783     * node_announcement, including relevant feature flags which may be important for routing
3784     * through or to us.
3785     */
3786    LDKMessageSendEvent_BroadcastChannelAnnouncement,
3787    /**
3788     * Used to indicate that a node_announcement should be broadcast to all peers.
3789     */
3790    LDKMessageSendEvent_BroadcastNodeAnnouncement,
3791    /**
3792     * Used to indicate that a channel_update should be broadcast to all peers.
3793     */
3794    LDKMessageSendEvent_BroadcastChannelUpdate,
3795    /**
3796     * Used to indicate that a channel_update should be sent to a single peer.
3797     * In contrast to [`Self::BroadcastChannelUpdate`], this is used when the channel is a
3798     * private channel and we shouldn't be informing all of our peers of channel parameters.
3799     */
3800    LDKMessageSendEvent_SendChannelUpdate,
3801    /**
3802     * Broadcast an error downstream to be handled
3803     */
3804    LDKMessageSendEvent_HandleError,
3805    /**
3806     * Query a peer for channels with funding transaction UTXOs in a block range.
3807     */
3808    LDKMessageSendEvent_SendChannelRangeQuery,
3809    /**
3810     * Request routing gossip messages from a peer for a list of channels identified by
3811     * their short_channel_ids.
3812     */
3813    LDKMessageSendEvent_SendShortIdsQuery,
3814    /**
3815     * Sends a reply to a channel range query. This may be one of several SendReplyChannelRange events
3816     * emitted during processing of the query.
3817     */
3818    LDKMessageSendEvent_SendReplyChannelRange,
3819    /**
3820     * Must be last for serialization purposes
3821     */
3822    LDKMessageSendEvent_Sentinel,
3823 } LDKMessageSendEvent_Tag;
3824
3825 typedef struct LDKMessageSendEvent_LDKSendAcceptChannel_Body {
3826    /**
3827     * The node_id of the node which should receive this message
3828     */
3829    struct LDKPublicKey node_id;
3830    /**
3831     * The message which should be sent.
3832     */
3833    struct LDKAcceptChannel msg;
3834 } LDKMessageSendEvent_LDKSendAcceptChannel_Body;
3835
3836 typedef struct LDKMessageSendEvent_LDKSendOpenChannel_Body {
3837    /**
3838     * The node_id of the node which should receive this message
3839     */
3840    struct LDKPublicKey node_id;
3841    /**
3842     * The message which should be sent.
3843     */
3844    struct LDKOpenChannel msg;
3845 } LDKMessageSendEvent_LDKSendOpenChannel_Body;
3846
3847 typedef struct LDKMessageSendEvent_LDKSendFundingCreated_Body {
3848    /**
3849     * The node_id of the node which should receive this message
3850     */
3851    struct LDKPublicKey node_id;
3852    /**
3853     * The message which should be sent.
3854     */
3855    struct LDKFundingCreated msg;
3856 } LDKMessageSendEvent_LDKSendFundingCreated_Body;
3857
3858 typedef struct LDKMessageSendEvent_LDKSendFundingSigned_Body {
3859    /**
3860     * The node_id of the node which should receive this message
3861     */
3862    struct LDKPublicKey node_id;
3863    /**
3864     * The message which should be sent.
3865     */
3866    struct LDKFundingSigned msg;
3867 } LDKMessageSendEvent_LDKSendFundingSigned_Body;
3868
3869 typedef struct LDKMessageSendEvent_LDKSendFundingLocked_Body {
3870    /**
3871     * The node_id of the node which should receive these message(s)
3872     */
3873    struct LDKPublicKey node_id;
3874    /**
3875     * The funding_locked message which should be sent.
3876     */
3877    struct LDKFundingLocked msg;
3878 } LDKMessageSendEvent_LDKSendFundingLocked_Body;
3879
3880 typedef struct LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body {
3881    /**
3882     * The node_id of the node which should receive these message(s)
3883     */
3884    struct LDKPublicKey node_id;
3885    /**
3886     * The announcement_signatures message which should be sent.
3887     */
3888    struct LDKAnnouncementSignatures msg;
3889 } LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body;
3890
3891 typedef struct LDKMessageSendEvent_LDKUpdateHTLCs_Body {
3892    /**
3893     * The node_id of the node which should receive these message(s)
3894     */
3895    struct LDKPublicKey node_id;
3896    /**
3897     * The update messages which should be sent. ALL messages in the struct should be sent!
3898     */
3899    struct LDKCommitmentUpdate updates;
3900 } LDKMessageSendEvent_LDKUpdateHTLCs_Body;
3901
3902 typedef struct LDKMessageSendEvent_LDKSendRevokeAndACK_Body {
3903    /**
3904     * The node_id of the node which should receive this message
3905     */
3906    struct LDKPublicKey node_id;
3907    /**
3908     * The message which should be sent.
3909     */
3910    struct LDKRevokeAndACK msg;
3911 } LDKMessageSendEvent_LDKSendRevokeAndACK_Body;
3912
3913 typedef struct LDKMessageSendEvent_LDKSendClosingSigned_Body {
3914    /**
3915     * The node_id of the node which should receive this message
3916     */
3917    struct LDKPublicKey node_id;
3918    /**
3919     * The message which should be sent.
3920     */
3921    struct LDKClosingSigned msg;
3922 } LDKMessageSendEvent_LDKSendClosingSigned_Body;
3923
3924 typedef struct LDKMessageSendEvent_LDKSendShutdown_Body {
3925    /**
3926     * The node_id of the node which should receive this message
3927     */
3928    struct LDKPublicKey node_id;
3929    /**
3930     * The message which should be sent.
3931     */
3932    struct LDKShutdown msg;
3933 } LDKMessageSendEvent_LDKSendShutdown_Body;
3934
3935 typedef struct LDKMessageSendEvent_LDKSendChannelReestablish_Body {
3936    /**
3937     * The node_id of the node which should receive this message
3938     */
3939    struct LDKPublicKey node_id;
3940    /**
3941     * The message which should be sent.
3942     */
3943    struct LDKChannelReestablish msg;
3944 } LDKMessageSendEvent_LDKSendChannelReestablish_Body;
3945
3946 typedef struct LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body {
3947    /**
3948     * The channel_announcement which should be sent.
3949     */
3950    struct LDKChannelAnnouncement msg;
3951    /**
3952     * The followup channel_update which should be sent.
3953     */
3954    struct LDKChannelUpdate update_msg;
3955 } LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body;
3956
3957 typedef struct LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body {
3958    /**
3959     * The node_announcement which should be sent.
3960     */
3961    struct LDKNodeAnnouncement msg;
3962 } LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body;
3963
3964 typedef struct LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body {
3965    /**
3966     * The channel_update which should be sent.
3967     */
3968    struct LDKChannelUpdate msg;
3969 } LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body;
3970
3971 typedef struct LDKMessageSendEvent_LDKSendChannelUpdate_Body {
3972    /**
3973     * The node_id of the node which should receive this message
3974     */
3975    struct LDKPublicKey node_id;
3976    /**
3977     * The channel_update which should be sent.
3978     */
3979    struct LDKChannelUpdate msg;
3980 } LDKMessageSendEvent_LDKSendChannelUpdate_Body;
3981
3982 typedef struct LDKMessageSendEvent_LDKHandleError_Body {
3983    /**
3984     * The node_id of the node which should receive this message
3985     */
3986    struct LDKPublicKey node_id;
3987    /**
3988     * The action which should be taken.
3989     */
3990    struct LDKErrorAction action;
3991 } LDKMessageSendEvent_LDKHandleError_Body;
3992
3993 typedef struct LDKMessageSendEvent_LDKSendChannelRangeQuery_Body {
3994    /**
3995     * The node_id of this message recipient
3996     */
3997    struct LDKPublicKey node_id;
3998    /**
3999     * The query_channel_range which should be sent.
4000     */
4001    struct LDKQueryChannelRange msg;
4002 } LDKMessageSendEvent_LDKSendChannelRangeQuery_Body;
4003
4004 typedef struct LDKMessageSendEvent_LDKSendShortIdsQuery_Body {
4005    /**
4006     * The node_id of this message recipient
4007     */
4008    struct LDKPublicKey node_id;
4009    /**
4010     * The query_short_channel_ids which should be sent.
4011     */
4012    struct LDKQueryShortChannelIds msg;
4013 } LDKMessageSendEvent_LDKSendShortIdsQuery_Body;
4014
4015 typedef struct LDKMessageSendEvent_LDKSendReplyChannelRange_Body {
4016    /**
4017     * The node_id of this message recipient
4018     */
4019    struct LDKPublicKey node_id;
4020    /**
4021     * The reply_channel_range which should be sent.
4022     */
4023    struct LDKReplyChannelRange msg;
4024 } LDKMessageSendEvent_LDKSendReplyChannelRange_Body;
4025
4026 typedef struct MUST_USE_STRUCT LDKMessageSendEvent {
4027    LDKMessageSendEvent_Tag tag;
4028    union {
4029       LDKMessageSendEvent_LDKSendAcceptChannel_Body send_accept_channel;
4030       LDKMessageSendEvent_LDKSendOpenChannel_Body send_open_channel;
4031       LDKMessageSendEvent_LDKSendFundingCreated_Body send_funding_created;
4032       LDKMessageSendEvent_LDKSendFundingSigned_Body send_funding_signed;
4033       LDKMessageSendEvent_LDKSendFundingLocked_Body send_funding_locked;
4034       LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body send_announcement_signatures;
4035       LDKMessageSendEvent_LDKUpdateHTLCs_Body update_htl_cs;
4036       LDKMessageSendEvent_LDKSendRevokeAndACK_Body send_revoke_and_ack;
4037       LDKMessageSendEvent_LDKSendClosingSigned_Body send_closing_signed;
4038       LDKMessageSendEvent_LDKSendShutdown_Body send_shutdown;
4039       LDKMessageSendEvent_LDKSendChannelReestablish_Body send_channel_reestablish;
4040       LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body broadcast_channel_announcement;
4041       LDKMessageSendEvent_LDKBroadcastNodeAnnouncement_Body broadcast_node_announcement;
4042       LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body broadcast_channel_update;
4043       LDKMessageSendEvent_LDKSendChannelUpdate_Body send_channel_update;
4044       LDKMessageSendEvent_LDKHandleError_Body handle_error;
4045       LDKMessageSendEvent_LDKSendChannelRangeQuery_Body send_channel_range_query;
4046       LDKMessageSendEvent_LDKSendShortIdsQuery_Body send_short_ids_query;
4047       LDKMessageSendEvent_LDKSendReplyChannelRange_Body send_reply_channel_range;
4048    };
4049 } LDKMessageSendEvent;
4050
4051 /**
4052  * A dynamically-allocated array of crate::lightning::util::events::MessageSendEvents of arbitrary size.
4053  * This corresponds to std::vector in C++
4054  */
4055 typedef struct LDKCVec_MessageSendEventZ {
4056    /**
4057     * The elements in the array.
4058     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4059     */
4060    struct LDKMessageSendEvent *data;
4061    /**
4062     * The number of elements pointed to by `data`.
4063     */
4064    uintptr_t datalen;
4065 } LDKCVec_MessageSendEventZ;
4066
4067
4068
4069 /**
4070  * [`Score`] implementation that uses a fixed penalty.
4071  */
4072 typedef struct MUST_USE_STRUCT LDKFixedPenaltyScorer {
4073    /**
4074     * A pointer to the opaque Rust object.
4075     * Nearly everywhere, inner must be non-null, however in places where
4076     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4077     */
4078    LDKnativeFixedPenaltyScorer *inner;
4079    /**
4080     * Indicates that this is the only struct which contains the same pointer.
4081     * Rust functions which take ownership of an object provided via an argument require
4082     * this to be true and invalidate the object pointed to by inner.
4083     */
4084    bool is_owned;
4085 } LDKFixedPenaltyScorer;
4086
4087 /**
4088  * The contents of CResult_FixedPenaltyScorerDecodeErrorZ
4089  */
4090 typedef union LDKCResult_FixedPenaltyScorerDecodeErrorZPtr {
4091    /**
4092     * A pointer to the contents in the success state.
4093     * Reading from this pointer when `result_ok` is not set is undefined.
4094     */
4095    struct LDKFixedPenaltyScorer *result;
4096    /**
4097     * A pointer to the contents in the error state.
4098     * Reading from this pointer when `result_ok` is set is undefined.
4099     */
4100    struct LDKDecodeError *err;
4101 } LDKCResult_FixedPenaltyScorerDecodeErrorZPtr;
4102
4103 /**
4104  * A CResult_FixedPenaltyScorerDecodeErrorZ represents the result of a fallible operation,
4105  * containing a crate::lightning::routing::scoring::FixedPenaltyScorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4106  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4107  */
4108 typedef struct LDKCResult_FixedPenaltyScorerDecodeErrorZ {
4109    /**
4110     * The contents of this CResult_FixedPenaltyScorerDecodeErrorZ, accessible via either
4111     * `err` or `result` depending on the state of `result_ok`.
4112     */
4113    union LDKCResult_FixedPenaltyScorerDecodeErrorZPtr contents;
4114    /**
4115     * Whether this CResult_FixedPenaltyScorerDecodeErrorZ represents a success state.
4116     */
4117    bool result_ok;
4118 } LDKCResult_FixedPenaltyScorerDecodeErrorZ;
4119
4120
4121
4122 /**
4123  * Parameters for configuring [`Scorer`].
4124  */
4125 typedef struct MUST_USE_STRUCT LDKScoringParameters {
4126    /**
4127     * A pointer to the opaque Rust object.
4128     * Nearly everywhere, inner must be non-null, however in places where
4129     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4130     */
4131    LDKnativeScoringParameters *inner;
4132    /**
4133     * Indicates that this is the only struct which contains the same pointer.
4134     * Rust functions which take ownership of an object provided via an argument require
4135     * this to be true and invalidate the object pointed to by inner.
4136     */
4137    bool is_owned;
4138 } LDKScoringParameters;
4139
4140 /**
4141  * The contents of CResult_ScoringParametersDecodeErrorZ
4142  */
4143 typedef union LDKCResult_ScoringParametersDecodeErrorZPtr {
4144    /**
4145     * A pointer to the contents in the success state.
4146     * Reading from this pointer when `result_ok` is not set is undefined.
4147     */
4148    struct LDKScoringParameters *result;
4149    /**
4150     * A pointer to the contents in the error state.
4151     * Reading from this pointer when `result_ok` is set is undefined.
4152     */
4153    struct LDKDecodeError *err;
4154 } LDKCResult_ScoringParametersDecodeErrorZPtr;
4155
4156 /**
4157  * A CResult_ScoringParametersDecodeErrorZ represents the result of a fallible operation,
4158  * containing a crate::lightning::routing::scoring::ScoringParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
4159  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4160  */
4161 typedef struct LDKCResult_ScoringParametersDecodeErrorZ {
4162    /**
4163     * The contents of this CResult_ScoringParametersDecodeErrorZ, accessible via either
4164     * `err` or `result` depending on the state of `result_ok`.
4165     */
4166    union LDKCResult_ScoringParametersDecodeErrorZPtr contents;
4167    /**
4168     * Whether this CResult_ScoringParametersDecodeErrorZ represents a success state.
4169     */
4170    bool result_ok;
4171 } LDKCResult_ScoringParametersDecodeErrorZ;
4172
4173
4174
4175 /**
4176  * [`Score`] implementation that provides reasonable default behavior.
4177  *
4178  * Used to apply a fixed penalty to each channel, thus avoiding long paths when shorter paths with
4179  * slightly higher fees are available. Will further penalize channels that fail to relay payments.
4180  *
4181  * See [module-level documentation] for usage and [`ScoringParameters`] for customization.
4182  *
4183  * # Note
4184  *
4185  * Mixing the `no-std` feature between serialization and deserialization results in undefined
4186  * behavior.
4187  *
4188  * [module-level documentation]: crate::routing::scoring
4189  */
4190 typedef struct MUST_USE_STRUCT LDKScorer {
4191    /**
4192     * A pointer to the opaque Rust object.
4193     * Nearly everywhere, inner must be non-null, however in places where
4194     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4195     */
4196    LDKnativeScorer *inner;
4197    /**
4198     * Indicates that this is the only struct which contains the same pointer.
4199     * Rust functions which take ownership of an object provided via an argument require
4200     * this to be true and invalidate the object pointed to by inner.
4201     */
4202    bool is_owned;
4203 } LDKScorer;
4204
4205 /**
4206  * The contents of CResult_ScorerDecodeErrorZ
4207  */
4208 typedef union LDKCResult_ScorerDecodeErrorZPtr {
4209    /**
4210     * A pointer to the contents in the success state.
4211     * Reading from this pointer when `result_ok` is not set is undefined.
4212     */
4213    struct LDKScorer *result;
4214    /**
4215     * A pointer to the contents in the error state.
4216     * Reading from this pointer when `result_ok` is set is undefined.
4217     */
4218    struct LDKDecodeError *err;
4219 } LDKCResult_ScorerDecodeErrorZPtr;
4220
4221 /**
4222  * A CResult_ScorerDecodeErrorZ represents the result of a fallible operation,
4223  * containing a crate::lightning::routing::scoring::Scorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4224  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4225  */
4226 typedef struct LDKCResult_ScorerDecodeErrorZ {
4227    /**
4228     * The contents of this CResult_ScorerDecodeErrorZ, accessible via either
4229     * `err` or `result` depending on the state of `result_ok`.
4230     */
4231    union LDKCResult_ScorerDecodeErrorZPtr contents;
4232    /**
4233     * Whether this CResult_ScorerDecodeErrorZ represents a success state.
4234     */
4235    bool result_ok;
4236 } LDKCResult_ScorerDecodeErrorZ;
4237
4238
4239
4240 /**
4241  * Parameters for configuring [`ProbabilisticScorer`].
4242  */
4243 typedef struct MUST_USE_STRUCT LDKProbabilisticScoringParameters {
4244    /**
4245     * A pointer to the opaque Rust object.
4246     * Nearly everywhere, inner must be non-null, however in places where
4247     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4248     */
4249    LDKnativeProbabilisticScoringParameters *inner;
4250    /**
4251     * Indicates that this is the only struct which contains the same pointer.
4252     * Rust functions which take ownership of an object provided via an argument require
4253     * this to be true and invalidate the object pointed to by inner.
4254     */
4255    bool is_owned;
4256 } LDKProbabilisticScoringParameters;
4257
4258 /**
4259  * The contents of CResult_ProbabilisticScoringParametersDecodeErrorZ
4260  */
4261 typedef union LDKCResult_ProbabilisticScoringParametersDecodeErrorZPtr {
4262    /**
4263     * A pointer to the contents in the success state.
4264     * Reading from this pointer when `result_ok` is not set is undefined.
4265     */
4266    struct LDKProbabilisticScoringParameters *result;
4267    /**
4268     * A pointer to the contents in the error state.
4269     * Reading from this pointer when `result_ok` is set is undefined.
4270     */
4271    struct LDKDecodeError *err;
4272 } LDKCResult_ProbabilisticScoringParametersDecodeErrorZPtr;
4273
4274 /**
4275  * A CResult_ProbabilisticScoringParametersDecodeErrorZ represents the result of a fallible operation,
4276  * containing a crate::lightning::routing::scoring::ProbabilisticScoringParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
4277  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4278  */
4279 typedef struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ {
4280    /**
4281     * The contents of this CResult_ProbabilisticScoringParametersDecodeErrorZ, accessible via either
4282     * `err` or `result` depending on the state of `result_ok`.
4283     */
4284    union LDKCResult_ProbabilisticScoringParametersDecodeErrorZPtr contents;
4285    /**
4286     * Whether this CResult_ProbabilisticScoringParametersDecodeErrorZ represents a success state.
4287     */
4288    bool result_ok;
4289 } LDKCResult_ProbabilisticScoringParametersDecodeErrorZ;
4290
4291
4292
4293 /**
4294  * Represents the network as nodes and channels between them
4295  */
4296 typedef struct MUST_USE_STRUCT LDKNetworkGraph {
4297    /**
4298     * A pointer to the opaque Rust object.
4299     * Nearly everywhere, inner must be non-null, however in places where
4300     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4301     */
4302    LDKnativeNetworkGraph *inner;
4303    /**
4304     * Indicates that this is the only struct which contains the same pointer.
4305     * Rust functions which take ownership of an object provided via an argument require
4306     * this to be true and invalidate the object pointed to by inner.
4307     */
4308    bool is_owned;
4309 } LDKNetworkGraph;
4310
4311 /**
4312  * A tuple of 2 elements. See the individual fields for the types contained.
4313  */
4314 typedef struct LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ {
4315    /**
4316     * The element at position 0
4317     */
4318    struct LDKProbabilisticScoringParameters a;
4319    /**
4320     * The element at position 1
4321     */
4322    const struct LDKNetworkGraph *NONNULL_PTR b;
4323 } LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ;
4324
4325
4326
4327 /**
4328  * [`Score`] implementation using channel success probability distributions.
4329  *
4330  * Based on *Optimally Reliable & Cheap Payment Flows on the Lightning Network* by Rene Pickhardt
4331  * and Stefan Richter [[1]]. Given the uncertainty of channel liquidity balances, probability
4332  * distributions are defined based on knowledge learned from successful and unsuccessful attempts.
4333  * Then the negative `log10` of the success probability is used to determine the cost of routing a
4334  * specific HTLC amount through a channel.
4335  *
4336  * Knowledge about channel liquidity balances takes the form of upper and lower bounds on the
4337  * possible liquidity. Certainty of the bounds is decreased over time using a decay function. See
4338  * [`ProbabilisticScoringParameters`] for details.
4339  *
4340  * Since the scorer aims to learn the current channel liquidity balances, it works best for nodes
4341  * with high payment volume or that actively probe the [`NetworkGraph`]. Nodes with low payment
4342  * volume are more likely to experience failed payment paths, which would need to be retried.
4343  *
4344  * # Note
4345  *
4346  * Mixing the `no-std` feature between serialization and deserialization results in undefined
4347  * behavior.
4348  *
4349  * [1]: https://arxiv.org/abs/2107.05322
4350  */
4351 typedef struct MUST_USE_STRUCT LDKProbabilisticScorer {
4352    /**
4353     * A pointer to the opaque Rust object.
4354     * Nearly everywhere, inner must be non-null, however in places where
4355     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4356     */
4357    LDKnativeProbabilisticScorer *inner;
4358    /**
4359     * Indicates that this is the only struct which contains the same pointer.
4360     * Rust functions which take ownership of an object provided via an argument require
4361     * this to be true and invalidate the object pointed to by inner.
4362     */
4363    bool is_owned;
4364 } LDKProbabilisticScorer;
4365
4366 /**
4367  * The contents of CResult_ProbabilisticScorerDecodeErrorZ
4368  */
4369 typedef union LDKCResult_ProbabilisticScorerDecodeErrorZPtr {
4370    /**
4371     * A pointer to the contents in the success state.
4372     * Reading from this pointer when `result_ok` is not set is undefined.
4373     */
4374    struct LDKProbabilisticScorer *result;
4375    /**
4376     * A pointer to the contents in the error state.
4377     * Reading from this pointer when `result_ok` is set is undefined.
4378     */
4379    struct LDKDecodeError *err;
4380 } LDKCResult_ProbabilisticScorerDecodeErrorZPtr;
4381
4382 /**
4383  * A CResult_ProbabilisticScorerDecodeErrorZ represents the result of a fallible operation,
4384  * containing a crate::lightning::routing::scoring::ProbabilisticScorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4385  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4386  */
4387 typedef struct LDKCResult_ProbabilisticScorerDecodeErrorZ {
4388    /**
4389     * The contents of this CResult_ProbabilisticScorerDecodeErrorZ, accessible via either
4390     * `err` or `result` depending on the state of `result_ok`.
4391     */
4392    union LDKCResult_ProbabilisticScorerDecodeErrorZPtr contents;
4393    /**
4394     * Whether this CResult_ProbabilisticScorerDecodeErrorZ represents a success state.
4395     */
4396    bool result_ok;
4397 } LDKCResult_ProbabilisticScorerDecodeErrorZ;
4398
4399
4400
4401 /**
4402  * Features used within an `init` message.
4403  */
4404 typedef struct MUST_USE_STRUCT LDKInitFeatures {
4405    /**
4406     * A pointer to the opaque Rust object.
4407     * Nearly everywhere, inner must be non-null, however in places where
4408     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4409     */
4410    LDKnativeInitFeatures *inner;
4411    /**
4412     * Indicates that this is the only struct which contains the same pointer.
4413     * Rust functions which take ownership of an object provided via an argument require
4414     * this to be true and invalidate the object pointed to by inner.
4415     */
4416    bool is_owned;
4417 } LDKInitFeatures;
4418
4419 /**
4420  * The contents of CResult_InitFeaturesDecodeErrorZ
4421  */
4422 typedef union LDKCResult_InitFeaturesDecodeErrorZPtr {
4423    /**
4424     * A pointer to the contents in the success state.
4425     * Reading from this pointer when `result_ok` is not set is undefined.
4426     */
4427    struct LDKInitFeatures *result;
4428    /**
4429     * A pointer to the contents in the error state.
4430     * Reading from this pointer when `result_ok` is set is undefined.
4431     */
4432    struct LDKDecodeError *err;
4433 } LDKCResult_InitFeaturesDecodeErrorZPtr;
4434
4435 /**
4436  * A CResult_InitFeaturesDecodeErrorZ represents the result of a fallible operation,
4437  * containing a crate::lightning::ln::features::InitFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4438  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4439  */
4440 typedef struct LDKCResult_InitFeaturesDecodeErrorZ {
4441    /**
4442     * The contents of this CResult_InitFeaturesDecodeErrorZ, accessible via either
4443     * `err` or `result` depending on the state of `result_ok`.
4444     */
4445    union LDKCResult_InitFeaturesDecodeErrorZPtr contents;
4446    /**
4447     * Whether this CResult_InitFeaturesDecodeErrorZ represents a success state.
4448     */
4449    bool result_ok;
4450 } LDKCResult_InitFeaturesDecodeErrorZ;
4451
4452
4453
4454 /**
4455  * Features used within a `channel_announcement` message.
4456  */
4457 typedef struct MUST_USE_STRUCT LDKChannelFeatures {
4458    /**
4459     * A pointer to the opaque Rust object.
4460     * Nearly everywhere, inner must be non-null, however in places where
4461     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4462     */
4463    LDKnativeChannelFeatures *inner;
4464    /**
4465     * Indicates that this is the only struct which contains the same pointer.
4466     * Rust functions which take ownership of an object provided via an argument require
4467     * this to be true and invalidate the object pointed to by inner.
4468     */
4469    bool is_owned;
4470 } LDKChannelFeatures;
4471
4472 /**
4473  * The contents of CResult_ChannelFeaturesDecodeErrorZ
4474  */
4475 typedef union LDKCResult_ChannelFeaturesDecodeErrorZPtr {
4476    /**
4477     * A pointer to the contents in the success state.
4478     * Reading from this pointer when `result_ok` is not set is undefined.
4479     */
4480    struct LDKChannelFeatures *result;
4481    /**
4482     * A pointer to the contents in the error state.
4483     * Reading from this pointer when `result_ok` is set is undefined.
4484     */
4485    struct LDKDecodeError *err;
4486 } LDKCResult_ChannelFeaturesDecodeErrorZPtr;
4487
4488 /**
4489  * A CResult_ChannelFeaturesDecodeErrorZ represents the result of a fallible operation,
4490  * containing a crate::lightning::ln::features::ChannelFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4491  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4492  */
4493 typedef struct LDKCResult_ChannelFeaturesDecodeErrorZ {
4494    /**
4495     * The contents of this CResult_ChannelFeaturesDecodeErrorZ, accessible via either
4496     * `err` or `result` depending on the state of `result_ok`.
4497     */
4498    union LDKCResult_ChannelFeaturesDecodeErrorZPtr contents;
4499    /**
4500     * Whether this CResult_ChannelFeaturesDecodeErrorZ represents a success state.
4501     */
4502    bool result_ok;
4503 } LDKCResult_ChannelFeaturesDecodeErrorZ;
4504
4505
4506
4507 /**
4508  * Features used within a `node_announcement` message.
4509  */
4510 typedef struct MUST_USE_STRUCT LDKNodeFeatures {
4511    /**
4512     * A pointer to the opaque Rust object.
4513     * Nearly everywhere, inner must be non-null, however in places where
4514     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4515     */
4516    LDKnativeNodeFeatures *inner;
4517    /**
4518     * Indicates that this is the only struct which contains the same pointer.
4519     * Rust functions which take ownership of an object provided via an argument require
4520     * this to be true and invalidate the object pointed to by inner.
4521     */
4522    bool is_owned;
4523 } LDKNodeFeatures;
4524
4525 /**
4526  * The contents of CResult_NodeFeaturesDecodeErrorZ
4527  */
4528 typedef union LDKCResult_NodeFeaturesDecodeErrorZPtr {
4529    /**
4530     * A pointer to the contents in the success state.
4531     * Reading from this pointer when `result_ok` is not set is undefined.
4532     */
4533    struct LDKNodeFeatures *result;
4534    /**
4535     * A pointer to the contents in the error state.
4536     * Reading from this pointer when `result_ok` is set is undefined.
4537     */
4538    struct LDKDecodeError *err;
4539 } LDKCResult_NodeFeaturesDecodeErrorZPtr;
4540
4541 /**
4542  * A CResult_NodeFeaturesDecodeErrorZ represents the result of a fallible operation,
4543  * containing a crate::lightning::ln::features::NodeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4544  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4545  */
4546 typedef struct LDKCResult_NodeFeaturesDecodeErrorZ {
4547    /**
4548     * The contents of this CResult_NodeFeaturesDecodeErrorZ, accessible via either
4549     * `err` or `result` depending on the state of `result_ok`.
4550     */
4551    union LDKCResult_NodeFeaturesDecodeErrorZPtr contents;
4552    /**
4553     * Whether this CResult_NodeFeaturesDecodeErrorZ represents a success state.
4554     */
4555    bool result_ok;
4556 } LDKCResult_NodeFeaturesDecodeErrorZ;
4557
4558
4559
4560 /**
4561  * Features used within an invoice.
4562  */
4563 typedef struct MUST_USE_STRUCT LDKInvoiceFeatures {
4564    /**
4565     * A pointer to the opaque Rust object.
4566     * Nearly everywhere, inner must be non-null, however in places where
4567     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4568     */
4569    LDKnativeInvoiceFeatures *inner;
4570    /**
4571     * Indicates that this is the only struct which contains the same pointer.
4572     * Rust functions which take ownership of an object provided via an argument require
4573     * this to be true and invalidate the object pointed to by inner.
4574     */
4575    bool is_owned;
4576 } LDKInvoiceFeatures;
4577
4578 /**
4579  * The contents of CResult_InvoiceFeaturesDecodeErrorZ
4580  */
4581 typedef union LDKCResult_InvoiceFeaturesDecodeErrorZPtr {
4582    /**
4583     * A pointer to the contents in the success state.
4584     * Reading from this pointer when `result_ok` is not set is undefined.
4585     */
4586    struct LDKInvoiceFeatures *result;
4587    /**
4588     * A pointer to the contents in the error state.
4589     * Reading from this pointer when `result_ok` is set is undefined.
4590     */
4591    struct LDKDecodeError *err;
4592 } LDKCResult_InvoiceFeaturesDecodeErrorZPtr;
4593
4594 /**
4595  * A CResult_InvoiceFeaturesDecodeErrorZ represents the result of a fallible operation,
4596  * containing a crate::lightning::ln::features::InvoiceFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4597  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4598  */
4599 typedef struct LDKCResult_InvoiceFeaturesDecodeErrorZ {
4600    /**
4601     * The contents of this CResult_InvoiceFeaturesDecodeErrorZ, accessible via either
4602     * `err` or `result` depending on the state of `result_ok`.
4603     */
4604    union LDKCResult_InvoiceFeaturesDecodeErrorZPtr contents;
4605    /**
4606     * Whether this CResult_InvoiceFeaturesDecodeErrorZ represents a success state.
4607     */
4608    bool result_ok;
4609 } LDKCResult_InvoiceFeaturesDecodeErrorZ;
4610
4611
4612
4613 /**
4614  * Features used within the channel_type field in an OpenChannel message.
4615  *
4616  * A channel is always of some known \"type\", describing the transaction formats used and the exact
4617  * semantics of our interaction with our peer.
4618  *
4619  * Note that because a channel is a specific type which is proposed by the opener and accepted by
4620  * the counterparty, only required features are allowed here.
4621  *
4622  * This is serialized differently from other feature types - it is not prefixed by a length, and
4623  * thus must only appear inside a TLV where its length is known in advance.
4624  */
4625 typedef struct MUST_USE_STRUCT LDKChannelTypeFeatures {
4626    /**
4627     * A pointer to the opaque Rust object.
4628     * Nearly everywhere, inner must be non-null, however in places where
4629     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4630     */
4631    LDKnativeChannelTypeFeatures *inner;
4632    /**
4633     * Indicates that this is the only struct which contains the same pointer.
4634     * Rust functions which take ownership of an object provided via an argument require
4635     * this to be true and invalidate the object pointed to by inner.
4636     */
4637    bool is_owned;
4638 } LDKChannelTypeFeatures;
4639
4640 /**
4641  * The contents of CResult_ChannelTypeFeaturesDecodeErrorZ
4642  */
4643 typedef union LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr {
4644    /**
4645     * A pointer to the contents in the success state.
4646     * Reading from this pointer when `result_ok` is not set is undefined.
4647     */
4648    struct LDKChannelTypeFeatures *result;
4649    /**
4650     * A pointer to the contents in the error state.
4651     * Reading from this pointer when `result_ok` is set is undefined.
4652     */
4653    struct LDKDecodeError *err;
4654 } LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr;
4655
4656 /**
4657  * A CResult_ChannelTypeFeaturesDecodeErrorZ represents the result of a fallible operation,
4658  * containing a crate::lightning::ln::features::ChannelTypeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
4659  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4660  */
4661 typedef struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ {
4662    /**
4663     * The contents of this CResult_ChannelTypeFeaturesDecodeErrorZ, accessible via either
4664     * `err` or `result` depending on the state of `result_ok`.
4665     */
4666    union LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr contents;
4667    /**
4668     * Whether this CResult_ChannelTypeFeaturesDecodeErrorZ represents a success state.
4669     */
4670    bool result_ok;
4671 } LDKCResult_ChannelTypeFeaturesDecodeErrorZ;
4672
4673 /**
4674  * The contents of CResult_DelayedPaymentOutputDescriptorDecodeErrorZ
4675  */
4676 typedef union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr {
4677    /**
4678     * A pointer to the contents in the success state.
4679     * Reading from this pointer when `result_ok` is not set is undefined.
4680     */
4681    struct LDKDelayedPaymentOutputDescriptor *result;
4682    /**
4683     * A pointer to the contents in the error state.
4684     * Reading from this pointer when `result_ok` is set is undefined.
4685     */
4686    struct LDKDecodeError *err;
4687 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr;
4688
4689 /**
4690  * A CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4691  * containing a crate::lightning::chain::keysinterface::DelayedPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
4692  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4693  */
4694 typedef struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
4695    /**
4696     * The contents of this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ, accessible via either
4697     * `err` or `result` depending on the state of `result_ok`.
4698     */
4699    union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr contents;
4700    /**
4701     * Whether this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents a success state.
4702     */
4703    bool result_ok;
4704 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
4705
4706 /**
4707  * The contents of CResult_StaticPaymentOutputDescriptorDecodeErrorZ
4708  */
4709 typedef union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr {
4710    /**
4711     * A pointer to the contents in the success state.
4712     * Reading from this pointer when `result_ok` is not set is undefined.
4713     */
4714    struct LDKStaticPaymentOutputDescriptor *result;
4715    /**
4716     * A pointer to the contents in the error state.
4717     * Reading from this pointer when `result_ok` is set is undefined.
4718     */
4719    struct LDKDecodeError *err;
4720 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr;
4721
4722 /**
4723  * A CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4724  * containing a crate::lightning::chain::keysinterface::StaticPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
4725  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4726  */
4727 typedef struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ {
4728    /**
4729     * The contents of this CResult_StaticPaymentOutputDescriptorDecodeErrorZ, accessible via either
4730     * `err` or `result` depending on the state of `result_ok`.
4731     */
4732    union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr contents;
4733    /**
4734     * Whether this CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents a success state.
4735     */
4736    bool result_ok;
4737 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ;
4738
4739 /**
4740  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
4741  */
4742 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
4743    /**
4744     * A pointer to the contents in the success state.
4745     * Reading from this pointer when `result_ok` is not set is undefined.
4746     */
4747    struct LDKSpendableOutputDescriptor *result;
4748    /**
4749     * A pointer to the contents in the error state.
4750     * Reading from this pointer when `result_ok` is set is undefined.
4751     */
4752    struct LDKDecodeError *err;
4753 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
4754
4755 /**
4756  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
4757  * containing a crate::lightning::chain::keysinterface::SpendableOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
4758  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4759  */
4760 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
4761    /**
4762     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
4763     * `err` or `result` depending on the state of `result_ok`.
4764     */
4765    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
4766    /**
4767     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
4768     */
4769    bool result_ok;
4770 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
4771
4772 /**
4773  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
4774  * This corresponds to std::vector in C++
4775  */
4776 typedef struct LDKCVec_PaymentPreimageZ {
4777    /**
4778     * The elements in the array.
4779     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4780     */
4781    struct LDKThirtyTwoBytes *data;
4782    /**
4783     * The number of elements pointed to by `data`.
4784     */
4785    uintptr_t datalen;
4786 } LDKCVec_PaymentPreimageZ;
4787
4788 /**
4789  * A tuple of 2 elements. See the individual fields for the types contained.
4790  */
4791 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
4792    /**
4793     * The element at position 0
4794     */
4795    struct LDKSignature a;
4796    /**
4797     * The element at position 1
4798     */
4799    struct LDKCVec_SignatureZ b;
4800 } LDKC2Tuple_SignatureCVec_SignatureZZ;
4801
4802 /**
4803  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
4804  */
4805 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
4806    /**
4807     * A pointer to the contents in the success state.
4808     * Reading from this pointer when `result_ok` is not set is undefined.
4809     */
4810    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
4811    /**
4812     * Note that this value is always NULL, as there are no contents in the Err variant
4813     */
4814    void *err;
4815 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
4816
4817 /**
4818  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
4819  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
4820  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4821  */
4822 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
4823    /**
4824     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
4825     * `err` or `result` depending on the state of `result_ok`.
4826     */
4827    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
4828    /**
4829     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
4830     */
4831    bool result_ok;
4832 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
4833
4834 /**
4835  * The contents of CResult_SignatureNoneZ
4836  */
4837 typedef union LDKCResult_SignatureNoneZPtr {
4838    /**
4839     * A pointer to the contents in the success state.
4840     * Reading from this pointer when `result_ok` is not set is undefined.
4841     */
4842    struct LDKSignature *result;
4843    /**
4844     * Note that this value is always NULL, as there are no contents in the Err variant
4845     */
4846    void *err;
4847 } LDKCResult_SignatureNoneZPtr;
4848
4849 /**
4850  * A CResult_SignatureNoneZ represents the result of a fallible operation,
4851  * containing a crate::c_types::Signature on success and a () on failure.
4852  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4853  */
4854 typedef struct LDKCResult_SignatureNoneZ {
4855    /**
4856     * The contents of this CResult_SignatureNoneZ, accessible via either
4857     * `err` or `result` depending on the state of `result_ok`.
4858     */
4859    union LDKCResult_SignatureNoneZPtr contents;
4860    /**
4861     * Whether this CResult_SignatureNoneZ represents a success state.
4862     */
4863    bool result_ok;
4864 } LDKCResult_SignatureNoneZ;
4865
4866 /**
4867  * A tuple of 2 elements. See the individual fields for the types contained.
4868  */
4869 typedef struct LDKC2Tuple_SignatureSignatureZ {
4870    /**
4871     * The element at position 0
4872     */
4873    struct LDKSignature a;
4874    /**
4875     * The element at position 1
4876     */
4877    struct LDKSignature b;
4878 } LDKC2Tuple_SignatureSignatureZ;
4879
4880 /**
4881  * The contents of CResult_C2Tuple_SignatureSignatureZNoneZ
4882  */
4883 typedef union LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr {
4884    /**
4885     * A pointer to the contents in the success state.
4886     * Reading from this pointer when `result_ok` is not set is undefined.
4887     */
4888    struct LDKC2Tuple_SignatureSignatureZ *result;
4889    /**
4890     * Note that this value is always NULL, as there are no contents in the Err variant
4891     */
4892    void *err;
4893 } LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr;
4894
4895 /**
4896  * A CResult_C2Tuple_SignatureSignatureZNoneZ represents the result of a fallible operation,
4897  * containing a crate::c_types::derived::C2Tuple_SignatureSignatureZ on success and a () on failure.
4898  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4899  */
4900 typedef struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ {
4901    /**
4902     * The contents of this CResult_C2Tuple_SignatureSignatureZNoneZ, accessible via either
4903     * `err` or `result` depending on the state of `result_ok`.
4904     */
4905    union LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr contents;
4906    /**
4907     * Whether this CResult_C2Tuple_SignatureSignatureZNoneZ represents a success state.
4908     */
4909    bool result_ok;
4910 } LDKCResult_C2Tuple_SignatureSignatureZNoneZ;
4911
4912 /**
4913  * The contents of CResult_SecretKeyNoneZ
4914  */
4915 typedef union LDKCResult_SecretKeyNoneZPtr {
4916    /**
4917     * A pointer to the contents in the success state.
4918     * Reading from this pointer when `result_ok` is not set is undefined.
4919     */
4920    struct LDKSecretKey *result;
4921    /**
4922     * Note that this value is always NULL, as there are no contents in the Err variant
4923     */
4924    void *err;
4925 } LDKCResult_SecretKeyNoneZPtr;
4926
4927 /**
4928  * A CResult_SecretKeyNoneZ represents the result of a fallible operation,
4929  * containing a crate::c_types::SecretKey on success and a () on failure.
4930  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4931  */
4932 typedef struct LDKCResult_SecretKeyNoneZ {
4933    /**
4934     * The contents of this CResult_SecretKeyNoneZ, accessible via either
4935     * `err` or `result` depending on the state of `result_ok`.
4936     */
4937    union LDKCResult_SecretKeyNoneZPtr contents;
4938    /**
4939     * Whether this CResult_SecretKeyNoneZ represents a success state.
4940     */
4941    bool result_ok;
4942 } LDKCResult_SecretKeyNoneZ;
4943
4944
4945
4946 /**
4947  * This class tracks the per-transaction information needed to build a closing transaction and will
4948  * actually build it and sign.
4949  *
4950  * This class can be used inside a signer implementation to generate a signature given the relevant
4951  * secret key.
4952  */
4953 typedef struct MUST_USE_STRUCT LDKClosingTransaction {
4954    /**
4955     * A pointer to the opaque Rust object.
4956     * Nearly everywhere, inner must be non-null, however in places where
4957     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4958     */
4959    LDKnativeClosingTransaction *inner;
4960    /**
4961     * Indicates that this is the only struct which contains the same pointer.
4962     * Rust functions which take ownership of an object provided via an argument require
4963     * this to be true and invalidate the object pointed to by inner.
4964     */
4965    bool is_owned;
4966 } LDKClosingTransaction;
4967
4968
4969
4970 /**
4971  * The unsigned part of a channel_announcement
4972  */
4973 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
4974    /**
4975     * A pointer to the opaque Rust object.
4976     * Nearly everywhere, inner must be non-null, however in places where
4977     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4978     */
4979    LDKnativeUnsignedChannelAnnouncement *inner;
4980    /**
4981     * Indicates that this is the only struct which contains the same pointer.
4982     * Rust functions which take ownership of an object provided via an argument require
4983     * this to be true and invalidate the object pointed to by inner.
4984     */
4985    bool is_owned;
4986 } LDKUnsignedChannelAnnouncement;
4987
4988 /**
4989  * A trait to sign lightning channel transactions as described in BOLT 3.
4990  *
4991  * Signing services could be implemented on a hardware wallet. In this case,
4992  * the current Sign would be a front-end on top of a communication
4993  * channel connected to your secure device and lightning key material wouldn't
4994  * reside on a hot server. Nevertheless, a this deployment would still need
4995  * to trust the ChannelManager to avoid loss of funds as this latest component
4996  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
4997  *
4998  * A more secure iteration would be to use hashlock (or payment points) to pair
4999  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
5000  * at the price of more state and computation on the hardware wallet side. In the future,
5001  * we are looking forward to design such interface.
5002  *
5003  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
5004  * to act, as liveness and breach reply correctness are always going to be hard requirements
5005  * of LN security model, orthogonal of key management issues.
5006  */
5007 typedef struct LDKBaseSign {
5008    /**
5009     * An opaque pointer which is passed to your function implementations as an argument.
5010     * This has no meaning in the LDK, and can be NULL or any other value.
5011     */
5012    void *this_arg;
5013    /**
5014     * Gets the per-commitment point for a specific commitment number
5015     *
5016     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
5017     */
5018    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
5019    /**
5020     * Gets the commitment secret for a specific commitment number as part of the revocation process
5021     *
5022     * An external signer implementation should error here if the commitment was already signed
5023     * and should refuse to sign it in the future.
5024     *
5025     * May be called more than once for the same index.
5026     *
5027     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
5028     */
5029    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
5030    /**
5031     * Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
5032     *
5033     * This is required in order for the signer to make sure that releasing a commitment
5034     * secret won't leave us without a broadcastable holder transaction.
5035     * Policy checks should be implemented in this function, including checking the amount
5036     * sent to us and checking the HTLCs.
5037     *
5038     * The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
5039     * A validating signer should ensure that an HTLC output is removed only when the matching
5040     * preimage is provided, or when the value to holder is restored.
5041     *
5042     * NOTE: all the relevant preimages will be provided, but there may also be additional
5043     * irrelevant or duplicate preimages.
5044     */
5045    struct LDKCResult_NoneNoneZ (*validate_holder_commitment)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
5046    /**
5047     * Gets the holder's channel public keys and basepoints
5048     */
5049    struct LDKChannelPublicKeys pubkeys;
5050    /**
5051     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
5052     * Note that this takes a pointer to this object, not the this_ptr like other methods do
5053     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
5054     */
5055    void (*set_pubkeys)(const struct LDKBaseSign*NONNULL_PTR );
5056    /**
5057     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
5058     * some SpendableOutputDescriptor types. This should be sufficient to identify this
5059     * Sign object uniquely and lookup or re-derive its keys.
5060     */
5061    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
5062    /**
5063     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
5064     *
5065     * Note that if signing fails or is rejected, the channel will be force-closed.
5066     *
5067     * Policy checks should be implemented in this function, including checking the amount
5068     * sent to us and checking the HTLCs.
5069     *
5070     * The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
5071     * A validating signer should ensure that an HTLC output is removed only when the matching
5072     * preimage is provided, or when the value to holder is restored.
5073     *
5074     * NOTE: all the relevant preimages will be provided, but there may also be additional
5075     * irrelevant or duplicate preimages.
5076     */
5077    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
5078    /**
5079     * Validate the counterparty's revocation.
5080     *
5081     * This is required in order for the signer to make sure that the state has moved
5082     * forward and it is safe to sign the next counterparty commitment.
5083     */
5084    struct LDKCResult_NoneNoneZ (*validate_counterparty_revocation)(const void *this_arg, uint64_t idx, const uint8_t (*secret)[32]);
5085    /**
5086     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
5087     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
5088     * latest commitment_tx when we initiate a force-close.
5089     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
5090     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
5091     * the latest.
5092     * This may be called multiple times for the same transaction.
5093     *
5094     * An external signer implementation should check that the commitment has not been revoked.
5095     *
5096     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
5097     */
5098    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
5099    /**
5100     * Create a signature for the given input in a transaction spending an HTLC transaction output
5101     * or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
5102     *
5103     * A justice transaction may claim multiple outputs at the same time if timelocks are
5104     * similar, but only a signature for the input at index `input` should be signed for here.
5105     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
5106     * to an upcoming timelock expiration.
5107     *
5108     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
5109     *
5110     * per_commitment_key is revocation secret which was provided by our counterparty when they
5111     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
5112     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
5113     * so).
5114     */
5115    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]);
5116    /**
5117     * Create a signature for the given input in a transaction spending a commitment transaction
5118     * HTLC output when our counterparty broadcasts an old state.
5119     *
5120     * A justice transaction may claim multiple outputs at the same time if timelocks are
5121     * similar, but only a signature for the input at index `input` should be signed for here.
5122     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
5123     * to an upcoming timelock expiration.
5124     *
5125     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
5126     *
5127     * per_commitment_key is revocation secret which was provided by our counterparty when they
5128     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
5129     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
5130     * so).
5131     *
5132     * htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
5133     * (which is committed to in the BIP 143 signatures).
5134     */
5135    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);
5136    /**
5137     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
5138     * transaction, either offered or received.
5139     *
5140     * Such a transaction may claim multiples offered outputs at same time if we know the
5141     * preimage for each when we create it, but only the input at index `input` should be
5142     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
5143     * needed with regards to an upcoming timelock expiration.
5144     *
5145     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
5146     * outputs.
5147     *
5148     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
5149     *
5150     * Per_commitment_point is the dynamic point corresponding to the channel state
5151     * detected onchain. It has been generated by our counterparty and is used to derive
5152     * channel state keys, which are then included in the witness script and committed to in the
5153     * BIP 143 signature.
5154     */
5155    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);
5156    /**
5157     * Create a signature for a (proposed) closing transaction.
5158     *
5159     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
5160     * chosen to forgo their output as dust.
5161     */
5162    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
5163    /**
5164     * Signs a channel announcement message with our funding key and our node secret key (aka
5165     * node_id or network_key), proving it comes from one of the channel participants.
5166     *
5167     * The first returned signature should be from our node secret key, the second from our
5168     * funding key.
5169     *
5170     * Note that if this fails or is rejected, the channel will not be publicly announced and
5171     * our counterparty may (though likely will not) close the channel on us for violating the
5172     * protocol.
5173     */
5174    struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
5175    /**
5176     * Set the counterparty static channel data, including basepoints,
5177     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
5178     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
5179     * they MUST NOT be allowed to change to different values once set.
5180     *
5181     * channel_parameters.is_populated() MUST be true.
5182     *
5183     * We bind holder_selected_contest_delay late here for API convenience.
5184     *
5185     * Will be called before any signatures are applied.
5186     */
5187    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
5188    /**
5189     * Frees any resources associated with this object given its this_arg pointer.
5190     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
5191     */
5192    void (*free)(void *this_arg);
5193 } LDKBaseSign;
5194
5195 /**
5196  * A cloneable signer.
5197  *
5198  * Although we require signers to be cloneable, it may be useful for developers to be able to use
5199  * signers in an un-sized way, for example as `dyn BaseSign`. Therefore we separate the Clone trait,
5200  * which implies Sized, into this derived trait.
5201  */
5202 typedef struct LDKSign {
5203    /**
5204     * An opaque pointer which is passed to your function implementations as an argument.
5205     * This has no meaning in the LDK, and can be NULL or any other value.
5206     */
5207    void *this_arg;
5208    /**
5209     * Implementation of BaseSign for this object.
5210     */
5211    struct LDKBaseSign BaseSign;
5212    /**
5213     * Serialize the object into a byte array
5214     */
5215    struct LDKCVec_u8Z (*write)(const void *this_arg);
5216    /**
5217     * Called, if set, after this Sign has been cloned into a duplicate object.
5218     * The new Sign is provided, and should be mutated as needed to perform a
5219     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
5220     */
5221    void (*cloned)(struct LDKSign *NONNULL_PTR new_Sign);
5222    /**
5223     * Frees any resources associated with this object given its this_arg pointer.
5224     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
5225     */
5226    void (*free)(void *this_arg);
5227 } LDKSign;
5228
5229 /**
5230  * The contents of CResult_SignDecodeErrorZ
5231  */
5232 typedef union LDKCResult_SignDecodeErrorZPtr {
5233    /**
5234     * A pointer to the contents in the success state.
5235     * Reading from this pointer when `result_ok` is not set is undefined.
5236     */
5237    struct LDKSign *result;
5238    /**
5239     * A pointer to the contents in the error state.
5240     * Reading from this pointer when `result_ok` is set is undefined.
5241     */
5242    struct LDKDecodeError *err;
5243 } LDKCResult_SignDecodeErrorZPtr;
5244
5245 /**
5246  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
5247  * containing a crate::lightning::chain::keysinterface::Sign on success and a crate::lightning::ln::msgs::DecodeError on failure.
5248  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5249  */
5250 typedef struct LDKCResult_SignDecodeErrorZ {
5251    /**
5252     * The contents of this CResult_SignDecodeErrorZ, accessible via either
5253     * `err` or `result` depending on the state of `result_ok`.
5254     */
5255    union LDKCResult_SignDecodeErrorZPtr contents;
5256    /**
5257     * Whether this CResult_SignDecodeErrorZ represents a success state.
5258     */
5259    bool result_ok;
5260 } LDKCResult_SignDecodeErrorZ;
5261
5262 /**
5263  * Integer in the range `0..32`
5264  */
5265 typedef struct LDKu5 {
5266    uint8_t _0;
5267 } LDKu5;
5268
5269 /**
5270  * A dynamically-allocated array of crate::c_types::u5s of arbitrary size.
5271  * This corresponds to std::vector in C++
5272  */
5273 typedef struct LDKCVec_u5Z {
5274    /**
5275     * The elements in the array.
5276     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5277     */
5278    struct LDKu5 *data;
5279    /**
5280     * The number of elements pointed to by `data`.
5281     */
5282    uintptr_t datalen;
5283 } LDKCVec_u5Z;
5284
5285 /**
5286  * Represents a secp256k1 signature serialized as two 32-byte numbers as well as a tag which
5287  * allows recovering the exact public key which created the signature given the message.
5288  */
5289 typedef struct LDKRecoverableSignature {
5290    /**
5291     * The bytes of the signature in "compact" form plus a "Recovery ID" which allows for
5292     * recovery.
5293     */
5294    uint8_t serialized_form[68];
5295 } LDKRecoverableSignature;
5296
5297 /**
5298  * The contents of CResult_RecoverableSignatureNoneZ
5299  */
5300 typedef union LDKCResult_RecoverableSignatureNoneZPtr {
5301    /**
5302     * A pointer to the contents in the success state.
5303     * Reading from this pointer when `result_ok` is not set is undefined.
5304     */
5305    struct LDKRecoverableSignature *result;
5306    /**
5307     * Note that this value is always NULL, as there are no contents in the Err variant
5308     */
5309    void *err;
5310 } LDKCResult_RecoverableSignatureNoneZPtr;
5311
5312 /**
5313  * A CResult_RecoverableSignatureNoneZ represents the result of a fallible operation,
5314  * containing a crate::c_types::RecoverableSignature on success and a () on failure.
5315  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5316  */
5317 typedef struct LDKCResult_RecoverableSignatureNoneZ {
5318    /**
5319     * The contents of this CResult_RecoverableSignatureNoneZ, accessible via either
5320     * `err` or `result` depending on the state of `result_ok`.
5321     */
5322    union LDKCResult_RecoverableSignatureNoneZPtr contents;
5323    /**
5324     * Whether this CResult_RecoverableSignatureNoneZ represents a success state.
5325     */
5326    bool result_ok;
5327 } LDKCResult_RecoverableSignatureNoneZ;
5328
5329 /**
5330  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
5331  * This corresponds to std::vector in C++
5332  */
5333 typedef struct LDKCVec_CVec_u8ZZ {
5334    /**
5335     * The elements in the array.
5336     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5337     */
5338    struct LDKCVec_u8Z *data;
5339    /**
5340     * The number of elements pointed to by `data`.
5341     */
5342    uintptr_t datalen;
5343 } LDKCVec_CVec_u8ZZ;
5344
5345 /**
5346  * The contents of CResult_CVec_CVec_u8ZZNoneZ
5347  */
5348 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
5349    /**
5350     * A pointer to the contents in the success state.
5351     * Reading from this pointer when `result_ok` is not set is undefined.
5352     */
5353    struct LDKCVec_CVec_u8ZZ *result;
5354    /**
5355     * Note that this value is always NULL, as there are no contents in the Err variant
5356     */
5357    void *err;
5358 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
5359
5360 /**
5361  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
5362  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
5363  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5364  */
5365 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
5366    /**
5367     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
5368     * `err` or `result` depending on the state of `result_ok`.
5369     */
5370    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
5371    /**
5372     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
5373     */
5374    bool result_ok;
5375 } LDKCResult_CVec_CVec_u8ZZNoneZ;
5376
5377
5378
5379 /**
5380  * A simple implementation of Sign that just keeps the private keys in memory.
5381  *
5382  * This implementation performs no policy checks and is insufficient by itself as
5383  * a secure external signer.
5384  */
5385 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
5386    /**
5387     * A pointer to the opaque Rust object.
5388     * Nearly everywhere, inner must be non-null, however in places where
5389     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5390     */
5391    LDKnativeInMemorySigner *inner;
5392    /**
5393     * Indicates that this is the only struct which contains the same pointer.
5394     * Rust functions which take ownership of an object provided via an argument require
5395     * this to be true and invalidate the object pointed to by inner.
5396     */
5397    bool is_owned;
5398 } LDKInMemorySigner;
5399
5400 /**
5401  * The contents of CResult_InMemorySignerDecodeErrorZ
5402  */
5403 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
5404    /**
5405     * A pointer to the contents in the success state.
5406     * Reading from this pointer when `result_ok` is not set is undefined.
5407     */
5408    struct LDKInMemorySigner *result;
5409    /**
5410     * A pointer to the contents in the error state.
5411     * Reading from this pointer when `result_ok` is set is undefined.
5412     */
5413    struct LDKDecodeError *err;
5414 } LDKCResult_InMemorySignerDecodeErrorZPtr;
5415
5416 /**
5417  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
5418  * containing a crate::lightning::chain::keysinterface::InMemorySigner on success and a crate::lightning::ln::msgs::DecodeError on failure.
5419  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5420  */
5421 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
5422    /**
5423     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
5424     * `err` or `result` depending on the state of `result_ok`.
5425     */
5426    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
5427    /**
5428     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
5429     */
5430    bool result_ok;
5431 } LDKCResult_InMemorySignerDecodeErrorZ;
5432
5433 /**
5434  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
5435  * This corresponds to std::vector in C++
5436  */
5437 typedef struct LDKCVec_TxOutZ {
5438    /**
5439     * The elements in the array.
5440     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5441     */
5442    struct LDKTxOut *data;
5443    /**
5444     * The number of elements pointed to by `data`.
5445     */
5446    uintptr_t datalen;
5447 } LDKCVec_TxOutZ;
5448
5449 /**
5450  * The contents of CResult_TransactionNoneZ
5451  */
5452 typedef union LDKCResult_TransactionNoneZPtr {
5453    /**
5454     * A pointer to the contents in the success state.
5455     * Reading from this pointer when `result_ok` is not set is undefined.
5456     */
5457    struct LDKTransaction *result;
5458    /**
5459     * Note that this value is always NULL, as there are no contents in the Err variant
5460     */
5461    void *err;
5462 } LDKCResult_TransactionNoneZPtr;
5463
5464 /**
5465  * A CResult_TransactionNoneZ represents the result of a fallible operation,
5466  * containing a crate::c_types::Transaction on success and a () on failure.
5467  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5468  */
5469 typedef struct LDKCResult_TransactionNoneZ {
5470    /**
5471     * The contents of this CResult_TransactionNoneZ, accessible via either
5472     * `err` or `result` depending on the state of `result_ok`.
5473     */
5474    union LDKCResult_TransactionNoneZPtr contents;
5475    /**
5476     * Whether this CResult_TransactionNoneZ represents a success state.
5477     */
5478    bool result_ok;
5479 } LDKCResult_TransactionNoneZ;
5480
5481
5482
5483 /**
5484  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
5485  * on-chain transactions to ensure no loss of funds occurs.
5486  *
5487  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
5488  * information and are actively monitoring the chain.
5489  *
5490  * Pending Events or updated HTLCs which have not yet been read out by
5491  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
5492  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
5493  * gotten are fully handled before re-serializing the new state.
5494  *
5495  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
5496  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
5497  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
5498  * returned block hash and the the current chain and then reconnecting blocks to get to the
5499  * best chain) upon deserializing the object!
5500  */
5501 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
5502    /**
5503     * A pointer to the opaque Rust object.
5504     * Nearly everywhere, inner must be non-null, however in places where
5505     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5506     */
5507    LDKnativeChannelMonitor *inner;
5508    /**
5509     * Indicates that this is the only struct which contains the same pointer.
5510     * Rust functions which take ownership of an object provided via an argument require
5511     * this to be true and invalidate the object pointed to by inner.
5512     */
5513    bool is_owned;
5514 } LDKChannelMonitor;
5515
5516 /**
5517  * A tuple of 2 elements. See the individual fields for the types contained.
5518  */
5519 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
5520    /**
5521     * The element at position 0
5522     */
5523    struct LDKThirtyTwoBytes a;
5524    /**
5525     * The element at position 1
5526     */
5527    struct LDKChannelMonitor b;
5528 } LDKC2Tuple_BlockHashChannelMonitorZ;
5529
5530 /**
5531  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZs of arbitrary size.
5532  * This corresponds to std::vector in C++
5533  */
5534 typedef struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ {
5535    /**
5536     * The elements in the array.
5537     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5538     */
5539    struct LDKC2Tuple_BlockHashChannelMonitorZ *data;
5540    /**
5541     * The number of elements pointed to by `data`.
5542     */
5543    uintptr_t datalen;
5544 } LDKCVec_C2Tuple_BlockHashChannelMonitorZZ;
5545
5546 /**
5547  * The contents of CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ
5548  */
5549 typedef union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr {
5550    /**
5551     * A pointer to the contents in the success state.
5552     * Reading from this pointer when `result_ok` is not set is undefined.
5553     */
5554    struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ *result;
5555    /**
5556     * A pointer to the contents in the error state.
5557     * Reading from this pointer when `result_ok` is set is undefined.
5558     */
5559    enum LDKIOError *err;
5560 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr;
5561
5562 /**
5563  * A CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents the result of a fallible operation,
5564  * containing a crate::c_types::derived::CVec_C2Tuple_BlockHashChannelMonitorZZ on success and a crate::c_types::IOError on failure.
5565  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5566  */
5567 typedef struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
5568    /**
5569     * The contents of this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ, accessible via either
5570     * `err` or `result` depending on the state of `result_ok`.
5571     */
5572    union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr contents;
5573    /**
5574     * Whether this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents a success state.
5575     */
5576    bool result_ok;
5577 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
5578
5579 /**
5580  * An enum which can either contain a u16 or not
5581  */
5582 typedef enum LDKCOption_u16Z_Tag {
5583    /**
5584     * When we're in this state, this COption_u16Z contains a u16
5585     */
5586    LDKCOption_u16Z_Some,
5587    /**
5588     * When we're in this state, this COption_u16Z contains nothing
5589     */
5590    LDKCOption_u16Z_None,
5591    /**
5592     * Must be last for serialization purposes
5593     */
5594    LDKCOption_u16Z_Sentinel,
5595 } LDKCOption_u16Z_Tag;
5596
5597 typedef struct LDKCOption_u16Z {
5598    LDKCOption_u16Z_Tag tag;
5599    union {
5600       struct {
5601          uint16_t some;
5602       };
5603    };
5604 } LDKCOption_u16Z;
5605
5606 /**
5607  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
5608  * too-high values)
5609  */
5610 typedef enum LDKAPIError_Tag {
5611    /**
5612     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
5613     * are documented, but generally indicates some precondition of a function was violated.
5614     */
5615    LDKAPIError_APIMisuseError,
5616    /**
5617     * Due to a high feerate, we were unable to complete the request.
5618     * For example, this may be returned if the feerate implies we cannot open a channel at the
5619     * requested value, but opening a larger channel would succeed.
5620     */
5621    LDKAPIError_FeeRateTooHigh,
5622    /**
5623     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
5624     * too-many-hops, etc).
5625     */
5626    LDKAPIError_RouteError,
5627    /**
5628     * We were unable to complete the request as the Channel required to do so is unable to
5629     * complete the request (or was not found). This can take many forms, including disconnected
5630     * peer, channel at capacity, channel shutting down, etc.
5631     */
5632    LDKAPIError_ChannelUnavailable,
5633    /**
5634     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
5635     * attempted action to fail.
5636     */
5637    LDKAPIError_MonitorUpdateFailed,
5638    /**
5639     * [`KeysInterface::get_shutdown_scriptpubkey`] returned a shutdown scriptpubkey incompatible
5640     * with the channel counterparty as negotiated in [`InitFeatures`].
5641     *
5642     * Using a SegWit v0 script should resolve this issue. If you cannot, you won't be able to open
5643     * a channel or cooperatively close one with this peer (and will have to force-close instead).
5644     *
5645     * [`KeysInterface::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::KeysInterface::get_shutdown_scriptpubkey
5646     * [`InitFeatures`]: crate::ln::features::InitFeatures
5647     */
5648    LDKAPIError_IncompatibleShutdownScript,
5649    /**
5650     * Must be last for serialization purposes
5651     */
5652    LDKAPIError_Sentinel,
5653 } LDKAPIError_Tag;
5654
5655 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
5656    /**
5657     * A human-readable error message
5658     */
5659    struct LDKStr err;
5660 } LDKAPIError_LDKAPIMisuseError_Body;
5661
5662 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
5663    /**
5664     * A human-readable error message
5665     */
5666    struct LDKStr err;
5667    /**
5668     * The feerate which was too high.
5669     */
5670    uint32_t feerate;
5671 } LDKAPIError_LDKFeeRateTooHigh_Body;
5672
5673 typedef struct LDKAPIError_LDKRouteError_Body {
5674    /**
5675     * A human-readable error message
5676     */
5677    struct LDKStr err;
5678 } LDKAPIError_LDKRouteError_Body;
5679
5680 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
5681    /**
5682     * A human-readable error message
5683     */
5684    struct LDKStr err;
5685 } LDKAPIError_LDKChannelUnavailable_Body;
5686
5687 typedef struct LDKAPIError_LDKIncompatibleShutdownScript_Body {
5688    /**
5689     * The incompatible shutdown script.
5690     */
5691    struct LDKShutdownScript script;
5692 } LDKAPIError_LDKIncompatibleShutdownScript_Body;
5693
5694 typedef struct MUST_USE_STRUCT LDKAPIError {
5695    LDKAPIError_Tag tag;
5696    union {
5697       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
5698       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
5699       LDKAPIError_LDKRouteError_Body route_error;
5700       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
5701       LDKAPIError_LDKIncompatibleShutdownScript_Body incompatible_shutdown_script;
5702    };
5703 } LDKAPIError;
5704
5705 /**
5706  * The contents of CResult_NoneAPIErrorZ
5707  */
5708 typedef union LDKCResult_NoneAPIErrorZPtr {
5709    /**
5710     * Note that this value is always NULL, as there are no contents in the OK variant
5711     */
5712    void *result;
5713    /**
5714     * A pointer to the contents in the error state.
5715     * Reading from this pointer when `result_ok` is set is undefined.
5716     */
5717    struct LDKAPIError *err;
5718 } LDKCResult_NoneAPIErrorZPtr;
5719
5720 /**
5721  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
5722  * containing a () on success and a crate::lightning::util::errors::APIError on failure.
5723  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5724  */
5725 typedef struct LDKCResult_NoneAPIErrorZ {
5726    /**
5727     * The contents of this CResult_NoneAPIErrorZ, accessible via either
5728     * `err` or `result` depending on the state of `result_ok`.
5729     */
5730    union LDKCResult_NoneAPIErrorZPtr contents;
5731    /**
5732     * Whether this CResult_NoneAPIErrorZ represents a success state.
5733     */
5734    bool result_ok;
5735 } LDKCResult_NoneAPIErrorZ;
5736
5737 /**
5738  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
5739  * This corresponds to std::vector in C++
5740  */
5741 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
5742    /**
5743     * The elements in the array.
5744     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5745     */
5746    struct LDKCResult_NoneAPIErrorZ *data;
5747    /**
5748     * The number of elements pointed to by `data`.
5749     */
5750    uintptr_t datalen;
5751 } LDKCVec_CResult_NoneAPIErrorZZ;
5752
5753 /**
5754  * A dynamically-allocated array of crate::lightning::util::errors::APIErrors of arbitrary size.
5755  * This corresponds to std::vector in C++
5756  */
5757 typedef struct LDKCVec_APIErrorZ {
5758    /**
5759     * The elements in the array.
5760     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5761     */
5762    struct LDKAPIError *data;
5763    /**
5764     * The number of elements pointed to by `data`.
5765     */
5766    uintptr_t datalen;
5767 } LDKCVec_APIErrorZ;
5768
5769 /**
5770  * The contents of CResult__u832APIErrorZ
5771  */
5772 typedef union LDKCResult__u832APIErrorZPtr {
5773    /**
5774     * A pointer to the contents in the success state.
5775     * Reading from this pointer when `result_ok` is not set is undefined.
5776     */
5777    struct LDKThirtyTwoBytes *result;
5778    /**
5779     * A pointer to the contents in the error state.
5780     * Reading from this pointer when `result_ok` is set is undefined.
5781     */
5782    struct LDKAPIError *err;
5783 } LDKCResult__u832APIErrorZPtr;
5784
5785 /**
5786  * A CResult__u832APIErrorZ represents the result of a fallible operation,
5787  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
5788  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5789  */
5790 typedef struct LDKCResult__u832APIErrorZ {
5791    /**
5792     * The contents of this CResult__u832APIErrorZ, accessible via either
5793     * `err` or `result` depending on the state of `result_ok`.
5794     */
5795    union LDKCResult__u832APIErrorZPtr contents;
5796    /**
5797     * Whether this CResult__u832APIErrorZ represents a success state.
5798     */
5799    bool result_ok;
5800 } LDKCResult__u832APIErrorZ;
5801
5802 /**
5803  * If a payment fails to send, it can be in one of several states. This enum is returned as the
5804  * Err() type describing which state the payment is in, see the description of individual enum
5805  * states for more.
5806  */
5807 typedef enum LDKPaymentSendFailure_Tag {
5808    /**
5809     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
5810     * send the payment at all. No channel state has been changed or messages sent to peers, and
5811     * once you've changed the parameter at error, you can freely retry the payment in full.
5812     */
5813    LDKPaymentSendFailure_ParameterError,
5814    /**
5815     * A parameter in a single path which was passed to send_payment was invalid, preventing us
5816     * from attempting to send the payment at all. No channel state has been changed or messages
5817     * sent to peers, and once you've changed the parameter at error, you can freely retry the
5818     * payment in full.
5819     *
5820     * The results here are ordered the same as the paths in the route object which was passed to
5821     * send_payment.
5822     */
5823    LDKPaymentSendFailure_PathParameterError,
5824    /**
5825     * All paths which were attempted failed to send, with no channel state change taking place.
5826     * You can freely retry the payment in full (though you probably want to do so over different
5827     * paths than the ones selected).
5828     */
5829    LDKPaymentSendFailure_AllFailedRetrySafe,
5830    /**
5831     * Some paths which were attempted failed to send, though possibly not all. At least some
5832     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
5833     * in over-/re-payment.
5834     *
5835     * The results here are ordered the same as the paths in the route object which was passed to
5836     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
5837     * retried (though there is currently no API with which to do so).
5838     *
5839     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
5840     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
5841     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
5842     * with the latest update_id.
5843     */
5844    LDKPaymentSendFailure_PartialFailure,
5845    /**
5846     * Must be last for serialization purposes
5847     */
5848    LDKPaymentSendFailure_Sentinel,
5849 } LDKPaymentSendFailure_Tag;
5850
5851 typedef struct LDKPaymentSendFailure_LDKPartialFailure_Body {
5852    /**
5853     * The errors themselves, in the same order as the route hops.
5854     */
5855    struct LDKCVec_CResult_NoneAPIErrorZZ results;
5856    /**
5857     * If some paths failed without irrevocably committing to the new HTLC(s), this will
5858     * contain a [`RouteParameters`] object which can be used to calculate a new route that
5859     * will pay all remaining unpaid balance.
5860     *
5861     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
5862     */
5863    struct LDKRouteParameters failed_paths_retry;
5864    /**
5865     * The payment id for the payment, which is now at least partially pending.
5866     */
5867    struct LDKThirtyTwoBytes payment_id;
5868 } LDKPaymentSendFailure_LDKPartialFailure_Body;
5869
5870 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
5871    LDKPaymentSendFailure_Tag tag;
5872    union {
5873       struct {
5874          struct LDKAPIError parameter_error;
5875       };
5876       struct {
5877          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
5878       };
5879       struct {
5880          struct LDKCVec_APIErrorZ all_failed_retry_safe;
5881       };
5882       LDKPaymentSendFailure_LDKPartialFailure_Body partial_failure;
5883    };
5884 } LDKPaymentSendFailure;
5885
5886 /**
5887  * The contents of CResult_PaymentIdPaymentSendFailureZ
5888  */
5889 typedef union LDKCResult_PaymentIdPaymentSendFailureZPtr {
5890    /**
5891     * A pointer to the contents in the success state.
5892     * Reading from this pointer when `result_ok` is not set is undefined.
5893     */
5894    struct LDKThirtyTwoBytes *result;
5895    /**
5896     * A pointer to the contents in the error state.
5897     * Reading from this pointer when `result_ok` is set is undefined.
5898     */
5899    struct LDKPaymentSendFailure *err;
5900 } LDKCResult_PaymentIdPaymentSendFailureZPtr;
5901
5902 /**
5903  * A CResult_PaymentIdPaymentSendFailureZ represents the result of a fallible operation,
5904  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
5905  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5906  */
5907 typedef struct LDKCResult_PaymentIdPaymentSendFailureZ {
5908    /**
5909     * The contents of this CResult_PaymentIdPaymentSendFailureZ, accessible via either
5910     * `err` or `result` depending on the state of `result_ok`.
5911     */
5912    union LDKCResult_PaymentIdPaymentSendFailureZPtr contents;
5913    /**
5914     * Whether this CResult_PaymentIdPaymentSendFailureZ represents a success state.
5915     */
5916    bool result_ok;
5917 } LDKCResult_PaymentIdPaymentSendFailureZ;
5918
5919 /**
5920  * The contents of CResult_NonePaymentSendFailureZ
5921  */
5922 typedef union LDKCResult_NonePaymentSendFailureZPtr {
5923    /**
5924     * Note that this value is always NULL, as there are no contents in the OK variant
5925     */
5926    void *result;
5927    /**
5928     * A pointer to the contents in the error state.
5929     * Reading from this pointer when `result_ok` is set is undefined.
5930     */
5931    struct LDKPaymentSendFailure *err;
5932 } LDKCResult_NonePaymentSendFailureZPtr;
5933
5934 /**
5935  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
5936  * containing a () on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
5937  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5938  */
5939 typedef struct LDKCResult_NonePaymentSendFailureZ {
5940    /**
5941     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
5942     * `err` or `result` depending on the state of `result_ok`.
5943     */
5944    union LDKCResult_NonePaymentSendFailureZPtr contents;
5945    /**
5946     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
5947     */
5948    bool result_ok;
5949 } LDKCResult_NonePaymentSendFailureZ;
5950
5951 /**
5952  * A tuple of 2 elements. See the individual fields for the types contained.
5953  */
5954 typedef struct LDKC2Tuple_PaymentHashPaymentIdZ {
5955    /**
5956     * The element at position 0
5957     */
5958    struct LDKThirtyTwoBytes a;
5959    /**
5960     * The element at position 1
5961     */
5962    struct LDKThirtyTwoBytes b;
5963 } LDKC2Tuple_PaymentHashPaymentIdZ;
5964
5965 /**
5966  * The contents of CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ
5967  */
5968 typedef union LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr {
5969    /**
5970     * A pointer to the contents in the success state.
5971     * Reading from this pointer when `result_ok` is not set is undefined.
5972     */
5973    struct LDKC2Tuple_PaymentHashPaymentIdZ *result;
5974    /**
5975     * A pointer to the contents in the error state.
5976     * Reading from this pointer when `result_ok` is set is undefined.
5977     */
5978    struct LDKPaymentSendFailure *err;
5979 } LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr;
5980
5981 /**
5982  * A CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ represents the result of a fallible operation,
5983  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentIdZ on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
5984  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5985  */
5986 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
5987    /**
5988     * The contents of this CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ, accessible via either
5989     * `err` or `result` depending on the state of `result_ok`.
5990     */
5991    union LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr contents;
5992    /**
5993     * Whether this CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ represents a success state.
5994     */
5995    bool result_ok;
5996 } LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
5997
5998 /**
5999  * A 4-byte byte array.
6000  */
6001 typedef struct LDKFourBytes {
6002    /**
6003     * The four bytes
6004     */
6005    uint8_t data[4];
6006 } LDKFourBytes;
6007
6008 /**
6009  * A 16-byte byte array.
6010  */
6011 typedef struct LDKSixteenBytes {
6012    /**
6013     * The sixteen bytes
6014     */
6015    uint8_t data[16];
6016 } LDKSixteenBytes;
6017
6018 /**
6019  * A 12-byte byte array.
6020  */
6021 typedef struct LDKTwelveBytes {
6022    /**
6023     * The twelve bytes
6024     */
6025    uint8_t data[12];
6026 } LDKTwelveBytes;
6027
6028 /**
6029  * An address which can be used to connect to a remote peer
6030  */
6031 typedef enum LDKNetAddress_Tag {
6032    /**
6033     * An IPv4 address/port on which the peer is listening.
6034     */
6035    LDKNetAddress_IPv4,
6036    /**
6037     * An IPv6 address/port on which the peer is listening.
6038     */
6039    LDKNetAddress_IPv6,
6040    /**
6041     * An old-style Tor onion address/port on which the peer is listening.
6042     *
6043     * This field is deprecated and the Tor network generally no longer supports V2 Onion
6044     * addresses. Thus, the details are not parsed here.
6045     */
6046    LDKNetAddress_OnionV2,
6047    /**
6048     * A new-style Tor onion address/port on which the peer is listening.
6049     * To create the human-readable \"hostname\", concatenate ed25519_pubkey, checksum, and version,
6050     * wrap as base32 and append \".onion\".
6051     */
6052    LDKNetAddress_OnionV3,
6053    /**
6054     * Must be last for serialization purposes
6055     */
6056    LDKNetAddress_Sentinel,
6057 } LDKNetAddress_Tag;
6058
6059 typedef struct LDKNetAddress_LDKIPv4_Body {
6060    /**
6061     * The 4-byte IPv4 address
6062     */
6063    struct LDKFourBytes addr;
6064    /**
6065     * The port on which the node is listening
6066     */
6067    uint16_t port;
6068 } LDKNetAddress_LDKIPv4_Body;
6069
6070 typedef struct LDKNetAddress_LDKIPv6_Body {
6071    /**
6072     * The 16-byte IPv6 address
6073     */
6074    struct LDKSixteenBytes addr;
6075    /**
6076     * The port on which the node is listening
6077     */
6078    uint16_t port;
6079 } LDKNetAddress_LDKIPv6_Body;
6080
6081 typedef struct LDKNetAddress_LDKOnionV3_Body {
6082    /**
6083     * The ed25519 long-term public key of the peer
6084     */
6085    struct LDKThirtyTwoBytes ed25519_pubkey;
6086    /**
6087     * The checksum of the pubkey and version, as included in the onion address
6088     */
6089    uint16_t checksum;
6090    /**
6091     * The version byte, as defined by the Tor Onion v3 spec.
6092     */
6093    uint8_t version;
6094    /**
6095     * The port on which the node is listening
6096     */
6097    uint16_t port;
6098 } LDKNetAddress_LDKOnionV3_Body;
6099
6100 typedef struct MUST_USE_STRUCT LDKNetAddress {
6101    LDKNetAddress_Tag tag;
6102    union {
6103       LDKNetAddress_LDKIPv4_Body i_pv4;
6104       LDKNetAddress_LDKIPv6_Body i_pv6;
6105       struct {
6106          struct LDKTwelveBytes onion_v2;
6107       };
6108       LDKNetAddress_LDKOnionV3_Body onion_v3;
6109    };
6110 } LDKNetAddress;
6111
6112 /**
6113  * A dynamically-allocated array of crate::lightning::ln::msgs::NetAddresss of arbitrary size.
6114  * This corresponds to std::vector in C++
6115  */
6116 typedef struct LDKCVec_NetAddressZ {
6117    /**
6118     * The elements in the array.
6119     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6120     */
6121    struct LDKNetAddress *data;
6122    /**
6123     * The number of elements pointed to by `data`.
6124     */
6125    uintptr_t datalen;
6126 } LDKCVec_NetAddressZ;
6127
6128 /**
6129  * A tuple of 2 elements. See the individual fields for the types contained.
6130  */
6131 typedef struct LDKC2Tuple_PaymentHashPaymentSecretZ {
6132    /**
6133     * The element at position 0
6134     */
6135    struct LDKThirtyTwoBytes a;
6136    /**
6137     * The element at position 1
6138     */
6139    struct LDKThirtyTwoBytes b;
6140 } LDKC2Tuple_PaymentHashPaymentSecretZ;
6141
6142 /**
6143  * The contents of CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ
6144  */
6145 typedef union LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr {
6146    /**
6147     * A pointer to the contents in the success state.
6148     * Reading from this pointer when `result_ok` is not set is undefined.
6149     */
6150    struct LDKC2Tuple_PaymentHashPaymentSecretZ *result;
6151    /**
6152     * Note that this value is always NULL, as there are no contents in the Err variant
6153     */
6154    void *err;
6155 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr;
6156
6157 /**
6158  * A CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ represents the result of a fallible operation,
6159  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentSecretZ on success and a () on failure.
6160  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6161  */
6162 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
6163    /**
6164     * The contents of this CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ, accessible via either
6165     * `err` or `result` depending on the state of `result_ok`.
6166     */
6167    union LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr contents;
6168    /**
6169     * Whether this CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ represents a success state.
6170     */
6171    bool result_ok;
6172 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
6173
6174 /**
6175  * The contents of CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ
6176  */
6177 typedef union LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr {
6178    /**
6179     * A pointer to the contents in the success state.
6180     * Reading from this pointer when `result_ok` is not set is undefined.
6181     */
6182    struct LDKC2Tuple_PaymentHashPaymentSecretZ *result;
6183    /**
6184     * A pointer to the contents in the error state.
6185     * Reading from this pointer when `result_ok` is set is undefined.
6186     */
6187    struct LDKAPIError *err;
6188 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr;
6189
6190 /**
6191  * A CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ represents the result of a fallible operation,
6192  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentSecretZ on success and a crate::lightning::util::errors::APIError on failure.
6193  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6194  */
6195 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
6196    /**
6197     * The contents of this CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ, accessible via either
6198     * `err` or `result` depending on the state of `result_ok`.
6199     */
6200    union LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr contents;
6201    /**
6202     * Whether this CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ represents a success state.
6203     */
6204    bool result_ok;
6205 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
6206
6207 /**
6208  * The contents of CResult_PaymentSecretNoneZ
6209  */
6210 typedef union LDKCResult_PaymentSecretNoneZPtr {
6211    /**
6212     * A pointer to the contents in the success state.
6213     * Reading from this pointer when `result_ok` is not set is undefined.
6214     */
6215    struct LDKThirtyTwoBytes *result;
6216    /**
6217     * Note that this value is always NULL, as there are no contents in the Err variant
6218     */
6219    void *err;
6220 } LDKCResult_PaymentSecretNoneZPtr;
6221
6222 /**
6223  * A CResult_PaymentSecretNoneZ represents the result of a fallible operation,
6224  * containing a crate::c_types::ThirtyTwoBytes on success and a () on failure.
6225  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6226  */
6227 typedef struct LDKCResult_PaymentSecretNoneZ {
6228    /**
6229     * The contents of this CResult_PaymentSecretNoneZ, accessible via either
6230     * `err` or `result` depending on the state of `result_ok`.
6231     */
6232    union LDKCResult_PaymentSecretNoneZPtr contents;
6233    /**
6234     * Whether this CResult_PaymentSecretNoneZ represents a success state.
6235     */
6236    bool result_ok;
6237 } LDKCResult_PaymentSecretNoneZ;
6238
6239 /**
6240  * The contents of CResult_PaymentSecretAPIErrorZ
6241  */
6242 typedef union LDKCResult_PaymentSecretAPIErrorZPtr {
6243    /**
6244     * A pointer to the contents in the success state.
6245     * Reading from this pointer when `result_ok` is not set is undefined.
6246     */
6247    struct LDKThirtyTwoBytes *result;
6248    /**
6249     * A pointer to the contents in the error state.
6250     * Reading from this pointer when `result_ok` is set is undefined.
6251     */
6252    struct LDKAPIError *err;
6253 } LDKCResult_PaymentSecretAPIErrorZPtr;
6254
6255 /**
6256  * A CResult_PaymentSecretAPIErrorZ represents the result of a fallible operation,
6257  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
6258  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6259  */
6260 typedef struct LDKCResult_PaymentSecretAPIErrorZ {
6261    /**
6262     * The contents of this CResult_PaymentSecretAPIErrorZ, accessible via either
6263     * `err` or `result` depending on the state of `result_ok`.
6264     */
6265    union LDKCResult_PaymentSecretAPIErrorZPtr contents;
6266    /**
6267     * Whether this CResult_PaymentSecretAPIErrorZ represents a success state.
6268     */
6269    bool result_ok;
6270 } LDKCResult_PaymentSecretAPIErrorZ;
6271
6272 /**
6273  * The contents of CResult_PaymentPreimageAPIErrorZ
6274  */
6275 typedef union LDKCResult_PaymentPreimageAPIErrorZPtr {
6276    /**
6277     * A pointer to the contents in the success state.
6278     * Reading from this pointer when `result_ok` is not set is undefined.
6279     */
6280    struct LDKThirtyTwoBytes *result;
6281    /**
6282     * A pointer to the contents in the error state.
6283     * Reading from this pointer when `result_ok` is set is undefined.
6284     */
6285    struct LDKAPIError *err;
6286 } LDKCResult_PaymentPreimageAPIErrorZPtr;
6287
6288 /**
6289  * A CResult_PaymentPreimageAPIErrorZ represents the result of a fallible operation,
6290  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
6291  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6292  */
6293 typedef struct LDKCResult_PaymentPreimageAPIErrorZ {
6294    /**
6295     * The contents of this CResult_PaymentPreimageAPIErrorZ, accessible via either
6296     * `err` or `result` depending on the state of `result_ok`.
6297     */
6298    union LDKCResult_PaymentPreimageAPIErrorZPtr contents;
6299    /**
6300     * Whether this CResult_PaymentPreimageAPIErrorZ represents a success state.
6301     */
6302    bool result_ok;
6303 } LDKCResult_PaymentPreimageAPIErrorZ;
6304
6305
6306
6307 /**
6308  * Information needed for constructing an invoice route hint for this channel.
6309  */
6310 typedef struct MUST_USE_STRUCT LDKCounterpartyForwardingInfo {
6311    /**
6312     * A pointer to the opaque Rust object.
6313     * Nearly everywhere, inner must be non-null, however in places where
6314     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6315     */
6316    LDKnativeCounterpartyForwardingInfo *inner;
6317    /**
6318     * Indicates that this is the only struct which contains the same pointer.
6319     * Rust functions which take ownership of an object provided via an argument require
6320     * this to be true and invalidate the object pointed to by inner.
6321     */
6322    bool is_owned;
6323 } LDKCounterpartyForwardingInfo;
6324
6325 /**
6326  * The contents of CResult_CounterpartyForwardingInfoDecodeErrorZ
6327  */
6328 typedef union LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr {
6329    /**
6330     * A pointer to the contents in the success state.
6331     * Reading from this pointer when `result_ok` is not set is undefined.
6332     */
6333    struct LDKCounterpartyForwardingInfo *result;
6334    /**
6335     * A pointer to the contents in the error state.
6336     * Reading from this pointer when `result_ok` is set is undefined.
6337     */
6338    struct LDKDecodeError *err;
6339 } LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr;
6340
6341 /**
6342  * A CResult_CounterpartyForwardingInfoDecodeErrorZ represents the result of a fallible operation,
6343  * containing a crate::lightning::ln::channelmanager::CounterpartyForwardingInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6344  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6345  */
6346 typedef struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ {
6347    /**
6348     * The contents of this CResult_CounterpartyForwardingInfoDecodeErrorZ, accessible via either
6349     * `err` or `result` depending on the state of `result_ok`.
6350     */
6351    union LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr contents;
6352    /**
6353     * Whether this CResult_CounterpartyForwardingInfoDecodeErrorZ represents a success state.
6354     */
6355    bool result_ok;
6356 } LDKCResult_CounterpartyForwardingInfoDecodeErrorZ;
6357
6358
6359
6360 /**
6361  * Channel parameters which apply to our counterparty. These are split out from [`ChannelDetails`]
6362  * to better separate parameters.
6363  */
6364 typedef struct MUST_USE_STRUCT LDKChannelCounterparty {
6365    /**
6366     * A pointer to the opaque Rust object.
6367     * Nearly everywhere, inner must be non-null, however in places where
6368     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6369     */
6370    LDKnativeChannelCounterparty *inner;
6371    /**
6372     * Indicates that this is the only struct which contains the same pointer.
6373     * Rust functions which take ownership of an object provided via an argument require
6374     * this to be true and invalidate the object pointed to by inner.
6375     */
6376    bool is_owned;
6377 } LDKChannelCounterparty;
6378
6379 /**
6380  * The contents of CResult_ChannelCounterpartyDecodeErrorZ
6381  */
6382 typedef union LDKCResult_ChannelCounterpartyDecodeErrorZPtr {
6383    /**
6384     * A pointer to the contents in the success state.
6385     * Reading from this pointer when `result_ok` is not set is undefined.
6386     */
6387    struct LDKChannelCounterparty *result;
6388    /**
6389     * A pointer to the contents in the error state.
6390     * Reading from this pointer when `result_ok` is set is undefined.
6391     */
6392    struct LDKDecodeError *err;
6393 } LDKCResult_ChannelCounterpartyDecodeErrorZPtr;
6394
6395 /**
6396  * A CResult_ChannelCounterpartyDecodeErrorZ represents the result of a fallible operation,
6397  * containing a crate::lightning::ln::channelmanager::ChannelCounterparty on success and a crate::lightning::ln::msgs::DecodeError on failure.
6398  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6399  */
6400 typedef struct LDKCResult_ChannelCounterpartyDecodeErrorZ {
6401    /**
6402     * The contents of this CResult_ChannelCounterpartyDecodeErrorZ, accessible via either
6403     * `err` or `result` depending on the state of `result_ok`.
6404     */
6405    union LDKCResult_ChannelCounterpartyDecodeErrorZPtr contents;
6406    /**
6407     * Whether this CResult_ChannelCounterpartyDecodeErrorZ represents a success state.
6408     */
6409    bool result_ok;
6410 } LDKCResult_ChannelCounterpartyDecodeErrorZ;
6411
6412 /**
6413  * The contents of CResult_ChannelDetailsDecodeErrorZ
6414  */
6415 typedef union LDKCResult_ChannelDetailsDecodeErrorZPtr {
6416    /**
6417     * A pointer to the contents in the success state.
6418     * Reading from this pointer when `result_ok` is not set is undefined.
6419     */
6420    struct LDKChannelDetails *result;
6421    /**
6422     * A pointer to the contents in the error state.
6423     * Reading from this pointer when `result_ok` is set is undefined.
6424     */
6425    struct LDKDecodeError *err;
6426 } LDKCResult_ChannelDetailsDecodeErrorZPtr;
6427
6428 /**
6429  * A CResult_ChannelDetailsDecodeErrorZ represents the result of a fallible operation,
6430  * containing a crate::lightning::ln::channelmanager::ChannelDetails on success and a crate::lightning::ln::msgs::DecodeError on failure.
6431  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6432  */
6433 typedef struct LDKCResult_ChannelDetailsDecodeErrorZ {
6434    /**
6435     * The contents of this CResult_ChannelDetailsDecodeErrorZ, accessible via either
6436     * `err` or `result` depending on the state of `result_ok`.
6437     */
6438    union LDKCResult_ChannelDetailsDecodeErrorZPtr contents;
6439    /**
6440     * Whether this CResult_ChannelDetailsDecodeErrorZ represents a success state.
6441     */
6442    bool result_ok;
6443 } LDKCResult_ChannelDetailsDecodeErrorZ;
6444
6445
6446
6447 /**
6448  * Route hints used in constructing invoices for [phantom node payents].
6449  *
6450  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
6451  */
6452 typedef struct MUST_USE_STRUCT LDKPhantomRouteHints {
6453    /**
6454     * A pointer to the opaque Rust object.
6455     * Nearly everywhere, inner must be non-null, however in places where
6456     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6457     */
6458    LDKnativePhantomRouteHints *inner;
6459    /**
6460     * Indicates that this is the only struct which contains the same pointer.
6461     * Rust functions which take ownership of an object provided via an argument require
6462     * this to be true and invalidate the object pointed to by inner.
6463     */
6464    bool is_owned;
6465 } LDKPhantomRouteHints;
6466
6467 /**
6468  * The contents of CResult_PhantomRouteHintsDecodeErrorZ
6469  */
6470 typedef union LDKCResult_PhantomRouteHintsDecodeErrorZPtr {
6471    /**
6472     * A pointer to the contents in the success state.
6473     * Reading from this pointer when `result_ok` is not set is undefined.
6474     */
6475    struct LDKPhantomRouteHints *result;
6476    /**
6477     * A pointer to the contents in the error state.
6478     * Reading from this pointer when `result_ok` is set is undefined.
6479     */
6480    struct LDKDecodeError *err;
6481 } LDKCResult_PhantomRouteHintsDecodeErrorZPtr;
6482
6483 /**
6484  * A CResult_PhantomRouteHintsDecodeErrorZ represents the result of a fallible operation,
6485  * containing a crate::lightning::ln::channelmanager::PhantomRouteHints on success and a crate::lightning::ln::msgs::DecodeError on failure.
6486  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6487  */
6488 typedef struct LDKCResult_PhantomRouteHintsDecodeErrorZ {
6489    /**
6490     * The contents of this CResult_PhantomRouteHintsDecodeErrorZ, accessible via either
6491     * `err` or `result` depending on the state of `result_ok`.
6492     */
6493    union LDKCResult_PhantomRouteHintsDecodeErrorZPtr contents;
6494    /**
6495     * Whether this CResult_PhantomRouteHintsDecodeErrorZ represents a success state.
6496     */
6497    bool result_ok;
6498 } LDKCResult_PhantomRouteHintsDecodeErrorZ;
6499
6500 /**
6501  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::ChannelMonitors of arbitrary size.
6502  * This corresponds to std::vector in C++
6503  */
6504 typedef struct LDKCVec_ChannelMonitorZ {
6505    /**
6506     * The elements in the array.
6507     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6508     */
6509    struct LDKChannelMonitor *data;
6510    /**
6511     * The number of elements pointed to by `data`.
6512     */
6513    uintptr_t datalen;
6514 } LDKCVec_ChannelMonitorZ;
6515
6516
6517
6518 /**
6519  * An update generated by the underlying Channel itself which contains some new information the
6520  * ChannelMonitor should be made aware of.
6521  */
6522 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
6523    /**
6524     * A pointer to the opaque Rust object.
6525     * Nearly everywhere, inner must be non-null, however in places where
6526     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6527     */
6528    LDKnativeChannelMonitorUpdate *inner;
6529    /**
6530     * Indicates that this is the only struct which contains the same pointer.
6531     * Rust functions which take ownership of an object provided via an argument require
6532     * this to be true and invalidate the object pointed to by inner.
6533     */
6534    bool is_owned;
6535 } LDKChannelMonitorUpdate;
6536
6537 /**
6538  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
6539  * blocks are connected and disconnected.
6540  *
6541  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
6542  * responsible for maintaining a set of monitors such that they can be updated accordingly as
6543  * channel state changes and HTLCs are resolved. See method documentation for specific
6544  * requirements.
6545  *
6546  * Implementations **must** ensure that updates are successfully applied and persisted upon method
6547  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
6548  * without taking any further action such as persisting the current state.
6549  *
6550  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
6551  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
6552  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
6553  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
6554  * multiple instances.
6555  *
6556  * [`PermanentFailure`]: ChannelMonitorUpdateErr::PermanentFailure
6557  */
6558 typedef struct LDKWatch {
6559    /**
6560     * An opaque pointer which is passed to your function implementations as an argument.
6561     * This has no meaning in the LDK, and can be NULL or any other value.
6562     */
6563    void *this_arg;
6564    /**
6565     * Watches a channel identified by `funding_txo` using `monitor`.
6566     *
6567     * Implementations are responsible for watching the chain for the funding transaction along
6568     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
6569     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
6570     *
6571     * Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
6572     * the given `funding_txo` has previously been registered via `watch_channel`.
6573     *
6574     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
6575     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
6576     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
6577     */
6578    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
6579    /**
6580     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
6581     *
6582     * Implementations must call [`update_monitor`] with the given update. See
6583     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
6584     *
6585     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
6586     */
6587    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
6588    /**
6589     * Returns any monitor events since the last call. Subsequent calls must only return new
6590     * events.
6591     *
6592     * Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
6593     * further events may be returned here until the [`ChannelMonitor`] has been fully persisted
6594     * to disk.
6595     *
6596     * For details on asynchronous [`ChannelMonitor`] updating and returning
6597     * [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
6598     */
6599    struct LDKCVec_MonitorEventZ (*release_pending_monitor_events)(const void *this_arg);
6600    /**
6601     * Frees any resources associated with this object given its this_arg pointer.
6602     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6603     */
6604    void (*free)(void *this_arg);
6605 } LDKWatch;
6606
6607 /**
6608  * An interface to send a transaction to the Bitcoin network.
6609  */
6610 typedef struct LDKBroadcasterInterface {
6611    /**
6612     * An opaque pointer which is passed to your function implementations as an argument.
6613     * This has no meaning in the LDK, and can be NULL or any other value.
6614     */
6615    void *this_arg;
6616    /**
6617     * Sends a transaction out to (hopefully) be mined.
6618     */
6619    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
6620    /**
6621     * Frees any resources associated with this object given its this_arg pointer.
6622     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6623     */
6624    void (*free)(void *this_arg);
6625 } LDKBroadcasterInterface;
6626
6627 /**
6628  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
6629  * own the memory pointed to by data.
6630  */
6631 typedef struct LDKu8slice {
6632    /**
6633     * A pointer to the byte buffer
6634     */
6635    const uint8_t *data;
6636    /**
6637     * The number of bytes pointed to by `data`.
6638     */
6639    uintptr_t datalen;
6640 } LDKu8slice;
6641
6642 /**
6643  * A trait to describe an object which can get user secrets and key material.
6644  */
6645 typedef struct LDKKeysInterface {
6646    /**
6647     * An opaque pointer which is passed to your function implementations as an argument.
6648     * This has no meaning in the LDK, and can be NULL or any other value.
6649     */
6650    void *this_arg;
6651    /**
6652     * Get node secret key (aka node_id or network_key) based on the provided [`Recipient`].
6653     *
6654     * This method must return the same value each time it is called with a given `Recipient`
6655     * parameter.
6656     */
6657    struct LDKCResult_SecretKeyNoneZ (*get_node_secret)(const void *this_arg, enum LDKRecipient recipient);
6658    /**
6659     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
6660     *
6661     * This method should return a different value each time it is called, to avoid linking
6662     * on-chain funds across channels as controlled to the same user.
6663     */
6664    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
6665    /**
6666     * Get a script pubkey which we will send funds to when closing a channel.
6667     *
6668     * This method should return a different value each time it is called, to avoid linking
6669     * on-chain funds across channels as controlled to the same user.
6670     */
6671    struct LDKShutdownScript (*get_shutdown_scriptpubkey)(const void *this_arg);
6672    /**
6673     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
6674     * restarted with some stale data!
6675     *
6676     * This method must return a different value each time it is called.
6677     */
6678    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
6679    /**
6680     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
6681     * onion packets and for temporary channel IDs. There is no requirement that these be
6682     * persisted anywhere, though they must be unique across restarts.
6683     *
6684     * This method must return a different value each time it is called.
6685     */
6686    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
6687    /**
6688     * Reads a `Signer` for this `KeysInterface` from the given input stream.
6689     * This is only called during deserialization of other objects which contain
6690     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
6691     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
6692     * contain no versioning scheme. You may wish to include your own version prefix and ensure
6693     * you've read all of the provided bytes to ensure no corruption occurred.
6694     */
6695    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
6696    /**
6697     * Sign an invoice.
6698     * By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
6699     * this trait to parse the invoice and make sure they're signing what they expect, rather than
6700     * blindly signing the hash.
6701     * The hrp is ascii bytes, while the invoice data is base32.
6702     *
6703     * The secret key used to sign the invoice is dependent on the [`Recipient`].
6704     */
6705    struct LDKCResult_RecoverableSignatureNoneZ (*sign_invoice)(const void *this_arg, struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
6706    /**
6707     * Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
6708     *
6709     * If the implementor of this trait supports [phantom node payments], then every node that is
6710     * intended to be included in the phantom invoice route hints must return the same value from
6711     * this method.
6712     *
6713     * This method must return the same value each time it is called.
6714     *
6715     * [phantom node payments]: PhantomKeysManager
6716     */
6717    struct LDKThirtyTwoBytes (*get_inbound_payment_key_material)(const void *this_arg);
6718    /**
6719     * Frees any resources associated with this object given its this_arg pointer.
6720     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6721     */
6722    void (*free)(void *this_arg);
6723 } LDKKeysInterface;
6724
6725 /**
6726  * A trait which should be implemented to provide feerate information on a number of time
6727  * horizons.
6728  *
6729  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
6730  * called from inside the library in response to chain events, P2P events, or timer events).
6731  */
6732 typedef struct LDKFeeEstimator {
6733    /**
6734     * An opaque pointer which is passed to your function implementations as an argument.
6735     * This has no meaning in the LDK, and can be NULL or any other value.
6736     */
6737    void *this_arg;
6738    /**
6739     * Gets estimated satoshis of fee required per 1000 Weight-Units.
6740     *
6741     * Must return a value no smaller than 253 (ie 1 satoshi-per-byte rounded up to ensure later
6742     * round-downs don't put us below 1 satoshi-per-byte).
6743     *
6744     * This method can be implemented with the following unit conversions:
6745     *  * max(satoshis-per-byte * 250, 253)
6746     *  * max(satoshis-per-kbyte / 4, 253)
6747     */
6748    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
6749    /**
6750     * Frees any resources associated with this object given its this_arg pointer.
6751     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6752     */
6753    void (*free)(void *this_arg);
6754 } LDKFeeEstimator;
6755
6756
6757
6758 /**
6759  * A Record, unit of logging output with Metadata to enable filtering
6760  * Module_path, file, line to inform on log's source
6761  */
6762 typedef struct MUST_USE_STRUCT LDKRecord {
6763    /**
6764     * A pointer to the opaque Rust object.
6765     * Nearly everywhere, inner must be non-null, however in places where
6766     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6767     */
6768    LDKnativeRecord *inner;
6769    /**
6770     * Indicates that this is the only struct which contains the same pointer.
6771     * Rust functions which take ownership of an object provided via an argument require
6772     * this to be true and invalidate the object pointed to by inner.
6773     */
6774    bool is_owned;
6775 } LDKRecord;
6776
6777 /**
6778  * A trait encapsulating the operations required of a logger
6779  */
6780 typedef struct LDKLogger {
6781    /**
6782     * An opaque pointer which is passed to your function implementations as an argument.
6783     * This has no meaning in the LDK, and can be NULL or any other value.
6784     */
6785    void *this_arg;
6786    /**
6787     * Logs the `Record`
6788     */
6789    void (*log)(const void *this_arg, const struct LDKRecord *NONNULL_PTR record);
6790    /**
6791     * Frees any resources associated with this object given its this_arg pointer.
6792     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6793     */
6794    void (*free)(void *this_arg);
6795 } LDKLogger;
6796
6797
6798
6799 /**
6800  * Manager which keeps track of a number of channels and sends messages to the appropriate
6801  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
6802  *
6803  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
6804  * to individual Channels.
6805  *
6806  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
6807  * all peers during write/read (though does not modify this instance, only the instance being
6808  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
6809  * called funding_transaction_generated for outbound channels).
6810  *
6811  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
6812  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
6813  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
6814  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
6815  * the serialization process). If the deserialized version is out-of-date compared to the
6816  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
6817  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
6818  *
6819  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
6820  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
6821  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
6822  * block_connected() to step towards your best block) upon deserialization before using the
6823  * object!
6824  *
6825  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
6826  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
6827  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
6828  * offline for a full minute. In order to track this, you must call
6829  * timer_tick_occurred roughly once per minute, though it doesn't have to be perfect.
6830  *
6831  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
6832  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
6833  * essentially you should default to using a SimpleRefChannelManager, and use a
6834  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
6835  * you're using lightning-net-tokio.
6836  */
6837 typedef struct MUST_USE_STRUCT LDKChannelManager {
6838    /**
6839     * A pointer to the opaque Rust object.
6840     * Nearly everywhere, inner must be non-null, however in places where
6841     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6842     */
6843    LDKnativeChannelManager *inner;
6844    /**
6845     * Indicates that this is the only struct which contains the same pointer.
6846     * Rust functions which take ownership of an object provided via an argument require
6847     * this to be true and invalidate the object pointed to by inner.
6848     */
6849    bool is_owned;
6850 } LDKChannelManager;
6851
6852 /**
6853  * A tuple of 2 elements. See the individual fields for the types contained.
6854  */
6855 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
6856    /**
6857     * The element at position 0
6858     */
6859    struct LDKThirtyTwoBytes a;
6860    /**
6861     * The element at position 1
6862     */
6863    struct LDKChannelManager b;
6864 } LDKC2Tuple_BlockHashChannelManagerZ;
6865
6866 /**
6867  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
6868  */
6869 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
6870    /**
6871     * A pointer to the contents in the success state.
6872     * Reading from this pointer when `result_ok` is not set is undefined.
6873     */
6874    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
6875    /**
6876     * A pointer to the contents in the error state.
6877     * Reading from this pointer when `result_ok` is set is undefined.
6878     */
6879    struct LDKDecodeError *err;
6880 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
6881
6882 /**
6883  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
6884  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
6885  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6886  */
6887 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
6888    /**
6889     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
6890     * `err` or `result` depending on the state of `result_ok`.
6891     */
6892    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
6893    /**
6894     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
6895     */
6896    bool result_ok;
6897 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
6898
6899
6900
6901 /**
6902  * Options which apply on a per-channel basis and may change at runtime or based on negotiation
6903  * with our counterparty.
6904  */
6905 typedef struct MUST_USE_STRUCT LDKChannelConfig {
6906    /**
6907     * A pointer to the opaque Rust object.
6908     * Nearly everywhere, inner must be non-null, however in places where
6909     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6910     */
6911    LDKnativeChannelConfig *inner;
6912    /**
6913     * Indicates that this is the only struct which contains the same pointer.
6914     * Rust functions which take ownership of an object provided via an argument require
6915     * this to be true and invalidate the object pointed to by inner.
6916     */
6917    bool is_owned;
6918 } LDKChannelConfig;
6919
6920 /**
6921  * The contents of CResult_ChannelConfigDecodeErrorZ
6922  */
6923 typedef union LDKCResult_ChannelConfigDecodeErrorZPtr {
6924    /**
6925     * A pointer to the contents in the success state.
6926     * Reading from this pointer when `result_ok` is not set is undefined.
6927     */
6928    struct LDKChannelConfig *result;
6929    /**
6930     * A pointer to the contents in the error state.
6931     * Reading from this pointer when `result_ok` is set is undefined.
6932     */
6933    struct LDKDecodeError *err;
6934 } LDKCResult_ChannelConfigDecodeErrorZPtr;
6935
6936 /**
6937  * A CResult_ChannelConfigDecodeErrorZ represents the result of a fallible operation,
6938  * containing a crate::lightning::util::config::ChannelConfig on success and a crate::lightning::ln::msgs::DecodeError on failure.
6939  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6940  */
6941 typedef struct LDKCResult_ChannelConfigDecodeErrorZ {
6942    /**
6943     * The contents of this CResult_ChannelConfigDecodeErrorZ, accessible via either
6944     * `err` or `result` depending on the state of `result_ok`.
6945     */
6946    union LDKCResult_ChannelConfigDecodeErrorZPtr contents;
6947    /**
6948     * Whether this CResult_ChannelConfigDecodeErrorZ represents a success state.
6949     */
6950    bool result_ok;
6951 } LDKCResult_ChannelConfigDecodeErrorZ;
6952
6953 /**
6954  * The contents of CResult_OutPointDecodeErrorZ
6955  */
6956 typedef union LDKCResult_OutPointDecodeErrorZPtr {
6957    /**
6958     * A pointer to the contents in the success state.
6959     * Reading from this pointer when `result_ok` is not set is undefined.
6960     */
6961    struct LDKOutPoint *result;
6962    /**
6963     * A pointer to the contents in the error state.
6964     * Reading from this pointer when `result_ok` is set is undefined.
6965     */
6966    struct LDKDecodeError *err;
6967 } LDKCResult_OutPointDecodeErrorZPtr;
6968
6969 /**
6970  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
6971  * containing a crate::lightning::chain::transaction::OutPoint on success and a crate::lightning::ln::msgs::DecodeError on failure.
6972  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6973  */
6974 typedef struct LDKCResult_OutPointDecodeErrorZ {
6975    /**
6976     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
6977     * `err` or `result` depending on the state of `result_ok`.
6978     */
6979    union LDKCResult_OutPointDecodeErrorZPtr contents;
6980    /**
6981     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
6982     */
6983    bool result_ok;
6984 } LDKCResult_OutPointDecodeErrorZ;
6985
6986 /**
6987  * Defines a type identifier for sending messages over the wire.
6988  *
6989  * Messages implementing this trait specify a type and must be [`Writeable`].
6990  */
6991 typedef struct LDKType {
6992    /**
6993     * An opaque pointer which is passed to your function implementations as an argument.
6994     * This has no meaning in the LDK, and can be NULL or any other value.
6995     */
6996    void *this_arg;
6997    /**
6998     * Returns the type identifying the message payload.
6999     */
7000    uint16_t (*type_id)(const void *this_arg);
7001    /**
7002     * Return a human-readable "debug" string describing this object
7003     */
7004    struct LDKStr (*debug_str)(const void *this_arg);
7005    /**
7006     * Serialize the object into a byte array
7007     */
7008    struct LDKCVec_u8Z (*write)(const void *this_arg);
7009    /**
7010     * Frees any resources associated with this object given its this_arg pointer.
7011     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
7012     */
7013    void (*free)(void *this_arg);
7014 } LDKType;
7015
7016 /**
7017  * An enum which can either contain a crate::lightning::ln::wire::Type or not
7018  */
7019 typedef enum LDKCOption_TypeZ_Tag {
7020    /**
7021     * When we're in this state, this COption_TypeZ contains a crate::lightning::ln::wire::Type
7022     */
7023    LDKCOption_TypeZ_Some,
7024    /**
7025     * When we're in this state, this COption_TypeZ contains nothing
7026     */
7027    LDKCOption_TypeZ_None,
7028    /**
7029     * Must be last for serialization purposes
7030     */
7031    LDKCOption_TypeZ_Sentinel,
7032 } LDKCOption_TypeZ_Tag;
7033
7034 typedef struct LDKCOption_TypeZ {
7035    LDKCOption_TypeZ_Tag tag;
7036    union {
7037       struct {
7038          struct LDKType some;
7039       };
7040    };
7041 } LDKCOption_TypeZ;
7042
7043 /**
7044  * The contents of CResult_COption_TypeZDecodeErrorZ
7045  */
7046 typedef union LDKCResult_COption_TypeZDecodeErrorZPtr {
7047    /**
7048     * A pointer to the contents in the success state.
7049     * Reading from this pointer when `result_ok` is not set is undefined.
7050     */
7051    struct LDKCOption_TypeZ *result;
7052    /**
7053     * A pointer to the contents in the error state.
7054     * Reading from this pointer when `result_ok` is set is undefined.
7055     */
7056    struct LDKDecodeError *err;
7057 } LDKCResult_COption_TypeZDecodeErrorZPtr;
7058
7059 /**
7060  * A CResult_COption_TypeZDecodeErrorZ represents the result of a fallible operation,
7061  * containing a crate::c_types::derived::COption_TypeZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
7062  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7063  */
7064 typedef struct LDKCResult_COption_TypeZDecodeErrorZ {
7065    /**
7066     * The contents of this CResult_COption_TypeZDecodeErrorZ, accessible via either
7067     * `err` or `result` depending on the state of `result_ok`.
7068     */
7069    union LDKCResult_COption_TypeZDecodeErrorZPtr contents;
7070    /**
7071     * Whether this CResult_COption_TypeZDecodeErrorZ represents a success state.
7072     */
7073    bool result_ok;
7074 } LDKCResult_COption_TypeZDecodeErrorZ;
7075
7076 /**
7077  * An error that may occur when making a payment.
7078  */
7079 typedef enum LDKPaymentError_Tag {
7080    /**
7081     * An error resulting from the provided [`Invoice`] or payment hash.
7082     */
7083    LDKPaymentError_Invoice,
7084    /**
7085     * An error occurring when finding a route.
7086     */
7087    LDKPaymentError_Routing,
7088    /**
7089     * An error occurring when sending a payment.
7090     */
7091    LDKPaymentError_Sending,
7092    /**
7093     * Must be last for serialization purposes
7094     */
7095    LDKPaymentError_Sentinel,
7096 } LDKPaymentError_Tag;
7097
7098 typedef struct MUST_USE_STRUCT LDKPaymentError {
7099    LDKPaymentError_Tag tag;
7100    union {
7101       struct {
7102          struct LDKStr invoice;
7103       };
7104       struct {
7105          struct LDKLightningError routing;
7106       };
7107       struct {
7108          struct LDKPaymentSendFailure sending;
7109       };
7110    };
7111 } LDKPaymentError;
7112
7113 /**
7114  * The contents of CResult_PaymentIdPaymentErrorZ
7115  */
7116 typedef union LDKCResult_PaymentIdPaymentErrorZPtr {
7117    /**
7118     * A pointer to the contents in the success state.
7119     * Reading from this pointer when `result_ok` is not set is undefined.
7120     */
7121    struct LDKThirtyTwoBytes *result;
7122    /**
7123     * A pointer to the contents in the error state.
7124     * Reading from this pointer when `result_ok` is set is undefined.
7125     */
7126    struct LDKPaymentError *err;
7127 } LDKCResult_PaymentIdPaymentErrorZPtr;
7128
7129 /**
7130  * A CResult_PaymentIdPaymentErrorZ represents the result of a fallible operation,
7131  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning_invoice::payment::PaymentError on failure.
7132  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7133  */
7134 typedef struct LDKCResult_PaymentIdPaymentErrorZ {
7135    /**
7136     * The contents of this CResult_PaymentIdPaymentErrorZ, accessible via either
7137     * `err` or `result` depending on the state of `result_ok`.
7138     */
7139    union LDKCResult_PaymentIdPaymentErrorZPtr contents;
7140    /**
7141     * Whether this CResult_PaymentIdPaymentErrorZ represents a success state.
7142     */
7143    bool result_ok;
7144 } LDKCResult_PaymentIdPaymentErrorZ;
7145
7146 /**
7147  * The contents of CResult_SiPrefixNoneZ
7148  */
7149 typedef union LDKCResult_SiPrefixNoneZPtr {
7150    /**
7151     * A pointer to the contents in the success state.
7152     * Reading from this pointer when `result_ok` is not set is undefined.
7153     */
7154    enum LDKSiPrefix *result;
7155    /**
7156     * Note that this value is always NULL, as there are no contents in the Err variant
7157     */
7158    void *err;
7159 } LDKCResult_SiPrefixNoneZPtr;
7160
7161 /**
7162  * A CResult_SiPrefixNoneZ represents the result of a fallible operation,
7163  * containing a crate::lightning_invoice::SiPrefix on success and a () on failure.
7164  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7165  */
7166 typedef struct LDKCResult_SiPrefixNoneZ {
7167    /**
7168     * The contents of this CResult_SiPrefixNoneZ, accessible via either
7169     * `err` or `result` depending on the state of `result_ok`.
7170     */
7171    union LDKCResult_SiPrefixNoneZPtr contents;
7172    /**
7173     * Whether this CResult_SiPrefixNoneZ represents a success state.
7174     */
7175    bool result_ok;
7176 } LDKCResult_SiPrefixNoneZ;
7177
7178
7179
7180 /**
7181  * Represents a syntactically and semantically correct lightning BOLT11 invoice.
7182  *
7183  * There are three ways to construct an `Invoice`:
7184  *  1. using `InvoiceBuilder`
7185  *  2. using `Invoice::from_signed(SignedRawInvoice)`
7186  *  3. using `str::parse::<Invoice>(&str)`
7187  */
7188 typedef struct MUST_USE_STRUCT LDKInvoice {
7189    /**
7190     * A pointer to the opaque Rust object.
7191     * Nearly everywhere, inner must be non-null, however in places where
7192     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7193     */
7194    LDKnativeInvoice *inner;
7195    /**
7196     * Indicates that this is the only struct which contains the same pointer.
7197     * Rust functions which take ownership of an object provided via an argument require
7198     * this to be true and invalidate the object pointed to by inner.
7199     */
7200    bool is_owned;
7201 } LDKInvoice;
7202
7203 /**
7204  * The contents of CResult_InvoiceNoneZ
7205  */
7206 typedef union LDKCResult_InvoiceNoneZPtr {
7207    /**
7208     * A pointer to the contents in the success state.
7209     * Reading from this pointer when `result_ok` is not set is undefined.
7210     */
7211    struct LDKInvoice *result;
7212    /**
7213     * Note that this value is always NULL, as there are no contents in the Err variant
7214     */
7215    void *err;
7216 } LDKCResult_InvoiceNoneZPtr;
7217
7218 /**
7219  * A CResult_InvoiceNoneZ represents the result of a fallible operation,
7220  * containing a crate::lightning_invoice::Invoice on success and a () on failure.
7221  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7222  */
7223 typedef struct LDKCResult_InvoiceNoneZ {
7224    /**
7225     * The contents of this CResult_InvoiceNoneZ, accessible via either
7226     * `err` or `result` depending on the state of `result_ok`.
7227     */
7228    union LDKCResult_InvoiceNoneZPtr contents;
7229    /**
7230     * Whether this CResult_InvoiceNoneZ represents a success state.
7231     */
7232    bool result_ok;
7233 } LDKCResult_InvoiceNoneZ;
7234
7235
7236
7237 /**
7238  * Represents a signed `RawInvoice` with cached hash. The signature is not checked and may be
7239  * invalid.
7240  *
7241  * # Invariants
7242  * The hash has to be either from the deserialized invoice or from the serialized `raw_invoice`.
7243  */
7244 typedef struct MUST_USE_STRUCT LDKSignedRawInvoice {
7245    /**
7246     * A pointer to the opaque Rust object.
7247     * Nearly everywhere, inner must be non-null, however in places where
7248     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7249     */
7250    LDKnativeSignedRawInvoice *inner;
7251    /**
7252     * Indicates that this is the only struct which contains the same pointer.
7253     * Rust functions which take ownership of an object provided via an argument require
7254     * this to be true and invalidate the object pointed to by inner.
7255     */
7256    bool is_owned;
7257 } LDKSignedRawInvoice;
7258
7259 /**
7260  * The contents of CResult_SignedRawInvoiceNoneZ
7261  */
7262 typedef union LDKCResult_SignedRawInvoiceNoneZPtr {
7263    /**
7264     * A pointer to the contents in the success state.
7265     * Reading from this pointer when `result_ok` is not set is undefined.
7266     */
7267    struct LDKSignedRawInvoice *result;
7268    /**
7269     * Note that this value is always NULL, as there are no contents in the Err variant
7270     */
7271    void *err;
7272 } LDKCResult_SignedRawInvoiceNoneZPtr;
7273
7274 /**
7275  * A CResult_SignedRawInvoiceNoneZ represents the result of a fallible operation,
7276  * containing a crate::lightning_invoice::SignedRawInvoice on success and a () on failure.
7277  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7278  */
7279 typedef struct LDKCResult_SignedRawInvoiceNoneZ {
7280    /**
7281     * The contents of this CResult_SignedRawInvoiceNoneZ, accessible via either
7282     * `err` or `result` depending on the state of `result_ok`.
7283     */
7284    union LDKCResult_SignedRawInvoiceNoneZPtr contents;
7285    /**
7286     * Whether this CResult_SignedRawInvoiceNoneZ represents a success state.
7287     */
7288    bool result_ok;
7289 } LDKCResult_SignedRawInvoiceNoneZ;
7290
7291
7292
7293 /**
7294  * Represents an syntactically correct Invoice for a payment on the lightning network,
7295  * but without the signature information.
7296  * De- and encoding should not lead to information loss but may lead to different hashes.
7297  *
7298  * For methods without docs see the corresponding methods in `Invoice`.
7299  */
7300 typedef struct MUST_USE_STRUCT LDKRawInvoice {
7301    /**
7302     * A pointer to the opaque Rust object.
7303     * Nearly everywhere, inner must be non-null, however in places where
7304     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7305     */
7306    LDKnativeRawInvoice *inner;
7307    /**
7308     * Indicates that this is the only struct which contains the same pointer.
7309     * Rust functions which take ownership of an object provided via an argument require
7310     * this to be true and invalidate the object pointed to by inner.
7311     */
7312    bool is_owned;
7313 } LDKRawInvoice;
7314
7315
7316
7317 /**
7318  * Recoverable signature
7319  */
7320 typedef struct MUST_USE_STRUCT LDKInvoiceSignature {
7321    /**
7322     * A pointer to the opaque Rust object.
7323     * Nearly everywhere, inner must be non-null, however in places where
7324     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7325     */
7326    LDKnativeInvoiceSignature *inner;
7327    /**
7328     * Indicates that this is the only struct which contains the same pointer.
7329     * Rust functions which take ownership of an object provided via an argument require
7330     * this to be true and invalidate the object pointed to by inner.
7331     */
7332    bool is_owned;
7333 } LDKInvoiceSignature;
7334
7335 /**
7336  * A tuple of 3 elements. See the individual fields for the types contained.
7337  */
7338 typedef struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ {
7339    /**
7340     * The element at position 0
7341     */
7342    struct LDKRawInvoice a;
7343    /**
7344     * The element at position 1
7345     */
7346    struct LDKThirtyTwoBytes b;
7347    /**
7348     * The element at position 2
7349     */
7350    struct LDKInvoiceSignature c;
7351 } LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ;
7352
7353
7354
7355 /**
7356  * Payee public key
7357  */
7358 typedef struct MUST_USE_STRUCT LDKPayeePubKey {
7359    /**
7360     * A pointer to the opaque Rust object.
7361     * Nearly everywhere, inner must be non-null, however in places where
7362     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7363     */
7364    LDKnativePayeePubKey *inner;
7365    /**
7366     * Indicates that this is the only struct which contains the same pointer.
7367     * Rust functions which take ownership of an object provided via an argument require
7368     * this to be true and invalidate the object pointed to by inner.
7369     */
7370    bool is_owned;
7371 } LDKPayeePubKey;
7372
7373 /**
7374  * The contents of CResult_PayeePubKeyErrorZ
7375  */
7376 typedef union LDKCResult_PayeePubKeyErrorZPtr {
7377    /**
7378     * A pointer to the contents in the success state.
7379     * Reading from this pointer when `result_ok` is not set is undefined.
7380     */
7381    struct LDKPayeePubKey *result;
7382    /**
7383     * A pointer to the contents in the error state.
7384     * Reading from this pointer when `result_ok` is set is undefined.
7385     */
7386    enum LDKSecp256k1Error *err;
7387 } LDKCResult_PayeePubKeyErrorZPtr;
7388
7389 /**
7390  * A CResult_PayeePubKeyErrorZ represents the result of a fallible operation,
7391  * containing a crate::lightning_invoice::PayeePubKey on success and a crate::c_types::Secp256k1Error on failure.
7392  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7393  */
7394 typedef struct LDKCResult_PayeePubKeyErrorZ {
7395    /**
7396     * The contents of this CResult_PayeePubKeyErrorZ, accessible via either
7397     * `err` or `result` depending on the state of `result_ok`.
7398     */
7399    union LDKCResult_PayeePubKeyErrorZPtr contents;
7400    /**
7401     * Whether this CResult_PayeePubKeyErrorZ represents a success state.
7402     */
7403    bool result_ok;
7404 } LDKCResult_PayeePubKeyErrorZ;
7405
7406
7407
7408 /**
7409  * Private routing information
7410  *
7411  * # Invariants
7412  * The encoded route has to be <1024 5bit characters long (<=639 bytes or <=12 hops)
7413  *
7414  */
7415 typedef struct MUST_USE_STRUCT LDKPrivateRoute {
7416    /**
7417     * A pointer to the opaque Rust object.
7418     * Nearly everywhere, inner must be non-null, however in places where
7419     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7420     */
7421    LDKnativePrivateRoute *inner;
7422    /**
7423     * Indicates that this is the only struct which contains the same pointer.
7424     * Rust functions which take ownership of an object provided via an argument require
7425     * this to be true and invalidate the object pointed to by inner.
7426     */
7427    bool is_owned;
7428 } LDKPrivateRoute;
7429
7430 /**
7431  * A dynamically-allocated array of crate::lightning_invoice::PrivateRoutes of arbitrary size.
7432  * This corresponds to std::vector in C++
7433  */
7434 typedef struct LDKCVec_PrivateRouteZ {
7435    /**
7436     * The elements in the array.
7437     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7438     */
7439    struct LDKPrivateRoute *data;
7440    /**
7441     * The number of elements pointed to by `data`.
7442     */
7443    uintptr_t datalen;
7444 } LDKCVec_PrivateRouteZ;
7445
7446
7447
7448 /**
7449  * A timestamp that refers to a date after 1 January 1970.
7450  *
7451  * # Invariants
7452  *
7453  * The Unix timestamp representing the stored time has to be positive and no greater than
7454  * [`MAX_TIMESTAMP`].
7455  */
7456 typedef struct MUST_USE_STRUCT LDKPositiveTimestamp {
7457    /**
7458     * A pointer to the opaque Rust object.
7459     * Nearly everywhere, inner must be non-null, however in places where
7460     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7461     */
7462    LDKnativePositiveTimestamp *inner;
7463    /**
7464     * Indicates that this is the only struct which contains the same pointer.
7465     * Rust functions which take ownership of an object provided via an argument require
7466     * this to be true and invalidate the object pointed to by inner.
7467     */
7468    bool is_owned;
7469 } LDKPositiveTimestamp;
7470
7471 /**
7472  * The contents of CResult_PositiveTimestampCreationErrorZ
7473  */
7474 typedef union LDKCResult_PositiveTimestampCreationErrorZPtr {
7475    /**
7476     * A pointer to the contents in the success state.
7477     * Reading from this pointer when `result_ok` is not set is undefined.
7478     */
7479    struct LDKPositiveTimestamp *result;
7480    /**
7481     * A pointer to the contents in the error state.
7482     * Reading from this pointer when `result_ok` is set is undefined.
7483     */
7484    enum LDKCreationError *err;
7485 } LDKCResult_PositiveTimestampCreationErrorZPtr;
7486
7487 /**
7488  * A CResult_PositiveTimestampCreationErrorZ represents the result of a fallible operation,
7489  * containing a crate::lightning_invoice::PositiveTimestamp on success and a crate::lightning_invoice::CreationError on failure.
7490  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7491  */
7492 typedef struct LDKCResult_PositiveTimestampCreationErrorZ {
7493    /**
7494     * The contents of this CResult_PositiveTimestampCreationErrorZ, accessible via either
7495     * `err` or `result` depending on the state of `result_ok`.
7496     */
7497    union LDKCResult_PositiveTimestampCreationErrorZPtr contents;
7498    /**
7499     * Whether this CResult_PositiveTimestampCreationErrorZ represents a success state.
7500     */
7501    bool result_ok;
7502 } LDKCResult_PositiveTimestampCreationErrorZ;
7503
7504 /**
7505  * The contents of CResult_NoneSemanticErrorZ
7506  */
7507 typedef union LDKCResult_NoneSemanticErrorZPtr {
7508    /**
7509     * Note that this value is always NULL, as there are no contents in the OK variant
7510     */
7511    void *result;
7512    /**
7513     * A pointer to the contents in the error state.
7514     * Reading from this pointer when `result_ok` is set is undefined.
7515     */
7516    enum LDKSemanticError *err;
7517 } LDKCResult_NoneSemanticErrorZPtr;
7518
7519 /**
7520  * A CResult_NoneSemanticErrorZ represents the result of a fallible operation,
7521  * containing a () on success and a crate::lightning_invoice::SemanticError on failure.
7522  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7523  */
7524 typedef struct LDKCResult_NoneSemanticErrorZ {
7525    /**
7526     * The contents of this CResult_NoneSemanticErrorZ, accessible via either
7527     * `err` or `result` depending on the state of `result_ok`.
7528     */
7529    union LDKCResult_NoneSemanticErrorZPtr contents;
7530    /**
7531     * Whether this CResult_NoneSemanticErrorZ represents a success state.
7532     */
7533    bool result_ok;
7534 } LDKCResult_NoneSemanticErrorZ;
7535
7536 /**
7537  * The contents of CResult_InvoiceSemanticErrorZ
7538  */
7539 typedef union LDKCResult_InvoiceSemanticErrorZPtr {
7540    /**
7541     * A pointer to the contents in the success state.
7542     * Reading from this pointer when `result_ok` is not set is undefined.
7543     */
7544    struct LDKInvoice *result;
7545    /**
7546     * A pointer to the contents in the error state.
7547     * Reading from this pointer when `result_ok` is set is undefined.
7548     */
7549    enum LDKSemanticError *err;
7550 } LDKCResult_InvoiceSemanticErrorZPtr;
7551
7552 /**
7553  * A CResult_InvoiceSemanticErrorZ represents the result of a fallible operation,
7554  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SemanticError on failure.
7555  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7556  */
7557 typedef struct LDKCResult_InvoiceSemanticErrorZ {
7558    /**
7559     * The contents of this CResult_InvoiceSemanticErrorZ, accessible via either
7560     * `err` or `result` depending on the state of `result_ok`.
7561     */
7562    union LDKCResult_InvoiceSemanticErrorZPtr contents;
7563    /**
7564     * Whether this CResult_InvoiceSemanticErrorZ represents a success state.
7565     */
7566    bool result_ok;
7567 } LDKCResult_InvoiceSemanticErrorZ;
7568
7569
7570
7571 /**
7572  * Description string
7573  *
7574  * # Invariants
7575  * The description can be at most 639 __bytes__ long
7576  */
7577 typedef struct MUST_USE_STRUCT LDKDescription {
7578    /**
7579     * A pointer to the opaque Rust object.
7580     * Nearly everywhere, inner must be non-null, however in places where
7581     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7582     */
7583    LDKnativeDescription *inner;
7584    /**
7585     * Indicates that this is the only struct which contains the same pointer.
7586     * Rust functions which take ownership of an object provided via an argument require
7587     * this to be true and invalidate the object pointed to by inner.
7588     */
7589    bool is_owned;
7590 } LDKDescription;
7591
7592 /**
7593  * The contents of CResult_DescriptionCreationErrorZ
7594  */
7595 typedef union LDKCResult_DescriptionCreationErrorZPtr {
7596    /**
7597     * A pointer to the contents in the success state.
7598     * Reading from this pointer when `result_ok` is not set is undefined.
7599     */
7600    struct LDKDescription *result;
7601    /**
7602     * A pointer to the contents in the error state.
7603     * Reading from this pointer when `result_ok` is set is undefined.
7604     */
7605    enum LDKCreationError *err;
7606 } LDKCResult_DescriptionCreationErrorZPtr;
7607
7608 /**
7609  * A CResult_DescriptionCreationErrorZ represents the result of a fallible operation,
7610  * containing a crate::lightning_invoice::Description on success and a crate::lightning_invoice::CreationError on failure.
7611  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7612  */
7613 typedef struct LDKCResult_DescriptionCreationErrorZ {
7614    /**
7615     * The contents of this CResult_DescriptionCreationErrorZ, accessible via either
7616     * `err` or `result` depending on the state of `result_ok`.
7617     */
7618    union LDKCResult_DescriptionCreationErrorZPtr contents;
7619    /**
7620     * Whether this CResult_DescriptionCreationErrorZ represents a success state.
7621     */
7622    bool result_ok;
7623 } LDKCResult_DescriptionCreationErrorZ;
7624
7625 /**
7626  * The contents of CResult_PrivateRouteCreationErrorZ
7627  */
7628 typedef union LDKCResult_PrivateRouteCreationErrorZPtr {
7629    /**
7630     * A pointer to the contents in the success state.
7631     * Reading from this pointer when `result_ok` is not set is undefined.
7632     */
7633    struct LDKPrivateRoute *result;
7634    /**
7635     * A pointer to the contents in the error state.
7636     * Reading from this pointer when `result_ok` is set is undefined.
7637     */
7638    enum LDKCreationError *err;
7639 } LDKCResult_PrivateRouteCreationErrorZPtr;
7640
7641 /**
7642  * A CResult_PrivateRouteCreationErrorZ represents the result of a fallible operation,
7643  * containing a crate::lightning_invoice::PrivateRoute on success and a crate::lightning_invoice::CreationError on failure.
7644  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7645  */
7646 typedef struct LDKCResult_PrivateRouteCreationErrorZ {
7647    /**
7648     * The contents of this CResult_PrivateRouteCreationErrorZ, accessible via either
7649     * `err` or `result` depending on the state of `result_ok`.
7650     */
7651    union LDKCResult_PrivateRouteCreationErrorZPtr contents;
7652    /**
7653     * Whether this CResult_PrivateRouteCreationErrorZ represents a success state.
7654     */
7655    bool result_ok;
7656 } LDKCResult_PrivateRouteCreationErrorZ;
7657
7658 /**
7659  * The contents of CResult_StringErrorZ
7660  */
7661 typedef union LDKCResult_StringErrorZPtr {
7662    /**
7663     * A pointer to the contents in the success state.
7664     * Reading from this pointer when `result_ok` is not set is undefined.
7665     */
7666    struct LDKStr *result;
7667    /**
7668     * A pointer to the contents in the error state.
7669     * Reading from this pointer when `result_ok` is set is undefined.
7670     */
7671    enum LDKSecp256k1Error *err;
7672 } LDKCResult_StringErrorZPtr;
7673
7674 /**
7675  * A CResult_StringErrorZ represents the result of a fallible operation,
7676  * containing a crate::c_types::Str on success and a crate::c_types::Secp256k1Error on failure.
7677  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7678  */
7679 typedef struct LDKCResult_StringErrorZ {
7680    /**
7681     * The contents of this CResult_StringErrorZ, accessible via either
7682     * `err` or `result` depending on the state of `result_ok`.
7683     */
7684    union LDKCResult_StringErrorZPtr contents;
7685    /**
7686     * Whether this CResult_StringErrorZ represents a success state.
7687     */
7688    bool result_ok;
7689 } LDKCResult_StringErrorZ;
7690
7691 /**
7692  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
7693  */
7694 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
7695    /**
7696     * A pointer to the contents in the success state.
7697     * Reading from this pointer when `result_ok` is not set is undefined.
7698     */
7699    struct LDKChannelMonitorUpdate *result;
7700    /**
7701     * A pointer to the contents in the error state.
7702     * Reading from this pointer when `result_ok` is set is undefined.
7703     */
7704    struct LDKDecodeError *err;
7705 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
7706
7707 /**
7708  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
7709  * containing a crate::lightning::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
7710  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7711  */
7712 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
7713    /**
7714     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
7715     * `err` or `result` depending on the state of `result_ok`.
7716     */
7717    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
7718    /**
7719     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
7720     */
7721    bool result_ok;
7722 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
7723
7724 /**
7725  * An enum which can either contain a crate::lightning::chain::channelmonitor::MonitorEvent or not
7726  */
7727 typedef enum LDKCOption_MonitorEventZ_Tag {
7728    /**
7729     * When we're in this state, this COption_MonitorEventZ contains a crate::lightning::chain::channelmonitor::MonitorEvent
7730     */
7731    LDKCOption_MonitorEventZ_Some,
7732    /**
7733     * When we're in this state, this COption_MonitorEventZ contains nothing
7734     */
7735    LDKCOption_MonitorEventZ_None,
7736    /**
7737     * Must be last for serialization purposes
7738     */
7739    LDKCOption_MonitorEventZ_Sentinel,
7740 } LDKCOption_MonitorEventZ_Tag;
7741
7742 typedef struct LDKCOption_MonitorEventZ {
7743    LDKCOption_MonitorEventZ_Tag tag;
7744    union {
7745       struct {
7746          struct LDKMonitorEvent some;
7747       };
7748    };
7749 } LDKCOption_MonitorEventZ;
7750
7751 /**
7752  * The contents of CResult_COption_MonitorEventZDecodeErrorZ
7753  */
7754 typedef union LDKCResult_COption_MonitorEventZDecodeErrorZPtr {
7755    /**
7756     * A pointer to the contents in the success state.
7757     * Reading from this pointer when `result_ok` is not set is undefined.
7758     */
7759    struct LDKCOption_MonitorEventZ *result;
7760    /**
7761     * A pointer to the contents in the error state.
7762     * Reading from this pointer when `result_ok` is set is undefined.
7763     */
7764    struct LDKDecodeError *err;
7765 } LDKCResult_COption_MonitorEventZDecodeErrorZPtr;
7766
7767 /**
7768  * A CResult_COption_MonitorEventZDecodeErrorZ represents the result of a fallible operation,
7769  * containing a crate::c_types::derived::COption_MonitorEventZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
7770  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7771  */
7772 typedef struct LDKCResult_COption_MonitorEventZDecodeErrorZ {
7773    /**
7774     * The contents of this CResult_COption_MonitorEventZDecodeErrorZ, accessible via either
7775     * `err` or `result` depending on the state of `result_ok`.
7776     */
7777    union LDKCResult_COption_MonitorEventZDecodeErrorZPtr contents;
7778    /**
7779     * Whether this CResult_COption_MonitorEventZDecodeErrorZ represents a success state.
7780     */
7781    bool result_ok;
7782 } LDKCResult_COption_MonitorEventZDecodeErrorZ;
7783
7784 /**
7785  * The contents of CResult_HTLCUpdateDecodeErrorZ
7786  */
7787 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
7788    /**
7789     * A pointer to the contents in the success state.
7790     * Reading from this pointer when `result_ok` is not set is undefined.
7791     */
7792    struct LDKHTLCUpdate *result;
7793    /**
7794     * A pointer to the contents in the error state.
7795     * Reading from this pointer when `result_ok` is set is undefined.
7796     */
7797    struct LDKDecodeError *err;
7798 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
7799
7800 /**
7801  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
7802  * containing a crate::lightning::chain::channelmonitor::HTLCUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
7803  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7804  */
7805 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
7806    /**
7807     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
7808     * `err` or `result` depending on the state of `result_ok`.
7809     */
7810    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
7811    /**
7812     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
7813     */
7814    bool result_ok;
7815 } LDKCResult_HTLCUpdateDecodeErrorZ;
7816
7817 /**
7818  * A tuple of 2 elements. See the individual fields for the types contained.
7819  */
7820 typedef struct LDKC2Tuple_OutPointScriptZ {
7821    /**
7822     * The element at position 0
7823     */
7824    struct LDKOutPoint a;
7825    /**
7826     * The element at position 1
7827     */
7828    struct LDKCVec_u8Z b;
7829 } LDKC2Tuple_OutPointScriptZ;
7830
7831 /**
7832  * A tuple of 2 elements. See the individual fields for the types contained.
7833  */
7834 typedef struct LDKC2Tuple_u32ScriptZ {
7835    /**
7836     * The element at position 0
7837     */
7838    uint32_t a;
7839    /**
7840     * The element at position 1
7841     */
7842    struct LDKCVec_u8Z b;
7843 } LDKC2Tuple_u32ScriptZ;
7844
7845 /**
7846  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
7847  * This corresponds to std::vector in C++
7848  */
7849 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
7850    /**
7851     * The elements in the array.
7852     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7853     */
7854    struct LDKC2Tuple_u32ScriptZ *data;
7855    /**
7856     * The number of elements pointed to by `data`.
7857     */
7858    uintptr_t datalen;
7859 } LDKCVec_C2Tuple_u32ScriptZZ;
7860
7861 /**
7862  * A tuple of 2 elements. See the individual fields for the types contained.
7863  */
7864 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
7865    /**
7866     * The element at position 0
7867     */
7868    struct LDKThirtyTwoBytes a;
7869    /**
7870     * The element at position 1
7871     */
7872    struct LDKCVec_C2Tuple_u32ScriptZZ b;
7873 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
7874
7875 /**
7876  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
7877  * This corresponds to std::vector in C++
7878  */
7879 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
7880    /**
7881     * The elements in the array.
7882     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7883     */
7884    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
7885    /**
7886     * The number of elements pointed to by `data`.
7887     */
7888    uintptr_t datalen;
7889 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
7890
7891 /**
7892  * A dynamically-allocated array of crate::lightning::util::events::Events of arbitrary size.
7893  * This corresponds to std::vector in C++
7894  */
7895 typedef struct LDKCVec_EventZ {
7896    /**
7897     * The elements in the array.
7898     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7899     */
7900    struct LDKEvent *data;
7901    /**
7902     * The number of elements pointed to by `data`.
7903     */
7904    uintptr_t datalen;
7905 } LDKCVec_EventZ;
7906
7907 /**
7908  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
7909  * This corresponds to std::vector in C++
7910  */
7911 typedef struct LDKCVec_TransactionZ {
7912    /**
7913     * The elements in the array.
7914     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7915     */
7916    struct LDKTransaction *data;
7917    /**
7918     * The number of elements pointed to by `data`.
7919     */
7920    uintptr_t datalen;
7921 } LDKCVec_TransactionZ;
7922
7923 /**
7924  * A tuple of 2 elements. See the individual fields for the types contained.
7925  */
7926 typedef struct LDKC2Tuple_u32TxOutZ {
7927    /**
7928     * The element at position 0
7929     */
7930    uint32_t a;
7931    /**
7932     * The element at position 1
7933     */
7934    struct LDKTxOut b;
7935 } LDKC2Tuple_u32TxOutZ;
7936
7937 /**
7938  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
7939  * This corresponds to std::vector in C++
7940  */
7941 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
7942    /**
7943     * The elements in the array.
7944     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7945     */
7946    struct LDKC2Tuple_u32TxOutZ *data;
7947    /**
7948     * The number of elements pointed to by `data`.
7949     */
7950    uintptr_t datalen;
7951 } LDKCVec_C2Tuple_u32TxOutZZ;
7952
7953 /**
7954  * A tuple of 2 elements. See the individual fields for the types contained.
7955  */
7956 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
7957    /**
7958     * The element at position 0
7959     */
7960    struct LDKThirtyTwoBytes a;
7961    /**
7962     * The element at position 1
7963     */
7964    struct LDKCVec_C2Tuple_u32TxOutZZ b;
7965 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
7966
7967 /**
7968  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
7969  * This corresponds to std::vector in C++
7970  */
7971 typedef struct LDKCVec_TransactionOutputsZ {
7972    /**
7973     * The elements in the array.
7974     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7975     */
7976    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
7977    /**
7978     * The number of elements pointed to by `data`.
7979     */
7980    uintptr_t datalen;
7981 } LDKCVec_TransactionOutputsZ;
7982
7983 /**
7984  * Details about the balance(s) available for spending once the channel appears on chain.
7985  *
7986  * See [`ChannelMonitor::get_claimable_balances`] for more details on when these will or will not
7987  * be provided.
7988  */
7989 typedef enum LDKBalance_Tag {
7990    /**
7991     * The channel is not yet closed (or the commitment or closing transaction has not yet
7992     * appeared in a block). The given balance is claimable (less on-chain fees) if the channel is
7993     * force-closed now.
7994     */
7995    LDKBalance_ClaimableOnChannelClose,
7996    /**
7997     * The channel has been closed, and the given balance is ours but awaiting confirmations until
7998     * we consider it spendable.
7999     */
8000    LDKBalance_ClaimableAwaitingConfirmations,
8001    /**
8002     * The channel has been closed, and the given balance should be ours but awaiting spending
8003     * transaction confirmation. If the spending transaction does not confirm in time, it is
8004     * possible our counterparty can take the funds by broadcasting an HTLC timeout on-chain.
8005     *
8006     * Once the spending transaction confirms, before it has reached enough confirmations to be
8007     * considered safe from chain reorganizations, the balance will instead be provided via
8008     * [`Balance::ClaimableAwaitingConfirmations`].
8009     */
8010    LDKBalance_ContentiousClaimable,
8011    /**
8012     * HTLCs which we sent to our counterparty which are claimable after a timeout (less on-chain
8013     * fees) if the counterparty does not know the preimage for the HTLCs. These are somewhat
8014     * likely to be claimed by our counterparty before we do.
8015     */
8016    LDKBalance_MaybeClaimableHTLCAwaitingTimeout,
8017    /**
8018     * Must be last for serialization purposes
8019     */
8020    LDKBalance_Sentinel,
8021 } LDKBalance_Tag;
8022
8023 typedef struct LDKBalance_LDKClaimableOnChannelClose_Body {
8024    /**
8025     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
8026     * required to do so.
8027     */
8028    uint64_t claimable_amount_satoshis;
8029 } LDKBalance_LDKClaimableOnChannelClose_Body;
8030
8031 typedef struct LDKBalance_LDKClaimableAwaitingConfirmations_Body {
8032    /**
8033     * The amount available to claim, in satoshis, possibly excluding the on-chain fees which
8034     * were spent in broadcasting the transaction.
8035     */
8036    uint64_t claimable_amount_satoshis;
8037    /**
8038     * The height at which an [`Event::SpendableOutputs`] event will be generated for this
8039     * amount.
8040     */
8041    uint32_t confirmation_height;
8042 } LDKBalance_LDKClaimableAwaitingConfirmations_Body;
8043
8044 typedef struct LDKBalance_LDKContentiousClaimable_Body {
8045    /**
8046     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
8047     * required to do so.
8048     */
8049    uint64_t claimable_amount_satoshis;
8050    /**
8051     * The height at which the counterparty may be able to claim the balance if we have not
8052     * done so.
8053     */
8054    uint32_t timeout_height;
8055 } LDKBalance_LDKContentiousClaimable_Body;
8056
8057 typedef struct LDKBalance_LDKMaybeClaimableHTLCAwaitingTimeout_Body {
8058    /**
8059     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
8060     * required to do so.
8061     */
8062    uint64_t claimable_amount_satoshis;
8063    /**
8064     * The height at which we will be able to claim the balance if our counterparty has not
8065     * done so.
8066     */
8067    uint32_t claimable_height;
8068 } LDKBalance_LDKMaybeClaimableHTLCAwaitingTimeout_Body;
8069
8070 typedef struct MUST_USE_STRUCT LDKBalance {
8071    LDKBalance_Tag tag;
8072    union {
8073       LDKBalance_LDKClaimableOnChannelClose_Body claimable_on_channel_close;
8074       LDKBalance_LDKClaimableAwaitingConfirmations_Body claimable_awaiting_confirmations;
8075       LDKBalance_LDKContentiousClaimable_Body contentious_claimable;
8076       LDKBalance_LDKMaybeClaimableHTLCAwaitingTimeout_Body maybe_claimable_htlc_awaiting_timeout;
8077    };
8078 } LDKBalance;
8079
8080 /**
8081  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::Balances of arbitrary size.
8082  * This corresponds to std::vector in C++
8083  */
8084 typedef struct LDKCVec_BalanceZ {
8085    /**
8086     * The elements in the array.
8087     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8088     */
8089    struct LDKBalance *data;
8090    /**
8091     * The number of elements pointed to by `data`.
8092     */
8093    uintptr_t datalen;
8094 } LDKCVec_BalanceZ;
8095
8096 /**
8097  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
8098  */
8099 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
8100    /**
8101     * A pointer to the contents in the success state.
8102     * Reading from this pointer when `result_ok` is not set is undefined.
8103     */
8104    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
8105    /**
8106     * A pointer to the contents in the error state.
8107     * Reading from this pointer when `result_ok` is set is undefined.
8108     */
8109    struct LDKDecodeError *err;
8110 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
8111
8112 /**
8113  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
8114  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
8115  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8116  */
8117 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
8118    /**
8119     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
8120     * `err` or `result` depending on the state of `result_ok`.
8121     */
8122    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
8123    /**
8124     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
8125     */
8126    bool result_ok;
8127 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
8128
8129 /**
8130  * The contents of CResult_NoneLightningErrorZ
8131  */
8132 typedef union LDKCResult_NoneLightningErrorZPtr {
8133    /**
8134     * Note that this value is always NULL, as there are no contents in the OK variant
8135     */
8136    void *result;
8137    /**
8138     * A pointer to the contents in the error state.
8139     * Reading from this pointer when `result_ok` is set is undefined.
8140     */
8141    struct LDKLightningError *err;
8142 } LDKCResult_NoneLightningErrorZPtr;
8143
8144 /**
8145  * A CResult_NoneLightningErrorZ represents the result of a fallible operation,
8146  * containing a () on success and a crate::lightning::ln::msgs::LightningError on failure.
8147  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8148  */
8149 typedef struct LDKCResult_NoneLightningErrorZ {
8150    /**
8151     * The contents of this CResult_NoneLightningErrorZ, accessible via either
8152     * `err` or `result` depending on the state of `result_ok`.
8153     */
8154    union LDKCResult_NoneLightningErrorZPtr contents;
8155    /**
8156     * Whether this CResult_NoneLightningErrorZ represents a success state.
8157     */
8158    bool result_ok;
8159 } LDKCResult_NoneLightningErrorZ;
8160
8161 /**
8162  * A tuple of 2 elements. See the individual fields for the types contained.
8163  */
8164 typedef struct LDKC2Tuple_PublicKeyTypeZ {
8165    /**
8166     * The element at position 0
8167     */
8168    struct LDKPublicKey a;
8169    /**
8170     * The element at position 1
8171     */
8172    struct LDKType b;
8173 } LDKC2Tuple_PublicKeyTypeZ;
8174
8175 /**
8176  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_PublicKeyTypeZs of arbitrary size.
8177  * This corresponds to std::vector in C++
8178  */
8179 typedef struct LDKCVec_C2Tuple_PublicKeyTypeZZ {
8180    /**
8181     * The elements in the array.
8182     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8183     */
8184    struct LDKC2Tuple_PublicKeyTypeZ *data;
8185    /**
8186     * The number of elements pointed to by `data`.
8187     */
8188    uintptr_t datalen;
8189 } LDKCVec_C2Tuple_PublicKeyTypeZZ;
8190
8191 /**
8192  * The contents of CResult_boolLightningErrorZ
8193  */
8194 typedef union LDKCResult_boolLightningErrorZPtr {
8195    /**
8196     * A pointer to the contents in the success state.
8197     * Reading from this pointer when `result_ok` is not set is undefined.
8198     */
8199    bool *result;
8200    /**
8201     * A pointer to the contents in the error state.
8202     * Reading from this pointer when `result_ok` is set is undefined.
8203     */
8204    struct LDKLightningError *err;
8205 } LDKCResult_boolLightningErrorZPtr;
8206
8207 /**
8208  * A CResult_boolLightningErrorZ represents the result of a fallible operation,
8209  * containing a bool on success and a crate::lightning::ln::msgs::LightningError on failure.
8210  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8211  */
8212 typedef struct LDKCResult_boolLightningErrorZ {
8213    /**
8214     * The contents of this CResult_boolLightningErrorZ, accessible via either
8215     * `err` or `result` depending on the state of `result_ok`.
8216     */
8217    union LDKCResult_boolLightningErrorZPtr contents;
8218    /**
8219     * Whether this CResult_boolLightningErrorZ represents a success state.
8220     */
8221    bool result_ok;
8222 } LDKCResult_boolLightningErrorZ;
8223
8224 /**
8225  * A tuple of 3 elements. See the individual fields for the types contained.
8226  */
8227 typedef struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
8228    /**
8229     * The element at position 0
8230     */
8231    struct LDKChannelAnnouncement a;
8232    /**
8233     * The element at position 1
8234     */
8235    struct LDKChannelUpdate b;
8236    /**
8237     * The element at position 2
8238     */
8239    struct LDKChannelUpdate c;
8240 } LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
8241
8242 /**
8243  * A dynamically-allocated array of crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZs of arbitrary size.
8244  * This corresponds to std::vector in C++
8245  */
8246 typedef struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
8247    /**
8248     * The elements in the array.
8249     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8250     */
8251    struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *data;
8252    /**
8253     * The number of elements pointed to by `data`.
8254     */
8255    uintptr_t datalen;
8256 } LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
8257
8258 /**
8259  * A dynamically-allocated array of crate::lightning::ln::msgs::NodeAnnouncements of arbitrary size.
8260  * This corresponds to std::vector in C++
8261  */
8262 typedef struct LDKCVec_NodeAnnouncementZ {
8263    /**
8264     * The elements in the array.
8265     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8266     */
8267    struct LDKNodeAnnouncement *data;
8268    /**
8269     * The number of elements pointed to by `data`.
8270     */
8271    uintptr_t datalen;
8272 } LDKCVec_NodeAnnouncementZ;
8273
8274 /**
8275  * A dynamically-allocated array of crate::c_types::PublicKeys of arbitrary size.
8276  * This corresponds to std::vector in C++
8277  */
8278 typedef struct LDKCVec_PublicKeyZ {
8279    /**
8280     * The elements in the array.
8281     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8282     */
8283    struct LDKPublicKey *data;
8284    /**
8285     * The number of elements pointed to by `data`.
8286     */
8287    uintptr_t datalen;
8288 } LDKCVec_PublicKeyZ;
8289
8290
8291
8292 /**
8293  * Error for PeerManager errors. If you get one of these, you must disconnect the socket and
8294  * generate no further read_event/write_buffer_space_avail/socket_disconnected calls for the
8295  * descriptor.
8296  */
8297 typedef struct MUST_USE_STRUCT LDKPeerHandleError {
8298    /**
8299     * A pointer to the opaque Rust object.
8300     * Nearly everywhere, inner must be non-null, however in places where
8301     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8302     */
8303    LDKnativePeerHandleError *inner;
8304    /**
8305     * Indicates that this is the only struct which contains the same pointer.
8306     * Rust functions which take ownership of an object provided via an argument require
8307     * this to be true and invalidate the object pointed to by inner.
8308     */
8309    bool is_owned;
8310 } LDKPeerHandleError;
8311
8312 /**
8313  * The contents of CResult_CVec_u8ZPeerHandleErrorZ
8314  */
8315 typedef union LDKCResult_CVec_u8ZPeerHandleErrorZPtr {
8316    /**
8317     * A pointer to the contents in the success state.
8318     * Reading from this pointer when `result_ok` is not set is undefined.
8319     */
8320    struct LDKCVec_u8Z *result;
8321    /**
8322     * A pointer to the contents in the error state.
8323     * Reading from this pointer when `result_ok` is set is undefined.
8324     */
8325    struct LDKPeerHandleError *err;
8326 } LDKCResult_CVec_u8ZPeerHandleErrorZPtr;
8327
8328 /**
8329  * A CResult_CVec_u8ZPeerHandleErrorZ represents the result of a fallible operation,
8330  * containing a crate::c_types::derived::CVec_u8Z on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
8331  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8332  */
8333 typedef struct LDKCResult_CVec_u8ZPeerHandleErrorZ {
8334    /**
8335     * The contents of this CResult_CVec_u8ZPeerHandleErrorZ, accessible via either
8336     * `err` or `result` depending on the state of `result_ok`.
8337     */
8338    union LDKCResult_CVec_u8ZPeerHandleErrorZPtr contents;
8339    /**
8340     * Whether this CResult_CVec_u8ZPeerHandleErrorZ represents a success state.
8341     */
8342    bool result_ok;
8343 } LDKCResult_CVec_u8ZPeerHandleErrorZ;
8344
8345 /**
8346  * The contents of CResult_NonePeerHandleErrorZ
8347  */
8348 typedef union LDKCResult_NonePeerHandleErrorZPtr {
8349    /**
8350     * Note that this value is always NULL, as there are no contents in the OK variant
8351     */
8352    void *result;
8353    /**
8354     * A pointer to the contents in the error state.
8355     * Reading from this pointer when `result_ok` is set is undefined.
8356     */
8357    struct LDKPeerHandleError *err;
8358 } LDKCResult_NonePeerHandleErrorZPtr;
8359
8360 /**
8361  * A CResult_NonePeerHandleErrorZ represents the result of a fallible operation,
8362  * containing a () on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
8363  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8364  */
8365 typedef struct LDKCResult_NonePeerHandleErrorZ {
8366    /**
8367     * The contents of this CResult_NonePeerHandleErrorZ, accessible via either
8368     * `err` or `result` depending on the state of `result_ok`.
8369     */
8370    union LDKCResult_NonePeerHandleErrorZPtr contents;
8371    /**
8372     * Whether this CResult_NonePeerHandleErrorZ represents a success state.
8373     */
8374    bool result_ok;
8375 } LDKCResult_NonePeerHandleErrorZ;
8376
8377 /**
8378  * The contents of CResult_boolPeerHandleErrorZ
8379  */
8380 typedef union LDKCResult_boolPeerHandleErrorZPtr {
8381    /**
8382     * A pointer to the contents in the success state.
8383     * Reading from this pointer when `result_ok` is not set is undefined.
8384     */
8385    bool *result;
8386    /**
8387     * A pointer to the contents in the error state.
8388     * Reading from this pointer when `result_ok` is set is undefined.
8389     */
8390    struct LDKPeerHandleError *err;
8391 } LDKCResult_boolPeerHandleErrorZPtr;
8392
8393 /**
8394  * A CResult_boolPeerHandleErrorZ represents the result of a fallible operation,
8395  * containing a bool on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
8396  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8397  */
8398 typedef struct LDKCResult_boolPeerHandleErrorZ {
8399    /**
8400     * The contents of this CResult_boolPeerHandleErrorZ, accessible via either
8401     * `err` or `result` depending on the state of `result_ok`.
8402     */
8403    union LDKCResult_boolPeerHandleErrorZPtr contents;
8404    /**
8405     * Whether this CResult_boolPeerHandleErrorZ represents a success state.
8406     */
8407    bool result_ok;
8408 } LDKCResult_boolPeerHandleErrorZ;
8409
8410
8411
8412 /**
8413  * Represents the compressed public key of a node
8414  */
8415 typedef struct MUST_USE_STRUCT LDKNodeId {
8416    /**
8417     * A pointer to the opaque Rust object.
8418     * Nearly everywhere, inner must be non-null, however in places where
8419     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8420     */
8421    LDKnativeNodeId *inner;
8422    /**
8423     * Indicates that this is the only struct which contains the same pointer.
8424     * Rust functions which take ownership of an object provided via an argument require
8425     * this to be true and invalidate the object pointed to by inner.
8426     */
8427    bool is_owned;
8428 } LDKNodeId;
8429
8430 /**
8431  * The contents of CResult_NodeIdDecodeErrorZ
8432  */
8433 typedef union LDKCResult_NodeIdDecodeErrorZPtr {
8434    /**
8435     * A pointer to the contents in the success state.
8436     * Reading from this pointer when `result_ok` is not set is undefined.
8437     */
8438    struct LDKNodeId *result;
8439    /**
8440     * A pointer to the contents in the error state.
8441     * Reading from this pointer when `result_ok` is set is undefined.
8442     */
8443    struct LDKDecodeError *err;
8444 } LDKCResult_NodeIdDecodeErrorZPtr;
8445
8446 /**
8447  * A CResult_NodeIdDecodeErrorZ represents the result of a fallible operation,
8448  * containing a crate::lightning::routing::network_graph::NodeId on success and a crate::lightning::ln::msgs::DecodeError on failure.
8449  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8450  */
8451 typedef struct LDKCResult_NodeIdDecodeErrorZ {
8452    /**
8453     * The contents of this CResult_NodeIdDecodeErrorZ, accessible via either
8454     * `err` or `result` depending on the state of `result_ok`.
8455     */
8456    union LDKCResult_NodeIdDecodeErrorZPtr contents;
8457    /**
8458     * Whether this CResult_NodeIdDecodeErrorZ represents a success state.
8459     */
8460    bool result_ok;
8461 } LDKCResult_NodeIdDecodeErrorZ;
8462
8463 /**
8464  * The contents of CResult_COption_NetworkUpdateZDecodeErrorZ
8465  */
8466 typedef union LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr {
8467    /**
8468     * A pointer to the contents in the success state.
8469     * Reading from this pointer when `result_ok` is not set is undefined.
8470     */
8471    struct LDKCOption_NetworkUpdateZ *result;
8472    /**
8473     * A pointer to the contents in the error state.
8474     * Reading from this pointer when `result_ok` is set is undefined.
8475     */
8476    struct LDKDecodeError *err;
8477 } LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr;
8478
8479 /**
8480  * A CResult_COption_NetworkUpdateZDecodeErrorZ represents the result of a fallible operation,
8481  * containing a crate::c_types::derived::COption_NetworkUpdateZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
8482  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8483  */
8484 typedef struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ {
8485    /**
8486     * The contents of this CResult_COption_NetworkUpdateZDecodeErrorZ, accessible via either
8487     * `err` or `result` depending on the state of `result_ok`.
8488     */
8489    union LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr contents;
8490    /**
8491     * Whether this CResult_COption_NetworkUpdateZDecodeErrorZ represents a success state.
8492     */
8493    bool result_ok;
8494 } LDKCResult_COption_NetworkUpdateZDecodeErrorZ;
8495
8496 /**
8497  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
8498  * UTXOs.
8499  */
8500 typedef struct LDKAccess {
8501    /**
8502     * An opaque pointer which is passed to your function implementations as an argument.
8503     * This has no meaning in the LDK, and can be NULL or any other value.
8504     */
8505    void *this_arg;
8506    /**
8507     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
8508     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
8509     * is unknown.
8510     *
8511     * [`short_channel_id`]: https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#definition-of-short_channel_id
8512     */
8513    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
8514    /**
8515     * Frees any resources associated with this object given its this_arg pointer.
8516     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8517     */
8518    void (*free)(void *this_arg);
8519 } LDKAccess;
8520
8521 /**
8522  * An enum which can either contain a crate::lightning::chain::Access or not
8523  */
8524 typedef enum LDKCOption_AccessZ_Tag {
8525    /**
8526     * When we're in this state, this COption_AccessZ contains a crate::lightning::chain::Access
8527     */
8528    LDKCOption_AccessZ_Some,
8529    /**
8530     * When we're in this state, this COption_AccessZ contains nothing
8531     */
8532    LDKCOption_AccessZ_None,
8533    /**
8534     * Must be last for serialization purposes
8535     */
8536    LDKCOption_AccessZ_Sentinel,
8537 } LDKCOption_AccessZ_Tag;
8538
8539 typedef struct LDKCOption_AccessZ {
8540    LDKCOption_AccessZ_Tag tag;
8541    union {
8542       struct {
8543          struct LDKAccess some;
8544       };
8545    };
8546 } LDKCOption_AccessZ;
8547
8548
8549
8550 /**
8551  * Details about one direction of a channel as received within a [`ChannelUpdate`].
8552  */
8553 typedef struct MUST_USE_STRUCT LDKChannelUpdateInfo {
8554    /**
8555     * A pointer to the opaque Rust object.
8556     * Nearly everywhere, inner must be non-null, however in places where
8557     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8558     */
8559    LDKnativeChannelUpdateInfo *inner;
8560    /**
8561     * Indicates that this is the only struct which contains the same pointer.
8562     * Rust functions which take ownership of an object provided via an argument require
8563     * this to be true and invalidate the object pointed to by inner.
8564     */
8565    bool is_owned;
8566 } LDKChannelUpdateInfo;
8567
8568 /**
8569  * The contents of CResult_ChannelUpdateInfoDecodeErrorZ
8570  */
8571 typedef union LDKCResult_ChannelUpdateInfoDecodeErrorZPtr {
8572    /**
8573     * A pointer to the contents in the success state.
8574     * Reading from this pointer when `result_ok` is not set is undefined.
8575     */
8576    struct LDKChannelUpdateInfo *result;
8577    /**
8578     * A pointer to the contents in the error state.
8579     * Reading from this pointer when `result_ok` is set is undefined.
8580     */
8581    struct LDKDecodeError *err;
8582 } LDKCResult_ChannelUpdateInfoDecodeErrorZPtr;
8583
8584 /**
8585  * A CResult_ChannelUpdateInfoDecodeErrorZ represents the result of a fallible operation,
8586  * containing a crate::lightning::routing::network_graph::ChannelUpdateInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8587  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8588  */
8589 typedef struct LDKCResult_ChannelUpdateInfoDecodeErrorZ {
8590    /**
8591     * The contents of this CResult_ChannelUpdateInfoDecodeErrorZ, accessible via either
8592     * `err` or `result` depending on the state of `result_ok`.
8593     */
8594    union LDKCResult_ChannelUpdateInfoDecodeErrorZPtr contents;
8595    /**
8596     * Whether this CResult_ChannelUpdateInfoDecodeErrorZ represents a success state.
8597     */
8598    bool result_ok;
8599 } LDKCResult_ChannelUpdateInfoDecodeErrorZ;
8600
8601
8602
8603 /**
8604  * Details about a channel (both directions).
8605  * Received within a channel announcement.
8606  */
8607 typedef struct MUST_USE_STRUCT LDKChannelInfo {
8608    /**
8609     * A pointer to the opaque Rust object.
8610     * Nearly everywhere, inner must be non-null, however in places where
8611     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8612     */
8613    LDKnativeChannelInfo *inner;
8614    /**
8615     * Indicates that this is the only struct which contains the same pointer.
8616     * Rust functions which take ownership of an object provided via an argument require
8617     * this to be true and invalidate the object pointed to by inner.
8618     */
8619    bool is_owned;
8620 } LDKChannelInfo;
8621
8622 /**
8623  * The contents of CResult_ChannelInfoDecodeErrorZ
8624  */
8625 typedef union LDKCResult_ChannelInfoDecodeErrorZPtr {
8626    /**
8627     * A pointer to the contents in the success state.
8628     * Reading from this pointer when `result_ok` is not set is undefined.
8629     */
8630    struct LDKChannelInfo *result;
8631    /**
8632     * A pointer to the contents in the error state.
8633     * Reading from this pointer when `result_ok` is set is undefined.
8634     */
8635    struct LDKDecodeError *err;
8636 } LDKCResult_ChannelInfoDecodeErrorZPtr;
8637
8638 /**
8639  * A CResult_ChannelInfoDecodeErrorZ represents the result of a fallible operation,
8640  * containing a crate::lightning::routing::network_graph::ChannelInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8641  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8642  */
8643 typedef struct LDKCResult_ChannelInfoDecodeErrorZ {
8644    /**
8645     * The contents of this CResult_ChannelInfoDecodeErrorZ, accessible via either
8646     * `err` or `result` depending on the state of `result_ok`.
8647     */
8648    union LDKCResult_ChannelInfoDecodeErrorZPtr contents;
8649    /**
8650     * Whether this CResult_ChannelInfoDecodeErrorZ represents a success state.
8651     */
8652    bool result_ok;
8653 } LDKCResult_ChannelInfoDecodeErrorZ;
8654
8655
8656
8657 /**
8658  * Fees for routing via a given channel or a node
8659  */
8660 typedef struct MUST_USE_STRUCT LDKRoutingFees {
8661    /**
8662     * A pointer to the opaque Rust object.
8663     * Nearly everywhere, inner must be non-null, however in places where
8664     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8665     */
8666    LDKnativeRoutingFees *inner;
8667    /**
8668     * Indicates that this is the only struct which contains the same pointer.
8669     * Rust functions which take ownership of an object provided via an argument require
8670     * this to be true and invalidate the object pointed to by inner.
8671     */
8672    bool is_owned;
8673 } LDKRoutingFees;
8674
8675 /**
8676  * The contents of CResult_RoutingFeesDecodeErrorZ
8677  */
8678 typedef union LDKCResult_RoutingFeesDecodeErrorZPtr {
8679    /**
8680     * A pointer to the contents in the success state.
8681     * Reading from this pointer when `result_ok` is not set is undefined.
8682     */
8683    struct LDKRoutingFees *result;
8684    /**
8685     * A pointer to the contents in the error state.
8686     * Reading from this pointer when `result_ok` is set is undefined.
8687     */
8688    struct LDKDecodeError *err;
8689 } LDKCResult_RoutingFeesDecodeErrorZPtr;
8690
8691 /**
8692  * A CResult_RoutingFeesDecodeErrorZ represents the result of a fallible operation,
8693  * containing a crate::lightning::routing::network_graph::RoutingFees on success and a crate::lightning::ln::msgs::DecodeError on failure.
8694  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8695  */
8696 typedef struct LDKCResult_RoutingFeesDecodeErrorZ {
8697    /**
8698     * The contents of this CResult_RoutingFeesDecodeErrorZ, accessible via either
8699     * `err` or `result` depending on the state of `result_ok`.
8700     */
8701    union LDKCResult_RoutingFeesDecodeErrorZPtr contents;
8702    /**
8703     * Whether this CResult_RoutingFeesDecodeErrorZ represents a success state.
8704     */
8705    bool result_ok;
8706 } LDKCResult_RoutingFeesDecodeErrorZ;
8707
8708
8709
8710 /**
8711  * Information received in the latest node_announcement from this node.
8712  */
8713 typedef struct MUST_USE_STRUCT LDKNodeAnnouncementInfo {
8714    /**
8715     * A pointer to the opaque Rust object.
8716     * Nearly everywhere, inner must be non-null, however in places where
8717     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8718     */
8719    LDKnativeNodeAnnouncementInfo *inner;
8720    /**
8721     * Indicates that this is the only struct which contains the same pointer.
8722     * Rust functions which take ownership of an object provided via an argument require
8723     * this to be true and invalidate the object pointed to by inner.
8724     */
8725    bool is_owned;
8726 } LDKNodeAnnouncementInfo;
8727
8728 /**
8729  * The contents of CResult_NodeAnnouncementInfoDecodeErrorZ
8730  */
8731 typedef union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr {
8732    /**
8733     * A pointer to the contents in the success state.
8734     * Reading from this pointer when `result_ok` is not set is undefined.
8735     */
8736    struct LDKNodeAnnouncementInfo *result;
8737    /**
8738     * A pointer to the contents in the error state.
8739     * Reading from this pointer when `result_ok` is set is undefined.
8740     */
8741    struct LDKDecodeError *err;
8742 } LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr;
8743
8744 /**
8745  * A CResult_NodeAnnouncementInfoDecodeErrorZ represents the result of a fallible operation,
8746  * containing a crate::lightning::routing::network_graph::NodeAnnouncementInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8747  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8748  */
8749 typedef struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ {
8750    /**
8751     * The contents of this CResult_NodeAnnouncementInfoDecodeErrorZ, accessible via either
8752     * `err` or `result` depending on the state of `result_ok`.
8753     */
8754    union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr contents;
8755    /**
8756     * Whether this CResult_NodeAnnouncementInfoDecodeErrorZ represents a success state.
8757     */
8758    bool result_ok;
8759 } LDKCResult_NodeAnnouncementInfoDecodeErrorZ;
8760
8761 /**
8762  * A dynamically-allocated array of u64s of arbitrary size.
8763  * This corresponds to std::vector in C++
8764  */
8765 typedef struct LDKCVec_u64Z {
8766    /**
8767     * The elements in the array.
8768     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8769     */
8770    uint64_t *data;
8771    /**
8772     * The number of elements pointed to by `data`.
8773     */
8774    uintptr_t datalen;
8775 } LDKCVec_u64Z;
8776
8777
8778
8779 /**
8780  * Details about a node in the network, known from the network announcement.
8781  */
8782 typedef struct MUST_USE_STRUCT LDKNodeInfo {
8783    /**
8784     * A pointer to the opaque Rust object.
8785     * Nearly everywhere, inner must be non-null, however in places where
8786     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8787     */
8788    LDKnativeNodeInfo *inner;
8789    /**
8790     * Indicates that this is the only struct which contains the same pointer.
8791     * Rust functions which take ownership of an object provided via an argument require
8792     * this to be true and invalidate the object pointed to by inner.
8793     */
8794    bool is_owned;
8795 } LDKNodeInfo;
8796
8797 /**
8798  * The contents of CResult_NodeInfoDecodeErrorZ
8799  */
8800 typedef union LDKCResult_NodeInfoDecodeErrorZPtr {
8801    /**
8802     * A pointer to the contents in the success state.
8803     * Reading from this pointer when `result_ok` is not set is undefined.
8804     */
8805    struct LDKNodeInfo *result;
8806    /**
8807     * A pointer to the contents in the error state.
8808     * Reading from this pointer when `result_ok` is set is undefined.
8809     */
8810    struct LDKDecodeError *err;
8811 } LDKCResult_NodeInfoDecodeErrorZPtr;
8812
8813 /**
8814  * A CResult_NodeInfoDecodeErrorZ represents the result of a fallible operation,
8815  * containing a crate::lightning::routing::network_graph::NodeInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
8816  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8817  */
8818 typedef struct LDKCResult_NodeInfoDecodeErrorZ {
8819    /**
8820     * The contents of this CResult_NodeInfoDecodeErrorZ, accessible via either
8821     * `err` or `result` depending on the state of `result_ok`.
8822     */
8823    union LDKCResult_NodeInfoDecodeErrorZPtr contents;
8824    /**
8825     * Whether this CResult_NodeInfoDecodeErrorZ represents a success state.
8826     */
8827    bool result_ok;
8828 } LDKCResult_NodeInfoDecodeErrorZ;
8829
8830 /**
8831  * The contents of CResult_NetworkGraphDecodeErrorZ
8832  */
8833 typedef union LDKCResult_NetworkGraphDecodeErrorZPtr {
8834    /**
8835     * A pointer to the contents in the success state.
8836     * Reading from this pointer when `result_ok` is not set is undefined.
8837     */
8838    struct LDKNetworkGraph *result;
8839    /**
8840     * A pointer to the contents in the error state.
8841     * Reading from this pointer when `result_ok` is set is undefined.
8842     */
8843    struct LDKDecodeError *err;
8844 } LDKCResult_NetworkGraphDecodeErrorZPtr;
8845
8846 /**
8847  * A CResult_NetworkGraphDecodeErrorZ represents the result of a fallible operation,
8848  * containing a crate::lightning::routing::network_graph::NetworkGraph on success and a crate::lightning::ln::msgs::DecodeError on failure.
8849  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8850  */
8851 typedef struct LDKCResult_NetworkGraphDecodeErrorZ {
8852    /**
8853     * The contents of this CResult_NetworkGraphDecodeErrorZ, accessible via either
8854     * `err` or `result` depending on the state of `result_ok`.
8855     */
8856    union LDKCResult_NetworkGraphDecodeErrorZPtr contents;
8857    /**
8858     * Whether this CResult_NetworkGraphDecodeErrorZ represents a success state.
8859     */
8860    bool result_ok;
8861 } LDKCResult_NetworkGraphDecodeErrorZ;
8862
8863 /**
8864  * An enum which can either contain a crate::c_types::derived::CVec_NetAddressZ or not
8865  */
8866 typedef enum LDKCOption_CVec_NetAddressZZ_Tag {
8867    /**
8868     * When we're in this state, this COption_CVec_NetAddressZZ contains a crate::c_types::derived::CVec_NetAddressZ
8869     */
8870    LDKCOption_CVec_NetAddressZZ_Some,
8871    /**
8872     * When we're in this state, this COption_CVec_NetAddressZZ contains nothing
8873     */
8874    LDKCOption_CVec_NetAddressZZ_None,
8875    /**
8876     * Must be last for serialization purposes
8877     */
8878    LDKCOption_CVec_NetAddressZZ_Sentinel,
8879 } LDKCOption_CVec_NetAddressZZ_Tag;
8880
8881 typedef struct LDKCOption_CVec_NetAddressZZ {
8882    LDKCOption_CVec_NetAddressZZ_Tag tag;
8883    union {
8884       struct {
8885          struct LDKCVec_NetAddressZ some;
8886       };
8887    };
8888 } LDKCOption_CVec_NetAddressZZ;
8889
8890 /**
8891  * The contents of CResult_NetAddressDecodeErrorZ
8892  */
8893 typedef union LDKCResult_NetAddressDecodeErrorZPtr {
8894    /**
8895     * A pointer to the contents in the success state.
8896     * Reading from this pointer when `result_ok` is not set is undefined.
8897     */
8898    struct LDKNetAddress *result;
8899    /**
8900     * A pointer to the contents in the error state.
8901     * Reading from this pointer when `result_ok` is set is undefined.
8902     */
8903    struct LDKDecodeError *err;
8904 } LDKCResult_NetAddressDecodeErrorZPtr;
8905
8906 /**
8907  * A CResult_NetAddressDecodeErrorZ represents the result of a fallible operation,
8908  * containing a crate::lightning::ln::msgs::NetAddress on success and a crate::lightning::ln::msgs::DecodeError on failure.
8909  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8910  */
8911 typedef struct LDKCResult_NetAddressDecodeErrorZ {
8912    /**
8913     * The contents of this CResult_NetAddressDecodeErrorZ, accessible via either
8914     * `err` or `result` depending on the state of `result_ok`.
8915     */
8916    union LDKCResult_NetAddressDecodeErrorZPtr contents;
8917    /**
8918     * Whether this CResult_NetAddressDecodeErrorZ represents a success state.
8919     */
8920    bool result_ok;
8921 } LDKCResult_NetAddressDecodeErrorZ;
8922
8923
8924
8925 /**
8926  * An update_add_htlc message to be sent or received from a peer
8927  */
8928 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
8929    /**
8930     * A pointer to the opaque Rust object.
8931     * Nearly everywhere, inner must be non-null, however in places where
8932     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8933     */
8934    LDKnativeUpdateAddHTLC *inner;
8935    /**
8936     * Indicates that this is the only struct which contains the same pointer.
8937     * Rust functions which take ownership of an object provided via an argument require
8938     * this to be true and invalidate the object pointed to by inner.
8939     */
8940    bool is_owned;
8941 } LDKUpdateAddHTLC;
8942
8943 /**
8944  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateAddHTLCs of arbitrary size.
8945  * This corresponds to std::vector in C++
8946  */
8947 typedef struct LDKCVec_UpdateAddHTLCZ {
8948    /**
8949     * The elements in the array.
8950     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8951     */
8952    struct LDKUpdateAddHTLC *data;
8953    /**
8954     * The number of elements pointed to by `data`.
8955     */
8956    uintptr_t datalen;
8957 } LDKCVec_UpdateAddHTLCZ;
8958
8959
8960
8961 /**
8962  * An update_fulfill_htlc message to be sent or received from a peer
8963  */
8964 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
8965    /**
8966     * A pointer to the opaque Rust object.
8967     * Nearly everywhere, inner must be non-null, however in places where
8968     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8969     */
8970    LDKnativeUpdateFulfillHTLC *inner;
8971    /**
8972     * Indicates that this is the only struct which contains the same pointer.
8973     * Rust functions which take ownership of an object provided via an argument require
8974     * this to be true and invalidate the object pointed to by inner.
8975     */
8976    bool is_owned;
8977 } LDKUpdateFulfillHTLC;
8978
8979 /**
8980  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
8981  * This corresponds to std::vector in C++
8982  */
8983 typedef struct LDKCVec_UpdateFulfillHTLCZ {
8984    /**
8985     * The elements in the array.
8986     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8987     */
8988    struct LDKUpdateFulfillHTLC *data;
8989    /**
8990     * The number of elements pointed to by `data`.
8991     */
8992    uintptr_t datalen;
8993 } LDKCVec_UpdateFulfillHTLCZ;
8994
8995
8996
8997 /**
8998  * An update_fail_htlc message to be sent or received from a peer
8999  */
9000 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
9001    /**
9002     * A pointer to the opaque Rust object.
9003     * Nearly everywhere, inner must be non-null, however in places where
9004     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9005     */
9006    LDKnativeUpdateFailHTLC *inner;
9007    /**
9008     * Indicates that this is the only struct which contains the same pointer.
9009     * Rust functions which take ownership of an object provided via an argument require
9010     * this to be true and invalidate the object pointed to by inner.
9011     */
9012    bool is_owned;
9013 } LDKUpdateFailHTLC;
9014
9015 /**
9016  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailHTLCs of arbitrary size.
9017  * This corresponds to std::vector in C++
9018  */
9019 typedef struct LDKCVec_UpdateFailHTLCZ {
9020    /**
9021     * The elements in the array.
9022     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9023     */
9024    struct LDKUpdateFailHTLC *data;
9025    /**
9026     * The number of elements pointed to by `data`.
9027     */
9028    uintptr_t datalen;
9029 } LDKCVec_UpdateFailHTLCZ;
9030
9031
9032
9033 /**
9034  * An update_fail_malformed_htlc message to be sent or received from a peer
9035  */
9036 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
9037    /**
9038     * A pointer to the opaque Rust object.
9039     * Nearly everywhere, inner must be non-null, however in places where
9040     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9041     */
9042    LDKnativeUpdateFailMalformedHTLC *inner;
9043    /**
9044     * Indicates that this is the only struct which contains the same pointer.
9045     * Rust functions which take ownership of an object provided via an argument require
9046     * this to be true and invalidate the object pointed to by inner.
9047     */
9048    bool is_owned;
9049 } LDKUpdateFailMalformedHTLC;
9050
9051 /**
9052  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
9053  * This corresponds to std::vector in C++
9054  */
9055 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
9056    /**
9057     * The elements in the array.
9058     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9059     */
9060    struct LDKUpdateFailMalformedHTLC *data;
9061    /**
9062     * The number of elements pointed to by `data`.
9063     */
9064    uintptr_t datalen;
9065 } LDKCVec_UpdateFailMalformedHTLCZ;
9066
9067 /**
9068  * The contents of CResult_AcceptChannelDecodeErrorZ
9069  */
9070 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
9071    /**
9072     * A pointer to the contents in the success state.
9073     * Reading from this pointer when `result_ok` is not set is undefined.
9074     */
9075    struct LDKAcceptChannel *result;
9076    /**
9077     * A pointer to the contents in the error state.
9078     * Reading from this pointer when `result_ok` is set is undefined.
9079     */
9080    struct LDKDecodeError *err;
9081 } LDKCResult_AcceptChannelDecodeErrorZPtr;
9082
9083 /**
9084  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
9085  * containing a crate::lightning::ln::msgs::AcceptChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
9086  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9087  */
9088 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
9089    /**
9090     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
9091     * `err` or `result` depending on the state of `result_ok`.
9092     */
9093    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
9094    /**
9095     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
9096     */
9097    bool result_ok;
9098 } LDKCResult_AcceptChannelDecodeErrorZ;
9099
9100 /**
9101  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
9102  */
9103 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
9104    /**
9105     * A pointer to the contents in the success state.
9106     * Reading from this pointer when `result_ok` is not set is undefined.
9107     */
9108    struct LDKAnnouncementSignatures *result;
9109    /**
9110     * A pointer to the contents in the error state.
9111     * Reading from this pointer when `result_ok` is set is undefined.
9112     */
9113    struct LDKDecodeError *err;
9114 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
9115
9116 /**
9117  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
9118  * containing a crate::lightning::ln::msgs::AnnouncementSignatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
9119  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9120  */
9121 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
9122    /**
9123     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
9124     * `err` or `result` depending on the state of `result_ok`.
9125     */
9126    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
9127    /**
9128     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
9129     */
9130    bool result_ok;
9131 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
9132
9133 /**
9134  * The contents of CResult_ChannelReestablishDecodeErrorZ
9135  */
9136 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
9137    /**
9138     * A pointer to the contents in the success state.
9139     * Reading from this pointer when `result_ok` is not set is undefined.
9140     */
9141    struct LDKChannelReestablish *result;
9142    /**
9143     * A pointer to the contents in the error state.
9144     * Reading from this pointer when `result_ok` is set is undefined.
9145     */
9146    struct LDKDecodeError *err;
9147 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
9148
9149 /**
9150  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
9151  * containing a crate::lightning::ln::msgs::ChannelReestablish on success and a crate::lightning::ln::msgs::DecodeError on failure.
9152  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9153  */
9154 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
9155    /**
9156     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
9157     * `err` or `result` depending on the state of `result_ok`.
9158     */
9159    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
9160    /**
9161     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
9162     */
9163    bool result_ok;
9164 } LDKCResult_ChannelReestablishDecodeErrorZ;
9165
9166 /**
9167  * The contents of CResult_ClosingSignedDecodeErrorZ
9168  */
9169 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
9170    /**
9171     * A pointer to the contents in the success state.
9172     * Reading from this pointer when `result_ok` is not set is undefined.
9173     */
9174    struct LDKClosingSigned *result;
9175    /**
9176     * A pointer to the contents in the error state.
9177     * Reading from this pointer when `result_ok` is set is undefined.
9178     */
9179    struct LDKDecodeError *err;
9180 } LDKCResult_ClosingSignedDecodeErrorZPtr;
9181
9182 /**
9183  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
9184  * containing a crate::lightning::ln::msgs::ClosingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
9185  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9186  */
9187 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
9188    /**
9189     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
9190     * `err` or `result` depending on the state of `result_ok`.
9191     */
9192    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
9193    /**
9194     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
9195     */
9196    bool result_ok;
9197 } LDKCResult_ClosingSignedDecodeErrorZ;
9198
9199
9200
9201 /**
9202  * The minimum and maximum fees which the sender is willing to place on the closing transaction.
9203  * This is provided in [`ClosingSigned`] by both sides to indicate the fee range they are willing
9204  * to use.
9205  */
9206 typedef struct MUST_USE_STRUCT LDKClosingSignedFeeRange {
9207    /**
9208     * A pointer to the opaque Rust object.
9209     * Nearly everywhere, inner must be non-null, however in places where
9210     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9211     */
9212    LDKnativeClosingSignedFeeRange *inner;
9213    /**
9214     * Indicates that this is the only struct which contains the same pointer.
9215     * Rust functions which take ownership of an object provided via an argument require
9216     * this to be true and invalidate the object pointed to by inner.
9217     */
9218    bool is_owned;
9219 } LDKClosingSignedFeeRange;
9220
9221 /**
9222  * The contents of CResult_ClosingSignedFeeRangeDecodeErrorZ
9223  */
9224 typedef union LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr {
9225    /**
9226     * A pointer to the contents in the success state.
9227     * Reading from this pointer when `result_ok` is not set is undefined.
9228     */
9229    struct LDKClosingSignedFeeRange *result;
9230    /**
9231     * A pointer to the contents in the error state.
9232     * Reading from this pointer when `result_ok` is set is undefined.
9233     */
9234    struct LDKDecodeError *err;
9235 } LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr;
9236
9237 /**
9238  * A CResult_ClosingSignedFeeRangeDecodeErrorZ represents the result of a fallible operation,
9239  * containing a crate::lightning::ln::msgs::ClosingSignedFeeRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
9240  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9241  */
9242 typedef struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ {
9243    /**
9244     * The contents of this CResult_ClosingSignedFeeRangeDecodeErrorZ, accessible via either
9245     * `err` or `result` depending on the state of `result_ok`.
9246     */
9247    union LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr contents;
9248    /**
9249     * Whether this CResult_ClosingSignedFeeRangeDecodeErrorZ represents a success state.
9250     */
9251    bool result_ok;
9252 } LDKCResult_ClosingSignedFeeRangeDecodeErrorZ;
9253
9254
9255
9256 /**
9257  * A commitment_signed message to be sent or received from a peer
9258  */
9259 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
9260    /**
9261     * A pointer to the opaque Rust object.
9262     * Nearly everywhere, inner must be non-null, however in places where
9263     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9264     */
9265    LDKnativeCommitmentSigned *inner;
9266    /**
9267     * Indicates that this is the only struct which contains the same pointer.
9268     * Rust functions which take ownership of an object provided via an argument require
9269     * this to be true and invalidate the object pointed to by inner.
9270     */
9271    bool is_owned;
9272 } LDKCommitmentSigned;
9273
9274 /**
9275  * The contents of CResult_CommitmentSignedDecodeErrorZ
9276  */
9277 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
9278    /**
9279     * A pointer to the contents in the success state.
9280     * Reading from this pointer when `result_ok` is not set is undefined.
9281     */
9282    struct LDKCommitmentSigned *result;
9283    /**
9284     * A pointer to the contents in the error state.
9285     * Reading from this pointer when `result_ok` is set is undefined.
9286     */
9287    struct LDKDecodeError *err;
9288 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
9289
9290 /**
9291  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
9292  * containing a crate::lightning::ln::msgs::CommitmentSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
9293  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9294  */
9295 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
9296    /**
9297     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
9298     * `err` or `result` depending on the state of `result_ok`.
9299     */
9300    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
9301    /**
9302     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
9303     */
9304    bool result_ok;
9305 } LDKCResult_CommitmentSignedDecodeErrorZ;
9306
9307 /**
9308  * The contents of CResult_FundingCreatedDecodeErrorZ
9309  */
9310 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
9311    /**
9312     * A pointer to the contents in the success state.
9313     * Reading from this pointer when `result_ok` is not set is undefined.
9314     */
9315    struct LDKFundingCreated *result;
9316    /**
9317     * A pointer to the contents in the error state.
9318     * Reading from this pointer when `result_ok` is set is undefined.
9319     */
9320    struct LDKDecodeError *err;
9321 } LDKCResult_FundingCreatedDecodeErrorZPtr;
9322
9323 /**
9324  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
9325  * containing a crate::lightning::ln::msgs::FundingCreated on success and a crate::lightning::ln::msgs::DecodeError on failure.
9326  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9327  */
9328 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
9329    /**
9330     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
9331     * `err` or `result` depending on the state of `result_ok`.
9332     */
9333    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
9334    /**
9335     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
9336     */
9337    bool result_ok;
9338 } LDKCResult_FundingCreatedDecodeErrorZ;
9339
9340 /**
9341  * The contents of CResult_FundingSignedDecodeErrorZ
9342  */
9343 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
9344    /**
9345     * A pointer to the contents in the success state.
9346     * Reading from this pointer when `result_ok` is not set is undefined.
9347     */
9348    struct LDKFundingSigned *result;
9349    /**
9350     * A pointer to the contents in the error state.
9351     * Reading from this pointer when `result_ok` is set is undefined.
9352     */
9353    struct LDKDecodeError *err;
9354 } LDKCResult_FundingSignedDecodeErrorZPtr;
9355
9356 /**
9357  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
9358  * containing a crate::lightning::ln::msgs::FundingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
9359  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9360  */
9361 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
9362    /**
9363     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
9364     * `err` or `result` depending on the state of `result_ok`.
9365     */
9366    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
9367    /**
9368     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
9369     */
9370    bool result_ok;
9371 } LDKCResult_FundingSignedDecodeErrorZ;
9372
9373 /**
9374  * The contents of CResult_FundingLockedDecodeErrorZ
9375  */
9376 typedef union LDKCResult_FundingLockedDecodeErrorZPtr {
9377    /**
9378     * A pointer to the contents in the success state.
9379     * Reading from this pointer when `result_ok` is not set is undefined.
9380     */
9381    struct LDKFundingLocked *result;
9382    /**
9383     * A pointer to the contents in the error state.
9384     * Reading from this pointer when `result_ok` is set is undefined.
9385     */
9386    struct LDKDecodeError *err;
9387 } LDKCResult_FundingLockedDecodeErrorZPtr;
9388
9389 /**
9390  * A CResult_FundingLockedDecodeErrorZ represents the result of a fallible operation,
9391  * containing a crate::lightning::ln::msgs::FundingLocked on success and a crate::lightning::ln::msgs::DecodeError on failure.
9392  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9393  */
9394 typedef struct LDKCResult_FundingLockedDecodeErrorZ {
9395    /**
9396     * The contents of this CResult_FundingLockedDecodeErrorZ, accessible via either
9397     * `err` or `result` depending on the state of `result_ok`.
9398     */
9399    union LDKCResult_FundingLockedDecodeErrorZPtr contents;
9400    /**
9401     * Whether this CResult_FundingLockedDecodeErrorZ represents a success state.
9402     */
9403    bool result_ok;
9404 } LDKCResult_FundingLockedDecodeErrorZ;
9405
9406
9407
9408 /**
9409  * An init message to be sent or received from a peer
9410  */
9411 typedef struct MUST_USE_STRUCT LDKInit {
9412    /**
9413     * A pointer to the opaque Rust object.
9414     * Nearly everywhere, inner must be non-null, however in places where
9415     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9416     */
9417    LDKnativeInit *inner;
9418    /**
9419     * Indicates that this is the only struct which contains the same pointer.
9420     * Rust functions which take ownership of an object provided via an argument require
9421     * this to be true and invalidate the object pointed to by inner.
9422     */
9423    bool is_owned;
9424 } LDKInit;
9425
9426 /**
9427  * The contents of CResult_InitDecodeErrorZ
9428  */
9429 typedef union LDKCResult_InitDecodeErrorZPtr {
9430    /**
9431     * A pointer to the contents in the success state.
9432     * Reading from this pointer when `result_ok` is not set is undefined.
9433     */
9434    struct LDKInit *result;
9435    /**
9436     * A pointer to the contents in the error state.
9437     * Reading from this pointer when `result_ok` is set is undefined.
9438     */
9439    struct LDKDecodeError *err;
9440 } LDKCResult_InitDecodeErrorZPtr;
9441
9442 /**
9443  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
9444  * containing a crate::lightning::ln::msgs::Init on success and a crate::lightning::ln::msgs::DecodeError on failure.
9445  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9446  */
9447 typedef struct LDKCResult_InitDecodeErrorZ {
9448    /**
9449     * The contents of this CResult_InitDecodeErrorZ, accessible via either
9450     * `err` or `result` depending on the state of `result_ok`.
9451     */
9452    union LDKCResult_InitDecodeErrorZPtr contents;
9453    /**
9454     * Whether this CResult_InitDecodeErrorZ represents a success state.
9455     */
9456    bool result_ok;
9457 } LDKCResult_InitDecodeErrorZ;
9458
9459 /**
9460  * The contents of CResult_OpenChannelDecodeErrorZ
9461  */
9462 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
9463    /**
9464     * A pointer to the contents in the success state.
9465     * Reading from this pointer when `result_ok` is not set is undefined.
9466     */
9467    struct LDKOpenChannel *result;
9468    /**
9469     * A pointer to the contents in the error state.
9470     * Reading from this pointer when `result_ok` is set is undefined.
9471     */
9472    struct LDKDecodeError *err;
9473 } LDKCResult_OpenChannelDecodeErrorZPtr;
9474
9475 /**
9476  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
9477  * containing a crate::lightning::ln::msgs::OpenChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
9478  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9479  */
9480 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
9481    /**
9482     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
9483     * `err` or `result` depending on the state of `result_ok`.
9484     */
9485    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
9486    /**
9487     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
9488     */
9489    bool result_ok;
9490 } LDKCResult_OpenChannelDecodeErrorZ;
9491
9492 /**
9493  * The contents of CResult_RevokeAndACKDecodeErrorZ
9494  */
9495 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
9496    /**
9497     * A pointer to the contents in the success state.
9498     * Reading from this pointer when `result_ok` is not set is undefined.
9499     */
9500    struct LDKRevokeAndACK *result;
9501    /**
9502     * A pointer to the contents in the error state.
9503     * Reading from this pointer when `result_ok` is set is undefined.
9504     */
9505    struct LDKDecodeError *err;
9506 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
9507
9508 /**
9509  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
9510  * containing a crate::lightning::ln::msgs::RevokeAndACK on success and a crate::lightning::ln::msgs::DecodeError on failure.
9511  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9512  */
9513 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
9514    /**
9515     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
9516     * `err` or `result` depending on the state of `result_ok`.
9517     */
9518    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
9519    /**
9520     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
9521     */
9522    bool result_ok;
9523 } LDKCResult_RevokeAndACKDecodeErrorZ;
9524
9525 /**
9526  * The contents of CResult_ShutdownDecodeErrorZ
9527  */
9528 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
9529    /**
9530     * A pointer to the contents in the success state.
9531     * Reading from this pointer when `result_ok` is not set is undefined.
9532     */
9533    struct LDKShutdown *result;
9534    /**
9535     * A pointer to the contents in the error state.
9536     * Reading from this pointer when `result_ok` is set is undefined.
9537     */
9538    struct LDKDecodeError *err;
9539 } LDKCResult_ShutdownDecodeErrorZPtr;
9540
9541 /**
9542  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
9543  * containing a crate::lightning::ln::msgs::Shutdown on success and a crate::lightning::ln::msgs::DecodeError on failure.
9544  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9545  */
9546 typedef struct LDKCResult_ShutdownDecodeErrorZ {
9547    /**
9548     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
9549     * `err` or `result` depending on the state of `result_ok`.
9550     */
9551    union LDKCResult_ShutdownDecodeErrorZPtr contents;
9552    /**
9553     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
9554     */
9555    bool result_ok;
9556 } LDKCResult_ShutdownDecodeErrorZ;
9557
9558 /**
9559  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
9560  */
9561 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
9562    /**
9563     * A pointer to the contents in the success state.
9564     * Reading from this pointer when `result_ok` is not set is undefined.
9565     */
9566    struct LDKUpdateFailHTLC *result;
9567    /**
9568     * A pointer to the contents in the error state.
9569     * Reading from this pointer when `result_ok` is set is undefined.
9570     */
9571    struct LDKDecodeError *err;
9572 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
9573
9574 /**
9575  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
9576  * containing a crate::lightning::ln::msgs::UpdateFailHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9577  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9578  */
9579 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
9580    /**
9581     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
9582     * `err` or `result` depending on the state of `result_ok`.
9583     */
9584    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
9585    /**
9586     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
9587     */
9588    bool result_ok;
9589 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
9590
9591 /**
9592  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
9593  */
9594 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
9595    /**
9596     * A pointer to the contents in the success state.
9597     * Reading from this pointer when `result_ok` is not set is undefined.
9598     */
9599    struct LDKUpdateFailMalformedHTLC *result;
9600    /**
9601     * A pointer to the contents in the error state.
9602     * Reading from this pointer when `result_ok` is set is undefined.
9603     */
9604    struct LDKDecodeError *err;
9605 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
9606
9607 /**
9608  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
9609  * containing a crate::lightning::ln::msgs::UpdateFailMalformedHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9610  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9611  */
9612 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
9613    /**
9614     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
9615     * `err` or `result` depending on the state of `result_ok`.
9616     */
9617    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
9618    /**
9619     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
9620     */
9621    bool result_ok;
9622 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
9623
9624
9625
9626 /**
9627  * An update_fee message to be sent or received from a peer
9628  */
9629 typedef struct MUST_USE_STRUCT LDKUpdateFee {
9630    /**
9631     * A pointer to the opaque Rust object.
9632     * Nearly everywhere, inner must be non-null, however in places where
9633     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9634     */
9635    LDKnativeUpdateFee *inner;
9636    /**
9637     * Indicates that this is the only struct which contains the same pointer.
9638     * Rust functions which take ownership of an object provided via an argument require
9639     * this to be true and invalidate the object pointed to by inner.
9640     */
9641    bool is_owned;
9642 } LDKUpdateFee;
9643
9644 /**
9645  * The contents of CResult_UpdateFeeDecodeErrorZ
9646  */
9647 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
9648    /**
9649     * A pointer to the contents in the success state.
9650     * Reading from this pointer when `result_ok` is not set is undefined.
9651     */
9652    struct LDKUpdateFee *result;
9653    /**
9654     * A pointer to the contents in the error state.
9655     * Reading from this pointer when `result_ok` is set is undefined.
9656     */
9657    struct LDKDecodeError *err;
9658 } LDKCResult_UpdateFeeDecodeErrorZPtr;
9659
9660 /**
9661  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
9662  * containing a crate::lightning::ln::msgs::UpdateFee on success and a crate::lightning::ln::msgs::DecodeError on failure.
9663  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9664  */
9665 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
9666    /**
9667     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
9668     * `err` or `result` depending on the state of `result_ok`.
9669     */
9670    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
9671    /**
9672     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
9673     */
9674    bool result_ok;
9675 } LDKCResult_UpdateFeeDecodeErrorZ;
9676
9677 /**
9678  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
9679  */
9680 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
9681    /**
9682     * A pointer to the contents in the success state.
9683     * Reading from this pointer when `result_ok` is not set is undefined.
9684     */
9685    struct LDKUpdateFulfillHTLC *result;
9686    /**
9687     * A pointer to the contents in the error state.
9688     * Reading from this pointer when `result_ok` is set is undefined.
9689     */
9690    struct LDKDecodeError *err;
9691 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
9692
9693 /**
9694  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
9695  * containing a crate::lightning::ln::msgs::UpdateFulfillHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9696  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9697  */
9698 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
9699    /**
9700     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
9701     * `err` or `result` depending on the state of `result_ok`.
9702     */
9703    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
9704    /**
9705     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
9706     */
9707    bool result_ok;
9708 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
9709
9710 /**
9711  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
9712  */
9713 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
9714    /**
9715     * A pointer to the contents in the success state.
9716     * Reading from this pointer when `result_ok` is not set is undefined.
9717     */
9718    struct LDKUpdateAddHTLC *result;
9719    /**
9720     * A pointer to the contents in the error state.
9721     * Reading from this pointer when `result_ok` is set is undefined.
9722     */
9723    struct LDKDecodeError *err;
9724 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
9725
9726 /**
9727  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
9728  * containing a crate::lightning::ln::msgs::UpdateAddHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
9729  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9730  */
9731 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
9732    /**
9733     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
9734     * `err` or `result` depending on the state of `result_ok`.
9735     */
9736    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
9737    /**
9738     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
9739     */
9740    bool result_ok;
9741 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
9742
9743
9744
9745 /**
9746  * A ping message to be sent or received from a peer
9747  */
9748 typedef struct MUST_USE_STRUCT LDKPing {
9749    /**
9750     * A pointer to the opaque Rust object.
9751     * Nearly everywhere, inner must be non-null, however in places where
9752     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9753     */
9754    LDKnativePing *inner;
9755    /**
9756     * Indicates that this is the only struct which contains the same pointer.
9757     * Rust functions which take ownership of an object provided via an argument require
9758     * this to be true and invalidate the object pointed to by inner.
9759     */
9760    bool is_owned;
9761 } LDKPing;
9762
9763 /**
9764  * The contents of CResult_PingDecodeErrorZ
9765  */
9766 typedef union LDKCResult_PingDecodeErrorZPtr {
9767    /**
9768     * A pointer to the contents in the success state.
9769     * Reading from this pointer when `result_ok` is not set is undefined.
9770     */
9771    struct LDKPing *result;
9772    /**
9773     * A pointer to the contents in the error state.
9774     * Reading from this pointer when `result_ok` is set is undefined.
9775     */
9776    struct LDKDecodeError *err;
9777 } LDKCResult_PingDecodeErrorZPtr;
9778
9779 /**
9780  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
9781  * containing a crate::lightning::ln::msgs::Ping on success and a crate::lightning::ln::msgs::DecodeError on failure.
9782  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9783  */
9784 typedef struct LDKCResult_PingDecodeErrorZ {
9785    /**
9786     * The contents of this CResult_PingDecodeErrorZ, accessible via either
9787     * `err` or `result` depending on the state of `result_ok`.
9788     */
9789    union LDKCResult_PingDecodeErrorZPtr contents;
9790    /**
9791     * Whether this CResult_PingDecodeErrorZ represents a success state.
9792     */
9793    bool result_ok;
9794 } LDKCResult_PingDecodeErrorZ;
9795
9796
9797
9798 /**
9799  * A pong message to be sent or received from a peer
9800  */
9801 typedef struct MUST_USE_STRUCT LDKPong {
9802    /**
9803     * A pointer to the opaque Rust object.
9804     * Nearly everywhere, inner must be non-null, however in places where
9805     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9806     */
9807    LDKnativePong *inner;
9808    /**
9809     * Indicates that this is the only struct which contains the same pointer.
9810     * Rust functions which take ownership of an object provided via an argument require
9811     * this to be true and invalidate the object pointed to by inner.
9812     */
9813    bool is_owned;
9814 } LDKPong;
9815
9816 /**
9817  * The contents of CResult_PongDecodeErrorZ
9818  */
9819 typedef union LDKCResult_PongDecodeErrorZPtr {
9820    /**
9821     * A pointer to the contents in the success state.
9822     * Reading from this pointer when `result_ok` is not set is undefined.
9823     */
9824    struct LDKPong *result;
9825    /**
9826     * A pointer to the contents in the error state.
9827     * Reading from this pointer when `result_ok` is set is undefined.
9828     */
9829    struct LDKDecodeError *err;
9830 } LDKCResult_PongDecodeErrorZPtr;
9831
9832 /**
9833  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
9834  * containing a crate::lightning::ln::msgs::Pong on success and a crate::lightning::ln::msgs::DecodeError on failure.
9835  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9836  */
9837 typedef struct LDKCResult_PongDecodeErrorZ {
9838    /**
9839     * The contents of this CResult_PongDecodeErrorZ, accessible via either
9840     * `err` or `result` depending on the state of `result_ok`.
9841     */
9842    union LDKCResult_PongDecodeErrorZPtr contents;
9843    /**
9844     * Whether this CResult_PongDecodeErrorZ represents a success state.
9845     */
9846    bool result_ok;
9847 } LDKCResult_PongDecodeErrorZ;
9848
9849 /**
9850  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
9851  */
9852 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
9853    /**
9854     * A pointer to the contents in the success state.
9855     * Reading from this pointer when `result_ok` is not set is undefined.
9856     */
9857    struct LDKUnsignedChannelAnnouncement *result;
9858    /**
9859     * A pointer to the contents in the error state.
9860     * Reading from this pointer when `result_ok` is set is undefined.
9861     */
9862    struct LDKDecodeError *err;
9863 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
9864
9865 /**
9866  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
9867  * containing a crate::lightning::ln::msgs::UnsignedChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
9868  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9869  */
9870 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
9871    /**
9872     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
9873     * `err` or `result` depending on the state of `result_ok`.
9874     */
9875    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
9876    /**
9877     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
9878     */
9879    bool result_ok;
9880 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
9881
9882 /**
9883  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
9884  */
9885 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
9886    /**
9887     * A pointer to the contents in the success state.
9888     * Reading from this pointer when `result_ok` is not set is undefined.
9889     */
9890    struct LDKChannelAnnouncement *result;
9891    /**
9892     * A pointer to the contents in the error state.
9893     * Reading from this pointer when `result_ok` is set is undefined.
9894     */
9895    struct LDKDecodeError *err;
9896 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
9897
9898 /**
9899  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
9900  * containing a crate::lightning::ln::msgs::ChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
9901  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9902  */
9903 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
9904    /**
9905     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
9906     * `err` or `result` depending on the state of `result_ok`.
9907     */
9908    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
9909    /**
9910     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
9911     */
9912    bool result_ok;
9913 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
9914
9915
9916
9917 /**
9918  * The unsigned part of a channel_update
9919  */
9920 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
9921    /**
9922     * A pointer to the opaque Rust object.
9923     * Nearly everywhere, inner must be non-null, however in places where
9924     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9925     */
9926    LDKnativeUnsignedChannelUpdate *inner;
9927    /**
9928     * Indicates that this is the only struct which contains the same pointer.
9929     * Rust functions which take ownership of an object provided via an argument require
9930     * this to be true and invalidate the object pointed to by inner.
9931     */
9932    bool is_owned;
9933 } LDKUnsignedChannelUpdate;
9934
9935 /**
9936  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
9937  */
9938 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
9939    /**
9940     * A pointer to the contents in the success state.
9941     * Reading from this pointer when `result_ok` is not set is undefined.
9942     */
9943    struct LDKUnsignedChannelUpdate *result;
9944    /**
9945     * A pointer to the contents in the error state.
9946     * Reading from this pointer when `result_ok` is set is undefined.
9947     */
9948    struct LDKDecodeError *err;
9949 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
9950
9951 /**
9952  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
9953  * containing a crate::lightning::ln::msgs::UnsignedChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
9954  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9955  */
9956 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
9957    /**
9958     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
9959     * `err` or `result` depending on the state of `result_ok`.
9960     */
9961    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
9962    /**
9963     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
9964     */
9965    bool result_ok;
9966 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
9967
9968 /**
9969  * The contents of CResult_ChannelUpdateDecodeErrorZ
9970  */
9971 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
9972    /**
9973     * A pointer to the contents in the success state.
9974     * Reading from this pointer when `result_ok` is not set is undefined.
9975     */
9976    struct LDKChannelUpdate *result;
9977    /**
9978     * A pointer to the contents in the error state.
9979     * Reading from this pointer when `result_ok` is set is undefined.
9980     */
9981    struct LDKDecodeError *err;
9982 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
9983
9984 /**
9985  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
9986  * containing a crate::lightning::ln::msgs::ChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
9987  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9988  */
9989 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
9990    /**
9991     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
9992     * `err` or `result` depending on the state of `result_ok`.
9993     */
9994    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
9995    /**
9996     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
9997     */
9998    bool result_ok;
9999 } LDKCResult_ChannelUpdateDecodeErrorZ;
10000
10001 /**
10002  * The contents of CResult_ErrorMessageDecodeErrorZ
10003  */
10004 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
10005    /**
10006     * A pointer to the contents in the success state.
10007     * Reading from this pointer when `result_ok` is not set is undefined.
10008     */
10009    struct LDKErrorMessage *result;
10010    /**
10011     * A pointer to the contents in the error state.
10012     * Reading from this pointer when `result_ok` is set is undefined.
10013     */
10014    struct LDKDecodeError *err;
10015 } LDKCResult_ErrorMessageDecodeErrorZPtr;
10016
10017 /**
10018  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
10019  * containing a crate::lightning::ln::msgs::ErrorMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
10020  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10021  */
10022 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
10023    /**
10024     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
10025     * `err` or `result` depending on the state of `result_ok`.
10026     */
10027    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
10028    /**
10029     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
10030     */
10031    bool result_ok;
10032 } LDKCResult_ErrorMessageDecodeErrorZ;
10033
10034 /**
10035  * The contents of CResult_WarningMessageDecodeErrorZ
10036  */
10037 typedef union LDKCResult_WarningMessageDecodeErrorZPtr {
10038    /**
10039     * A pointer to the contents in the success state.
10040     * Reading from this pointer when `result_ok` is not set is undefined.
10041     */
10042    struct LDKWarningMessage *result;
10043    /**
10044     * A pointer to the contents in the error state.
10045     * Reading from this pointer when `result_ok` is set is undefined.
10046     */
10047    struct LDKDecodeError *err;
10048 } LDKCResult_WarningMessageDecodeErrorZPtr;
10049
10050 /**
10051  * A CResult_WarningMessageDecodeErrorZ represents the result of a fallible operation,
10052  * containing a crate::lightning::ln::msgs::WarningMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
10053  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10054  */
10055 typedef struct LDKCResult_WarningMessageDecodeErrorZ {
10056    /**
10057     * The contents of this CResult_WarningMessageDecodeErrorZ, accessible via either
10058     * `err` or `result` depending on the state of `result_ok`.
10059     */
10060    union LDKCResult_WarningMessageDecodeErrorZPtr contents;
10061    /**
10062     * Whether this CResult_WarningMessageDecodeErrorZ represents a success state.
10063     */
10064    bool result_ok;
10065 } LDKCResult_WarningMessageDecodeErrorZ;
10066
10067
10068
10069 /**
10070  * The unsigned part of a node_announcement
10071  */
10072 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
10073    /**
10074     * A pointer to the opaque Rust object.
10075     * Nearly everywhere, inner must be non-null, however in places where
10076     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10077     */
10078    LDKnativeUnsignedNodeAnnouncement *inner;
10079    /**
10080     * Indicates that this is the only struct which contains the same pointer.
10081     * Rust functions which take ownership of an object provided via an argument require
10082     * this to be true and invalidate the object pointed to by inner.
10083     */
10084    bool is_owned;
10085 } LDKUnsignedNodeAnnouncement;
10086
10087 /**
10088  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
10089  */
10090 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
10091    /**
10092     * A pointer to the contents in the success state.
10093     * Reading from this pointer when `result_ok` is not set is undefined.
10094     */
10095    struct LDKUnsignedNodeAnnouncement *result;
10096    /**
10097     * A pointer to the contents in the error state.
10098     * Reading from this pointer when `result_ok` is set is undefined.
10099     */
10100    struct LDKDecodeError *err;
10101 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
10102
10103 /**
10104  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
10105  * containing a crate::lightning::ln::msgs::UnsignedNodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
10106  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10107  */
10108 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
10109    /**
10110     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
10111     * `err` or `result` depending on the state of `result_ok`.
10112     */
10113    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
10114    /**
10115     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
10116     */
10117    bool result_ok;
10118 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
10119
10120 /**
10121  * The contents of CResult_NodeAnnouncementDecodeErrorZ
10122  */
10123 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
10124    /**
10125     * A pointer to the contents in the success state.
10126     * Reading from this pointer when `result_ok` is not set is undefined.
10127     */
10128    struct LDKNodeAnnouncement *result;
10129    /**
10130     * A pointer to the contents in the error state.
10131     * Reading from this pointer when `result_ok` is set is undefined.
10132     */
10133    struct LDKDecodeError *err;
10134 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
10135
10136 /**
10137  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
10138  * containing a crate::lightning::ln::msgs::NodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
10139  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10140  */
10141 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
10142    /**
10143     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
10144     * `err` or `result` depending on the state of `result_ok`.
10145     */
10146    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
10147    /**
10148     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
10149     */
10150    bool result_ok;
10151 } LDKCResult_NodeAnnouncementDecodeErrorZ;
10152
10153 /**
10154  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
10155  */
10156 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
10157    /**
10158     * A pointer to the contents in the success state.
10159     * Reading from this pointer when `result_ok` is not set is undefined.
10160     */
10161    struct LDKQueryShortChannelIds *result;
10162    /**
10163     * A pointer to the contents in the error state.
10164     * Reading from this pointer when `result_ok` is set is undefined.
10165     */
10166    struct LDKDecodeError *err;
10167 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
10168
10169 /**
10170  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
10171  * containing a crate::lightning::ln::msgs::QueryShortChannelIds on success and a crate::lightning::ln::msgs::DecodeError on failure.
10172  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10173  */
10174 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
10175    /**
10176     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
10177     * `err` or `result` depending on the state of `result_ok`.
10178     */
10179    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
10180    /**
10181     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
10182     */
10183    bool result_ok;
10184 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
10185
10186
10187
10188 /**
10189  * A reply_short_channel_ids_end message is sent as a reply to a
10190  * query_short_channel_ids message. The query recipient makes a best
10191  * effort to respond based on their local network view which may not be
10192  * a perfect view of the network.
10193  */
10194 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
10195    /**
10196     * A pointer to the opaque Rust object.
10197     * Nearly everywhere, inner must be non-null, however in places where
10198     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10199     */
10200    LDKnativeReplyShortChannelIdsEnd *inner;
10201    /**
10202     * Indicates that this is the only struct which contains the same pointer.
10203     * Rust functions which take ownership of an object provided via an argument require
10204     * this to be true and invalidate the object pointed to by inner.
10205     */
10206    bool is_owned;
10207 } LDKReplyShortChannelIdsEnd;
10208
10209 /**
10210  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
10211  */
10212 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
10213    /**
10214     * A pointer to the contents in the success state.
10215     * Reading from this pointer when `result_ok` is not set is undefined.
10216     */
10217    struct LDKReplyShortChannelIdsEnd *result;
10218    /**
10219     * A pointer to the contents in the error state.
10220     * Reading from this pointer when `result_ok` is set is undefined.
10221     */
10222    struct LDKDecodeError *err;
10223 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
10224
10225 /**
10226  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
10227  * containing a crate::lightning::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::lightning::ln::msgs::DecodeError on failure.
10228  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10229  */
10230 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
10231    /**
10232     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
10233     * `err` or `result` depending on the state of `result_ok`.
10234     */
10235    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
10236    /**
10237     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
10238     */
10239    bool result_ok;
10240 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
10241
10242 /**
10243  * The contents of CResult_QueryChannelRangeDecodeErrorZ
10244  */
10245 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
10246    /**
10247     * A pointer to the contents in the success state.
10248     * Reading from this pointer when `result_ok` is not set is undefined.
10249     */
10250    struct LDKQueryChannelRange *result;
10251    /**
10252     * A pointer to the contents in the error state.
10253     * Reading from this pointer when `result_ok` is set is undefined.
10254     */
10255    struct LDKDecodeError *err;
10256 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
10257
10258 /**
10259  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
10260  * containing a crate::lightning::ln::msgs::QueryChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
10261  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10262  */
10263 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
10264    /**
10265     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
10266     * `err` or `result` depending on the state of `result_ok`.
10267     */
10268    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
10269    /**
10270     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
10271     */
10272    bool result_ok;
10273 } LDKCResult_QueryChannelRangeDecodeErrorZ;
10274
10275 /**
10276  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
10277  */
10278 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
10279    /**
10280     * A pointer to the contents in the success state.
10281     * Reading from this pointer when `result_ok` is not set is undefined.
10282     */
10283    struct LDKReplyChannelRange *result;
10284    /**
10285     * A pointer to the contents in the error state.
10286     * Reading from this pointer when `result_ok` is set is undefined.
10287     */
10288    struct LDKDecodeError *err;
10289 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
10290
10291 /**
10292  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
10293  * containing a crate::lightning::ln::msgs::ReplyChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
10294  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10295  */
10296 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
10297    /**
10298     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
10299     * `err` or `result` depending on the state of `result_ok`.
10300     */
10301    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
10302    /**
10303     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
10304     */
10305    bool result_ok;
10306 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
10307
10308
10309
10310 /**
10311  * A gossip_timestamp_filter message is used by a node to request
10312  * gossip relay for messages in the requested time range when the
10313  * gossip_queries feature has been negotiated.
10314  */
10315 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
10316    /**
10317     * A pointer to the opaque Rust object.
10318     * Nearly everywhere, inner must be non-null, however in places where
10319     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10320     */
10321    LDKnativeGossipTimestampFilter *inner;
10322    /**
10323     * Indicates that this is the only struct which contains the same pointer.
10324     * Rust functions which take ownership of an object provided via an argument require
10325     * this to be true and invalidate the object pointed to by inner.
10326     */
10327    bool is_owned;
10328 } LDKGossipTimestampFilter;
10329
10330 /**
10331  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
10332  */
10333 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
10334    /**
10335     * A pointer to the contents in the success state.
10336     * Reading from this pointer when `result_ok` is not set is undefined.
10337     */
10338    struct LDKGossipTimestampFilter *result;
10339    /**
10340     * A pointer to the contents in the error state.
10341     * Reading from this pointer when `result_ok` is set is undefined.
10342     */
10343    struct LDKDecodeError *err;
10344 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
10345
10346 /**
10347  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
10348  * containing a crate::lightning::ln::msgs::GossipTimestampFilter on success and a crate::lightning::ln::msgs::DecodeError on failure.
10349  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10350  */
10351 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
10352    /**
10353     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
10354     * `err` or `result` depending on the state of `result_ok`.
10355     */
10356    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
10357    /**
10358     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
10359     */
10360    bool result_ok;
10361 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
10362
10363 /**
10364  * A dynamically-allocated array of crate::lightning::ln::channelmanager::PhantomRouteHintss of arbitrary size.
10365  * This corresponds to std::vector in C++
10366  */
10367 typedef struct LDKCVec_PhantomRouteHintsZ {
10368    /**
10369     * The elements in the array.
10370     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10371     */
10372    struct LDKPhantomRouteHints *data;
10373    /**
10374     * The number of elements pointed to by `data`.
10375     */
10376    uintptr_t datalen;
10377 } LDKCVec_PhantomRouteHintsZ;
10378
10379 /**
10380  * When signing using a fallible method either an user-supplied `SignError` or a `CreationError`
10381  * may occur.
10382  */
10383 typedef enum LDKSignOrCreationError_Tag {
10384    /**
10385     * An error occurred during signing
10386     */
10387    LDKSignOrCreationError_SignError,
10388    /**
10389     * An error occurred while building the transaction
10390     */
10391    LDKSignOrCreationError_CreationError,
10392    /**
10393     * Must be last for serialization purposes
10394     */
10395    LDKSignOrCreationError_Sentinel,
10396 } LDKSignOrCreationError_Tag;
10397
10398 typedef struct MUST_USE_STRUCT LDKSignOrCreationError {
10399    LDKSignOrCreationError_Tag tag;
10400    union {
10401       struct {
10402          enum LDKCreationError creation_error;
10403       };
10404    };
10405 } LDKSignOrCreationError;
10406
10407 /**
10408  * The contents of CResult_InvoiceSignOrCreationErrorZ
10409  */
10410 typedef union LDKCResult_InvoiceSignOrCreationErrorZPtr {
10411    /**
10412     * A pointer to the contents in the success state.
10413     * Reading from this pointer when `result_ok` is not set is undefined.
10414     */
10415    struct LDKInvoice *result;
10416    /**
10417     * A pointer to the contents in the error state.
10418     * Reading from this pointer when `result_ok` is set is undefined.
10419     */
10420    struct LDKSignOrCreationError *err;
10421 } LDKCResult_InvoiceSignOrCreationErrorZPtr;
10422
10423 /**
10424  * A CResult_InvoiceSignOrCreationErrorZ represents the result of a fallible operation,
10425  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SignOrCreationError on failure.
10426  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10427  */
10428 typedef struct LDKCResult_InvoiceSignOrCreationErrorZ {
10429    /**
10430     * The contents of this CResult_InvoiceSignOrCreationErrorZ, accessible via either
10431     * `err` or `result` depending on the state of `result_ok`.
10432     */
10433    union LDKCResult_InvoiceSignOrCreationErrorZPtr contents;
10434    /**
10435     * Whether this CResult_InvoiceSignOrCreationErrorZ represents a success state.
10436     */
10437    bool result_ok;
10438 } LDKCResult_InvoiceSignOrCreationErrorZ;
10439
10440
10441
10442 /**
10443  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
10444  *
10445  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
10446  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
10447  * the return value of [`Filter::register_output`].
10448  *
10449  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
10450  * may have been spent there. See [`Filter::register_output`] for details.
10451  *
10452  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
10453  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
10454  */
10455 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
10456    /**
10457     * A pointer to the opaque Rust object.
10458     * Nearly everywhere, inner must be non-null, however in places where
10459     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10460     */
10461    LDKnativeWatchedOutput *inner;
10462    /**
10463     * Indicates that this is the only struct which contains the same pointer.
10464     * Rust functions which take ownership of an object provided via an argument require
10465     * this to be true and invalidate the object pointed to by inner.
10466     */
10467    bool is_owned;
10468 } LDKWatchedOutput;
10469
10470 /**
10471  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
10472  * channels.
10473  *
10474  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
10475  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
10476  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
10477  * receiving full blocks from a chain source, any further filtering is unnecessary.
10478  *
10479  * After an output has been registered, subsequent block retrievals from the chain source must not
10480  * exclude any transactions matching the new criteria nor any in-block descendants of such
10481  * transactions.
10482  *
10483  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
10484  * should not block on I/O. Implementations should instead queue the newly monitored data to be
10485  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
10486  * invocation that has called the `Filter` must return [`TemporaryFailure`].
10487  *
10488  * [`TemporaryFailure`]: ChannelMonitorUpdateErr::TemporaryFailure
10489  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
10490  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
10491  */
10492 typedef struct LDKFilter {
10493    /**
10494     * An opaque pointer which is passed to your function implementations as an argument.
10495     * This has no meaning in the LDK, and can be NULL or any other value.
10496     */
10497    void *this_arg;
10498    /**
10499     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
10500     * a spending condition.
10501     */
10502    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
10503    /**
10504     * Registers interest in spends of a transaction output.
10505     *
10506     * Optionally, when `output.block_hash` is set, should return any transaction spending the
10507     * output that is found in the corresponding block along with its index.
10508     *
10509     * This return value is useful for Electrum clients in order to supply in-block descendant
10510     * transactions which otherwise were not included. This is not necessary for other clients if
10511     * such descendant transactions were already included (e.g., when a BIP 157 client provides the
10512     * full block).
10513     */
10514    struct LDKCOption_C2Tuple_usizeTransactionZZ (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
10515    /**
10516     * Frees any resources associated with this object given its this_arg pointer.
10517     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10518     */
10519    void (*free)(void *this_arg);
10520 } LDKFilter;
10521
10522 /**
10523  * An enum which can either contain a crate::lightning::chain::Filter or not
10524  */
10525 typedef enum LDKCOption_FilterZ_Tag {
10526    /**
10527     * When we're in this state, this COption_FilterZ contains a crate::lightning::chain::Filter
10528     */
10529    LDKCOption_FilterZ_Some,
10530    /**
10531     * When we're in this state, this COption_FilterZ contains nothing
10532     */
10533    LDKCOption_FilterZ_None,
10534    /**
10535     * Must be last for serialization purposes
10536     */
10537    LDKCOption_FilterZ_Sentinel,
10538 } LDKCOption_FilterZ_Tag;
10539
10540 typedef struct LDKCOption_FilterZ {
10541    LDKCOption_FilterZ_Tag tag;
10542    union {
10543       struct {
10544          struct LDKFilter some;
10545       };
10546    };
10547 } LDKCOption_FilterZ;
10548
10549
10550
10551 /**
10552  * A read-only reference to a current ChannelMonitor.
10553  *
10554  * Note that this holds a mutex in [`ChainMonitor`] and may block other events until it is
10555  * released.
10556  */
10557 typedef struct MUST_USE_STRUCT LDKLockedChannelMonitor {
10558    /**
10559     * A pointer to the opaque Rust object.
10560     * Nearly everywhere, inner must be non-null, however in places where
10561     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10562     */
10563    LDKnativeLockedChannelMonitor *inner;
10564    /**
10565     * Indicates that this is the only struct which contains the same pointer.
10566     * Rust functions which take ownership of an object provided via an argument require
10567     * this to be true and invalidate the object pointed to by inner.
10568     */
10569    bool is_owned;
10570 } LDKLockedChannelMonitor;
10571
10572 /**
10573  * The contents of CResult_LockedChannelMonitorNoneZ
10574  */
10575 typedef union LDKCResult_LockedChannelMonitorNoneZPtr {
10576    /**
10577     * A pointer to the contents in the success state.
10578     * Reading from this pointer when `result_ok` is not set is undefined.
10579     */
10580    struct LDKLockedChannelMonitor *result;
10581    /**
10582     * Note that this value is always NULL, as there are no contents in the Err variant
10583     */
10584    void *err;
10585 } LDKCResult_LockedChannelMonitorNoneZPtr;
10586
10587 /**
10588  * A CResult_LockedChannelMonitorNoneZ represents the result of a fallible operation,
10589  * containing a crate::lightning::chain::chainmonitor::LockedChannelMonitor on success and a () on failure.
10590  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10591  */
10592 typedef struct LDKCResult_LockedChannelMonitorNoneZ {
10593    /**
10594     * The contents of this CResult_LockedChannelMonitorNoneZ, accessible via either
10595     * `err` or `result` depending on the state of `result_ok`.
10596     */
10597    union LDKCResult_LockedChannelMonitorNoneZPtr contents;
10598    /**
10599     * Whether this CResult_LockedChannelMonitorNoneZ represents a success state.
10600     */
10601    bool result_ok;
10602 } LDKCResult_LockedChannelMonitorNoneZ;
10603
10604 /**
10605  * A dynamically-allocated array of crate::lightning::chain::transaction::OutPoints of arbitrary size.
10606  * This corresponds to std::vector in C++
10607  */
10608 typedef struct LDKCVec_OutPointZ {
10609    /**
10610     * The elements in the array.
10611     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10612     */
10613    struct LDKOutPoint *data;
10614    /**
10615     * The number of elements pointed to by `data`.
10616     */
10617    uintptr_t datalen;
10618 } LDKCVec_OutPointZ;
10619
10620 /**
10621  * A trait indicating an object may generate message send events
10622  */
10623 typedef struct LDKMessageSendEventsProvider {
10624    /**
10625     * An opaque pointer which is passed to your function implementations as an argument.
10626     * This has no meaning in the LDK, and can be NULL or any other value.
10627     */
10628    void *this_arg;
10629    /**
10630     * Gets the list of pending events which were generated by previous actions, clearing the list
10631     * in the process.
10632     */
10633    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
10634    /**
10635     * Frees any resources associated with this object given its this_arg pointer.
10636     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10637     */
10638    void (*free)(void *this_arg);
10639 } LDKMessageSendEventsProvider;
10640
10641 /**
10642  * A trait implemented for objects handling events from [`EventsProvider`].
10643  */
10644 typedef struct LDKEventHandler {
10645    /**
10646     * An opaque pointer which is passed to your function implementations as an argument.
10647     * This has no meaning in the LDK, and can be NULL or any other value.
10648     */
10649    void *this_arg;
10650    /**
10651     * Handles the given [`Event`].
10652     *
10653     * See [`EventsProvider`] for details that must be considered when implementing this method.
10654     */
10655    void (*handle_event)(const void *this_arg, const struct LDKEvent *NONNULL_PTR event);
10656    /**
10657     * Frees any resources associated with this object given its this_arg pointer.
10658     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10659     */
10660    void (*free)(void *this_arg);
10661 } LDKEventHandler;
10662
10663 /**
10664  * A trait indicating an object may generate events.
10665  *
10666  * Events are processed by passing an [`EventHandler`] to [`process_pending_events`].
10667  *
10668  * # Requirements
10669  *
10670  * See [`process_pending_events`] for requirements around event processing.
10671  *
10672  * When using this trait, [`process_pending_events`] will call [`handle_event`] for each pending
10673  * event since the last invocation. The handler must either act upon the event immediately
10674  * or preserve it for later handling.
10675  *
10676  * Note, handlers may call back into the provider and thus deadlocking must be avoided. Be sure to
10677  * consult the provider's documentation on the implication of processing events and how a handler
10678  * may safely use the provider (e.g., see [`ChannelManager::process_pending_events`] and
10679  * [`ChainMonitor::process_pending_events`]).
10680  *
10681  * (C-not implementable) As there is likely no reason for a user to implement this trait on their
10682  * own type(s).
10683  *
10684  * [`process_pending_events`]: Self::process_pending_events
10685  * [`handle_event`]: EventHandler::handle_event
10686  * [`ChannelManager::process_pending_events`]: crate::ln::channelmanager::ChannelManager#method.process_pending_events
10687  * [`ChainMonitor::process_pending_events`]: crate::chain::chainmonitor::ChainMonitor#method.process_pending_events
10688  */
10689 typedef struct LDKEventsProvider {
10690    /**
10691     * An opaque pointer which is passed to your function implementations as an argument.
10692     * This has no meaning in the LDK, and can be NULL or any other value.
10693     */
10694    void *this_arg;
10695    /**
10696     * Processes any events generated since the last call using the given event handler.
10697     *
10698     * Subsequent calls must only process new events. However, handlers must be capable of handling
10699     * duplicate events across process restarts. This may occur if the provider was recovered from
10700     * an old state (i.e., it hadn't been successfully persisted after processing pending events).
10701     */
10702    void (*process_pending_events)(const void *this_arg, struct LDKEventHandler handler);
10703    /**
10704     * Frees any resources associated with this object given its this_arg pointer.
10705     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10706     */
10707    void (*free)(void *this_arg);
10708 } LDKEventsProvider;
10709
10710
10711
10712 /**
10713  * Configuration we set when applicable.
10714  *
10715  * Default::default() provides sane defaults.
10716  */
10717 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
10718    /**
10719     * A pointer to the opaque Rust object.
10720     * Nearly everywhere, inner must be non-null, however in places where
10721     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10722     */
10723    LDKnativeChannelHandshakeConfig *inner;
10724    /**
10725     * Indicates that this is the only struct which contains the same pointer.
10726     * Rust functions which take ownership of an object provided via an argument require
10727     * this to be true and invalidate the object pointed to by inner.
10728     */
10729    bool is_owned;
10730 } LDKChannelHandshakeConfig;
10731
10732
10733
10734 /**
10735  * Optional channel limits which are applied during channel creation.
10736  *
10737  * These limits are only applied to our counterparty's limits, not our own.
10738  *
10739  * Use 0/<type>::max_value() as appropriate to skip checking.
10740  *
10741  * Provides sane defaults for most configurations.
10742  *
10743  * Most additional limits are disabled except those with which specify a default in individual
10744  * field documentation. Note that this may result in barely-usable channels, but since they
10745  * are applied mostly only to incoming channels that's not much of a problem.
10746  */
10747 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
10748    /**
10749     * A pointer to the opaque Rust object.
10750     * Nearly everywhere, inner must be non-null, however in places where
10751     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10752     */
10753    LDKnativeChannelHandshakeLimits *inner;
10754    /**
10755     * Indicates that this is the only struct which contains the same pointer.
10756     * Rust functions which take ownership of an object provided via an argument require
10757     * this to be true and invalidate the object pointed to by inner.
10758     */
10759    bool is_owned;
10760 } LDKChannelHandshakeLimits;
10761
10762
10763
10764 /**
10765  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
10766  *
10767  * Default::default() provides sane defaults for most configurations
10768  * (but currently with 0 relay fees!)
10769  */
10770 typedef struct MUST_USE_STRUCT LDKUserConfig {
10771    /**
10772     * A pointer to the opaque Rust object.
10773     * Nearly everywhere, inner must be non-null, however in places where
10774     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10775     */
10776    LDKnativeUserConfig *inner;
10777    /**
10778     * Indicates that this is the only struct which contains the same pointer.
10779     * Rust functions which take ownership of an object provided via an argument require
10780     * this to be true and invalidate the object pointed to by inner.
10781     */
10782    bool is_owned;
10783 } LDKUserConfig;
10784
10785
10786
10787 /**
10788  * The best known block as identified by its hash and height.
10789  */
10790 typedef struct MUST_USE_STRUCT LDKBestBlock {
10791    /**
10792     * A pointer to the opaque Rust object.
10793     * Nearly everywhere, inner must be non-null, however in places where
10794     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10795     */
10796    LDKnativeBestBlock *inner;
10797    /**
10798     * Indicates that this is the only struct which contains the same pointer.
10799     * Rust functions which take ownership of an object provided via an argument require
10800     * this to be true and invalidate the object pointed to by inner.
10801     */
10802    bool is_owned;
10803 } LDKBestBlock;
10804
10805 /**
10806  * The `Listen` trait is used to notify when blocks have been connected or disconnected from the
10807  * chain.
10808  *
10809  * Useful when needing to replay chain data upon startup or as new chain events occur. Clients
10810  * sourcing chain data using a block-oriented API should prefer this interface over [`Confirm`].
10811  * Such clients fetch the entire header chain whereas clients using [`Confirm`] only fetch headers
10812  * when needed.
10813  */
10814 typedef struct LDKListen {
10815    /**
10816     * An opaque pointer which is passed to your function implementations as an argument.
10817     * This has no meaning in the LDK, and can be NULL or any other value.
10818     */
10819    void *this_arg;
10820    /**
10821     * Notifies the listener that a block was added at the given height.
10822     */
10823    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
10824    /**
10825     * Notifies the listener that a block was removed at the given height.
10826     */
10827    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
10828    /**
10829     * Frees any resources associated with this object given its this_arg pointer.
10830     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10831     */
10832    void (*free)(void *this_arg);
10833 } LDKListen;
10834
10835 /**
10836  * The `Confirm` trait is used to notify when transactions have been confirmed on chain or
10837  * unconfirmed during a chain reorganization.
10838  *
10839  * Clients sourcing chain data using a transaction-oriented API should prefer this interface over
10840  * [`Listen`]. For instance, an Electrum client may implement [`Filter`] by subscribing to activity
10841  * related to registered transactions and outputs. Upon notification, it would pass along the
10842  * matching transactions using this interface.
10843  *
10844  * # Use
10845  *
10846  * The intended use is as follows:
10847  * - Call [`transactions_confirmed`] to process any on-chain activity of interest.
10848  * - Call [`transaction_unconfirmed`] to process any transaction returned by [`get_relevant_txids`]
10849  *   that has been reorganized out of the chain.
10850  * - Call [`best_block_updated`] whenever a new chain tip becomes available.
10851  *
10852  * # Order
10853  *
10854  * Clients must call these methods in chain order. Specifically:
10855  * - Transactions confirmed in a block must be given before transactions confirmed in a later
10856  *   block.
10857  * - Dependent transactions within the same block must be given in topological order, possibly in
10858  *   separate calls.
10859  * - Unconfirmed transactions must be given after the original confirmations and before any
10860  *   reconfirmation.
10861  *
10862  * See individual method documentation for further details.
10863  *
10864  * [`transactions_confirmed`]: Self::transactions_confirmed
10865  * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
10866  * [`best_block_updated`]: Self::best_block_updated
10867  * [`get_relevant_txids`]: Self::get_relevant_txids
10868  */
10869 typedef struct LDKConfirm {
10870    /**
10871     * An opaque pointer which is passed to your function implementations as an argument.
10872     * This has no meaning in the LDK, and can be NULL or any other value.
10873     */
10874    void *this_arg;
10875    /**
10876     * Processes transactions confirmed in a block with a given header and height.
10877     *
10878     * Should be called for any transactions registered by [`Filter::register_tx`] or any
10879     * transactions spending an output registered by [`Filter::register_output`]. Such transactions
10880     * appearing in the same block do not need to be included in the same call; instead, multiple
10881     * calls with additional transactions may be made so long as they are made in [chain order].
10882     *
10883     * May be called before or after [`best_block_updated`] for the corresponding block. However,
10884     * in the event of a chain reorganization, it must not be called with a `header` that is no
10885     * longer in the chain as of the last call to [`best_block_updated`].
10886     *
10887     * [chain order]: Confirm#Order
10888     * [`best_block_updated`]: Self::best_block_updated
10889     */
10890    void (*transactions_confirmed)(const void *this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
10891    /**
10892     * Processes a transaction that is no longer confirmed as result of a chain reorganization.
10893     *
10894     * Should be called for any transaction returned by [`get_relevant_txids`] if it has been
10895     * reorganized out of the best chain. Once called, the given transaction should not be returned
10896     * by [`get_relevant_txids`] unless it has been reconfirmed via [`transactions_confirmed`].
10897     *
10898     * [`get_relevant_txids`]: Self::get_relevant_txids
10899     * [`transactions_confirmed`]: Self::transactions_confirmed
10900     */
10901    void (*transaction_unconfirmed)(const void *this_arg, const uint8_t (*txid)[32]);
10902    /**
10903     * Processes an update to the best header connected at the given height.
10904     *
10905     * Should be called when a new header is available but may be skipped for intermediary blocks
10906     * if they become available at the same time.
10907     */
10908    void (*best_block_updated)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
10909    /**
10910     * Returns transactions that should be monitored for reorganization out of the chain.
10911     *
10912     * Should include any transactions passed to [`transactions_confirmed`] that have insufficient
10913     * confirmations to be safe from a chain reorganization. Should not include any transactions
10914     * passed to [`transaction_unconfirmed`] unless later reconfirmed.
10915     *
10916     * May be called to determine the subset of transactions that must still be monitored for
10917     * reorganization. Will be idempotent between calls but may change as a result of calls to the
10918     * other interface methods. Thus, this is useful to determine which transactions may need to be
10919     * given to [`transaction_unconfirmed`].
10920     *
10921     * [`transactions_confirmed`]: Self::transactions_confirmed
10922     * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
10923     */
10924    struct LDKCVec_TxidZ (*get_relevant_txids)(const void *this_arg);
10925    /**
10926     * Frees any resources associated with this object given its this_arg pointer.
10927     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
10928     */
10929    void (*free)(void *this_arg);
10930 } LDKConfirm;
10931
10932
10933
10934 /**
10935  * An opaque identifier describing a specific [`Persist`] method call.
10936  */
10937 typedef struct MUST_USE_STRUCT LDKMonitorUpdateId {
10938    /**
10939     * A pointer to the opaque Rust object.
10940     * Nearly everywhere, inner must be non-null, however in places where
10941     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10942     */
10943    LDKnativeMonitorUpdateId *inner;
10944    /**
10945     * Indicates that this is the only struct which contains the same pointer.
10946     * Rust functions which take ownership of an object provided via an argument require
10947     * this to be true and invalidate the object pointed to by inner.
10948     */
10949    bool is_owned;
10950 } LDKMonitorUpdateId;
10951
10952 /**
10953  * `Persist` defines behavior for persisting channel monitors: this could mean
10954  * writing once to disk, and/or uploading to one or more backup services.
10955  *
10956  * Each method can return three possible values:
10957  *  * If persistence (including any relevant `fsync()` calls) happens immediately, the
10958  *    implementation should return `Ok(())`, indicating normal channel operation should continue.
10959  *  * If persistence happens asynchronously, implementations should first ensure the
10960  *    [`ChannelMonitor`] or [`ChannelMonitorUpdate`] are written durably to disk, and then return
10961  *    `Err(ChannelMonitorUpdateErr::TemporaryFailure)` while the update continues in the
10962  *    background. Once the update completes, [`ChainMonitor::channel_monitor_updated`] should be
10963  *    called with the corresponding [`MonitorUpdateId`].
10964  *
10965  *    Note that unlike the direct [`chain::Watch`] interface,
10966  *    [`ChainMonitor::channel_monitor_updated`] must be called once for *each* update which occurs.
10967  *
10968  *  * If persistence fails for some reason, implementations should return
10969  *    `Err(ChannelMonitorUpdateErr::PermanentFailure)`, in which case the channel will likely be
10970  *    closed without broadcasting the latest state. See
10971  *    [`ChannelMonitorUpdateErr::PermanentFailure`] for more details.
10972  */
10973 typedef struct LDKPersist {
10974    /**
10975     * An opaque pointer which is passed to your function implementations as an argument.
10976     * This has no meaning in the LDK, and can be NULL or any other value.
10977     */
10978    void *this_arg;
10979    /**
10980     * Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
10981     * called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
10982     *
10983     * The data can be stored any way you want, but the identifier provided by LDK is the
10984     * channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
10985     * and the stored channel data). Note that you **must** persist every new monitor to disk.
10986     *
10987     * The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
10988     * if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
10989     *
10990     * See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
10991     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
10992     *
10993     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
10994     * [`Writeable::write`]: crate::util::ser::Writeable::write
10995     */
10996    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
10997    /**
10998     * Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
10999     * update.
11000     *
11001     * Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
11002     * updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
11003     * details.
11004     *
11005     * During blockchain synchronization operations, this may be called with no
11006     * [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
11007     * Note that after the full [`ChannelMonitor`] is persisted any previous
11008     * [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
11009     * applied to the persisted [`ChannelMonitor`] as they were already applied.
11010     *
11011     * If an implementer chooses to persist the updates only, they need to make
11012     * sure that all the updates are applied to the `ChannelMonitors` *before*
11013     * the set of channel monitors is given to the `ChannelManager`
11014     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
11015     * applying a monitor update to a monitor. If full `ChannelMonitors` are
11016     * persisted, then there is no need to persist individual updates.
11017     *
11018     * Note that there could be a performance tradeoff between persisting complete
11019     * channel monitors on every update vs. persisting only updates and applying
11020     * them in batches. The size of each monitor grows `O(number of state updates)`
11021     * whereas updates are small and `O(1)`.
11022     *
11023     * The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
11024     * if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
11025     *
11026     * See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
11027     * [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
11028     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
11029     *
11030     * [`Writeable::write`]: crate::util::ser::Writeable::write
11031     *
11032     * Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
11033     */
11034    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);
11035    /**
11036     * Frees any resources associated with this object given its this_arg pointer.
11037     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11038     */
11039    void (*free)(void *this_arg);
11040 } LDKPersist;
11041
11042
11043
11044 /**
11045  * An implementation of [`chain::Watch`] for monitoring channels.
11046  *
11047  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
11048  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
11049  * or used independently to monitor channels remotely. See the [module-level documentation] for
11050  * details.
11051  *
11052  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
11053  * [module-level documentation]: crate::chain::chainmonitor
11054  */
11055 typedef struct MUST_USE_STRUCT LDKChainMonitor {
11056    /**
11057     * A pointer to the opaque Rust object.
11058     * Nearly everywhere, inner must be non-null, however in places where
11059     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11060     */
11061    LDKnativeChainMonitor *inner;
11062    /**
11063     * Indicates that this is the only struct which contains the same pointer.
11064     * Rust functions which take ownership of an object provided via an argument require
11065     * this to be true and invalidate the object pointed to by inner.
11066     */
11067    bool is_owned;
11068 } LDKChainMonitor;
11069
11070
11071
11072 /**
11073  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
11074  * and derives keys from that.
11075  *
11076  * Your node_id is seed/0'
11077  * ChannelMonitor closes may use seed/1'
11078  * Cooperative closes may use seed/2'
11079  * The two close keys may be needed to claim on-chain funds!
11080  *
11081  * This struct cannot be used for nodes that wish to support receiving phantom payments;
11082  * [`PhantomKeysManager`] must be used instead.
11083  *
11084  * Note that switching between this struct and [`PhantomKeysManager`] will invalidate any
11085  * previously issued invoices and attempts to pay previous invoices will fail.
11086  */
11087 typedef struct MUST_USE_STRUCT LDKKeysManager {
11088    /**
11089     * A pointer to the opaque Rust object.
11090     * Nearly everywhere, inner must be non-null, however in places where
11091     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11092     */
11093    LDKnativeKeysManager *inner;
11094    /**
11095     * Indicates that this is the only struct which contains the same pointer.
11096     * Rust functions which take ownership of an object provided via an argument require
11097     * this to be true and invalidate the object pointed to by inner.
11098     */
11099    bool is_owned;
11100 } LDKKeysManager;
11101
11102
11103
11104 /**
11105  * Similar to [`KeysManager`], but allows the node using this struct to receive phantom node
11106  * payments.
11107  *
11108  * A phantom node payment is a payment made to a phantom invoice, which is an invoice that can be
11109  * paid to one of multiple nodes. This works because we encode the invoice route hints such that
11110  * LDK will recognize an incoming payment as destined for a phantom node, and collect the payment
11111  * itself without ever needing to forward to this fake node.
11112  *
11113  * Phantom node payments are useful for load balancing between multiple LDK nodes. They also
11114  * provide some fault tolerance, because payers will automatically retry paying other provided
11115  * nodes in the case that one node goes down.
11116  *
11117  * Note that multi-path payments are not supported in phantom invoices for security reasons.
11118  * Switching between this struct and [`KeysManager`] will invalidate any previously issued
11119  * invoices and attempts to pay previous invoices will fail.
11120  */
11121 typedef struct MUST_USE_STRUCT LDKPhantomKeysManager {
11122    /**
11123     * A pointer to the opaque Rust object.
11124     * Nearly everywhere, inner must be non-null, however in places where
11125     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11126     */
11127    LDKnativePhantomKeysManager *inner;
11128    /**
11129     * Indicates that this is the only struct which contains the same pointer.
11130     * Rust functions which take ownership of an object provided via an argument require
11131     * this to be true and invalidate the object pointed to by inner.
11132     */
11133    bool is_owned;
11134 } LDKPhantomKeysManager;
11135
11136
11137
11138 /**
11139  * Chain-related parameters used to construct a new `ChannelManager`.
11140  *
11141  * Typically, the block-specific parameters are derived from the best block hash for the network,
11142  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
11143  * are not needed when deserializing a previously constructed `ChannelManager`.
11144  */
11145 typedef struct MUST_USE_STRUCT LDKChainParameters {
11146    /**
11147     * A pointer to the opaque Rust object.
11148     * Nearly everywhere, inner must be non-null, however in places where
11149     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11150     */
11151    LDKnativeChainParameters *inner;
11152    /**
11153     * Indicates that this is the only struct which contains the same pointer.
11154     * Rust functions which take ownership of an object provided via an argument require
11155     * this to be true and invalidate the object pointed to by inner.
11156     */
11157    bool is_owned;
11158 } LDKChainParameters;
11159
11160 /**
11161  * A 3-byte byte array.
11162  */
11163 typedef struct LDKThreeBytes {
11164    /**
11165     * The three bytes
11166     */
11167    uint8_t data[3];
11168 } LDKThreeBytes;
11169
11170 /**
11171  * A trait to describe an object which can receive channel messages.
11172  *
11173  * Messages MAY be called in parallel when they originate from different their_node_ids, however
11174  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
11175  */
11176 typedef struct LDKChannelMessageHandler {
11177    /**
11178     * An opaque pointer which is passed to your function implementations as an argument.
11179     * This has no meaning in the LDK, and can be NULL or any other value.
11180     */
11181    void *this_arg;
11182    /**
11183     * Handle an incoming open_channel message from the given peer.
11184     */
11185    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
11186    /**
11187     * Handle an incoming accept_channel message from the given peer.
11188     */
11189    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
11190    /**
11191     * Handle an incoming funding_created message from the given peer.
11192     */
11193    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
11194    /**
11195     * Handle an incoming funding_signed message from the given peer.
11196     */
11197    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
11198    /**
11199     * Handle an incoming funding_locked message from the given peer.
11200     */
11201    void (*handle_funding_locked)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingLocked *NONNULL_PTR msg);
11202    /**
11203     * Handle an incoming shutdown message from the given peer.
11204     */
11205    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);
11206    /**
11207     * Handle an incoming closing_signed message from the given peer.
11208     */
11209    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
11210    /**
11211     * Handle an incoming update_add_htlc message from the given peer.
11212     */
11213    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
11214    /**
11215     * Handle an incoming update_fulfill_htlc message from the given peer.
11216     */
11217    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
11218    /**
11219     * Handle an incoming update_fail_htlc message from the given peer.
11220     */
11221    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
11222    /**
11223     * Handle an incoming update_fail_malformed_htlc message from the given peer.
11224     */
11225    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
11226    /**
11227     * Handle an incoming commitment_signed message from the given peer.
11228     */
11229    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
11230    /**
11231     * Handle an incoming revoke_and_ack message from the given peer.
11232     */
11233    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
11234    /**
11235     * Handle an incoming update_fee message from the given peer.
11236     */
11237    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
11238    /**
11239     * Handle an incoming announcement_signatures message from the given peer.
11240     */
11241    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
11242    /**
11243     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
11244     * is believed to be possible in the future (eg they're sending us messages we don't
11245     * understand or indicate they require unknown feature bits), no_connection_possible is set
11246     * and any outstanding channels should be failed.
11247     */
11248    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
11249    /**
11250     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
11251     */
11252    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
11253    /**
11254     * Handle an incoming channel_reestablish message from the given peer.
11255     */
11256    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
11257    /**
11258     * Handle an incoming channel update from the given peer.
11259     */
11260    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
11261    /**
11262     * Handle an incoming error message from the given peer.
11263     */
11264    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
11265    /**
11266     * Implementation of MessageSendEventsProvider for this object.
11267     */
11268    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
11269    /**
11270     * Frees any resources associated with this object given its this_arg pointer.
11271     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11272     */
11273    void (*free)(void *this_arg);
11274 } LDKChannelMessageHandler;
11275
11276
11277
11278 /**
11279  * Arguments for the creation of a ChannelManager that are not deserialized.
11280  *
11281  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
11282  * is:
11283  * 1) Deserialize all stored [`ChannelMonitor`]s.
11284  * 2) Deserialize the [`ChannelManager`] by filling in this struct and calling:
11285  *    `<(BlockHash, ChannelManager)>::read(reader, args)`
11286  *    This may result in closing some channels if the [`ChannelMonitor`] is newer than the stored
11287  *    [`ChannelManager`] state to ensure no loss of funds. Thus, transactions may be broadcasted.
11288  * 3) If you are not fetching full blocks, register all relevant [`ChannelMonitor`] outpoints the
11289  *    same way you would handle a [`chain::Filter`] call using
11290  *    [`ChannelMonitor::get_outputs_to_watch`] and [`ChannelMonitor::get_funding_txo`].
11291  * 4) Reconnect blocks on your [`ChannelMonitor`]s.
11292  * 5) Disconnect/connect blocks on the [`ChannelManager`].
11293  * 6) Re-persist the [`ChannelMonitor`]s to ensure the latest state is on disk.
11294  *    Note that if you're using a [`ChainMonitor`] for your [`chain::Watch`] implementation, you
11295  *    will likely accomplish this as a side-effect of calling [`chain::Watch::watch_channel`] in
11296  *    the next step.
11297  * 7) Move the [`ChannelMonitor`]s into your local [`chain::Watch`]. If you're using a
11298  *    [`ChainMonitor`], this is done by calling [`chain::Watch::watch_channel`].
11299  *
11300  * Note that the ordering of #4-7 is not of importance, however all four must occur before you
11301  * call any other methods on the newly-deserialized [`ChannelManager`].
11302  *
11303  * Note that because some channels may be closed during deserialization, it is critical that you
11304  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
11305  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
11306  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
11307  * not force-close the same channels but consider them live), you may end up revoking a state for
11308  * which you've already broadcasted the transaction.
11309  *
11310  * [`ChainMonitor`]: crate::chain::chainmonitor::ChainMonitor
11311  */
11312 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
11313    /**
11314     * A pointer to the opaque Rust object.
11315     * Nearly everywhere, inner must be non-null, however in places where
11316     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11317     */
11318    LDKnativeChannelManagerReadArgs *inner;
11319    /**
11320     * Indicates that this is the only struct which contains the same pointer.
11321     * Rust functions which take ownership of an object provided via an argument require
11322     * this to be true and invalidate the object pointed to by inner.
11323     */
11324    bool is_owned;
11325 } LDKChannelManagerReadArgs;
11326
11327
11328
11329 /**
11330  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
11331  * This is used to convince the recipient that the channel is at a certain commitment
11332  * number even if they lost that data due to a local failure.  Of course, the peer may lie
11333  * and even later commitments may have been revoked.
11334  */
11335 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
11336    /**
11337     * A pointer to the opaque Rust object.
11338     * Nearly everywhere, inner must be non-null, however in places where
11339     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11340     */
11341    LDKnativeDataLossProtect *inner;
11342    /**
11343     * Indicates that this is the only struct which contains the same pointer.
11344     * Rust functions which take ownership of an object provided via an argument require
11345     * this to be true and invalidate the object pointed to by inner.
11346     */
11347    bool is_owned;
11348 } LDKDataLossProtect;
11349
11350 /**
11351  * A trait to describe an object which can receive routing messages.
11352  *
11353  * # Implementor DoS Warnings
11354  *
11355  * For `gossip_queries` messages there are potential DoS vectors when handling
11356  * inbound queries. Implementors using an on-disk network graph should be aware of
11357  * repeated disk I/O for queries accessing different parts of the network graph.
11358  */
11359 typedef struct LDKRoutingMessageHandler {
11360    /**
11361     * An opaque pointer which is passed to your function implementations as an argument.
11362     * This has no meaning in the LDK, and can be NULL or any other value.
11363     */
11364    void *this_arg;
11365    /**
11366     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
11367     * false or returning an Err otherwise.
11368     */
11369    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
11370    /**
11371     * Handle a channel_announcement message, returning true if it should be forwarded on, false
11372     * or returning an Err otherwise.
11373     */
11374    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
11375    /**
11376     * Handle an incoming channel_update message, returning true if it should be forwarded on,
11377     * false or returning an Err otherwise.
11378     */
11379    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
11380    /**
11381     * Gets a subset of the channel announcements and updates required to dump our routing table
11382     * to a remote node, starting at the short_channel_id indicated by starting_point and
11383     * including the batch_amount entries immediately higher in numerical value than starting_point.
11384     */
11385    struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcements)(const void *this_arg, uint64_t starting_point, uint8_t batch_amount);
11386    /**
11387     * Gets a subset of the node announcements required to dump our routing table to a remote node,
11388     * starting at the node *after* the provided publickey and including batch_amount entries
11389     * immediately higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
11390     * If None is provided for starting_point, we start at the first node.
11391     *
11392     * Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
11393     */
11394    struct LDKCVec_NodeAnnouncementZ (*get_next_node_announcements)(const void *this_arg, struct LDKPublicKey starting_point, uint8_t batch_amount);
11395    /**
11396     * Called when a connection is established with a peer. This can be used to
11397     * perform routing table synchronization using a strategy defined by the
11398     * implementor.
11399     */
11400    void (*sync_routing_table)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
11401    /**
11402     * Handles the reply of a query we initiated to learn about channels
11403     * for a given range of blocks. We can expect to receive one or more
11404     * replies to a single query.
11405     */
11406    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
11407    /**
11408     * Handles the reply of a query we initiated asking for routing gossip
11409     * messages for a list of channels. We should receive this message when
11410     * a node has completed its best effort to send us the pertaining routing
11411     * gossip messages.
11412     */
11413    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
11414    /**
11415     * Handles when a peer asks us to send a list of short_channel_ids
11416     * for the requested range of blocks.
11417     */
11418    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
11419    /**
11420     * Handles when a peer asks us to send routing gossip messages for a
11421     * list of short_channel_ids.
11422     */
11423    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
11424    /**
11425     * Implementation of MessageSendEventsProvider for this object.
11426     */
11427    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
11428    /**
11429     * Frees any resources associated with this object given its this_arg pointer.
11430     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11431     */
11432    void (*free)(void *this_arg);
11433 } LDKRoutingMessageHandler;
11434
11435 /**
11436  * Trait to be implemented by custom message (unrelated to the channel/gossip LN layers)
11437  * decoders.
11438  */
11439 typedef struct LDKCustomMessageReader {
11440    /**
11441     * An opaque pointer which is passed to your function implementations as an argument.
11442     * This has no meaning in the LDK, and can be NULL or any other value.
11443     */
11444    void *this_arg;
11445    /**
11446     * Decodes a custom message to `CustomMessageType`. If the given message type is known to the
11447     * implementation and the message could be decoded, must return `Ok(Some(message))`. If the
11448     * message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
11449     * occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
11450     */
11451    struct LDKCResult_COption_TypeZDecodeErrorZ (*read)(const void *this_arg, uint16_t message_type, struct LDKu8slice buffer);
11452    /**
11453     * Frees any resources associated with this object given its this_arg pointer.
11454     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11455     */
11456    void (*free)(void *this_arg);
11457 } LDKCustomMessageReader;
11458
11459 /**
11460  * Handler for BOLT1-compliant messages.
11461  */
11462 typedef struct LDKCustomMessageHandler {
11463    /**
11464     * An opaque pointer which is passed to your function implementations as an argument.
11465     * This has no meaning in the LDK, and can be NULL or any other value.
11466     */
11467    void *this_arg;
11468    /**
11469     * Called with the message type that was received and the buffer to be read.
11470     * Can return a `MessageHandlingError` if the message could not be handled.
11471     */
11472    struct LDKCResult_NoneLightningErrorZ (*handle_custom_message)(const void *this_arg, struct LDKType msg, struct LDKPublicKey sender_node_id);
11473    /**
11474     * Gets the list of pending messages which were generated by the custom message
11475     * handler, clearing the list in the process. The first tuple element must
11476     * correspond to the intended recipients node ids. If no connection to one of the
11477     * specified node does not exist, the message is simply not sent to it.
11478     */
11479    struct LDKCVec_C2Tuple_PublicKeyTypeZZ (*get_and_clear_pending_msg)(const void *this_arg);
11480    /**
11481     * Implementation of CustomMessageReader for this object.
11482     */
11483    struct LDKCustomMessageReader CustomMessageReader;
11484    /**
11485     * Frees any resources associated with this object given its this_arg pointer.
11486     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11487     */
11488    void (*free)(void *this_arg);
11489 } LDKCustomMessageHandler;
11490
11491
11492
11493 /**
11494  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
11495  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
11496  */
11497 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
11498    /**
11499     * A pointer to the opaque Rust object.
11500     * Nearly everywhere, inner must be non-null, however in places where
11501     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11502     */
11503    LDKnativeIgnoringMessageHandler *inner;
11504    /**
11505     * Indicates that this is the only struct which contains the same pointer.
11506     * Rust functions which take ownership of an object provided via an argument require
11507     * this to be true and invalidate the object pointed to by inner.
11508     */
11509    bool is_owned;
11510 } LDKIgnoringMessageHandler;
11511
11512
11513
11514 /**
11515  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
11516  * You can provide one of these as the route_handler in a MessageHandler.
11517  */
11518 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
11519    /**
11520     * A pointer to the opaque Rust object.
11521     * Nearly everywhere, inner must be non-null, however in places where
11522     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11523     */
11524    LDKnativeErroringMessageHandler *inner;
11525    /**
11526     * Indicates that this is the only struct which contains the same pointer.
11527     * Rust functions which take ownership of an object provided via an argument require
11528     * this to be true and invalidate the object pointed to by inner.
11529     */
11530    bool is_owned;
11531 } LDKErroringMessageHandler;
11532
11533
11534
11535 /**
11536  * Provides references to trait impls which handle different types of messages.
11537  */
11538 typedef struct MUST_USE_STRUCT LDKMessageHandler {
11539    /**
11540     * A pointer to the opaque Rust object.
11541     * Nearly everywhere, inner must be non-null, however in places where
11542     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11543     */
11544    LDKnativeMessageHandler *inner;
11545    /**
11546     * Indicates that this is the only struct which contains the same pointer.
11547     * Rust functions which take ownership of an object provided via an argument require
11548     * this to be true and invalidate the object pointed to by inner.
11549     */
11550    bool is_owned;
11551 } LDKMessageHandler;
11552
11553 /**
11554  * Provides an object which can be used to send data to and which uniquely identifies a connection
11555  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
11556  * implement Hash to meet the PeerManager API.
11557  *
11558  * For efficiency, Clone should be relatively cheap for this type.
11559  *
11560  * Two descriptors may compare equal (by [`cmp::Eq`] and [`hash::Hash`]) as long as the original
11561  * has been disconnected, the [`PeerManager`] has been informed of the disconnection (either by it
11562  * having triggered the disconnection or a call to [`PeerManager::socket_disconnected`]), and no
11563  * further calls to the [`PeerManager`] related to the original socket occur. This allows you to
11564  * use a file descriptor for your SocketDescriptor directly, however for simplicity you may wish
11565  * to simply use another value which is guaranteed to be globally unique instead.
11566  */
11567 typedef struct LDKSocketDescriptor {
11568    /**
11569     * An opaque pointer which is passed to your function implementations as an argument.
11570     * This has no meaning in the LDK, and can be NULL or any other value.
11571     */
11572    void *this_arg;
11573    /**
11574     * Attempts to send some data from the given slice to the peer.
11575     *
11576     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
11577     * Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
11578     * called and further write attempts may occur until that time.
11579     *
11580     * If the returned size is smaller than `data.len()`, a
11581     * [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
11582     * written. Additionally, until a `send_data` event completes fully, no further
11583     * [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
11584     * prevent denial-of-service issues, you should not read or buffer any data from the socket
11585     * until then.
11586     *
11587     * If a [`PeerManager::read_event`] call on this descriptor had previously returned true
11588     * (indicating that read events should be paused to prevent DoS in the send buffer),
11589     * `resume_read` may be set indicating that read events on this descriptor should resume. A
11590     * `resume_read` of false carries no meaning, and should not cause any action.
11591     */
11592    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
11593    /**
11594     * Disconnect the socket pointed to by this SocketDescriptor.
11595     *
11596     * You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
11597     * call (doing so is a noop).
11598     */
11599    void (*disconnect_socket)(void *this_arg);
11600    /**
11601     * Checks if two objects are equal given this object's this_arg pointer and another object.
11602     */
11603    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
11604    /**
11605     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
11606     * This is used, for example, for inclusion of this object in a hash map.
11607     */
11608    uint64_t (*hash)(const void *this_arg);
11609    /**
11610     * Called, if set, after this SocketDescriptor has been cloned into a duplicate object.
11611     * The new SocketDescriptor is provided, and should be mutated as needed to perform a
11612     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
11613     */
11614    void (*cloned)(struct LDKSocketDescriptor *NONNULL_PTR new_SocketDescriptor);
11615    /**
11616     * Frees any resources associated with this object given its this_arg pointer.
11617     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11618     */
11619    void (*free)(void *this_arg);
11620 } LDKSocketDescriptor;
11621
11622
11623
11624 /**
11625  * A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
11626  * socket events into messages which it passes on to its [`MessageHandler`].
11627  *
11628  * Locks are taken internally, so you must never assume that reentrancy from a
11629  * [`SocketDescriptor`] call back into [`PeerManager`] methods will not deadlock.
11630  *
11631  * Calls to [`read_event`] will decode relevant messages and pass them to the
11632  * [`ChannelMessageHandler`], likely doing message processing in-line. Thus, the primary form of
11633  * parallelism in Rust-Lightning is in calls to [`read_event`]. Note, however, that calls to any
11634  * [`PeerManager`] functions related to the same connection must occur only in serial, making new
11635  * calls only after previous ones have returned.
11636  *
11637  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
11638  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
11639  * essentially you should default to using a SimpleRefPeerManager, and use a
11640  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
11641  * you're using lightning-net-tokio.
11642  *
11643  * [`read_event`]: PeerManager::read_event
11644  */
11645 typedef struct MUST_USE_STRUCT LDKPeerManager {
11646    /**
11647     * A pointer to the opaque Rust object.
11648     * Nearly everywhere, inner must be non-null, however in places where
11649     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11650     */
11651    LDKnativePeerManager *inner;
11652    /**
11653     * Indicates that this is the only struct which contains the same pointer.
11654     * Rust functions which take ownership of an object provided via an argument require
11655     * this to be true and invalidate the object pointed to by inner.
11656     */
11657    bool is_owned;
11658 } LDKPeerManager;
11659
11660
11661
11662 /**
11663  * Static channel fields used to build transactions given per-commitment fields, organized by
11664  * broadcaster/countersignatory.
11665  *
11666  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
11667  * as_holder_broadcastable and as_counterparty_broadcastable functions.
11668  */
11669 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
11670    /**
11671     * A pointer to the opaque Rust object.
11672     * Nearly everywhere, inner must be non-null, however in places where
11673     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11674     */
11675    LDKnativeDirectedChannelTransactionParameters *inner;
11676    /**
11677     * Indicates that this is the only struct which contains the same pointer.
11678     * Rust functions which take ownership of an object provided via an argument require
11679     * this to be true and invalidate the object pointed to by inner.
11680     */
11681    bool is_owned;
11682 } LDKDirectedChannelTransactionParameters;
11683
11684
11685
11686 /**
11687  * A read-only view of [`NetworkGraph`].
11688  */
11689 typedef struct MUST_USE_STRUCT LDKReadOnlyNetworkGraph {
11690    /**
11691     * A pointer to the opaque Rust object.
11692     * Nearly everywhere, inner must be non-null, however in places where
11693     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11694     */
11695    LDKnativeReadOnlyNetworkGraph *inner;
11696    /**
11697     * Indicates that this is the only struct which contains the same pointer.
11698     * Rust functions which take ownership of an object provided via an argument require
11699     * this to be true and invalidate the object pointed to by inner.
11700     */
11701    bool is_owned;
11702 } LDKReadOnlyNetworkGraph;
11703
11704
11705
11706 /**
11707  * Receives and validates network updates from peers,
11708  * stores authentic and relevant data as a network graph.
11709  * This network graph is then used for routing payments.
11710  * Provides interface to help with initial routing sync by
11711  * serving historical announcements.
11712  *
11713  * Serves as an [`EventHandler`] for applying updates from [`Event::PaymentPathFailed`] to the
11714  * [`NetworkGraph`].
11715  */
11716 typedef struct MUST_USE_STRUCT LDKNetGraphMsgHandler {
11717    /**
11718     * A pointer to the opaque Rust object.
11719     * Nearly everywhere, inner must be non-null, however in places where
11720     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11721     */
11722    LDKnativeNetGraphMsgHandler *inner;
11723    /**
11724     * Indicates that this is the only struct which contains the same pointer.
11725     * Rust functions which take ownership of an object provided via an argument require
11726     * this to be true and invalidate the object pointed to by inner.
11727     */
11728    bool is_owned;
11729 } LDKNetGraphMsgHandler;
11730
11731
11732
11733 /**
11734  * A wrapper around [`ChannelInfo`] representing information about the channel as directed from a
11735  * source node to a target node.
11736  */
11737 typedef struct MUST_USE_STRUCT LDKDirectedChannelInfo {
11738    /**
11739     * A pointer to the opaque Rust object.
11740     * Nearly everywhere, inner must be non-null, however in places where
11741     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11742     */
11743    LDKnativeDirectedChannelInfo *inner;
11744    /**
11745     * Indicates that this is the only struct which contains the same pointer.
11746     * Rust functions which take ownership of an object provided via an argument require
11747     * this to be true and invalidate the object pointed to by inner.
11748     */
11749    bool is_owned;
11750 } LDKDirectedChannelInfo;
11751
11752 /**
11753  * The effective capacity of a channel for routing purposes.
11754  *
11755  * While this may be smaller than the actual channel capacity, amounts greater than
11756  * [`Self::as_msat`] should not be routed through the channel.
11757  */
11758 typedef enum LDKEffectiveCapacity_Tag {
11759    /**
11760     * The available liquidity in the channel known from being a channel counterparty, and thus a
11761     * direct hop.
11762     */
11763    LDKEffectiveCapacity_ExactLiquidity,
11764    /**
11765     * The maximum HTLC amount in one direction as advertised on the gossip network.
11766     */
11767    LDKEffectiveCapacity_MaximumHTLC,
11768    /**
11769     * The total capacity of the channel as determined by the funding transaction.
11770     */
11771    LDKEffectiveCapacity_Total,
11772    /**
11773     * A capacity sufficient to route any payment, typically used for private channels provided by
11774     * an invoice.
11775     */
11776    LDKEffectiveCapacity_Infinite,
11777    /**
11778     * A capacity that is unknown possibly because either the chain state is unavailable to know
11779     * the total capacity or the `htlc_maximum_msat` was not advertised on the gossip network.
11780     */
11781    LDKEffectiveCapacity_Unknown,
11782    /**
11783     * Must be last for serialization purposes
11784     */
11785    LDKEffectiveCapacity_Sentinel,
11786 } LDKEffectiveCapacity_Tag;
11787
11788 typedef struct LDKEffectiveCapacity_LDKExactLiquidity_Body {
11789    /**
11790     * Either the inbound or outbound liquidity depending on the direction, denominated in
11791     * millisatoshi.
11792     */
11793    uint64_t liquidity_msat;
11794 } LDKEffectiveCapacity_LDKExactLiquidity_Body;
11795
11796 typedef struct LDKEffectiveCapacity_LDKMaximumHTLC_Body {
11797    /**
11798     * The maximum HTLC amount denominated in millisatoshi.
11799     */
11800    uint64_t amount_msat;
11801 } LDKEffectiveCapacity_LDKMaximumHTLC_Body;
11802
11803 typedef struct LDKEffectiveCapacity_LDKTotal_Body {
11804    /**
11805     * The funding amount denominated in millisatoshi.
11806     */
11807    uint64_t capacity_msat;
11808 } LDKEffectiveCapacity_LDKTotal_Body;
11809
11810 typedef struct MUST_USE_STRUCT LDKEffectiveCapacity {
11811    LDKEffectiveCapacity_Tag tag;
11812    union {
11813       LDKEffectiveCapacity_LDKExactLiquidity_Body exact_liquidity;
11814       LDKEffectiveCapacity_LDKMaximumHTLC_Body maximum_htlc;
11815       LDKEffectiveCapacity_LDKTotal_Body total;
11816    };
11817 } LDKEffectiveCapacity;
11818
11819 /**
11820  * An interface used to score payment channels for path finding.
11821  *
11822  *\tScoring is in terms of fees willing to be paid in order to avoid routing through a channel.
11823  */
11824 typedef struct LDKScore {
11825    /**
11826     * An opaque pointer which is passed to your function implementations as an argument.
11827     * This has no meaning in the LDK, and can be NULL or any other value.
11828     */
11829    void *this_arg;
11830    /**
11831     * Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
11832     * given channel in the direction from `source` to `target`.
11833     *
11834     * The channel's capacity (less any other MPP parts that are also being considered for use in
11835     * the same payment) is given by `capacity_msat`. It may be determined from various sources
11836     * such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
11837     * [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
11838     * Thus, implementations should be overflow-safe.
11839     */
11840    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);
11841    /**
11842     * Handles updating channel penalties after failing to route through a channel.
11843     */
11844    void (*payment_path_failed)(void *this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
11845    /**
11846     * Handles updating channel penalties after successfully routing along a path.
11847     */
11848    void (*payment_path_successful)(void *this_arg, struct LDKCVec_RouteHopZ path);
11849    /**
11850     * Serialize the object into a byte array
11851     */
11852    struct LDKCVec_u8Z (*write)(const void *this_arg);
11853    /**
11854     * Frees any resources associated with this object given its this_arg pointer.
11855     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11856     */
11857    void (*free)(void *this_arg);
11858 } LDKScore;
11859
11860 /**
11861  * A scorer that is accessed under a lock.
11862  *
11863  * Needed so that calls to [`Score::channel_penalty_msat`] in [`find_route`] can be made while
11864  * having shared ownership of a scorer but without requiring internal locking in [`Score`]
11865  * implementations. Internal locking would be detrimental to route finding performance and could
11866  * result in [`Score::channel_penalty_msat`] returning a different value for the same channel.
11867  *
11868  * [`find_route`]: crate::routing::router::find_route
11869  */
11870 typedef struct LDKLockableScore {
11871    /**
11872     * An opaque pointer which is passed to your function implementations as an argument.
11873     * This has no meaning in the LDK, and can be NULL or any other value.
11874     */
11875    void *this_arg;
11876    /**
11877     * Returns the locked scorer.
11878     */
11879    struct LDKScore (*lock)(const void *this_arg);
11880    /**
11881     * Frees any resources associated with this object given its this_arg pointer.
11882     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11883     */
11884    void (*free)(void *this_arg);
11885 } LDKLockableScore;
11886
11887
11888
11889 /**
11890  * A concrete implementation of [`LockableScore`] which supports multi-threading.
11891  */
11892 typedef struct MUST_USE_STRUCT LDKMultiThreadedLockableScore {
11893    /**
11894     * A pointer to the opaque Rust object.
11895     * Nearly everywhere, inner must be non-null, however in places where
11896     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11897     */
11898    LDKnativeMultiThreadedLockableScore *inner;
11899    /**
11900     * Indicates that this is the only struct which contains the same pointer.
11901     * Rust functions which take ownership of an object provided via an argument require
11902     * this to be true and invalidate the object pointed to by inner.
11903     */
11904    bool is_owned;
11905 } LDKMultiThreadedLockableScore;
11906
11907
11908
11909 /**
11910  * FilesystemPersister persists channel data on disk, where each channel's
11911  * data is stored in a file named after its funding outpoint.
11912  *
11913  * Warning: this module does the best it can with calls to persist data, but it
11914  * can only guarantee that the data is passed to the drive. It is up to the
11915  * drive manufacturers to do the actual persistence properly, which they often
11916  * don't (especially on consumer-grade hardware). Therefore, it is up to the
11917  * user to validate their entire storage stack, to ensure the writes are
11918  * persistent.
11919  * Corollary: especially when dealing with larger amounts of money, it is best
11920  * practice to have multiple channel data backups and not rely only on one
11921  * FilesystemPersister.
11922  */
11923 typedef struct MUST_USE_STRUCT LDKFilesystemPersister {
11924    /**
11925     * A pointer to the opaque Rust object.
11926     * Nearly everywhere, inner must be non-null, however in places where
11927     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11928     */
11929    LDKnativeFilesystemPersister *inner;
11930    /**
11931     * Indicates that this is the only struct which contains the same pointer.
11932     * Rust functions which take ownership of an object provided via an argument require
11933     * this to be true and invalidate the object pointed to by inner.
11934     */
11935    bool is_owned;
11936 } LDKFilesystemPersister;
11937
11938
11939
11940 /**
11941  * `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
11942  * Rust-Lightning running properly, and (2) either can or should be run in the background. Its
11943  * responsibilities are:
11944  * * Processing [`Event`]s with a user-provided [`EventHandler`].
11945  * * Monitoring whether the [`ChannelManager`] needs to be re-persisted to disk, and if so,
11946  *   writing it to disk/backups by invoking the callback given to it at startup.
11947  *   [`ChannelManager`] persistence should be done in the background.
11948  * * Calling [`ChannelManager::timer_tick_occurred`] and [`PeerManager::timer_tick_occurred`]
11949  *   at the appropriate intervals.
11950  * * Calling [`NetworkGraph::remove_stale_channels`] (if a [`NetGraphMsgHandler`] is provided to
11951  *   [`BackgroundProcessor::start`]).
11952  *
11953  * It will also call [`PeerManager::process_events`] periodically though this shouldn't be relied
11954  * upon as doing so may result in high latency.
11955  *
11956  * # Note
11957  *
11958  * If [`ChannelManager`] persistence fails and the persisted manager becomes out-of-date, then
11959  * there is a risk of channels force-closing on startup when the manager realizes it's outdated.
11960  * However, as long as [`ChannelMonitor`] backups are sound, no funds besides those used for
11961  * unilateral chain closure fees are at risk.
11962  *
11963  * [`ChannelMonitor`]: lightning::chain::channelmonitor::ChannelMonitor
11964  * [`Event`]: lightning::util::events::Event
11965  *BackgroundProcessor will immediately stop on drop. It should be stored until shutdown.
11966  */
11967 typedef struct MUST_USE_STRUCT LDKBackgroundProcessor {
11968    /**
11969     * A pointer to the opaque Rust object.
11970     * Nearly everywhere, inner must be non-null, however in places where
11971     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11972     */
11973    LDKnativeBackgroundProcessor *inner;
11974    /**
11975     * Indicates that this is the only struct which contains the same pointer.
11976     * Rust functions which take ownership of an object provided via an argument require
11977     * this to be true and invalidate the object pointed to by inner.
11978     */
11979    bool is_owned;
11980 } LDKBackgroundProcessor;
11981
11982 /**
11983  * Trait which handles persisting a [`ChannelManager`] to disk.
11984  *
11985  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
11986  */
11987 typedef struct LDKChannelManagerPersister {
11988    /**
11989     * An opaque pointer which is passed to your function implementations as an argument.
11990     * This has no meaning in the LDK, and can be NULL or any other value.
11991     */
11992    void *this_arg;
11993    /**
11994     * Persist the given [`ChannelManager`] to disk, returning an error if persistence failed
11995     * (which will cause the [`BackgroundProcessor`] which called this method to exit.
11996     *
11997     * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
11998     */
11999    struct LDKCResult_NoneErrorZ (*persist_manager)(const void *this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager);
12000    /**
12001     * Frees any resources associated with this object given its this_arg pointer.
12002     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12003     */
12004    void (*free)(void *this_arg);
12005 } LDKChannelManagerPersister;
12006
12007
12008
12009 /**
12010  * Data of the `RawInvoice` that is encoded in the data part
12011  */
12012 typedef struct MUST_USE_STRUCT LDKRawDataPart {
12013    /**
12014     * A pointer to the opaque Rust object.
12015     * Nearly everywhere, inner must be non-null, however in places where
12016     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12017     */
12018    LDKnativeRawDataPart *inner;
12019    /**
12020     * Indicates that this is the only struct which contains the same pointer.
12021     * Rust functions which take ownership of an object provided via an argument require
12022     * this to be true and invalidate the object pointed to by inner.
12023     */
12024    bool is_owned;
12025 } LDKRawDataPart;
12026
12027
12028
12029 /**
12030  * SHA-256 hash
12031  */
12032 typedef struct MUST_USE_STRUCT LDKSha256 {
12033    /**
12034     * A pointer to the opaque Rust object.
12035     * Nearly everywhere, inner must be non-null, however in places where
12036     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12037     */
12038    LDKnativeSha256 *inner;
12039    /**
12040     * Indicates that this is the only struct which contains the same pointer.
12041     * Rust functions which take ownership of an object provided via an argument require
12042     * this to be true and invalidate the object pointed to by inner.
12043     */
12044    bool is_owned;
12045 } LDKSha256;
12046
12047
12048
12049 /**
12050  * Positive duration that defines when (relatively to the timestamp) in the future the invoice
12051  * expires
12052  */
12053 typedef struct MUST_USE_STRUCT LDKExpiryTime {
12054    /**
12055     * A pointer to the opaque Rust object.
12056     * Nearly everywhere, inner must be non-null, however in places where
12057     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12058     */
12059    LDKnativeExpiryTime *inner;
12060    /**
12061     * Indicates that this is the only struct which contains the same pointer.
12062     * Rust functions which take ownership of an object provided via an argument require
12063     * this to be true and invalidate the object pointed to by inner.
12064     */
12065    bool is_owned;
12066 } LDKExpiryTime;
12067
12068
12069
12070 /**
12071  * `min_final_cltv_expiry` to use for the last HTLC in the route
12072  */
12073 typedef struct MUST_USE_STRUCT LDKMinFinalCltvExpiry {
12074    /**
12075     * A pointer to the opaque Rust object.
12076     * Nearly everywhere, inner must be non-null, however in places where
12077     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12078     */
12079    LDKnativeMinFinalCltvExpiry *inner;
12080    /**
12081     * Indicates that this is the only struct which contains the same pointer.
12082     * Rust functions which take ownership of an object provided via an argument require
12083     * this to be true and invalidate the object pointed to by inner.
12084     */
12085    bool is_owned;
12086 } LDKMinFinalCltvExpiry;
12087
12088 /**
12089  * A 20-byte byte array.
12090  */
12091 typedef struct LDKTwentyBytes {
12092    /**
12093     * The twenty bytes
12094     */
12095    uint8_t data[20];
12096 } LDKTwentyBytes;
12097
12098 /**
12099  * Fallback address in case no LN payment is possible
12100  */
12101 typedef enum LDKFallback_Tag {
12102    LDKFallback_SegWitProgram,
12103    LDKFallback_PubKeyHash,
12104    LDKFallback_ScriptHash,
12105    /**
12106     * Must be last for serialization purposes
12107     */
12108    LDKFallback_Sentinel,
12109 } LDKFallback_Tag;
12110
12111 typedef struct LDKFallback_LDKSegWitProgram_Body {
12112    struct LDKu5 version;
12113    struct LDKCVec_u8Z program;
12114 } LDKFallback_LDKSegWitProgram_Body;
12115
12116 typedef struct MUST_USE_STRUCT LDKFallback {
12117    LDKFallback_Tag tag;
12118    union {
12119       LDKFallback_LDKSegWitProgram_Body seg_wit_program;
12120       struct {
12121          struct LDKTwentyBytes pub_key_hash;
12122       };
12123       struct {
12124          struct LDKTwentyBytes script_hash;
12125       };
12126    };
12127 } LDKFallback;
12128
12129 /**
12130  * A trait defining behavior of an [`Invoice`] payer.
12131  */
12132 typedef struct LDKPayer {
12133    /**
12134     * An opaque pointer which is passed to your function implementations as an argument.
12135     * This has no meaning in the LDK, and can be NULL or any other value.
12136     */
12137    void *this_arg;
12138    /**
12139     * Returns the payer's node id.
12140     */
12141    struct LDKPublicKey (*node_id)(const void *this_arg);
12142    /**
12143     * Returns the payer's channels.
12144     */
12145    struct LDKCVec_ChannelDetailsZ (*first_hops)(const void *this_arg);
12146    /**
12147     * Sends a payment over the Lightning Network using the given [`Route`].
12148     *
12149     * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
12150     */
12151    struct LDKCResult_PaymentIdPaymentSendFailureZ (*send_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
12152    /**
12153     * Sends a spontaneous payment over the Lightning Network using the given [`Route`].
12154     */
12155    struct LDKCResult_PaymentIdPaymentSendFailureZ (*send_spontaneous_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
12156    /**
12157     * Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
12158     */
12159    struct LDKCResult_NonePaymentSendFailureZ (*retry_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
12160    /**
12161     * Signals that no further retries for the given payment will occur.
12162     */
12163    void (*abandon_payment)(const void *this_arg, struct LDKThirtyTwoBytes payment_id);
12164    /**
12165     * Frees any resources associated with this object given its this_arg pointer.
12166     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12167     */
12168    void (*free)(void *this_arg);
12169 } LDKPayer;
12170
12171 /**
12172  * A trait defining behavior for routing an [`Invoice`] payment.
12173  */
12174 typedef struct LDKRouter {
12175    /**
12176     * An opaque pointer which is passed to your function implementations as an argument.
12177     * This has no meaning in the LDK, and can be NULL or any other value.
12178     */
12179    void *this_arg;
12180    /**
12181     * Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
12182     *
12183     * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
12184     */
12185    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);
12186    /**
12187     * Frees any resources associated with this object given its this_arg pointer.
12188     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12189     */
12190    void (*free)(void *this_arg);
12191 } LDKRouter;
12192
12193
12194
12195 /**
12196  * A utility for paying [`Invoice`]s and sending spontaneous payments.
12197  *
12198  * See [module-level documentation] for details.
12199  *
12200  * [module-level documentation]: crate::payment
12201  */
12202 typedef struct MUST_USE_STRUCT LDKInvoicePayer {
12203    /**
12204     * A pointer to the opaque Rust object.
12205     * Nearly everywhere, inner must be non-null, however in places where
12206     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12207     */
12208    LDKnativeInvoicePayer *inner;
12209    /**
12210     * Indicates that this is the only struct which contains the same pointer.
12211     * Rust functions which take ownership of an object provided via an argument require
12212     * this to be true and invalidate the object pointed to by inner.
12213     */
12214    bool is_owned;
12215 } LDKInvoicePayer;
12216
12217
12218
12219 /**
12220  * Number of attempts to retry payment path failures for an [`Invoice`].
12221  *
12222  * Note that this is the number of *path* failures, not full payment retries. For multi-path
12223  * payments, if this is less than the total number of paths, we will never even retry all of the
12224  * payment's paths.
12225  */
12226 typedef struct MUST_USE_STRUCT LDKRetryAttempts {
12227    /**
12228     * A pointer to the opaque Rust object.
12229     * Nearly everywhere, inner must be non-null, however in places where
12230     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12231     */
12232    LDKnativeRetryAttempts *inner;
12233    /**
12234     * Indicates that this is the only struct which contains the same pointer.
12235     * Rust functions which take ownership of an object provided via an argument require
12236     * this to be true and invalidate the object pointed to by inner.
12237     */
12238    bool is_owned;
12239 } LDKRetryAttempts;
12240
12241
12242
12243 /**
12244  * A [`Router`] implemented using [`find_route`].
12245  */
12246 typedef struct MUST_USE_STRUCT LDKDefaultRouter {
12247    /**
12248     * A pointer to the opaque Rust object.
12249     * Nearly everywhere, inner must be non-null, however in places where
12250     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12251     */
12252    LDKnativeDefaultRouter *inner;
12253    /**
12254     * Indicates that this is the only struct which contains the same pointer.
12255     * Rust functions which take ownership of an object provided via an argument require
12256     * this to be true and invalidate the object pointed to by inner.
12257     */
12258    bool is_owned;
12259 } LDKDefaultRouter;
12260
12261 extern const uintptr_t MAX_BUF_SIZE;
12262
12263 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
12264
12265 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
12266
12267 extern const uint32_t ANTI_REORG_DELAY;
12268
12269 extern const uint16_t BREAKDOWN_TIMEOUT;
12270
12271 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
12272
12273 extern const uint32_t MIN_FINAL_CLTV_EXPIRY;
12274
12275 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
12276
12277 extern const uint64_t UNKNOWN_CHANNEL_CAPACITY_MSAT;
12278
12279 extern const uint32_t DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA;
12280
12281 extern const uint64_t MAX_TIMESTAMP;
12282
12283 extern const uint64_t DEFAULT_EXPIRY_TIME;
12284
12285 extern const uint64_t DEFAULT_MIN_FINAL_CLTV_EXPIRY;
12286
12287 extern const uint8_t TAG_PAYMENT_HASH;
12288
12289 extern const uint8_t TAG_DESCRIPTION;
12290
12291 extern const uint8_t TAG_PAYEE_PUB_KEY;
12292
12293 extern const uint8_t TAG_DESCRIPTION_HASH;
12294
12295 extern const uint8_t TAG_EXPIRY_TIME;
12296
12297 extern const uint8_t TAG_MIN_FINAL_CLTV_EXPIRY;
12298
12299 extern const uint8_t TAG_FALLBACK;
12300
12301 extern const uint8_t TAG_PRIVATE_ROUTE;
12302
12303 extern const uint8_t TAG_PAYMENT_SECRET;
12304
12305 extern const uint8_t TAG_FEATURES;
12306
12307 struct LDKStr _ldk_get_compiled_version(void);
12308
12309 struct LDKStr _ldk_c_bindings_get_compiled_version(void);
12310
12311 /**
12312  * Frees the data buffer, if data_is_owned is set and datalen > 0.
12313  */
12314 void Transaction_free(struct LDKTransaction _res);
12315
12316 /**
12317  * Convenience function for constructing a new TxOut
12318  */
12319 struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
12320
12321 /**
12322  * Frees the data pointed to by script_pubkey.
12323  */
12324 void TxOut_free(struct LDKTxOut _res);
12325
12326 /**
12327  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
12328  */
12329 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
12330
12331 /**
12332  * Frees the data buffer, if chars_is_owned is set and len > 0.
12333  */
12334 void Str_free(struct LDKStr _res);
12335
12336 #if defined(LDK_DEBUG_BUILD)
12337 /**
12338  * This function exists for memory safety testing purposes. It should never be used in production
12339  * code
12340  */
12341 const void *__unmangle_inner_ptr(const void *ptr);
12342 #endif
12343
12344 /**
12345  * Creates a new CResult_NoneNoneZ in the success state.
12346  */
12347 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
12348
12349 /**
12350  * Creates a new CResult_NoneNoneZ in the error state.
12351  */
12352 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
12353
12354 /**
12355  * Checks if the given object is currently in the success state
12356  */
12357 bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
12358
12359 /**
12360  * Frees any resources used by the CResult_NoneNoneZ.
12361  */
12362 void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
12363
12364 /**
12365  * Creates a new CResult_NoneNoneZ which has the same data as `orig`
12366  * but with all dynamically-allocated buffers duplicated in new buffers.
12367  */
12368 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
12369
12370 /**
12371  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ in the success state.
12372  */
12373 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_ok(struct LDKCounterpartyCommitmentSecrets o);
12374
12375 /**
12376  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ in the error state.
12377  */
12378 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_err(struct LDKDecodeError e);
12379
12380 /**
12381  * Checks if the given object is currently in the success state
12382  */
12383 bool CResult_CounterpartyCommitmentSecretsDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR o);
12384
12385 /**
12386  * Frees any resources used by the CResult_CounterpartyCommitmentSecretsDecodeErrorZ.
12387  */
12388 void CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ _res);
12389
12390 /**
12391  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ which has the same data as `orig`
12392  * but with all dynamically-allocated buffers duplicated in new buffers.
12393  */
12394 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_clone(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR orig);
12395
12396 /**
12397  * Creates a new CResult_SecretKeyErrorZ in the success state.
12398  */
12399 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
12400
12401 /**
12402  * Creates a new CResult_SecretKeyErrorZ in the error state.
12403  */
12404 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
12405
12406 /**
12407  * Checks if the given object is currently in the success state
12408  */
12409 bool CResult_SecretKeyErrorZ_is_ok(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR o);
12410
12411 /**
12412  * Frees any resources used by the CResult_SecretKeyErrorZ.
12413  */
12414 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
12415
12416 /**
12417  * Creates a new CResult_SecretKeyErrorZ which has the same data as `orig`
12418  * but with all dynamically-allocated buffers duplicated in new buffers.
12419  */
12420 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_clone(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR orig);
12421
12422 /**
12423  * Creates a new CResult_PublicKeyErrorZ in the success state.
12424  */
12425 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
12426
12427 /**
12428  * Creates a new CResult_PublicKeyErrorZ in the error state.
12429  */
12430 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
12431
12432 /**
12433  * Checks if the given object is currently in the success state
12434  */
12435 bool CResult_PublicKeyErrorZ_is_ok(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR o);
12436
12437 /**
12438  * Frees any resources used by the CResult_PublicKeyErrorZ.
12439  */
12440 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
12441
12442 /**
12443  * Creates a new CResult_PublicKeyErrorZ which has the same data as `orig`
12444  * but with all dynamically-allocated buffers duplicated in new buffers.
12445  */
12446 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
12447
12448 /**
12449  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
12450  */
12451 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
12452
12453 /**
12454  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
12455  */
12456 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
12457
12458 /**
12459  * Checks if the given object is currently in the success state
12460  */
12461 bool CResult_TxCreationKeysDecodeErrorZ_is_ok(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR o);
12462
12463 /**
12464  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
12465  */
12466 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
12467
12468 /**
12469  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
12470  * but with all dynamically-allocated buffers duplicated in new buffers.
12471  */
12472 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
12473
12474 /**
12475  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
12476  */
12477 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
12478
12479 /**
12480  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
12481  */
12482 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
12483
12484 /**
12485  * Checks if the given object is currently in the success state
12486  */
12487 bool CResult_ChannelPublicKeysDecodeErrorZ_is_ok(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR o);
12488
12489 /**
12490  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
12491  */
12492 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
12493
12494 /**
12495  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
12496  * but with all dynamically-allocated buffers duplicated in new buffers.
12497  */
12498 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
12499
12500 /**
12501  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
12502  */
12503 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
12504
12505 /**
12506  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
12507  */
12508 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
12509
12510 /**
12511  * Checks if the given object is currently in the success state
12512  */
12513 bool CResult_TxCreationKeysErrorZ_is_ok(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR o);
12514
12515 /**
12516  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
12517  */
12518 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
12519
12520 /**
12521  * Creates a new CResult_TxCreationKeysErrorZ which has the same data as `orig`
12522  * but with all dynamically-allocated buffers duplicated in new buffers.
12523  */
12524 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
12525
12526 /**
12527  * Constructs a new COption_u32Z containing a u32
12528  */
12529 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
12530
12531 /**
12532  * Constructs a new COption_u32Z containing nothing
12533  */
12534 struct LDKCOption_u32Z COption_u32Z_none(void);
12535
12536 /**
12537  * Frees any resources associated with the u32, if we are in the Some state
12538  */
12539 void COption_u32Z_free(struct LDKCOption_u32Z _res);
12540
12541 /**
12542  * Creates a new COption_u32Z which has the same data as `orig`
12543  * but with all dynamically-allocated buffers duplicated in new buffers.
12544  */
12545 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
12546
12547 /**
12548  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
12549  */
12550 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
12551
12552 /**
12553  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
12554  */
12555 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
12556
12557 /**
12558  * Checks if the given object is currently in the success state
12559  */
12560 bool CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR o);
12561
12562 /**
12563  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
12564  */
12565 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
12566
12567 /**
12568  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
12569  * but with all dynamically-allocated buffers duplicated in new buffers.
12570  */
12571 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
12572
12573 /**
12574  * Constructs a new COption_NoneZ containing a
12575  */
12576 enum LDKCOption_NoneZ COption_NoneZ_some(void);
12577
12578 /**
12579  * Constructs a new COption_NoneZ containing nothing
12580  */
12581 enum LDKCOption_NoneZ COption_NoneZ_none(void);
12582
12583 /**
12584  * Frees any resources associated with the , if we are in the Some state
12585  */
12586 void COption_NoneZ_free(enum LDKCOption_NoneZ _res);
12587
12588 /**
12589  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
12590  */
12591 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
12592
12593 /**
12594  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
12595  */
12596 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
12597
12598 /**
12599  * Checks if the given object is currently in the success state
12600  */
12601 bool CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
12602
12603 /**
12604  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
12605  */
12606 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
12607
12608 /**
12609  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
12610  * but with all dynamically-allocated buffers duplicated in new buffers.
12611  */
12612 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
12613
12614 /**
12615  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
12616  */
12617 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
12618
12619 /**
12620  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
12621  */
12622 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
12623
12624 /**
12625  * Checks if the given object is currently in the success state
12626  */
12627 bool CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
12628
12629 /**
12630  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
12631  */
12632 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
12633
12634 /**
12635  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
12636  * but with all dynamically-allocated buffers duplicated in new buffers.
12637  */
12638 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
12639
12640 /**
12641  * Frees the buffer pointed to by `data` if `datalen` is non-0.
12642  */
12643 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
12644
12645 /**
12646  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
12647  */
12648 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
12649
12650 /**
12651  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
12652  */
12653 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
12654
12655 /**
12656  * Checks if the given object is currently in the success state
12657  */
12658 bool CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
12659
12660 /**
12661  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
12662  */
12663 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
12664
12665 /**
12666  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
12667  * but with all dynamically-allocated buffers duplicated in new buffers.
12668  */
12669 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
12670
12671 /**
12672  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
12673  */
12674 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
12675
12676 /**
12677  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
12678  */
12679 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
12680
12681 /**
12682  * Checks if the given object is currently in the success state
12683  */
12684 bool CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
12685
12686 /**
12687  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
12688  */
12689 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
12690
12691 /**
12692  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
12693  * but with all dynamically-allocated buffers duplicated in new buffers.
12694  */
12695 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
12696
12697 /**
12698  * Creates a new CResult_TrustedClosingTransactionNoneZ in the success state.
12699  */
12700 struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_ok(struct LDKTrustedClosingTransaction o);
12701
12702 /**
12703  * Creates a new CResult_TrustedClosingTransactionNoneZ in the error state.
12704  */
12705 struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_err(void);
12706
12707 /**
12708  * Checks if the given object is currently in the success state
12709  */
12710 bool CResult_TrustedClosingTransactionNoneZ_is_ok(const struct LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR o);
12711
12712 /**
12713  * Frees any resources used by the CResult_TrustedClosingTransactionNoneZ.
12714  */
12715 void CResult_TrustedClosingTransactionNoneZ_free(struct LDKCResult_TrustedClosingTransactionNoneZ _res);
12716
12717 /**
12718  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
12719  */
12720 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
12721
12722 /**
12723  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
12724  */
12725 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
12726
12727 /**
12728  * Checks if the given object is currently in the success state
12729  */
12730 bool CResult_CommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
12731
12732 /**
12733  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
12734  */
12735 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
12736
12737 /**
12738  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
12739  * but with all dynamically-allocated buffers duplicated in new buffers.
12740  */
12741 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
12742
12743 /**
12744  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
12745  */
12746 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
12747
12748 /**
12749  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
12750  */
12751 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
12752
12753 /**
12754  * Checks if the given object is currently in the success state
12755  */
12756 bool CResult_TrustedCommitmentTransactionNoneZ_is_ok(const struct LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR o);
12757
12758 /**
12759  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
12760  */
12761 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
12762
12763 /**
12764  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
12765  */
12766 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
12767
12768 /**
12769  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
12770  */
12771 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
12772
12773 /**
12774  * Checks if the given object is currently in the success state
12775  */
12776 bool CResult_CVec_SignatureZNoneZ_is_ok(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR o);
12777
12778 /**
12779  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
12780  */
12781 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
12782
12783 /**
12784  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
12785  * but with all dynamically-allocated buffers duplicated in new buffers.
12786  */
12787 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
12788
12789 /**
12790  * Creates a new CResult_ShutdownScriptDecodeErrorZ in the success state.
12791  */
12792 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_ok(struct LDKShutdownScript o);
12793
12794 /**
12795  * Creates a new CResult_ShutdownScriptDecodeErrorZ in the error state.
12796  */
12797 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_err(struct LDKDecodeError e);
12798
12799 /**
12800  * Checks if the given object is currently in the success state
12801  */
12802 bool CResult_ShutdownScriptDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR o);
12803
12804 /**
12805  * Frees any resources used by the CResult_ShutdownScriptDecodeErrorZ.
12806  */
12807 void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
12808
12809 /**
12810  * Creates a new CResult_ShutdownScriptDecodeErrorZ which has the same data as `orig`
12811  * but with all dynamically-allocated buffers duplicated in new buffers.
12812  */
12813 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
12814
12815 /**
12816  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ in the success state.
12817  */
12818 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_ok(struct LDKShutdownScript o);
12819
12820 /**
12821  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ in the error state.
12822  */
12823 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_err(struct LDKInvalidShutdownScript e);
12824
12825 /**
12826  * Checks if the given object is currently in the success state
12827  */
12828 bool CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR o);
12829
12830 /**
12831  * Frees any resources used by the CResult_ShutdownScriptInvalidShutdownScriptZ.
12832  */
12833 void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
12834
12835 /**
12836  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ which has the same data as `orig`
12837  * but with all dynamically-allocated buffers duplicated in new buffers.
12838  */
12839 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
12840
12841 /**
12842  * Creates a new CResult_NoneErrorZ in the success state.
12843  */
12844 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
12845
12846 /**
12847  * Creates a new CResult_NoneErrorZ in the error state.
12848  */
12849 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
12850
12851 /**
12852  * Checks if the given object is currently in the success state
12853  */
12854 bool CResult_NoneErrorZ_is_ok(const struct LDKCResult_NoneErrorZ *NONNULL_PTR o);
12855
12856 /**
12857  * Frees any resources used by the CResult_NoneErrorZ.
12858  */
12859 void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
12860
12861 /**
12862  * Creates a new CResult_NoneErrorZ which has the same data as `orig`
12863  * but with all dynamically-allocated buffers duplicated in new buffers.
12864  */
12865 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
12866
12867 /**
12868  * Creates a new CResult_RouteHopDecodeErrorZ in the success state.
12869  */
12870 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
12871
12872 /**
12873  * Creates a new CResult_RouteHopDecodeErrorZ in the error state.
12874  */
12875 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
12876
12877 /**
12878  * Checks if the given object is currently in the success state
12879  */
12880 bool CResult_RouteHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR o);
12881
12882 /**
12883  * Frees any resources used by the CResult_RouteHopDecodeErrorZ.
12884  */
12885 void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
12886
12887 /**
12888  * Creates a new CResult_RouteHopDecodeErrorZ which has the same data as `orig`
12889  * but with all dynamically-allocated buffers duplicated in new buffers.
12890  */
12891 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
12892
12893 /**
12894  * Frees the buffer pointed to by `data` if `datalen` is non-0.
12895  */
12896 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
12897
12898 /**
12899  * Frees the buffer pointed to by `data` if `datalen` is non-0.
12900  */
12901 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
12902
12903 /**
12904  * Creates a new CResult_RouteDecodeErrorZ in the success state.
12905  */
12906 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
12907
12908 /**
12909  * Creates a new CResult_RouteDecodeErrorZ in the error state.
12910  */
12911 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
12912
12913 /**
12914  * Checks if the given object is currently in the success state
12915  */
12916 bool CResult_RouteDecodeErrorZ_is_ok(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR o);
12917
12918 /**
12919  * Frees any resources used by the CResult_RouteDecodeErrorZ.
12920  */
12921 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
12922
12923 /**
12924  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
12925  * but with all dynamically-allocated buffers duplicated in new buffers.
12926  */
12927 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
12928
12929 /**
12930  * Creates a new CResult_RouteParametersDecodeErrorZ in the success state.
12931  */
12932 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_ok(struct LDKRouteParameters o);
12933
12934 /**
12935  * Creates a new CResult_RouteParametersDecodeErrorZ in the error state.
12936  */
12937 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_err(struct LDKDecodeError e);
12938
12939 /**
12940  * Checks if the given object is currently in the success state
12941  */
12942 bool CResult_RouteParametersDecodeErrorZ_is_ok(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR o);
12943
12944 /**
12945  * Frees any resources used by the CResult_RouteParametersDecodeErrorZ.
12946  */
12947 void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
12948
12949 /**
12950  * Creates a new CResult_RouteParametersDecodeErrorZ which has the same data as `orig`
12951  * but with all dynamically-allocated buffers duplicated in new buffers.
12952  */
12953 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
12954
12955 /**
12956  * Frees the buffer pointed to by `data` if `datalen` is non-0.
12957  */
12958 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
12959
12960 /**
12961  * Constructs a new COption_u64Z containing a u64
12962  */
12963 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
12964
12965 /**
12966  * Constructs a new COption_u64Z containing nothing
12967  */
12968 struct LDKCOption_u64Z COption_u64Z_none(void);
12969
12970 /**
12971  * Frees any resources associated with the u64, if we are in the Some state
12972  */
12973 void COption_u64Z_free(struct LDKCOption_u64Z _res);
12974
12975 /**
12976  * Creates a new COption_u64Z which has the same data as `orig`
12977  * but with all dynamically-allocated buffers duplicated in new buffers.
12978  */
12979 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
12980
12981 /**
12982  * Creates a new CResult_PaymentParametersDecodeErrorZ in the success state.
12983  */
12984 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_ok(struct LDKPaymentParameters o);
12985
12986 /**
12987  * Creates a new CResult_PaymentParametersDecodeErrorZ in the error state.
12988  */
12989 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_err(struct LDKDecodeError e);
12990
12991 /**
12992  * Checks if the given object is currently in the success state
12993  */
12994 bool CResult_PaymentParametersDecodeErrorZ_is_ok(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR o);
12995
12996 /**
12997  * Frees any resources used by the CResult_PaymentParametersDecodeErrorZ.
12998  */
12999 void CResult_PaymentParametersDecodeErrorZ_free(struct LDKCResult_PaymentParametersDecodeErrorZ _res);
13000
13001 /**
13002  * Creates a new CResult_PaymentParametersDecodeErrorZ which has the same data as `orig`
13003  * but with all dynamically-allocated buffers duplicated in new buffers.
13004  */
13005 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_clone(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR orig);
13006
13007 /**
13008  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13009  */
13010 void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
13011
13012 /**
13013  * Creates a new CResult_RouteHintDecodeErrorZ in the success state.
13014  */
13015 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_ok(struct LDKRouteHint o);
13016
13017 /**
13018  * Creates a new CResult_RouteHintDecodeErrorZ in the error state.
13019  */
13020 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_err(struct LDKDecodeError e);
13021
13022 /**
13023  * Checks if the given object is currently in the success state
13024  */
13025 bool CResult_RouteHintDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR o);
13026
13027 /**
13028  * Frees any resources used by the CResult_RouteHintDecodeErrorZ.
13029  */
13030 void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
13031
13032 /**
13033  * Creates a new CResult_RouteHintDecodeErrorZ which has the same data as `orig`
13034  * but with all dynamically-allocated buffers duplicated in new buffers.
13035  */
13036 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
13037
13038 /**
13039  * Creates a new CResult_RouteHintHopDecodeErrorZ in the success state.
13040  */
13041 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_ok(struct LDKRouteHintHop o);
13042
13043 /**
13044  * Creates a new CResult_RouteHintHopDecodeErrorZ in the error state.
13045  */
13046 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_err(struct LDKDecodeError e);
13047
13048 /**
13049  * Checks if the given object is currently in the success state
13050  */
13051 bool CResult_RouteHintHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR o);
13052
13053 /**
13054  * Frees any resources used by the CResult_RouteHintHopDecodeErrorZ.
13055  */
13056 void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
13057
13058 /**
13059  * Creates a new CResult_RouteHintHopDecodeErrorZ which has the same data as `orig`
13060  * but with all dynamically-allocated buffers duplicated in new buffers.
13061  */
13062 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
13063
13064 /**
13065  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13066  */
13067 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
13068
13069 /**
13070  * Creates a new CResult_RouteLightningErrorZ in the success state.
13071  */
13072 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
13073
13074 /**
13075  * Creates a new CResult_RouteLightningErrorZ in the error state.
13076  */
13077 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
13078
13079 /**
13080  * Checks if the given object is currently in the success state
13081  */
13082 bool CResult_RouteLightningErrorZ_is_ok(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR o);
13083
13084 /**
13085  * Frees any resources used by the CResult_RouteLightningErrorZ.
13086  */
13087 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
13088
13089 /**
13090  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
13091  * but with all dynamically-allocated buffers duplicated in new buffers.
13092  */
13093 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
13094
13095 /**
13096  * Creates a new CResult_TxOutAccessErrorZ in the success state.
13097  */
13098 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
13099
13100 /**
13101  * Creates a new CResult_TxOutAccessErrorZ in the error state.
13102  */
13103 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
13104
13105 /**
13106  * Checks if the given object is currently in the success state
13107  */
13108 bool CResult_TxOutAccessErrorZ_is_ok(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR o);
13109
13110 /**
13111  * Frees any resources used by the CResult_TxOutAccessErrorZ.
13112  */
13113 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
13114
13115 /**
13116  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
13117  * but with all dynamically-allocated buffers duplicated in new buffers.
13118  */
13119 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
13120
13121 /**
13122  * Creates a new tuple which has the same data as `orig`
13123  * but with all dynamically-allocated buffers duplicated in new buffers.
13124  */
13125 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
13126
13127 /**
13128  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
13129  */
13130 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
13131
13132 /**
13133  * Frees any resources used by the C2Tuple_usizeTransactionZ.
13134  */
13135 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
13136
13137 /**
13138  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13139  */
13140 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
13141
13142 /**
13143  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13144  */
13145 void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
13146
13147 /**
13148  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
13149  */
13150 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
13151
13152 /**
13153  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
13154  */
13155 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
13156
13157 /**
13158  * Checks if the given object is currently in the success state
13159  */
13160 bool CResult_NoneChannelMonitorUpdateErrZ_is_ok(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR o);
13161
13162 /**
13163  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
13164  */
13165 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
13166
13167 /**
13168  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
13169  * but with all dynamically-allocated buffers duplicated in new buffers.
13170  */
13171 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
13172
13173 /**
13174  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13175  */
13176 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
13177
13178 /**
13179  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing a crate::c_types::derived::C2Tuple_usizeTransactionZ
13180  */
13181 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_some(struct LDKC2Tuple_usizeTransactionZ o);
13182
13183 /**
13184  * Constructs a new COption_C2Tuple_usizeTransactionZZ containing nothing
13185  */
13186 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_none(void);
13187
13188 /**
13189  * Frees any resources associated with the crate::c_types::derived::C2Tuple_usizeTransactionZ, if we are in the Some state
13190  */
13191 void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
13192
13193 /**
13194  * Creates a new COption_C2Tuple_usizeTransactionZZ which has the same data as `orig`
13195  * but with all dynamically-allocated buffers duplicated in new buffers.
13196  */
13197 struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
13198
13199 /**
13200  * Constructs a new COption_ClosureReasonZ containing a crate::lightning::util::events::ClosureReason
13201  */
13202 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_some(struct LDKClosureReason o);
13203
13204 /**
13205  * Constructs a new COption_ClosureReasonZ containing nothing
13206  */
13207 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_none(void);
13208
13209 /**
13210  * Frees any resources associated with the crate::lightning::util::events::ClosureReason, if we are in the Some state
13211  */
13212 void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
13213
13214 /**
13215  * Creates a new COption_ClosureReasonZ which has the same data as `orig`
13216  * but with all dynamically-allocated buffers duplicated in new buffers.
13217  */
13218 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
13219
13220 /**
13221  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ in the success state.
13222  */
13223 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_ok(struct LDKCOption_ClosureReasonZ o);
13224
13225 /**
13226  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ in the error state.
13227  */
13228 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_err(struct LDKDecodeError e);
13229
13230 /**
13231  * Checks if the given object is currently in the success state
13232  */
13233 bool CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR o);
13234
13235 /**
13236  * Frees any resources used by the CResult_COption_ClosureReasonZDecodeErrorZ.
13237  */
13238 void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
13239
13240 /**
13241  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ which has the same data as `orig`
13242  * but with all dynamically-allocated buffers duplicated in new buffers.
13243  */
13244 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
13245
13246 /**
13247  * Constructs a new COption_NetworkUpdateZ containing a crate::lightning::routing::network_graph::NetworkUpdate
13248  */
13249 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_some(struct LDKNetworkUpdate o);
13250
13251 /**
13252  * Constructs a new COption_NetworkUpdateZ containing nothing
13253  */
13254 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_none(void);
13255
13256 /**
13257  * Frees any resources associated with the crate::lightning::routing::network_graph::NetworkUpdate, if we are in the Some state
13258  */
13259 void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
13260
13261 /**
13262  * Creates a new COption_NetworkUpdateZ which has the same data as `orig`
13263  * but with all dynamically-allocated buffers duplicated in new buffers.
13264  */
13265 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
13266
13267 /**
13268  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13269  */
13270 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
13271
13272 /**
13273  * Constructs a new COption_EventZ containing a crate::lightning::util::events::Event
13274  */
13275 struct LDKCOption_EventZ COption_EventZ_some(struct LDKEvent o);
13276
13277 /**
13278  * Constructs a new COption_EventZ containing nothing
13279  */
13280 struct LDKCOption_EventZ COption_EventZ_none(void);
13281
13282 /**
13283  * Frees any resources associated with the crate::lightning::util::events::Event, if we are in the Some state
13284  */
13285 void COption_EventZ_free(struct LDKCOption_EventZ _res);
13286
13287 /**
13288  * Creates a new COption_EventZ which has the same data as `orig`
13289  * but with all dynamically-allocated buffers duplicated in new buffers.
13290  */
13291 struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
13292
13293 /**
13294  * Creates a new CResult_COption_EventZDecodeErrorZ in the success state.
13295  */
13296 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_ok(struct LDKCOption_EventZ o);
13297
13298 /**
13299  * Creates a new CResult_COption_EventZDecodeErrorZ in the error state.
13300  */
13301 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_err(struct LDKDecodeError e);
13302
13303 /**
13304  * Checks if the given object is currently in the success state
13305  */
13306 bool CResult_COption_EventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR o);
13307
13308 /**
13309  * Frees any resources used by the CResult_COption_EventZDecodeErrorZ.
13310  */
13311 void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
13312
13313 /**
13314  * Creates a new CResult_COption_EventZDecodeErrorZ which has the same data as `orig`
13315  * but with all dynamically-allocated buffers duplicated in new buffers.
13316  */
13317 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
13318
13319 /**
13320  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13321  */
13322 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
13323
13324 /**
13325  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ in the success state.
13326  */
13327 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_ok(struct LDKFixedPenaltyScorer o);
13328
13329 /**
13330  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ in the error state.
13331  */
13332 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_err(struct LDKDecodeError e);
13333
13334 /**
13335  * Checks if the given object is currently in the success state
13336  */
13337 bool CResult_FixedPenaltyScorerDecodeErrorZ_is_ok(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR o);
13338
13339 /**
13340  * Frees any resources used by the CResult_FixedPenaltyScorerDecodeErrorZ.
13341  */
13342 void CResult_FixedPenaltyScorerDecodeErrorZ_free(struct LDKCResult_FixedPenaltyScorerDecodeErrorZ _res);
13343
13344 /**
13345  * Creates a new CResult_ScoringParametersDecodeErrorZ in the success state.
13346  */
13347 struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
13348
13349 /**
13350  * Creates a new CResult_ScoringParametersDecodeErrorZ in the error state.
13351  */
13352 struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
13353
13354 /**
13355  * Checks if the given object is currently in the success state
13356  */
13357 bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
13358
13359 /**
13360  * Frees any resources used by the CResult_ScoringParametersDecodeErrorZ.
13361  */
13362 void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
13363
13364 /**
13365  * Creates a new CResult_ScorerDecodeErrorZ in the success state.
13366  */
13367 struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_ok(struct LDKScorer o);
13368
13369 /**
13370  * Creates a new CResult_ScorerDecodeErrorZ in the error state.
13371  */
13372 struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_err(struct LDKDecodeError e);
13373
13374 /**
13375  * Checks if the given object is currently in the success state
13376  */
13377 bool CResult_ScorerDecodeErrorZ_is_ok(const struct LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR o);
13378
13379 /**
13380  * Frees any resources used by the CResult_ScorerDecodeErrorZ.
13381  */
13382 void CResult_ScorerDecodeErrorZ_free(struct LDKCResult_ScorerDecodeErrorZ _res);
13383
13384 /**
13385  * Creates a new CResult_ProbabilisticScoringParametersDecodeErrorZ in the success state.
13386  */
13387 struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ CResult_ProbabilisticScoringParametersDecodeErrorZ_ok(struct LDKProbabilisticScoringParameters o);
13388
13389 /**
13390  * Creates a new CResult_ProbabilisticScoringParametersDecodeErrorZ in the error state.
13391  */
13392 struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ CResult_ProbabilisticScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
13393
13394 /**
13395  * Checks if the given object is currently in the success state
13396  */
13397 bool CResult_ProbabilisticScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ *NONNULL_PTR o);
13398
13399 /**
13400  * Frees any resources used by the CResult_ProbabilisticScoringParametersDecodeErrorZ.
13401  */
13402 void CResult_ProbabilisticScoringParametersDecodeErrorZ_free(struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ _res);
13403
13404 /**
13405  * Creates a new CResult_ProbabilisticScoringParametersDecodeErrorZ which has the same data as `orig`
13406  * but with all dynamically-allocated buffers duplicated in new buffers.
13407  */
13408 struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ CResult_ProbabilisticScoringParametersDecodeErrorZ_clone(const struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ *NONNULL_PTR orig);
13409
13410 /**
13411  * Creates a new C2Tuple_ProbabilisticScoringParametersNetworkGraphZ from the contained elements.
13412  */
13413 struct LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_new(struct LDKProbabilisticScoringParameters a, const struct LDKNetworkGraph *NONNULL_PTR b);
13414
13415 /**
13416  * Frees any resources used by the C2Tuple_ProbabilisticScoringParametersNetworkGraphZ.
13417  */
13418 void C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_free(struct LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ _res);
13419
13420 /**
13421  * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the success state.
13422  */
13423 struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_ok(struct LDKProbabilisticScorer o);
13424
13425 /**
13426  * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the error state.
13427  */
13428 struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_err(struct LDKDecodeError e);
13429
13430 /**
13431  * Checks if the given object is currently in the success state
13432  */
13433 bool CResult_ProbabilisticScorerDecodeErrorZ_is_ok(const struct LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR o);
13434
13435 /**
13436  * Frees any resources used by the CResult_ProbabilisticScorerDecodeErrorZ.
13437  */
13438 void CResult_ProbabilisticScorerDecodeErrorZ_free(struct LDKCResult_ProbabilisticScorerDecodeErrorZ _res);
13439
13440 /**
13441  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
13442  */
13443 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
13444
13445 /**
13446  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
13447  */
13448 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13449
13450 /**
13451  * Checks if the given object is currently in the success state
13452  */
13453 bool CResult_InitFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR o);
13454
13455 /**
13456  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
13457  */
13458 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
13459
13460 /**
13461  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
13462  */
13463 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
13464
13465 /**
13466  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
13467  */
13468 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13469
13470 /**
13471  * Checks if the given object is currently in the success state
13472  */
13473 bool CResult_ChannelFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR o);
13474
13475 /**
13476  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
13477  */
13478 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
13479
13480 /**
13481  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
13482  */
13483 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
13484
13485 /**
13486  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
13487  */
13488 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13489
13490 /**
13491  * Checks if the given object is currently in the success state
13492  */
13493 bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
13494
13495 /**
13496  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
13497  */
13498 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
13499
13500 /**
13501  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
13502  */
13503 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
13504
13505 /**
13506  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
13507  */
13508 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13509
13510 /**
13511  * Checks if the given object is currently in the success state
13512  */
13513 bool CResult_InvoiceFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR o);
13514
13515 /**
13516  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
13517  */
13518 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
13519
13520 /**
13521  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ in the success state.
13522  */
13523 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_ok(struct LDKChannelTypeFeatures o);
13524
13525 /**
13526  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ in the error state.
13527  */
13528 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
13529
13530 /**
13531  * Checks if the given object is currently in the success state
13532  */
13533 bool CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR o);
13534
13535 /**
13536  * Frees any resources used by the CResult_ChannelTypeFeaturesDecodeErrorZ.
13537  */
13538 void CResult_ChannelTypeFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res);
13539
13540 /**
13541  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the success state.
13542  */
13543 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
13544
13545 /**
13546  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the error state.
13547  */
13548 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
13549
13550 /**
13551  * Checks if the given object is currently in the success state
13552  */
13553 bool CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
13554
13555 /**
13556  * Frees any resources used by the CResult_DelayedPaymentOutputDescriptorDecodeErrorZ.
13557  */
13558 void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
13559
13560 /**
13561  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
13562  * but with all dynamically-allocated buffers duplicated in new buffers.
13563  */
13564 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
13565
13566 /**
13567  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the success state.
13568  */
13569 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
13570
13571 /**
13572  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the error state.
13573  */
13574 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
13575
13576 /**
13577  * Checks if the given object is currently in the success state
13578  */
13579 bool CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
13580
13581 /**
13582  * Frees any resources used by the CResult_StaticPaymentOutputDescriptorDecodeErrorZ.
13583  */
13584 void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
13585
13586 /**
13587  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
13588  * but with all dynamically-allocated buffers duplicated in new buffers.
13589  */
13590 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
13591
13592 /**
13593  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
13594  */
13595 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
13596
13597 /**
13598  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
13599  */
13600 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
13601
13602 /**
13603  * Checks if the given object is currently in the success state
13604  */
13605 bool CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
13606
13607 /**
13608  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
13609  */
13610 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
13611
13612 /**
13613  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
13614  * but with all dynamically-allocated buffers duplicated in new buffers.
13615  */
13616 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
13617
13618 /**
13619  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13620  */
13621 void CVec_PaymentPreimageZ_free(struct LDKCVec_PaymentPreimageZ _res);
13622
13623 /**
13624  * Creates a new tuple which has the same data as `orig`
13625  * but with all dynamically-allocated buffers duplicated in new buffers.
13626  */
13627 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
13628
13629 /**
13630  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
13631  */
13632 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
13633
13634 /**
13635  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
13636  */
13637 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
13638
13639 /**
13640  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
13641  */
13642 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
13643
13644 /**
13645  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
13646  */
13647 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
13648
13649 /**
13650  * Checks if the given object is currently in the success state
13651  */
13652 bool CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR o);
13653
13654 /**
13655  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
13656  */
13657 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
13658
13659 /**
13660  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
13661  * but with all dynamically-allocated buffers duplicated in new buffers.
13662  */
13663 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
13664
13665 /**
13666  * Creates a new CResult_SignatureNoneZ in the success state.
13667  */
13668 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
13669
13670 /**
13671  * Creates a new CResult_SignatureNoneZ in the error state.
13672  */
13673 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
13674
13675 /**
13676  * Checks if the given object is currently in the success state
13677  */
13678 bool CResult_SignatureNoneZ_is_ok(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR o);
13679
13680 /**
13681  * Frees any resources used by the CResult_SignatureNoneZ.
13682  */
13683 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
13684
13685 /**
13686  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
13687  * but with all dynamically-allocated buffers duplicated in new buffers.
13688  */
13689 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
13690
13691 /**
13692  * Creates a new tuple which has the same data as `orig`
13693  * but with all dynamically-allocated buffers duplicated in new buffers.
13694  */
13695 struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_clone(const struct LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR orig);
13696
13697 /**
13698  * Creates a new C2Tuple_SignatureSignatureZ from the contained elements.
13699  */
13700 struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_new(struct LDKSignature a, struct LDKSignature b);
13701
13702 /**
13703  * Frees any resources used by the C2Tuple_SignatureSignatureZ.
13704  */
13705 void C2Tuple_SignatureSignatureZ_free(struct LDKC2Tuple_SignatureSignatureZ _res);
13706
13707 /**
13708  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ in the success state.
13709  */
13710 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_ok(struct LDKC2Tuple_SignatureSignatureZ o);
13711
13712 /**
13713  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ in the error state.
13714  */
13715 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_err(void);
13716
13717 /**
13718  * Checks if the given object is currently in the success state
13719  */
13720 bool CResult_C2Tuple_SignatureSignatureZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR o);
13721
13722 /**
13723  * Frees any resources used by the CResult_C2Tuple_SignatureSignatureZNoneZ.
13724  */
13725 void CResult_C2Tuple_SignatureSignatureZNoneZ_free(struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ _res);
13726
13727 /**
13728  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ which has the same data as `orig`
13729  * but with all dynamically-allocated buffers duplicated in new buffers.
13730  */
13731 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR orig);
13732
13733 /**
13734  * Creates a new CResult_SecretKeyNoneZ in the success state.
13735  */
13736 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_ok(struct LDKSecretKey o);
13737
13738 /**
13739  * Creates a new CResult_SecretKeyNoneZ in the error state.
13740  */
13741 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_err(void);
13742
13743 /**
13744  * Checks if the given object is currently in the success state
13745  */
13746 bool CResult_SecretKeyNoneZ_is_ok(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR o);
13747
13748 /**
13749  * Frees any resources used by the CResult_SecretKeyNoneZ.
13750  */
13751 void CResult_SecretKeyNoneZ_free(struct LDKCResult_SecretKeyNoneZ _res);
13752
13753 /**
13754  * Creates a new CResult_SecretKeyNoneZ which has the same data as `orig`
13755  * but with all dynamically-allocated buffers duplicated in new buffers.
13756  */
13757 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_clone(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR orig);
13758
13759 /**
13760  * Creates a new CResult_SignDecodeErrorZ in the success state.
13761  */
13762 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
13763
13764 /**
13765  * Creates a new CResult_SignDecodeErrorZ in the error state.
13766  */
13767 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
13768
13769 /**
13770  * Checks if the given object is currently in the success state
13771  */
13772 bool CResult_SignDecodeErrorZ_is_ok(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR o);
13773
13774 /**
13775  * Frees any resources used by the CResult_SignDecodeErrorZ.
13776  */
13777 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
13778
13779 /**
13780  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
13781  * but with all dynamically-allocated buffers duplicated in new buffers.
13782  */
13783 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
13784
13785 /**
13786  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13787  */
13788 void CVec_u5Z_free(struct LDKCVec_u5Z _res);
13789
13790 /**
13791  * Creates a new CResult_RecoverableSignatureNoneZ in the success state.
13792  */
13793 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
13794
13795 /**
13796  * Creates a new CResult_RecoverableSignatureNoneZ in the error state.
13797  */
13798 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
13799
13800 /**
13801  * Checks if the given object is currently in the success state
13802  */
13803 bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
13804
13805 /**
13806  * Frees any resources used by the CResult_RecoverableSignatureNoneZ.
13807  */
13808 void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
13809
13810 /**
13811  * Creates a new CResult_RecoverableSignatureNoneZ which has the same data as `orig`
13812  * but with all dynamically-allocated buffers duplicated in new buffers.
13813  */
13814 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
13815
13816 /**
13817  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13818  */
13819 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
13820
13821 /**
13822  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13823  */
13824 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
13825
13826 /**
13827  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
13828  */
13829 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
13830
13831 /**
13832  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
13833  */
13834 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
13835
13836 /**
13837  * Checks if the given object is currently in the success state
13838  */
13839 bool CResult_CVec_CVec_u8ZZNoneZ_is_ok(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR o);
13840
13841 /**
13842  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
13843  */
13844 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
13845
13846 /**
13847  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
13848  * but with all dynamically-allocated buffers duplicated in new buffers.
13849  */
13850 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
13851
13852 /**
13853  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
13854  */
13855 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
13856
13857 /**
13858  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
13859  */
13860 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
13861
13862 /**
13863  * Checks if the given object is currently in the success state
13864  */
13865 bool CResult_InMemorySignerDecodeErrorZ_is_ok(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR o);
13866
13867 /**
13868  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
13869  */
13870 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
13871
13872 /**
13873  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
13874  * but with all dynamically-allocated buffers duplicated in new buffers.
13875  */
13876 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
13877
13878 /**
13879  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13880  */
13881 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
13882
13883 /**
13884  * Creates a new CResult_TransactionNoneZ in the success state.
13885  */
13886 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
13887
13888 /**
13889  * Creates a new CResult_TransactionNoneZ in the error state.
13890  */
13891 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
13892
13893 /**
13894  * Checks if the given object is currently in the success state
13895  */
13896 bool CResult_TransactionNoneZ_is_ok(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR o);
13897
13898 /**
13899  * Frees any resources used by the CResult_TransactionNoneZ.
13900  */
13901 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
13902
13903 /**
13904  * Creates a new CResult_TransactionNoneZ which has the same data as `orig`
13905  * but with all dynamically-allocated buffers duplicated in new buffers.
13906  */
13907 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
13908
13909 /**
13910  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
13911  */
13912 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
13913
13914 /**
13915  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
13916  */
13917 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
13918
13919 /**
13920  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13921  */
13922 void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res);
13923
13924 /**
13925  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the success state.
13926  */
13927 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o);
13928
13929 /**
13930  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the error state.
13931  */
13932 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
13933
13934 /**
13935  * Checks if the given object is currently in the success state
13936  */
13937 bool CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR o);
13938
13939 /**
13940  * Frees any resources used by the CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.
13941  */
13942 void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
13943
13944 /**
13945  * Constructs a new COption_u16Z containing a u16
13946  */
13947 struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
13948
13949 /**
13950  * Constructs a new COption_u16Z containing nothing
13951  */
13952 struct LDKCOption_u16Z COption_u16Z_none(void);
13953
13954 /**
13955  * Frees any resources associated with the u16, if we are in the Some state
13956  */
13957 void COption_u16Z_free(struct LDKCOption_u16Z _res);
13958
13959 /**
13960  * Creates a new COption_u16Z which has the same data as `orig`
13961  * but with all dynamically-allocated buffers duplicated in new buffers.
13962  */
13963 struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
13964
13965 /**
13966  * Creates a new CResult_NoneAPIErrorZ in the success state.
13967  */
13968 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
13969
13970 /**
13971  * Creates a new CResult_NoneAPIErrorZ in the error state.
13972  */
13973 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
13974
13975 /**
13976  * Checks if the given object is currently in the success state
13977  */
13978 bool CResult_NoneAPIErrorZ_is_ok(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR o);
13979
13980 /**
13981  * Frees any resources used by the CResult_NoneAPIErrorZ.
13982  */
13983 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
13984
13985 /**
13986  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
13987  * but with all dynamically-allocated buffers duplicated in new buffers.
13988  */
13989 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
13990
13991 /**
13992  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13993  */
13994 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
13995
13996 /**
13997  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13998  */
13999 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
14000
14001 /**
14002  * Creates a new CResult__u832APIErrorZ in the success state.
14003  */
14004 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_ok(struct LDKThirtyTwoBytes o);
14005
14006 /**
14007  * Creates a new CResult__u832APIErrorZ in the error state.
14008  */
14009 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_err(struct LDKAPIError e);
14010
14011 /**
14012  * Checks if the given object is currently in the success state
14013  */
14014 bool CResult__u832APIErrorZ_is_ok(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR o);
14015
14016 /**
14017  * Frees any resources used by the CResult__u832APIErrorZ.
14018  */
14019 void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
14020
14021 /**
14022  * Creates a new CResult__u832APIErrorZ which has the same data as `orig`
14023  * but with all dynamically-allocated buffers duplicated in new buffers.
14024  */
14025 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
14026
14027 /**
14028  * Creates a new CResult_PaymentIdPaymentSendFailureZ in the success state.
14029  */
14030 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
14031
14032 /**
14033  * Creates a new CResult_PaymentIdPaymentSendFailureZ in the error state.
14034  */
14035 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
14036
14037 /**
14038  * Checks if the given object is currently in the success state
14039  */
14040 bool CResult_PaymentIdPaymentSendFailureZ_is_ok(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR o);
14041
14042 /**
14043  * Frees any resources used by the CResult_PaymentIdPaymentSendFailureZ.
14044  */
14045 void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
14046
14047 /**
14048  * Creates a new CResult_PaymentIdPaymentSendFailureZ which has the same data as `orig`
14049  * but with all dynamically-allocated buffers duplicated in new buffers.
14050  */
14051 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
14052
14053 /**
14054  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
14055  */
14056 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
14057
14058 /**
14059  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
14060  */
14061 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
14062
14063 /**
14064  * Checks if the given object is currently in the success state
14065  */
14066 bool CResult_NonePaymentSendFailureZ_is_ok(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR o);
14067
14068 /**
14069  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
14070  */
14071 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
14072
14073 /**
14074  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
14075  * but with all dynamically-allocated buffers duplicated in new buffers.
14076  */
14077 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
14078
14079 /**
14080  * Creates a new tuple which has the same data as `orig`
14081  * but with all dynamically-allocated buffers duplicated in new buffers.
14082  */
14083 struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
14084
14085 /**
14086  * Creates a new C2Tuple_PaymentHashPaymentIdZ from the contained elements.
14087  */
14088 struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
14089
14090 /**
14091  * Frees any resources used by the C2Tuple_PaymentHashPaymentIdZ.
14092  */
14093 void C2Tuple_PaymentHashPaymentIdZ_free(struct LDKC2Tuple_PaymentHashPaymentIdZ _res);
14094
14095 /**
14096  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ in the success state.
14097  */
14098 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(struct LDKC2Tuple_PaymentHashPaymentIdZ o);
14099
14100 /**
14101  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ in the error state.
14102  */
14103 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
14104
14105 /**
14106  * Checks if the given object is currently in the success state
14107  */
14108 bool CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR o);
14109
14110 /**
14111  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.
14112  */
14113 void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
14114
14115 /**
14116  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ which has the same data as `orig`
14117  * but with all dynamically-allocated buffers duplicated in new buffers.
14118  */
14119 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
14120
14121 /**
14122  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14123  */
14124 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
14125
14126 /**
14127  * Creates a new tuple which has the same data as `orig`
14128  * but with all dynamically-allocated buffers duplicated in new buffers.
14129  */
14130 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
14131
14132 /**
14133  * Creates a new C2Tuple_PaymentHashPaymentSecretZ from the contained elements.
14134  */
14135 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
14136
14137 /**
14138  * Frees any resources used by the C2Tuple_PaymentHashPaymentSecretZ.
14139  */
14140 void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
14141
14142 /**
14143  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ in the success state.
14144  */
14145 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
14146
14147 /**
14148  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ in the error state.
14149  */
14150 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(void);
14151
14152 /**
14153  * Checks if the given object is currently in the success state
14154  */
14155 bool CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR o);
14156
14157 /**
14158  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ.
14159  */
14160 void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res);
14161
14162 /**
14163  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ which has the same data as `orig`
14164  * but with all dynamically-allocated buffers duplicated in new buffers.
14165  */
14166 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR orig);
14167
14168 /**
14169  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ in the success state.
14170  */
14171 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
14172
14173 /**
14174  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ in the error state.
14175  */
14176 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(struct LDKAPIError e);
14177
14178 /**
14179  * Checks if the given object is currently in the success state
14180  */
14181 bool CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR o);
14182
14183 /**
14184  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.
14185  */
14186 void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res);
14187
14188 /**
14189  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ which has the same data as `orig`
14190  * but with all dynamically-allocated buffers duplicated in new buffers.
14191  */
14192 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR orig);
14193
14194 /**
14195  * Creates a new CResult_PaymentSecretNoneZ in the success state.
14196  */
14197 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
14198
14199 /**
14200  * Creates a new CResult_PaymentSecretNoneZ in the error state.
14201  */
14202 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_err(void);
14203
14204 /**
14205  * Checks if the given object is currently in the success state
14206  */
14207 bool CResult_PaymentSecretNoneZ_is_ok(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR o);
14208
14209 /**
14210  * Frees any resources used by the CResult_PaymentSecretNoneZ.
14211  */
14212 void CResult_PaymentSecretNoneZ_free(struct LDKCResult_PaymentSecretNoneZ _res);
14213
14214 /**
14215  * Creates a new CResult_PaymentSecretNoneZ which has the same data as `orig`
14216  * but with all dynamically-allocated buffers duplicated in new buffers.
14217  */
14218 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_clone(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR orig);
14219
14220 /**
14221  * Creates a new CResult_PaymentSecretAPIErrorZ in the success state.
14222  */
14223 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
14224
14225 /**
14226  * Creates a new CResult_PaymentSecretAPIErrorZ in the error state.
14227  */
14228 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
14229
14230 /**
14231  * Checks if the given object is currently in the success state
14232  */
14233 bool CResult_PaymentSecretAPIErrorZ_is_ok(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR o);
14234
14235 /**
14236  * Frees any resources used by the CResult_PaymentSecretAPIErrorZ.
14237  */
14238 void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
14239
14240 /**
14241  * Creates a new CResult_PaymentSecretAPIErrorZ which has the same data as `orig`
14242  * but with all dynamically-allocated buffers duplicated in new buffers.
14243  */
14244 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
14245
14246 /**
14247  * Creates a new CResult_PaymentPreimageAPIErrorZ in the success state.
14248  */
14249 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
14250
14251 /**
14252  * Creates a new CResult_PaymentPreimageAPIErrorZ in the error state.
14253  */
14254 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_err(struct LDKAPIError e);
14255
14256 /**
14257  * Checks if the given object is currently in the success state
14258  */
14259 bool CResult_PaymentPreimageAPIErrorZ_is_ok(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR o);
14260
14261 /**
14262  * Frees any resources used by the CResult_PaymentPreimageAPIErrorZ.
14263  */
14264 void CResult_PaymentPreimageAPIErrorZ_free(struct LDKCResult_PaymentPreimageAPIErrorZ _res);
14265
14266 /**
14267  * Creates a new CResult_PaymentPreimageAPIErrorZ which has the same data as `orig`
14268  * but with all dynamically-allocated buffers duplicated in new buffers.
14269  */
14270 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_clone(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR orig);
14271
14272 /**
14273  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ in the success state.
14274  */
14275 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_ok(struct LDKCounterpartyForwardingInfo o);
14276
14277 /**
14278  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ in the error state.
14279  */
14280 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_err(struct LDKDecodeError e);
14281
14282 /**
14283  * Checks if the given object is currently in the success state
14284  */
14285 bool CResult_CounterpartyForwardingInfoDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR o);
14286
14287 /**
14288  * Frees any resources used by the CResult_CounterpartyForwardingInfoDecodeErrorZ.
14289  */
14290 void CResult_CounterpartyForwardingInfoDecodeErrorZ_free(struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ _res);
14291
14292 /**
14293  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ which has the same data as `orig`
14294  * but with all dynamically-allocated buffers duplicated in new buffers.
14295  */
14296 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_clone(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR orig);
14297
14298 /**
14299  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ in the success state.
14300  */
14301 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_ok(struct LDKChannelCounterparty o);
14302
14303 /**
14304  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ in the error state.
14305  */
14306 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_err(struct LDKDecodeError e);
14307
14308 /**
14309  * Checks if the given object is currently in the success state
14310  */
14311 bool CResult_ChannelCounterpartyDecodeErrorZ_is_ok(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR o);
14312
14313 /**
14314  * Frees any resources used by the CResult_ChannelCounterpartyDecodeErrorZ.
14315  */
14316 void CResult_ChannelCounterpartyDecodeErrorZ_free(struct LDKCResult_ChannelCounterpartyDecodeErrorZ _res);
14317
14318 /**
14319  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ which has the same data as `orig`
14320  * but with all dynamically-allocated buffers duplicated in new buffers.
14321  */
14322 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_clone(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR orig);
14323
14324 /**
14325  * Creates a new CResult_ChannelDetailsDecodeErrorZ in the success state.
14326  */
14327 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_ok(struct LDKChannelDetails o);
14328
14329 /**
14330  * Creates a new CResult_ChannelDetailsDecodeErrorZ in the error state.
14331  */
14332 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_err(struct LDKDecodeError e);
14333
14334 /**
14335  * Checks if the given object is currently in the success state
14336  */
14337 bool CResult_ChannelDetailsDecodeErrorZ_is_ok(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR o);
14338
14339 /**
14340  * Frees any resources used by the CResult_ChannelDetailsDecodeErrorZ.
14341  */
14342 void CResult_ChannelDetailsDecodeErrorZ_free(struct LDKCResult_ChannelDetailsDecodeErrorZ _res);
14343
14344 /**
14345  * Creates a new CResult_ChannelDetailsDecodeErrorZ which has the same data as `orig`
14346  * but with all dynamically-allocated buffers duplicated in new buffers.
14347  */
14348 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_clone(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR orig);
14349
14350 /**
14351  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ in the success state.
14352  */
14353 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_ok(struct LDKPhantomRouteHints o);
14354
14355 /**
14356  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ in the error state.
14357  */
14358 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_err(struct LDKDecodeError e);
14359
14360 /**
14361  * Checks if the given object is currently in the success state
14362  */
14363 bool CResult_PhantomRouteHintsDecodeErrorZ_is_ok(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR o);
14364
14365 /**
14366  * Frees any resources used by the CResult_PhantomRouteHintsDecodeErrorZ.
14367  */
14368 void CResult_PhantomRouteHintsDecodeErrorZ_free(struct LDKCResult_PhantomRouteHintsDecodeErrorZ _res);
14369
14370 /**
14371  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14372  */
14373 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
14374
14375 /**
14376  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
14377  */
14378 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
14379
14380 /**
14381  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
14382  */
14383 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
14384
14385 /**
14386  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
14387  */
14388 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
14389
14390 /**
14391  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
14392  */
14393 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
14394
14395 /**
14396  * Checks if the given object is currently in the success state
14397  */
14398 bool CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR o);
14399
14400 /**
14401  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
14402  */
14403 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
14404
14405 /**
14406  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
14407  */
14408 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
14409
14410 /**
14411  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
14412  */
14413 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
14414
14415 /**
14416  * Checks if the given object is currently in the success state
14417  */
14418 bool CResult_ChannelConfigDecodeErrorZ_is_ok(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR o);
14419
14420 /**
14421  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
14422  */
14423 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
14424
14425 /**
14426  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
14427  * but with all dynamically-allocated buffers duplicated in new buffers.
14428  */
14429 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
14430
14431 /**
14432  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
14433  */
14434 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
14435
14436 /**
14437  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
14438  */
14439 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
14440
14441 /**
14442  * Checks if the given object is currently in the success state
14443  */
14444 bool CResult_OutPointDecodeErrorZ_is_ok(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR o);
14445
14446 /**
14447  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
14448  */
14449 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
14450
14451 /**
14452  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
14453  * but with all dynamically-allocated buffers duplicated in new buffers.
14454  */
14455 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
14456
14457 /**
14458  * Constructs a new COption_TypeZ containing a crate::lightning::ln::wire::Type
14459  */
14460 struct LDKCOption_TypeZ COption_TypeZ_some(struct LDKType o);
14461
14462 /**
14463  * Constructs a new COption_TypeZ containing nothing
14464  */
14465 struct LDKCOption_TypeZ COption_TypeZ_none(void);
14466
14467 /**
14468  * Frees any resources associated with the crate::lightning::ln::wire::Type, if we are in the Some state
14469  */
14470 void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
14471
14472 /**
14473  * Creates a new CResult_COption_TypeZDecodeErrorZ in the success state.
14474  */
14475 struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_ok(struct LDKCOption_TypeZ o);
14476
14477 /**
14478  * Creates a new CResult_COption_TypeZDecodeErrorZ in the error state.
14479  */
14480 struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_err(struct LDKDecodeError e);
14481
14482 /**
14483  * Checks if the given object is currently in the success state
14484  */
14485 bool CResult_COption_TypeZDecodeErrorZ_is_ok(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR o);
14486
14487 /**
14488  * Frees any resources used by the CResult_COption_TypeZDecodeErrorZ.
14489  */
14490 void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
14491
14492 /**
14493  * Creates a new CResult_PaymentIdPaymentErrorZ in the success state.
14494  */
14495 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_ok(struct LDKThirtyTwoBytes o);
14496
14497 /**
14498  * Creates a new CResult_PaymentIdPaymentErrorZ in the error state.
14499  */
14500 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_err(struct LDKPaymentError e);
14501
14502 /**
14503  * Checks if the given object is currently in the success state
14504  */
14505 bool CResult_PaymentIdPaymentErrorZ_is_ok(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR o);
14506
14507 /**
14508  * Frees any resources used by the CResult_PaymentIdPaymentErrorZ.
14509  */
14510 void CResult_PaymentIdPaymentErrorZ_free(struct LDKCResult_PaymentIdPaymentErrorZ _res);
14511
14512 /**
14513  * Creates a new CResult_PaymentIdPaymentErrorZ which has the same data as `orig`
14514  * but with all dynamically-allocated buffers duplicated in new buffers.
14515  */
14516 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_clone(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR orig);
14517
14518 /**
14519  * Creates a new CResult_SiPrefixNoneZ in the success state.
14520  */
14521 struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_ok(enum LDKSiPrefix o);
14522
14523 /**
14524  * Creates a new CResult_SiPrefixNoneZ in the error state.
14525  */
14526 struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_err(void);
14527
14528 /**
14529  * Checks if the given object is currently in the success state
14530  */
14531 bool CResult_SiPrefixNoneZ_is_ok(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR o);
14532
14533 /**
14534  * Frees any resources used by the CResult_SiPrefixNoneZ.
14535  */
14536 void CResult_SiPrefixNoneZ_free(struct LDKCResult_SiPrefixNoneZ _res);
14537
14538 /**
14539  * Creates a new CResult_SiPrefixNoneZ which has the same data as `orig`
14540  * but with all dynamically-allocated buffers duplicated in new buffers.
14541  */
14542 struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_clone(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR orig);
14543
14544 /**
14545  * Creates a new CResult_InvoiceNoneZ in the success state.
14546  */
14547 struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_ok(struct LDKInvoice o);
14548
14549 /**
14550  * Creates a new CResult_InvoiceNoneZ in the error state.
14551  */
14552 struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_err(void);
14553
14554 /**
14555  * Checks if the given object is currently in the success state
14556  */
14557 bool CResult_InvoiceNoneZ_is_ok(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR o);
14558
14559 /**
14560  * Frees any resources used by the CResult_InvoiceNoneZ.
14561  */
14562 void CResult_InvoiceNoneZ_free(struct LDKCResult_InvoiceNoneZ _res);
14563
14564 /**
14565  * Creates a new CResult_InvoiceNoneZ which has the same data as `orig`
14566  * but with all dynamically-allocated buffers duplicated in new buffers.
14567  */
14568 struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_clone(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR orig);
14569
14570 /**
14571  * Creates a new CResult_SignedRawInvoiceNoneZ in the success state.
14572  */
14573 struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_ok(struct LDKSignedRawInvoice o);
14574
14575 /**
14576  * Creates a new CResult_SignedRawInvoiceNoneZ in the error state.
14577  */
14578 struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_err(void);
14579
14580 /**
14581  * Checks if the given object is currently in the success state
14582  */
14583 bool CResult_SignedRawInvoiceNoneZ_is_ok(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR o);
14584
14585 /**
14586  * Frees any resources used by the CResult_SignedRawInvoiceNoneZ.
14587  */
14588 void CResult_SignedRawInvoiceNoneZ_free(struct LDKCResult_SignedRawInvoiceNoneZ _res);
14589
14590 /**
14591  * Creates a new CResult_SignedRawInvoiceNoneZ which has the same data as `orig`
14592  * but with all dynamically-allocated buffers duplicated in new buffers.
14593  */
14594 struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_clone(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR orig);
14595
14596 /**
14597  * Creates a new tuple which has the same data as `orig`
14598  * but with all dynamically-allocated buffers duplicated in new buffers.
14599  */
14600 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
14601
14602 /**
14603  * Creates a new C3Tuple_RawInvoice_u832InvoiceSignatureZ from the contained elements.
14604  */
14605 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(struct LDKRawInvoice a, struct LDKThirtyTwoBytes b, struct LDKInvoiceSignature c);
14606
14607 /**
14608  * Frees any resources used by the C3Tuple_RawInvoice_u832InvoiceSignatureZ.
14609  */
14610 void C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res);
14611
14612 /**
14613  * Creates a new CResult_PayeePubKeyErrorZ in the success state.
14614  */
14615 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_ok(struct LDKPayeePubKey o);
14616
14617 /**
14618  * Creates a new CResult_PayeePubKeyErrorZ in the error state.
14619  */
14620 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_err(enum LDKSecp256k1Error e);
14621
14622 /**
14623  * Checks if the given object is currently in the success state
14624  */
14625 bool CResult_PayeePubKeyErrorZ_is_ok(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR o);
14626
14627 /**
14628  * Frees any resources used by the CResult_PayeePubKeyErrorZ.
14629  */
14630 void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
14631
14632 /**
14633  * Creates a new CResult_PayeePubKeyErrorZ which has the same data as `orig`
14634  * but with all dynamically-allocated buffers duplicated in new buffers.
14635  */
14636 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
14637
14638 /**
14639  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14640  */
14641 void CVec_PrivateRouteZ_free(struct LDKCVec_PrivateRouteZ _res);
14642
14643 /**
14644  * Creates a new CResult_PositiveTimestampCreationErrorZ in the success state.
14645  */
14646 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_ok(struct LDKPositiveTimestamp o);
14647
14648 /**
14649  * Creates a new CResult_PositiveTimestampCreationErrorZ in the error state.
14650  */
14651 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_err(enum LDKCreationError e);
14652
14653 /**
14654  * Checks if the given object is currently in the success state
14655  */
14656 bool CResult_PositiveTimestampCreationErrorZ_is_ok(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR o);
14657
14658 /**
14659  * Frees any resources used by the CResult_PositiveTimestampCreationErrorZ.
14660  */
14661 void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
14662
14663 /**
14664  * Creates a new CResult_PositiveTimestampCreationErrorZ which has the same data as `orig`
14665  * but with all dynamically-allocated buffers duplicated in new buffers.
14666  */
14667 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
14668
14669 /**
14670  * Creates a new CResult_NoneSemanticErrorZ in the success state.
14671  */
14672 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_ok(void);
14673
14674 /**
14675  * Creates a new CResult_NoneSemanticErrorZ in the error state.
14676  */
14677 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_err(enum LDKSemanticError e);
14678
14679 /**
14680  * Checks if the given object is currently in the success state
14681  */
14682 bool CResult_NoneSemanticErrorZ_is_ok(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR o);
14683
14684 /**
14685  * Frees any resources used by the CResult_NoneSemanticErrorZ.
14686  */
14687 void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
14688
14689 /**
14690  * Creates a new CResult_NoneSemanticErrorZ which has the same data as `orig`
14691  * but with all dynamically-allocated buffers duplicated in new buffers.
14692  */
14693 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
14694
14695 /**
14696  * Creates a new CResult_InvoiceSemanticErrorZ in the success state.
14697  */
14698 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_ok(struct LDKInvoice o);
14699
14700 /**
14701  * Creates a new CResult_InvoiceSemanticErrorZ in the error state.
14702  */
14703 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_err(enum LDKSemanticError e);
14704
14705 /**
14706  * Checks if the given object is currently in the success state
14707  */
14708 bool CResult_InvoiceSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR o);
14709
14710 /**
14711  * Frees any resources used by the CResult_InvoiceSemanticErrorZ.
14712  */
14713 void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
14714
14715 /**
14716  * Creates a new CResult_InvoiceSemanticErrorZ which has the same data as `orig`
14717  * but with all dynamically-allocated buffers duplicated in new buffers.
14718  */
14719 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
14720
14721 /**
14722  * Creates a new CResult_DescriptionCreationErrorZ in the success state.
14723  */
14724 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_ok(struct LDKDescription o);
14725
14726 /**
14727  * Creates a new CResult_DescriptionCreationErrorZ in the error state.
14728  */
14729 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_err(enum LDKCreationError e);
14730
14731 /**
14732  * Checks if the given object is currently in the success state
14733  */
14734 bool CResult_DescriptionCreationErrorZ_is_ok(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR o);
14735
14736 /**
14737  * Frees any resources used by the CResult_DescriptionCreationErrorZ.
14738  */
14739 void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
14740
14741 /**
14742  * Creates a new CResult_DescriptionCreationErrorZ which has the same data as `orig`
14743  * but with all dynamically-allocated buffers duplicated in new buffers.
14744  */
14745 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
14746
14747 /**
14748  * Creates a new CResult_PrivateRouteCreationErrorZ in the success state.
14749  */
14750 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
14751
14752 /**
14753  * Creates a new CResult_PrivateRouteCreationErrorZ in the error state.
14754  */
14755 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
14756
14757 /**
14758  * Checks if the given object is currently in the success state
14759  */
14760 bool CResult_PrivateRouteCreationErrorZ_is_ok(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR o);
14761
14762 /**
14763  * Frees any resources used by the CResult_PrivateRouteCreationErrorZ.
14764  */
14765 void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
14766
14767 /**
14768  * Creates a new CResult_PrivateRouteCreationErrorZ which has the same data as `orig`
14769  * but with all dynamically-allocated buffers duplicated in new buffers.
14770  */
14771 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
14772
14773 /**
14774  * Creates a new CResult_StringErrorZ in the success state.
14775  */
14776 struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
14777
14778 /**
14779  * Creates a new CResult_StringErrorZ in the error state.
14780  */
14781 struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
14782
14783 /**
14784  * Checks if the given object is currently in the success state
14785  */
14786 bool CResult_StringErrorZ_is_ok(const struct LDKCResult_StringErrorZ *NONNULL_PTR o);
14787
14788 /**
14789  * Frees any resources used by the CResult_StringErrorZ.
14790  */
14791 void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
14792
14793 /**
14794  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
14795  */
14796 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
14797
14798 /**
14799  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
14800  */
14801 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
14802
14803 /**
14804  * Checks if the given object is currently in the success state
14805  */
14806 bool CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR o);
14807
14808 /**
14809  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
14810  */
14811 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
14812
14813 /**
14814  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
14815  * but with all dynamically-allocated buffers duplicated in new buffers.
14816  */
14817 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
14818
14819 /**
14820  * Constructs a new COption_MonitorEventZ containing a crate::lightning::chain::channelmonitor::MonitorEvent
14821  */
14822 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_some(struct LDKMonitorEvent o);
14823
14824 /**
14825  * Constructs a new COption_MonitorEventZ containing nothing
14826  */
14827 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_none(void);
14828
14829 /**
14830  * Frees any resources associated with the crate::lightning::chain::channelmonitor::MonitorEvent, if we are in the Some state
14831  */
14832 void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
14833
14834 /**
14835  * Creates a new COption_MonitorEventZ which has the same data as `orig`
14836  * but with all dynamically-allocated buffers duplicated in new buffers.
14837  */
14838 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
14839
14840 /**
14841  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ in the success state.
14842  */
14843 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_ok(struct LDKCOption_MonitorEventZ o);
14844
14845 /**
14846  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ in the error state.
14847  */
14848 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_err(struct LDKDecodeError e);
14849
14850 /**
14851  * Checks if the given object is currently in the success state
14852  */
14853 bool CResult_COption_MonitorEventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR o);
14854
14855 /**
14856  * Frees any resources used by the CResult_COption_MonitorEventZDecodeErrorZ.
14857  */
14858 void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
14859
14860 /**
14861  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ which has the same data as `orig`
14862  * but with all dynamically-allocated buffers duplicated in new buffers.
14863  */
14864 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
14865
14866 /**
14867  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
14868  */
14869 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
14870
14871 /**
14872  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
14873  */
14874 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
14875
14876 /**
14877  * Checks if the given object is currently in the success state
14878  */
14879 bool CResult_HTLCUpdateDecodeErrorZ_is_ok(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR o);
14880
14881 /**
14882  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
14883  */
14884 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
14885
14886 /**
14887  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
14888  * but with all dynamically-allocated buffers duplicated in new buffers.
14889  */
14890 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
14891
14892 /**
14893  * Creates a new tuple which has the same data as `orig`
14894  * but with all dynamically-allocated buffers duplicated in new buffers.
14895  */
14896 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
14897
14898 /**
14899  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
14900  */
14901 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
14902
14903 /**
14904  * Frees any resources used by the C2Tuple_OutPointScriptZ.
14905  */
14906 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
14907
14908 /**
14909  * Creates a new tuple which has the same data as `orig`
14910  * but with all dynamically-allocated buffers duplicated in new buffers.
14911  */
14912 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
14913
14914 /**
14915  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
14916  */
14917 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
14918
14919 /**
14920  * Frees any resources used by the C2Tuple_u32ScriptZ.
14921  */
14922 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
14923
14924 /**
14925  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14926  */
14927 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
14928
14929 /**
14930  * Creates a new tuple which has the same data as `orig`
14931  * but with all dynamically-allocated buffers duplicated in new buffers.
14932  */
14933 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
14934
14935 /**
14936  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
14937  */
14938 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
14939
14940 /**
14941  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
14942  */
14943 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
14944
14945 /**
14946  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14947  */
14948 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
14949
14950 /**
14951  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14952  */
14953 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
14954
14955 /**
14956  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14957  */
14958 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
14959
14960 /**
14961  * Creates a new tuple which has the same data as `orig`
14962  * but with all dynamically-allocated buffers duplicated in new buffers.
14963  */
14964 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
14965
14966 /**
14967  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
14968  */
14969 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
14970
14971 /**
14972  * Frees any resources used by the C2Tuple_u32TxOutZ.
14973  */
14974 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
14975
14976 /**
14977  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14978  */
14979 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
14980
14981 /**
14982  * Creates a new tuple which has the same data as `orig`
14983  * but with all dynamically-allocated buffers duplicated in new buffers.
14984  */
14985 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
14986
14987 /**
14988  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
14989  */
14990 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
14991
14992 /**
14993  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
14994  */
14995 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
14996
14997 /**
14998  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14999  */
15000 void CVec_TransactionOutputsZ_free(struct LDKCVec_TransactionOutputsZ _res);
15001
15002 /**
15003  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15004  */
15005 void CVec_BalanceZ_free(struct LDKCVec_BalanceZ _res);
15006
15007 /**
15008  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
15009  */
15010 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
15011
15012 /**
15013  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
15014  */
15015 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
15016
15017 /**
15018  * Checks if the given object is currently in the success state
15019  */
15020 bool CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR o);
15021
15022 /**
15023  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
15024  */
15025 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
15026
15027 /**
15028  * Creates a new CResult_NoneLightningErrorZ in the success state.
15029  */
15030 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
15031
15032 /**
15033  * Creates a new CResult_NoneLightningErrorZ in the error state.
15034  */
15035 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
15036
15037 /**
15038  * Checks if the given object is currently in the success state
15039  */
15040 bool CResult_NoneLightningErrorZ_is_ok(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR o);
15041
15042 /**
15043  * Frees any resources used by the CResult_NoneLightningErrorZ.
15044  */
15045 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
15046
15047 /**
15048  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
15049  * but with all dynamically-allocated buffers duplicated in new buffers.
15050  */
15051 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
15052
15053 /**
15054  * Creates a new C2Tuple_PublicKeyTypeZ from the contained elements.
15055  */
15056 struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_new(struct LDKPublicKey a, struct LDKType b);
15057
15058 /**
15059  * Frees any resources used by the C2Tuple_PublicKeyTypeZ.
15060  */
15061 void C2Tuple_PublicKeyTypeZ_free(struct LDKC2Tuple_PublicKeyTypeZ _res);
15062
15063 /**
15064  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15065  */
15066 void CVec_C2Tuple_PublicKeyTypeZZ_free(struct LDKCVec_C2Tuple_PublicKeyTypeZZ _res);
15067
15068 /**
15069  * Creates a new CResult_boolLightningErrorZ in the success state.
15070  */
15071 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
15072
15073 /**
15074  * Creates a new CResult_boolLightningErrorZ in the error state.
15075  */
15076 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
15077
15078 /**
15079  * Checks if the given object is currently in the success state
15080  */
15081 bool CResult_boolLightningErrorZ_is_ok(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR o);
15082
15083 /**
15084  * Frees any resources used by the CResult_boolLightningErrorZ.
15085  */
15086 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
15087
15088 /**
15089  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
15090  * but with all dynamically-allocated buffers duplicated in new buffers.
15091  */
15092 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
15093
15094 /**
15095  * Creates a new tuple which has the same data as `orig`
15096  * but with all dynamically-allocated buffers duplicated in new buffers.
15097  */
15098 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
15099
15100 /**
15101  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
15102  */
15103 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
15104
15105 /**
15106  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
15107  */
15108 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
15109
15110 /**
15111  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15112  */
15113 void CVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
15114
15115 /**
15116  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15117  */
15118 void CVec_NodeAnnouncementZ_free(struct LDKCVec_NodeAnnouncementZ _res);
15119
15120 /**
15121  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15122  */
15123 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
15124
15125 /**
15126  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
15127  */
15128 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
15129
15130 /**
15131  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
15132  */
15133 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
15134
15135 /**
15136  * Checks if the given object is currently in the success state
15137  */
15138 bool CResult_CVec_u8ZPeerHandleErrorZ_is_ok(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR o);
15139
15140 /**
15141  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
15142  */
15143 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
15144
15145 /**
15146  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
15147  * but with all dynamically-allocated buffers duplicated in new buffers.
15148  */
15149 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
15150
15151 /**
15152  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
15153  */
15154 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
15155
15156 /**
15157  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
15158  */
15159 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
15160
15161 /**
15162  * Checks if the given object is currently in the success state
15163  */
15164 bool CResult_NonePeerHandleErrorZ_is_ok(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR o);
15165
15166 /**
15167  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
15168  */
15169 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
15170
15171 /**
15172  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
15173  * but with all dynamically-allocated buffers duplicated in new buffers.
15174  */
15175 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
15176
15177 /**
15178  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
15179  */
15180 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
15181
15182 /**
15183  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
15184  */
15185 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
15186
15187 /**
15188  * Checks if the given object is currently in the success state
15189  */
15190 bool CResult_boolPeerHandleErrorZ_is_ok(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR o);
15191
15192 /**
15193  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
15194  */
15195 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
15196
15197 /**
15198  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
15199  * but with all dynamically-allocated buffers duplicated in new buffers.
15200  */
15201 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
15202
15203 /**
15204  * Creates a new CResult_NodeIdDecodeErrorZ in the success state.
15205  */
15206 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_ok(struct LDKNodeId o);
15207
15208 /**
15209  * Creates a new CResult_NodeIdDecodeErrorZ in the error state.
15210  */
15211 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_err(struct LDKDecodeError e);
15212
15213 /**
15214  * Checks if the given object is currently in the success state
15215  */
15216 bool CResult_NodeIdDecodeErrorZ_is_ok(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR o);
15217
15218 /**
15219  * Frees any resources used by the CResult_NodeIdDecodeErrorZ.
15220  */
15221 void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
15222
15223 /**
15224  * Creates a new CResult_NodeIdDecodeErrorZ which has the same data as `orig`
15225  * but with all dynamically-allocated buffers duplicated in new buffers.
15226  */
15227 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
15228
15229 /**
15230  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ in the success state.
15231  */
15232 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_ok(struct LDKCOption_NetworkUpdateZ o);
15233
15234 /**
15235  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ in the error state.
15236  */
15237 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_err(struct LDKDecodeError e);
15238
15239 /**
15240  * Checks if the given object is currently in the success state
15241  */
15242 bool CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR o);
15243
15244 /**
15245  * Frees any resources used by the CResult_COption_NetworkUpdateZDecodeErrorZ.
15246  */
15247 void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
15248
15249 /**
15250  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ which has the same data as `orig`
15251  * but with all dynamically-allocated buffers duplicated in new buffers.
15252  */
15253 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
15254
15255 /**
15256  * Constructs a new COption_AccessZ containing a crate::lightning::chain::Access
15257  */
15258 struct LDKCOption_AccessZ COption_AccessZ_some(struct LDKAccess o);
15259
15260 /**
15261  * Constructs a new COption_AccessZ containing nothing
15262  */
15263 struct LDKCOption_AccessZ COption_AccessZ_none(void);
15264
15265 /**
15266  * Frees any resources associated with the crate::lightning::chain::Access, if we are in the Some state
15267  */
15268 void COption_AccessZ_free(struct LDKCOption_AccessZ _res);
15269
15270 /**
15271  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ in the success state.
15272  */
15273 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_ok(struct LDKChannelUpdateInfo o);
15274
15275 /**
15276  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ in the error state.
15277  */
15278 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_err(struct LDKDecodeError e);
15279
15280 /**
15281  * Checks if the given object is currently in the success state
15282  */
15283 bool CResult_ChannelUpdateInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR o);
15284
15285 /**
15286  * Frees any resources used by the CResult_ChannelUpdateInfoDecodeErrorZ.
15287  */
15288 void CResult_ChannelUpdateInfoDecodeErrorZ_free(struct LDKCResult_ChannelUpdateInfoDecodeErrorZ _res);
15289
15290 /**
15291  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ which has the same data as `orig`
15292  * but with all dynamically-allocated buffers duplicated in new buffers.
15293  */
15294 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR orig);
15295
15296 /**
15297  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
15298  */
15299 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
15300
15301 /**
15302  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
15303  */
15304 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
15305
15306 /**
15307  * Checks if the given object is currently in the success state
15308  */
15309 bool CResult_ChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR o);
15310
15311 /**
15312  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
15313  */
15314 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
15315
15316 /**
15317  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
15318  * but with all dynamically-allocated buffers duplicated in new buffers.
15319  */
15320 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
15321
15322 /**
15323  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
15324  */
15325 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
15326
15327 /**
15328  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
15329  */
15330 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
15331
15332 /**
15333  * Checks if the given object is currently in the success state
15334  */
15335 bool CResult_RoutingFeesDecodeErrorZ_is_ok(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR o);
15336
15337 /**
15338  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
15339  */
15340 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
15341
15342 /**
15343  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
15344  * but with all dynamically-allocated buffers duplicated in new buffers.
15345  */
15346 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
15347
15348 /**
15349  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
15350  */
15351 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
15352
15353 /**
15354  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
15355  */
15356 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
15357
15358 /**
15359  * Checks if the given object is currently in the success state
15360  */
15361 bool CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR o);
15362
15363 /**
15364  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
15365  */
15366 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
15367
15368 /**
15369  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
15370  * but with all dynamically-allocated buffers duplicated in new buffers.
15371  */
15372 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
15373
15374 /**
15375  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15376  */
15377 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
15378
15379 /**
15380  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
15381  */
15382 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
15383
15384 /**
15385  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
15386  */
15387 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
15388
15389 /**
15390  * Checks if the given object is currently in the success state
15391  */
15392 bool CResult_NodeInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR o);
15393
15394 /**
15395  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
15396  */
15397 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
15398
15399 /**
15400  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
15401  * but with all dynamically-allocated buffers duplicated in new buffers.
15402  */
15403 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
15404
15405 /**
15406  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
15407  */
15408 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
15409
15410 /**
15411  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
15412  */
15413 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
15414
15415 /**
15416  * Checks if the given object is currently in the success state
15417  */
15418 bool CResult_NetworkGraphDecodeErrorZ_is_ok(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR o);
15419
15420 /**
15421  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
15422  */
15423 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
15424
15425 /**
15426  * Creates a new CResult_NetworkGraphDecodeErrorZ which has the same data as `orig`
15427  * but with all dynamically-allocated buffers duplicated in new buffers.
15428  */
15429 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
15430
15431 /**
15432  * Constructs a new COption_CVec_NetAddressZZ containing a crate::c_types::derived::CVec_NetAddressZ
15433  */
15434 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_some(struct LDKCVec_NetAddressZ o);
15435
15436 /**
15437  * Constructs a new COption_CVec_NetAddressZZ containing nothing
15438  */
15439 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_none(void);
15440
15441 /**
15442  * Frees any resources associated with the crate::c_types::derived::CVec_NetAddressZ, if we are in the Some state
15443  */
15444 void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
15445
15446 /**
15447  * Creates a new COption_CVec_NetAddressZZ which has the same data as `orig`
15448  * but with all dynamically-allocated buffers duplicated in new buffers.
15449  */
15450 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
15451
15452 /**
15453  * Creates a new CResult_NetAddressDecodeErrorZ in the success state.
15454  */
15455 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
15456
15457 /**
15458  * Creates a new CResult_NetAddressDecodeErrorZ in the error state.
15459  */
15460 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
15461
15462 /**
15463  * Checks if the given object is currently in the success state
15464  */
15465 bool CResult_NetAddressDecodeErrorZ_is_ok(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR o);
15466
15467 /**
15468  * Frees any resources used by the CResult_NetAddressDecodeErrorZ.
15469  */
15470 void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
15471
15472 /**
15473  * Creates a new CResult_NetAddressDecodeErrorZ which has the same data as `orig`
15474  * but with all dynamically-allocated buffers duplicated in new buffers.
15475  */
15476 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
15477
15478 /**
15479  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15480  */
15481 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
15482
15483 /**
15484  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15485  */
15486 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
15487
15488 /**
15489  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15490  */
15491 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
15492
15493 /**
15494  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15495  */
15496 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
15497
15498 /**
15499  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
15500  */
15501 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
15502
15503 /**
15504  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
15505  */
15506 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
15507
15508 /**
15509  * Checks if the given object is currently in the success state
15510  */
15511 bool CResult_AcceptChannelDecodeErrorZ_is_ok(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR o);
15512
15513 /**
15514  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
15515  */
15516 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
15517
15518 /**
15519  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
15520  * but with all dynamically-allocated buffers duplicated in new buffers.
15521  */
15522 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
15523
15524 /**
15525  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
15526  */
15527 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
15528
15529 /**
15530  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
15531  */
15532 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
15533
15534 /**
15535  * Checks if the given object is currently in the success state
15536  */
15537 bool CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR o);
15538
15539 /**
15540  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
15541  */
15542 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
15543
15544 /**
15545  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
15546  * but with all dynamically-allocated buffers duplicated in new buffers.
15547  */
15548 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
15549
15550 /**
15551  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
15552  */
15553 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
15554
15555 /**
15556  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
15557  */
15558 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
15559
15560 /**
15561  * Checks if the given object is currently in the success state
15562  */
15563 bool CResult_ChannelReestablishDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR o);
15564
15565 /**
15566  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
15567  */
15568 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
15569
15570 /**
15571  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
15572  * but with all dynamically-allocated buffers duplicated in new buffers.
15573  */
15574 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
15575
15576 /**
15577  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
15578  */
15579 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
15580
15581 /**
15582  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
15583  */
15584 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
15585
15586 /**
15587  * Checks if the given object is currently in the success state
15588  */
15589 bool CResult_ClosingSignedDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR o);
15590
15591 /**
15592  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
15593  */
15594 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
15595
15596 /**
15597  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
15598  * but with all dynamically-allocated buffers duplicated in new buffers.
15599  */
15600 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
15601
15602 /**
15603  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ in the success state.
15604  */
15605 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(struct LDKClosingSignedFeeRange o);
15606
15607 /**
15608  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ in the error state.
15609  */
15610 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_err(struct LDKDecodeError e);
15611
15612 /**
15613  * Checks if the given object is currently in the success state
15614  */
15615 bool CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR o);
15616
15617 /**
15618  * Frees any resources used by the CResult_ClosingSignedFeeRangeDecodeErrorZ.
15619  */
15620 void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
15621
15622 /**
15623  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ which has the same data as `orig`
15624  * but with all dynamically-allocated buffers duplicated in new buffers.
15625  */
15626 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
15627
15628 /**
15629  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
15630  */
15631 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
15632
15633 /**
15634  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
15635  */
15636 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
15637
15638 /**
15639  * Checks if the given object is currently in the success state
15640  */
15641 bool CResult_CommitmentSignedDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR o);
15642
15643 /**
15644  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
15645  */
15646 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
15647
15648 /**
15649  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
15650  * but with all dynamically-allocated buffers duplicated in new buffers.
15651  */
15652 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
15653
15654 /**
15655  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
15656  */
15657 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
15658
15659 /**
15660  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
15661  */
15662 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
15663
15664 /**
15665  * Checks if the given object is currently in the success state
15666  */
15667 bool CResult_FundingCreatedDecodeErrorZ_is_ok(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR o);
15668
15669 /**
15670  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
15671  */
15672 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
15673
15674 /**
15675  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
15676  * but with all dynamically-allocated buffers duplicated in new buffers.
15677  */
15678 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
15679
15680 /**
15681  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
15682  */
15683 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
15684
15685 /**
15686  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
15687  */
15688 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
15689
15690 /**
15691  * Checks if the given object is currently in the success state
15692  */
15693 bool CResult_FundingSignedDecodeErrorZ_is_ok(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR o);
15694
15695 /**
15696  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
15697  */
15698 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
15699
15700 /**
15701  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
15702  * but with all dynamically-allocated buffers duplicated in new buffers.
15703  */
15704 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
15705
15706 /**
15707  * Creates a new CResult_FundingLockedDecodeErrorZ in the success state.
15708  */
15709 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
15710
15711 /**
15712  * Creates a new CResult_FundingLockedDecodeErrorZ in the error state.
15713  */
15714 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
15715
15716 /**
15717  * Checks if the given object is currently in the success state
15718  */
15719 bool CResult_FundingLockedDecodeErrorZ_is_ok(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR o);
15720
15721 /**
15722  * Frees any resources used by the CResult_FundingLockedDecodeErrorZ.
15723  */
15724 void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
15725
15726 /**
15727  * Creates a new CResult_FundingLockedDecodeErrorZ which has the same data as `orig`
15728  * but with all dynamically-allocated buffers duplicated in new buffers.
15729  */
15730 struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
15731
15732 /**
15733  * Creates a new CResult_InitDecodeErrorZ in the success state.
15734  */
15735 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
15736
15737 /**
15738  * Creates a new CResult_InitDecodeErrorZ in the error state.
15739  */
15740 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
15741
15742 /**
15743  * Checks if the given object is currently in the success state
15744  */
15745 bool CResult_InitDecodeErrorZ_is_ok(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR o);
15746
15747 /**
15748  * Frees any resources used by the CResult_InitDecodeErrorZ.
15749  */
15750 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
15751
15752 /**
15753  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
15754  * but with all dynamically-allocated buffers duplicated in new buffers.
15755  */
15756 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
15757
15758 /**
15759  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
15760  */
15761 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
15762
15763 /**
15764  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
15765  */
15766 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
15767
15768 /**
15769  * Checks if the given object is currently in the success state
15770  */
15771 bool CResult_OpenChannelDecodeErrorZ_is_ok(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR o);
15772
15773 /**
15774  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
15775  */
15776 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
15777
15778 /**
15779  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
15780  * but with all dynamically-allocated buffers duplicated in new buffers.
15781  */
15782 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
15783
15784 /**
15785  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
15786  */
15787 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
15788
15789 /**
15790  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
15791  */
15792 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
15793
15794 /**
15795  * Checks if the given object is currently in the success state
15796  */
15797 bool CResult_RevokeAndACKDecodeErrorZ_is_ok(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR o);
15798
15799 /**
15800  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
15801  */
15802 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
15803
15804 /**
15805  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
15806  * but with all dynamically-allocated buffers duplicated in new buffers.
15807  */
15808 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
15809
15810 /**
15811  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
15812  */
15813 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
15814
15815 /**
15816  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
15817  */
15818 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
15819
15820 /**
15821  * Checks if the given object is currently in the success state
15822  */
15823 bool CResult_ShutdownDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR o);
15824
15825 /**
15826  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
15827  */
15828 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
15829
15830 /**
15831  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
15832  * but with all dynamically-allocated buffers duplicated in new buffers.
15833  */
15834 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
15835
15836 /**
15837  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
15838  */
15839 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
15840
15841 /**
15842  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
15843  */
15844 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
15845
15846 /**
15847  * Checks if the given object is currently in the success state
15848  */
15849 bool CResult_UpdateFailHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR o);
15850
15851 /**
15852  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
15853  */
15854 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
15855
15856 /**
15857  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
15858  * but with all dynamically-allocated buffers duplicated in new buffers.
15859  */
15860 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
15861
15862 /**
15863  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
15864  */
15865 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
15866
15867 /**
15868  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
15869  */
15870 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
15871
15872 /**
15873  * Checks if the given object is currently in the success state
15874  */
15875 bool CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR o);
15876
15877 /**
15878  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
15879  */
15880 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
15881
15882 /**
15883  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
15884  * but with all dynamically-allocated buffers duplicated in new buffers.
15885  */
15886 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
15887
15888 /**
15889  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
15890  */
15891 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
15892
15893 /**
15894  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
15895  */
15896 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
15897
15898 /**
15899  * Checks if the given object is currently in the success state
15900  */
15901 bool CResult_UpdateFeeDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR o);
15902
15903 /**
15904  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
15905  */
15906 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
15907
15908 /**
15909  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
15910  * but with all dynamically-allocated buffers duplicated in new buffers.
15911  */
15912 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
15913
15914 /**
15915  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
15916  */
15917 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
15918
15919 /**
15920  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
15921  */
15922 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
15923
15924 /**
15925  * Checks if the given object is currently in the success state
15926  */
15927 bool CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR o);
15928
15929 /**
15930  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
15931  */
15932 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
15933
15934 /**
15935  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
15936  * but with all dynamically-allocated buffers duplicated in new buffers.
15937  */
15938 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
15939
15940 /**
15941  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
15942  */
15943 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
15944
15945 /**
15946  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
15947  */
15948 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
15949
15950 /**
15951  * Checks if the given object is currently in the success state
15952  */
15953 bool CResult_UpdateAddHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR o);
15954
15955 /**
15956  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
15957  */
15958 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
15959
15960 /**
15961  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
15962  * but with all dynamically-allocated buffers duplicated in new buffers.
15963  */
15964 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
15965
15966 /**
15967  * Creates a new CResult_PingDecodeErrorZ in the success state.
15968  */
15969 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
15970
15971 /**
15972  * Creates a new CResult_PingDecodeErrorZ in the error state.
15973  */
15974 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
15975
15976 /**
15977  * Checks if the given object is currently in the success state
15978  */
15979 bool CResult_PingDecodeErrorZ_is_ok(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR o);
15980
15981 /**
15982  * Frees any resources used by the CResult_PingDecodeErrorZ.
15983  */
15984 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
15985
15986 /**
15987  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
15988  * but with all dynamically-allocated buffers duplicated in new buffers.
15989  */
15990 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
15991
15992 /**
15993  * Creates a new CResult_PongDecodeErrorZ in the success state.
15994  */
15995 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
15996
15997 /**
15998  * Creates a new CResult_PongDecodeErrorZ in the error state.
15999  */
16000 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
16001
16002 /**
16003  * Checks if the given object is currently in the success state
16004  */
16005 bool CResult_PongDecodeErrorZ_is_ok(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR o);
16006
16007 /**
16008  * Frees any resources used by the CResult_PongDecodeErrorZ.
16009  */
16010 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
16011
16012 /**
16013  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
16014  * but with all dynamically-allocated buffers duplicated in new buffers.
16015  */
16016 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
16017
16018 /**
16019  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
16020  */
16021 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
16022
16023 /**
16024  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
16025  */
16026 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16027
16028 /**
16029  * Checks if the given object is currently in the success state
16030  */
16031 bool CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
16032
16033 /**
16034  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
16035  */
16036 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
16037
16038 /**
16039  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
16040  * but with all dynamically-allocated buffers duplicated in new buffers.
16041  */
16042 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16043
16044 /**
16045  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
16046  */
16047 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
16048
16049 /**
16050  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
16051  */
16052 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16053
16054 /**
16055  * Checks if the given object is currently in the success state
16056  */
16057 bool CResult_ChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
16058
16059 /**
16060  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
16061  */
16062 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
16063
16064 /**
16065  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
16066  * but with all dynamically-allocated buffers duplicated in new buffers.
16067  */
16068 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16069
16070 /**
16071  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
16072  */
16073 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
16074
16075 /**
16076  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
16077  */
16078 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
16079
16080 /**
16081  * Checks if the given object is currently in the success state
16082  */
16083 bool CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR o);
16084
16085 /**
16086  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
16087  */
16088 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
16089
16090 /**
16091  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
16092  * but with all dynamically-allocated buffers duplicated in new buffers.
16093  */
16094 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
16095
16096 /**
16097  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
16098  */
16099 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
16100
16101 /**
16102  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
16103  */
16104 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
16105
16106 /**
16107  * Checks if the given object is currently in the success state
16108  */
16109 bool CResult_ChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR o);
16110
16111 /**
16112  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
16113  */
16114 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
16115
16116 /**
16117  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
16118  * but with all dynamically-allocated buffers duplicated in new buffers.
16119  */
16120 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
16121
16122 /**
16123  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
16124  */
16125 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
16126
16127 /**
16128  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
16129  */
16130 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
16131
16132 /**
16133  * Checks if the given object is currently in the success state
16134  */
16135 bool CResult_ErrorMessageDecodeErrorZ_is_ok(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR o);
16136
16137 /**
16138  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
16139  */
16140 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
16141
16142 /**
16143  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
16144  * but with all dynamically-allocated buffers duplicated in new buffers.
16145  */
16146 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
16147
16148 /**
16149  * Creates a new CResult_WarningMessageDecodeErrorZ in the success state.
16150  */
16151 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_ok(struct LDKWarningMessage o);
16152
16153 /**
16154  * Creates a new CResult_WarningMessageDecodeErrorZ in the error state.
16155  */
16156 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_err(struct LDKDecodeError e);
16157
16158 /**
16159  * Checks if the given object is currently in the success state
16160  */
16161 bool CResult_WarningMessageDecodeErrorZ_is_ok(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR o);
16162
16163 /**
16164  * Frees any resources used by the CResult_WarningMessageDecodeErrorZ.
16165  */
16166 void CResult_WarningMessageDecodeErrorZ_free(struct LDKCResult_WarningMessageDecodeErrorZ _res);
16167
16168 /**
16169  * Creates a new CResult_WarningMessageDecodeErrorZ which has the same data as `orig`
16170  * but with all dynamically-allocated buffers duplicated in new buffers.
16171  */
16172 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_clone(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR orig);
16173
16174 /**
16175  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
16176  */
16177 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
16178
16179 /**
16180  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
16181  */
16182 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16183
16184 /**
16185  * Checks if the given object is currently in the success state
16186  */
16187 bool CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
16188
16189 /**
16190  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
16191  */
16192 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
16193
16194 /**
16195  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
16196  * but with all dynamically-allocated buffers duplicated in new buffers.
16197  */
16198 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16199
16200 /**
16201  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
16202  */
16203 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
16204
16205 /**
16206  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
16207  */
16208 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
16209
16210 /**
16211  * Checks if the given object is currently in the success state
16212  */
16213 bool CResult_NodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
16214
16215 /**
16216  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
16217  */
16218 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
16219
16220 /**
16221  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
16222  * but with all dynamically-allocated buffers duplicated in new buffers.
16223  */
16224 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
16225
16226 /**
16227  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
16228  */
16229 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
16230
16231 /**
16232  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
16233  */
16234 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
16235
16236 /**
16237  * Checks if the given object is currently in the success state
16238  */
16239 bool CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR o);
16240
16241 /**
16242  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
16243  */
16244 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
16245
16246 /**
16247  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
16248  * but with all dynamically-allocated buffers duplicated in new buffers.
16249  */
16250 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
16251
16252 /**
16253  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
16254  */
16255 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
16256
16257 /**
16258  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
16259  */
16260 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
16261
16262 /**
16263  * Checks if the given object is currently in the success state
16264  */
16265 bool CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR o);
16266
16267 /**
16268  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
16269  */
16270 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
16271
16272 /**
16273  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
16274  * but with all dynamically-allocated buffers duplicated in new buffers.
16275  */
16276 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
16277
16278 /**
16279  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
16280  */
16281 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
16282
16283 /**
16284  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
16285  */
16286 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
16287
16288 /**
16289  * Checks if the given object is currently in the success state
16290  */
16291 bool CResult_QueryChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR o);
16292
16293 /**
16294  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
16295  */
16296 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
16297
16298 /**
16299  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
16300  * but with all dynamically-allocated buffers duplicated in new buffers.
16301  */
16302 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
16303
16304 /**
16305  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
16306  */
16307 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
16308
16309 /**
16310  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
16311  */
16312 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
16313
16314 /**
16315  * Checks if the given object is currently in the success state
16316  */
16317 bool CResult_ReplyChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR o);
16318
16319 /**
16320  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
16321  */
16322 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
16323
16324 /**
16325  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
16326  * but with all dynamically-allocated buffers duplicated in new buffers.
16327  */
16328 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
16329
16330 /**
16331  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
16332  */
16333 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
16334
16335 /**
16336  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
16337  */
16338 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
16339
16340 /**
16341  * Checks if the given object is currently in the success state
16342  */
16343 bool CResult_GossipTimestampFilterDecodeErrorZ_is_ok(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR o);
16344
16345 /**
16346  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
16347  */
16348 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
16349
16350 /**
16351  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
16352  * but with all dynamically-allocated buffers duplicated in new buffers.
16353  */
16354 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
16355
16356 /**
16357  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16358  */
16359 void CVec_PhantomRouteHintsZ_free(struct LDKCVec_PhantomRouteHintsZ _res);
16360
16361 /**
16362  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the success state.
16363  */
16364 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
16365
16366 /**
16367  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the error state.
16368  */
16369 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
16370
16371 /**
16372  * Checks if the given object is currently in the success state
16373  */
16374 bool CResult_InvoiceSignOrCreationErrorZ_is_ok(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR o);
16375
16376 /**
16377  * Frees any resources used by the CResult_InvoiceSignOrCreationErrorZ.
16378  */
16379 void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
16380
16381 /**
16382  * Creates a new CResult_InvoiceSignOrCreationErrorZ which has the same data as `orig`
16383  * but with all dynamically-allocated buffers duplicated in new buffers.
16384  */
16385 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
16386
16387 /**
16388  * Constructs a new COption_FilterZ containing a crate::lightning::chain::Filter
16389  */
16390 struct LDKCOption_FilterZ COption_FilterZ_some(struct LDKFilter o);
16391
16392 /**
16393  * Constructs a new COption_FilterZ containing nothing
16394  */
16395 struct LDKCOption_FilterZ COption_FilterZ_none(void);
16396
16397 /**
16398  * Frees any resources associated with the crate::lightning::chain::Filter, if we are in the Some state
16399  */
16400 void COption_FilterZ_free(struct LDKCOption_FilterZ _res);
16401
16402 /**
16403  * Creates a new CResult_LockedChannelMonitorNoneZ in the success state.
16404  */
16405 struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_ok(struct LDKLockedChannelMonitor o);
16406
16407 /**
16408  * Creates a new CResult_LockedChannelMonitorNoneZ in the error state.
16409  */
16410 struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_err(void);
16411
16412 /**
16413  * Checks if the given object is currently in the success state
16414  */
16415 bool CResult_LockedChannelMonitorNoneZ_is_ok(const struct LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR o);
16416
16417 /**
16418  * Frees any resources used by the CResult_LockedChannelMonitorNoneZ.
16419  */
16420 void CResult_LockedChannelMonitorNoneZ_free(struct LDKCResult_LockedChannelMonitorNoneZ _res);
16421
16422 /**
16423  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16424  */
16425 void CVec_OutPointZ_free(struct LDKCVec_OutPointZ _res);
16426
16427 /**
16428  * Frees any resources used by the PaymentPurpose
16429  */
16430 void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
16431
16432 /**
16433  * Creates a copy of the PaymentPurpose
16434  */
16435 struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
16436
16437 /**
16438  * Utility method to constructs a new InvoicePayment-variant PaymentPurpose
16439  */
16440 struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret);
16441
16442 /**
16443  * Utility method to constructs a new SpontaneousPayment-variant PaymentPurpose
16444  */
16445 struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
16446
16447 /**
16448  * Frees any resources used by the ClosureReason
16449  */
16450 void ClosureReason_free(struct LDKClosureReason this_ptr);
16451
16452 /**
16453  * Creates a copy of the ClosureReason
16454  */
16455 struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
16456
16457 /**
16458  * Utility method to constructs a new CounterpartyForceClosed-variant ClosureReason
16459  */
16460 struct LDKClosureReason ClosureReason_counterparty_force_closed(struct LDKStr peer_msg);
16461
16462 /**
16463  * Utility method to constructs a new HolderForceClosed-variant ClosureReason
16464  */
16465 struct LDKClosureReason ClosureReason_holder_force_closed(void);
16466
16467 /**
16468  * Utility method to constructs a new CooperativeClosure-variant ClosureReason
16469  */
16470 struct LDKClosureReason ClosureReason_cooperative_closure(void);
16471
16472 /**
16473  * Utility method to constructs a new CommitmentTxConfirmed-variant ClosureReason
16474  */
16475 struct LDKClosureReason ClosureReason_commitment_tx_confirmed(void);
16476
16477 /**
16478  * Utility method to constructs a new FundingTimedOut-variant ClosureReason
16479  */
16480 struct LDKClosureReason ClosureReason_funding_timed_out(void);
16481
16482 /**
16483  * Utility method to constructs a new ProcessingError-variant ClosureReason
16484  */
16485 struct LDKClosureReason ClosureReason_processing_error(struct LDKStr err);
16486
16487 /**
16488  * Utility method to constructs a new DisconnectedPeer-variant ClosureReason
16489  */
16490 struct LDKClosureReason ClosureReason_disconnected_peer(void);
16491
16492 /**
16493  * Utility method to constructs a new OutdatedChannelManager-variant ClosureReason
16494  */
16495 struct LDKClosureReason ClosureReason_outdated_channel_manager(void);
16496
16497 /**
16498  * Serialize the ClosureReason object into a byte array which can be read by ClosureReason_read
16499  */
16500 struct LDKCVec_u8Z ClosureReason_write(const struct LDKClosureReason *NONNULL_PTR obj);
16501
16502 /**
16503  * Read a ClosureReason from a byte array, created by ClosureReason_write
16504  */
16505 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ ClosureReason_read(struct LDKu8slice ser);
16506
16507 /**
16508  * Frees any resources used by the Event
16509  */
16510 void Event_free(struct LDKEvent this_ptr);
16511
16512 /**
16513  * Creates a copy of the Event
16514  */
16515 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
16516
16517 /**
16518  * Utility method to constructs a new FundingGenerationReady-variant Event
16519  */
16520 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);
16521
16522 /**
16523  * Utility method to constructs a new PaymentReceived-variant Event
16524  */
16525 struct LDKEvent Event_payment_received(struct LDKThirtyTwoBytes payment_hash, uint64_t amt, struct LDKPaymentPurpose purpose);
16526
16527 /**
16528  * Utility method to constructs a new PaymentSent-variant Event
16529  */
16530 struct LDKEvent Event_payment_sent(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z fee_paid_msat);
16531
16532 /**
16533  * Utility method to constructs a new PaymentPathFailed-variant Event
16534  */
16535 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);
16536
16537 /**
16538  * Utility method to constructs a new PaymentFailed-variant Event
16539  */
16540 struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash);
16541
16542 /**
16543  * Utility method to constructs a new PendingHTLCsForwardable-variant Event
16544  */
16545 struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
16546
16547 /**
16548  * Utility method to constructs a new SpendableOutputs-variant Event
16549  */
16550 struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
16551
16552 /**
16553  * Utility method to constructs a new PaymentForwarded-variant Event
16554  */
16555 struct LDKEvent Event_payment_forwarded(struct LDKCOption_u64Z fee_earned_msat, bool claim_from_onchain_tx);
16556
16557 /**
16558  * Utility method to constructs a new ChannelClosed-variant Event
16559  */
16560 struct LDKEvent Event_channel_closed(struct LDKThirtyTwoBytes channel_id, uint64_t user_channel_id, struct LDKClosureReason reason);
16561
16562 /**
16563  * Utility method to constructs a new DiscardFunding-variant Event
16564  */
16565 struct LDKEvent Event_discard_funding(struct LDKThirtyTwoBytes channel_id, struct LDKTransaction transaction);
16566
16567 /**
16568  * Utility method to constructs a new PaymentPathSuccessful-variant Event
16569  */
16570 struct LDKEvent Event_payment_path_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
16571
16572 /**
16573  * Utility method to constructs a new OpenChannelRequest-variant Event
16574  */
16575 struct LDKEvent Event_open_channel_request(struct LDKThirtyTwoBytes temporary_channel_id, struct LDKPublicKey counterparty_node_id, uint64_t funding_satoshis, uint64_t push_msat);
16576
16577 /**
16578  * Serialize the Event object into a byte array which can be read by Event_read
16579  */
16580 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
16581
16582 /**
16583  * Read a Event from a byte array, created by Event_write
16584  */
16585 struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
16586
16587 /**
16588  * Frees any resources used by the MessageSendEvent
16589  */
16590 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
16591
16592 /**
16593  * Creates a copy of the MessageSendEvent
16594  */
16595 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
16596
16597 /**
16598  * Utility method to constructs a new SendAcceptChannel-variant MessageSendEvent
16599  */
16600 struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
16601
16602 /**
16603  * Utility method to constructs a new SendOpenChannel-variant MessageSendEvent
16604  */
16605 struct LDKMessageSendEvent MessageSendEvent_send_open_channel(struct LDKPublicKey node_id, struct LDKOpenChannel msg);
16606
16607 /**
16608  * Utility method to constructs a new SendFundingCreated-variant MessageSendEvent
16609  */
16610 struct LDKMessageSendEvent MessageSendEvent_send_funding_created(struct LDKPublicKey node_id, struct LDKFundingCreated msg);
16611
16612 /**
16613  * Utility method to constructs a new SendFundingSigned-variant MessageSendEvent
16614  */
16615 struct LDKMessageSendEvent MessageSendEvent_send_funding_signed(struct LDKPublicKey node_id, struct LDKFundingSigned msg);
16616
16617 /**
16618  * Utility method to constructs a new SendFundingLocked-variant MessageSendEvent
16619  */
16620 struct LDKMessageSendEvent MessageSendEvent_send_funding_locked(struct LDKPublicKey node_id, struct LDKFundingLocked msg);
16621
16622 /**
16623  * Utility method to constructs a new SendAnnouncementSignatures-variant MessageSendEvent
16624  */
16625 struct LDKMessageSendEvent MessageSendEvent_send_announcement_signatures(struct LDKPublicKey node_id, struct LDKAnnouncementSignatures msg);
16626
16627 /**
16628  * Utility method to constructs a new UpdateHTLCs-variant MessageSendEvent
16629  */
16630 struct LDKMessageSendEvent MessageSendEvent_update_htlcs(struct LDKPublicKey node_id, struct LDKCommitmentUpdate updates);
16631
16632 /**
16633  * Utility method to constructs a new SendRevokeAndACK-variant MessageSendEvent
16634  */
16635 struct LDKMessageSendEvent MessageSendEvent_send_revoke_and_ack(struct LDKPublicKey node_id, struct LDKRevokeAndACK msg);
16636
16637 /**
16638  * Utility method to constructs a new SendClosingSigned-variant MessageSendEvent
16639  */
16640 struct LDKMessageSendEvent MessageSendEvent_send_closing_signed(struct LDKPublicKey node_id, struct LDKClosingSigned msg);
16641
16642 /**
16643  * Utility method to constructs a new SendShutdown-variant MessageSendEvent
16644  */
16645 struct LDKMessageSendEvent MessageSendEvent_send_shutdown(struct LDKPublicKey node_id, struct LDKShutdown msg);
16646
16647 /**
16648  * Utility method to constructs a new SendChannelReestablish-variant MessageSendEvent
16649  */
16650 struct LDKMessageSendEvent MessageSendEvent_send_channel_reestablish(struct LDKPublicKey node_id, struct LDKChannelReestablish msg);
16651
16652 /**
16653  * Utility method to constructs a new BroadcastChannelAnnouncement-variant MessageSendEvent
16654  */
16655 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_announcement(struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
16656
16657 /**
16658  * Utility method to constructs a new BroadcastNodeAnnouncement-variant MessageSendEvent
16659  */
16660 struct LDKMessageSendEvent MessageSendEvent_broadcast_node_announcement(struct LDKNodeAnnouncement msg);
16661
16662 /**
16663  * Utility method to constructs a new BroadcastChannelUpdate-variant MessageSendEvent
16664  */
16665 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_update(struct LDKChannelUpdate msg);
16666
16667 /**
16668  * Utility method to constructs a new SendChannelUpdate-variant MessageSendEvent
16669  */
16670 struct LDKMessageSendEvent MessageSendEvent_send_channel_update(struct LDKPublicKey node_id, struct LDKChannelUpdate msg);
16671
16672 /**
16673  * Utility method to constructs a new HandleError-variant MessageSendEvent
16674  */
16675 struct LDKMessageSendEvent MessageSendEvent_handle_error(struct LDKPublicKey node_id, struct LDKErrorAction action);
16676
16677 /**
16678  * Utility method to constructs a new SendChannelRangeQuery-variant MessageSendEvent
16679  */
16680 struct LDKMessageSendEvent MessageSendEvent_send_channel_range_query(struct LDKPublicKey node_id, struct LDKQueryChannelRange msg);
16681
16682 /**
16683  * Utility method to constructs a new SendShortIdsQuery-variant MessageSendEvent
16684  */
16685 struct LDKMessageSendEvent MessageSendEvent_send_short_ids_query(struct LDKPublicKey node_id, struct LDKQueryShortChannelIds msg);
16686
16687 /**
16688  * Utility method to constructs a new SendReplyChannelRange-variant MessageSendEvent
16689  */
16690 struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
16691
16692 /**
16693  * Calls the free function if one is set
16694  */
16695 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
16696
16697 /**
16698  * Calls the free function if one is set
16699  */
16700 void EventsProvider_free(struct LDKEventsProvider this_ptr);
16701
16702 /**
16703  * Calls the free function if one is set
16704  */
16705 void EventHandler_free(struct LDKEventHandler this_ptr);
16706
16707 /**
16708  * Frees any resources used by the APIError
16709  */
16710 void APIError_free(struct LDKAPIError this_ptr);
16711
16712 /**
16713  * Creates a copy of the APIError
16714  */
16715 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
16716
16717 /**
16718  * Utility method to constructs a new APIMisuseError-variant APIError
16719  */
16720 struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
16721
16722 /**
16723  * Utility method to constructs a new FeeRateTooHigh-variant APIError
16724  */
16725 struct LDKAPIError APIError_fee_rate_too_high(struct LDKStr err, uint32_t feerate);
16726
16727 /**
16728  * Utility method to constructs a new RouteError-variant APIError
16729  */
16730 struct LDKAPIError APIError_route_error(struct LDKStr err);
16731
16732 /**
16733  * Utility method to constructs a new ChannelUnavailable-variant APIError
16734  */
16735 struct LDKAPIError APIError_channel_unavailable(struct LDKStr err);
16736
16737 /**
16738  * Utility method to constructs a new MonitorUpdateFailed-variant APIError
16739  */
16740 struct LDKAPIError APIError_monitor_update_failed(void);
16741
16742 /**
16743  * Utility method to constructs a new IncompatibleShutdownScript-variant APIError
16744  */
16745 struct LDKAPIError APIError_incompatible_shutdown_script(struct LDKShutdownScript script);
16746
16747 /**
16748  * Creates a digital signature of a message given a SecretKey, like the node's secret.
16749  * 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.
16750  * Signatures are EC recoverable, meaning that given the message and the signature the PublicKey of the signer can be extracted.
16751  */
16752 struct LDKCResult_StringErrorZ sign(struct LDKu8slice msg, const uint8_t (*sk)[32]);
16753
16754 /**
16755  * Recovers the PublicKey of the signer of the message given the message and the signature.
16756  */
16757 struct LDKCResult_PublicKeyErrorZ recover_pk(struct LDKu8slice msg, struct LDKStr sig);
16758
16759 /**
16760  * Verifies a message was signed by a PrivateKey that derives to a given PublicKey, given a message, a signature,
16761  * and the PublicKey.
16762  */
16763 bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
16764
16765 /**
16766  * Construct the invoice's HRP and signatureless data into a preimage to be hashed.
16767  */
16768 struct LDKCVec_u8Z construct_invoice_preimage(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z data_without_signature);
16769
16770 /**
16771  * Creates a copy of the Level
16772  */
16773 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
16774
16775 /**
16776  * Utility method to constructs a new Gossip-variant Level
16777  */
16778 enum LDKLevel Level_gossip(void);
16779
16780 /**
16781  * Utility method to constructs a new Trace-variant Level
16782  */
16783 enum LDKLevel Level_trace(void);
16784
16785 /**
16786  * Utility method to constructs a new Debug-variant Level
16787  */
16788 enum LDKLevel Level_debug(void);
16789
16790 /**
16791  * Utility method to constructs a new Info-variant Level
16792  */
16793 enum LDKLevel Level_info(void);
16794
16795 /**
16796  * Utility method to constructs a new Warn-variant Level
16797  */
16798 enum LDKLevel Level_warn(void);
16799
16800 /**
16801  * Utility method to constructs a new Error-variant Level
16802  */
16803 enum LDKLevel Level_error(void);
16804
16805 /**
16806  * Checks if two Levels contain equal inner contents.
16807  * This ignores pointers and is_owned flags and looks at the values in fields.
16808  */
16809 bool Level_eq(const enum LDKLevel *NONNULL_PTR a, const enum LDKLevel *NONNULL_PTR b);
16810
16811 /**
16812  * Checks if two Levels contain equal inner contents.
16813  */
16814 uint64_t Level_hash(const enum LDKLevel *NONNULL_PTR o);
16815
16816 /**
16817  * Returns the most verbose logging level.
16818  */
16819 MUST_USE_RES enum LDKLevel Level_max(void);
16820
16821 /**
16822  * Frees any resources used by the Record, if is_owned is set and inner is non-NULL.
16823  */
16824 void Record_free(struct LDKRecord this_obj);
16825
16826 /**
16827  * The verbosity level of the message.
16828  */
16829 enum LDKLevel Record_get_level(const struct LDKRecord *NONNULL_PTR this_ptr);
16830
16831 /**
16832  * The verbosity level of the message.
16833  */
16834 void Record_set_level(struct LDKRecord *NONNULL_PTR this_ptr, enum LDKLevel val);
16835
16836 /**
16837  * The message body.
16838  */
16839 struct LDKStr Record_get_args(const struct LDKRecord *NONNULL_PTR this_ptr);
16840
16841 /**
16842  * The message body.
16843  */
16844 void Record_set_args(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
16845
16846 /**
16847  * The module path of the message.
16848  */
16849 struct LDKStr Record_get_module_path(const struct LDKRecord *NONNULL_PTR this_ptr);
16850
16851 /**
16852  * The module path of the message.
16853  */
16854 void Record_set_module_path(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
16855
16856 /**
16857  * The source file containing the message.
16858  */
16859 struct LDKStr Record_get_file(const struct LDKRecord *NONNULL_PTR this_ptr);
16860
16861 /**
16862  * The source file containing the message.
16863  */
16864 void Record_set_file(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
16865
16866 /**
16867  * The line containing the message.
16868  */
16869 uint32_t Record_get_line(const struct LDKRecord *NONNULL_PTR this_ptr);
16870
16871 /**
16872  * The line containing the message.
16873  */
16874 void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
16875
16876 /**
16877  * Creates a copy of the Record
16878  */
16879 struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
16880
16881 /**
16882  * Calls the free function if one is set
16883  */
16884 void Logger_free(struct LDKLogger this_ptr);
16885
16886 /**
16887  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
16888  */
16889 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
16890
16891 /**
16892  * Confirmations we will wait for before considering the channel locked in.
16893  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
16894  * equivalent limit applied to outbound channels).
16895  *
16896  * Default value: 6.
16897  */
16898 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
16899
16900 /**
16901  * Confirmations we will wait for before considering the channel locked in.
16902  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
16903  * equivalent limit applied to outbound channels).
16904  *
16905  * Default value: 6.
16906  */
16907 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
16908
16909 /**
16910  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
16911  * the number of blocks we have to punish our counterparty if they broadcast a revoked
16912  * transaction).
16913  *
16914  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
16915  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
16916  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
16917  * possibly with time in between to RBF the spending transaction).
16918  *
16919  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
16920  * case of an honest unilateral channel close, which implicitly decrease the economic value of
16921  * our channel.
16922  *
16923  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
16924  * can tweak config to ask for more security, not less.
16925  */
16926 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
16927
16928 /**
16929  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
16930  * the number of blocks we have to punish our counterparty if they broadcast a revoked
16931  * transaction).
16932  *
16933  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
16934  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
16935  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
16936  * possibly with time in between to RBF the spending transaction).
16937  *
16938  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
16939  * case of an honest unilateral channel close, which implicitly decrease the economic value of
16940  * our channel.
16941  *
16942  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
16943  * can tweak config to ask for more security, not less.
16944  */
16945 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
16946
16947 /**
16948  * Set to the smallest value HTLC we will accept to process.
16949  *
16950  * This value is sent to our counterparty on channel-open and we close the channel any time
16951  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
16952  *
16953  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
16954  * by the protocol.
16955  */
16956 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
16957
16958 /**
16959  * Set to the smallest value HTLC we will accept to process.
16960  *
16961  * This value is sent to our counterparty on channel-open and we close the channel any time
16962  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
16963  *
16964  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
16965  * by the protocol.
16966  */
16967 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
16968
16969 /**
16970  * Constructs a new ChannelHandshakeConfig given each field
16971  */
16972 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);
16973
16974 /**
16975  * Creates a copy of the ChannelHandshakeConfig
16976  */
16977 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
16978
16979 /**
16980  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
16981  */
16982 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
16983
16984 /**
16985  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
16986  */
16987 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
16988
16989 /**
16990  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
16991  * only applies to inbound channels.
16992  *
16993  * Default value: 0.
16994  */
16995 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
16996
16997 /**
16998  * Minimum allowed satoshis when a channel is funded, this is supplied by the sender and so
16999  * only applies to inbound channels.
17000  *
17001  * Default value: 0.
17002  */
17003 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17004
17005 /**
17006  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
17007  * you to limit the maximum minimum-size they can require.
17008  *
17009  * Default value: u64::max_value.
17010  */
17011 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17012
17013 /**
17014  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
17015  * you to limit the maximum minimum-size they can require.
17016  *
17017  * Default value: u64::max_value.
17018  */
17019 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17020
17021 /**
17022  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
17023  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
17024  *
17025  * Default value: 0.
17026  */
17027 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17028
17029 /**
17030  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
17031  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
17032  *
17033  * Default value: 0.
17034  */
17035 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17036
17037 /**
17038  * The remote node will require we keep a certain amount in direct payment to ourselves at all
17039  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
17040  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
17041  *
17042  * Default value: u64::max_value.
17043  */
17044 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17045
17046 /**
17047  * The remote node will require we keep a certain amount in direct payment to ourselves at all
17048  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
17049  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
17050  *
17051  * Default value: u64::max_value.
17052  */
17053 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
17054
17055 /**
17056  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
17057  * time. This allows you to set a minimum such value.
17058  *
17059  * Default value: 0.
17060  */
17061 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17062
17063 /**
17064  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
17065  * time. This allows you to set a minimum such value.
17066  *
17067  * Default value: 0.
17068  */
17069 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
17070
17071 /**
17072  * Before a channel is usable the funding transaction will need to be confirmed by at least a
17073  * certain number of blocks, specified by the node which is not the funder (as the funder can
17074  * assume they aren't going to double-spend themselves).
17075  * This config allows you to set a limit on the maximum amount of time to wait.
17076  *
17077  * Default value: 144, or roughly one day and only applies to outbound channels.
17078  */
17079 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17080
17081 /**
17082  * Before a channel is usable the funding transaction will need to be confirmed by at least a
17083  * certain number of blocks, specified by the node which is not the funder (as the funder can
17084  * assume they aren't going to double-spend themselves).
17085  * This config allows you to set a limit on the maximum amount of time to wait.
17086  *
17087  * Default value: 144, or roughly one day and only applies to outbound channels.
17088  */
17089 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
17090
17091 /**
17092  * Set to force an incoming channel to match our announced channel preference in
17093  * [`ChannelConfig::announced_channel`].
17094  *
17095  * For a node which is not online reliably, this should be set to true and
17096  * [`ChannelConfig::announced_channel`] set to false, ensuring that no announced (aka public)
17097  * channels will ever be opened.
17098  *
17099  * Default value: true.
17100  */
17101 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17102
17103 /**
17104  * Set to force an incoming channel to match our announced channel preference in
17105  * [`ChannelConfig::announced_channel`].
17106  *
17107  * For a node which is not online reliably, this should be set to true and
17108  * [`ChannelConfig::announced_channel`] set to false, ensuring that no announced (aka public)
17109  * channels will ever be opened.
17110  *
17111  * Default value: true.
17112  */
17113 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
17114
17115 /**
17116  * Set to the amount of time we're willing to wait to claim money back to us.
17117  *
17118  * Not checking this value would be a security issue, as our peer would be able to set it to
17119  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
17120  *
17121  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
17122  * reduce the loss of having useless locked funds (if your peer accepts)
17123  */
17124 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
17125
17126 /**
17127  * Set to the amount of time we're willing to wait to claim money back to us.
17128  *
17129  * Not checking this value would be a security issue, as our peer would be able to set it to
17130  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
17131  *
17132  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
17133  * reduce the loss of having useless locked funds (if your peer accepts)
17134  */
17135 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
17136
17137 /**
17138  * Constructs a new ChannelHandshakeLimits given each field
17139  */
17140 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);
17141
17142 /**
17143  * Creates a copy of the ChannelHandshakeLimits
17144  */
17145 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
17146
17147 /**
17148  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
17149  */
17150 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
17151
17152 /**
17153  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
17154  */
17155 void ChannelConfig_free(struct LDKChannelConfig this_obj);
17156
17157 /**
17158  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
17159  * over the channel.
17160  * This may be allowed to change at runtime in a later update, however doing so must result in
17161  * update messages sent to notify all nodes of our updated relay fee.
17162  *
17163  * Default value: 0.
17164  */
17165 uint32_t ChannelConfig_get_forwarding_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17166
17167 /**
17168  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
17169  * over the channel.
17170  * This may be allowed to change at runtime in a later update, however doing so must result in
17171  * update messages sent to notify all nodes of our updated relay fee.
17172  *
17173  * Default value: 0.
17174  */
17175 void ChannelConfig_set_forwarding_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
17176
17177 /**
17178  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
17179  * excess of [`forwarding_fee_proportional_millionths`].
17180  * This may be allowed to change at runtime in a later update, however doing so must result in
17181  * update messages sent to notify all nodes of our updated relay fee.
17182  *
17183  * The default value of a single satoshi roughly matches the market rate on many routing nodes
17184  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
17185  * this node.
17186  *
17187  * Default value: 1000.
17188  *
17189  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
17190  */
17191 uint32_t ChannelConfig_get_forwarding_fee_base_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17192
17193 /**
17194  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
17195  * excess of [`forwarding_fee_proportional_millionths`].
17196  * This may be allowed to change at runtime in a later update, however doing so must result in
17197  * update messages sent to notify all nodes of our updated relay fee.
17198  *
17199  * The default value of a single satoshi roughly matches the market rate on many routing nodes
17200  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
17201  * this node.
17202  *
17203  * Default value: 1000.
17204  *
17205  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
17206  */
17207 void ChannelConfig_set_forwarding_fee_base_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
17208
17209 /**
17210  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
17211  * the channel this config applies to.
17212  *
17213  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
17214  * HTLC balance when a channel appears on-chain whereas
17215  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
17216  * (non-HTLC-encumbered) balance.
17217  *
17218  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
17219  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
17220  * commitment transaction at least once per this many blocks (minus some margin to allow us
17221  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
17222  * the spending transaction).
17223  *
17224  * Default value: 72 (12 hours at an average of 6 blocks/hour).
17225  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
17226  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
17227  *
17228  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
17229  */
17230 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17231
17232 /**
17233  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
17234  * the channel this config applies to.
17235  *
17236  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
17237  * HTLC balance when a channel appears on-chain whereas
17238  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
17239  * (non-HTLC-encumbered) balance.
17240  *
17241  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
17242  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
17243  * commitment transaction at least once per this many blocks (minus some margin to allow us
17244  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
17245  * the spending transaction).
17246  *
17247  * Default value: 72 (12 hours at an average of 6 blocks/hour).
17248  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
17249  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
17250  *
17251  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
17252  */
17253 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
17254
17255 /**
17256  * Set to announce the channel publicly and notify all nodes that they can route via this
17257  * channel.
17258  *
17259  * This should only be set to true for nodes which expect to be online reliably.
17260  *
17261  * As the node which funds a channel picks this value this will only apply for new outbound
17262  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
17263  *
17264  * This cannot be changed after the initial channel handshake.
17265  *
17266  * Default value: false.
17267  */
17268 bool ChannelConfig_get_announced_channel(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17269
17270 /**
17271  * Set to announce the channel publicly and notify all nodes that they can route via this
17272  * channel.
17273  *
17274  * This should only be set to true for nodes which expect to be online reliably.
17275  *
17276  * As the node which funds a channel picks this value this will only apply for new outbound
17277  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
17278  *
17279  * This cannot be changed after the initial channel handshake.
17280  *
17281  * Default value: false.
17282  */
17283 void ChannelConfig_set_announced_channel(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
17284
17285 /**
17286  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
17287  * supports it, they will then enforce the mutual-close output to us matches what we provided
17288  * at intialization, preventing us from closing to an alternate pubkey.
17289  *
17290  * This is set to true by default to provide a slight increase in security, though ultimately
17291  * any attacker who is able to take control of a channel can just as easily send the funds via
17292  * lightning payments, so we never require that our counterparties support this option.
17293  *
17294  * This cannot be changed after a channel has been initialized.
17295  *
17296  * Default value: true.
17297  */
17298 bool ChannelConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17299
17300 /**
17301  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
17302  * supports it, they will then enforce the mutual-close output to us matches what we provided
17303  * at intialization, preventing us from closing to an alternate pubkey.
17304  *
17305  * This is set to true by default to provide a slight increase in security, though ultimately
17306  * any attacker who is able to take control of a channel can just as easily send the funds via
17307  * lightning payments, so we never require that our counterparties support this option.
17308  *
17309  * This cannot be changed after a channel has been initialized.
17310  *
17311  * Default value: true.
17312  */
17313 void ChannelConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelConfig *NONNULL_PTR this_ptr, bool val);
17314
17315 /**
17316  * Limit our total exposure to in-flight HTLCs which are burned to fees as they are too
17317  * small to claim on-chain.
17318  *
17319  * When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will
17320  * not be claimable on-chain, instead being turned into additional miner fees if either
17321  * party force-closes the channel. Because the threshold is per-HTLC, our total exposure
17322  * to such payments may be sustantial if there are many dust HTLCs present when the
17323  * channel is force-closed.
17324  *
17325  * This limit is applied for sent, forwarded, and received HTLCs and limits the total
17326  * exposure across all three types per-channel. Setting this too low may prevent the
17327  * sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very
17328  * important to prevent stealing of dust HTLCs by miners.
17329  *
17330  * Default value: 5_000_000 msat.
17331  */
17332 uint64_t ChannelConfig_get_max_dust_htlc_exposure_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17333
17334 /**
17335  * Limit our total exposure to in-flight HTLCs which are burned to fees as they are too
17336  * small to claim on-chain.
17337  *
17338  * When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will
17339  * not be claimable on-chain, instead being turned into additional miner fees if either
17340  * party force-closes the channel. Because the threshold is per-HTLC, our total exposure
17341  * to such payments may be sustantial if there are many dust HTLCs present when the
17342  * channel is force-closed.
17343  *
17344  * This limit is applied for sent, forwarded, and received HTLCs and limits the total
17345  * exposure across all three types per-channel. Setting this too low may prevent the
17346  * sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very
17347  * important to prevent stealing of dust HTLCs by miners.
17348  *
17349  * Default value: 5_000_000 msat.
17350  */
17351 void ChannelConfig_set_max_dust_htlc_exposure_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
17352
17353 /**
17354  * The additional fee we're willing to pay to avoid waiting for the counterparty's
17355  * `to_self_delay` to reclaim funds.
17356  *
17357  * When we close a channel cooperatively with our counterparty, we negotiate a fee for the
17358  * closing transaction which both sides find acceptable, ultimately paid by the channel
17359  * funder/initiator.
17360  *
17361  * When we are the funder, because we have to pay the channel closing fee, we bound the
17362  * acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by
17363  * this value. Because the on-chain fee we'd pay to force-close the channel is kept near our
17364  * [`Normal`] feerate during normal operation, this value represents the additional fee we're
17365  * willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our
17366  * funds.
17367  *
17368  * When we are not the funder, we require the closing transaction fee pay at least our
17369  * [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like.
17370  * Thus, this value is ignored when we are not the funder.
17371  *
17372  * Default value: 1000 satoshis.
17373  *
17374  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
17375  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
17376  */
17377 uint64_t ChannelConfig_get_force_close_avoidance_max_fee_satoshis(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
17378
17379 /**
17380  * The additional fee we're willing to pay to avoid waiting for the counterparty's
17381  * `to_self_delay` to reclaim funds.
17382  *
17383  * When we close a channel cooperatively with our counterparty, we negotiate a fee for the
17384  * closing transaction which both sides find acceptable, ultimately paid by the channel
17385  * funder/initiator.
17386  *
17387  * When we are the funder, because we have to pay the channel closing fee, we bound the
17388  * acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by
17389  * this value. Because the on-chain fee we'd pay to force-close the channel is kept near our
17390  * [`Normal`] feerate during normal operation, this value represents the additional fee we're
17391  * willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our
17392  * funds.
17393  *
17394  * When we are not the funder, we require the closing transaction fee pay at least our
17395  * [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like.
17396  * Thus, this value is ignored when we are not the funder.
17397  *
17398  * Default value: 1000 satoshis.
17399  *
17400  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
17401  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
17402  */
17403 void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
17404
17405 /**
17406  * Constructs a new ChannelConfig given each field
17407  */
17408 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);
17409
17410 /**
17411  * Creates a copy of the ChannelConfig
17412  */
17413 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
17414
17415 /**
17416  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
17417  */
17418 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
17419
17420 /**
17421  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
17422  */
17423 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
17424
17425 /**
17426  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
17427  */
17428 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
17429
17430 /**
17431  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
17432  */
17433 void UserConfig_free(struct LDKUserConfig this_obj);
17434
17435 /**
17436  * Channel config that we propose to our counterparty.
17437  */
17438 struct LDKChannelHandshakeConfig UserConfig_get_own_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17439
17440 /**
17441  * Channel config that we propose to our counterparty.
17442  */
17443 void UserConfig_set_own_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
17444
17445 /**
17446  * Limits applied to our counterparty's proposed channel config settings.
17447  */
17448 struct LDKChannelHandshakeLimits UserConfig_get_peer_channel_config_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17449
17450 /**
17451  * Limits applied to our counterparty's proposed channel config settings.
17452  */
17453 void UserConfig_set_peer_channel_config_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
17454
17455 /**
17456  * Channel config which affects behavior during channel lifetime.
17457  */
17458 struct LDKChannelConfig UserConfig_get_channel_options(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17459
17460 /**
17461  * Channel config which affects behavior during channel lifetime.
17462  */
17463 void UserConfig_set_channel_options(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
17464
17465 /**
17466  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
17467  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
17468  * node which is not online reliably.
17469  *
17470  * For nodes which are not online reliably, you should set all channels to *not* be announced
17471  * (using [`ChannelConfig::announced_channel`] and
17472  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
17473  * ensure you are not exposed to any forwarding risk.
17474  *
17475  * Note that because you cannot change a channel's announced state after creation, there is no
17476  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
17477  * from a publicly-announced forwarding node to a private non-forwarding node you must close
17478  * all your channels and open new ones. For privacy, you should also change your node_id
17479  * (swapping all private and public key material for new ones) at that time.
17480  *
17481  * Default value: false.
17482  */
17483 bool UserConfig_get_accept_forwards_to_priv_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17484
17485 /**
17486  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
17487  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
17488  * node which is not online reliably.
17489  *
17490  * For nodes which are not online reliably, you should set all channels to *not* be announced
17491  * (using [`ChannelConfig::announced_channel`] and
17492  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
17493  * ensure you are not exposed to any forwarding risk.
17494  *
17495  * Note that because you cannot change a channel's announced state after creation, there is no
17496  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
17497  * from a publicly-announced forwarding node to a private non-forwarding node you must close
17498  * all your channels and open new ones. For privacy, you should also change your node_id
17499  * (swapping all private and public key material for new ones) at that time.
17500  *
17501  * Default value: false.
17502  */
17503 void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
17504
17505 /**
17506  * If this is set to false, we do not accept inbound requests to open a new channel.
17507  * Default value: true.
17508  */
17509 bool UserConfig_get_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17510
17511 /**
17512  * If this is set to false, we do not accept inbound requests to open a new channel.
17513  * Default value: true.
17514  */
17515 void UserConfig_set_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
17516
17517 /**
17518  * If this is set to true, the user needs to manually accept inbound requests to open a new
17519  * channel.
17520  *
17521  * When set to true, [`Event::OpenChannelRequest`] will be triggered once a request to open a
17522  * new inbound channel is received through a [`msgs::OpenChannel`] message. In that case, a
17523  * [`msgs::AcceptChannel`] message will not be sent back to the counterparty node unless the
17524  * user explicitly chooses to accept the request.
17525  *
17526  * Default value: false.
17527  *
17528  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
17529  * [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
17530  * [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
17531  */
17532 bool UserConfig_get_manually_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
17533
17534 /**
17535  * If this is set to true, the user needs to manually accept inbound requests to open a new
17536  * channel.
17537  *
17538  * When set to true, [`Event::OpenChannelRequest`] will be triggered once a request to open a
17539  * new inbound channel is received through a [`msgs::OpenChannel`] message. In that case, a
17540  * [`msgs::AcceptChannel`] message will not be sent back to the counterparty node unless the
17541  * user explicitly chooses to accept the request.
17542  *
17543  * Default value: false.
17544  *
17545  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
17546  * [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
17547  * [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
17548  */
17549 void UserConfig_set_manually_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
17550
17551 /**
17552  * Constructs a new UserConfig given each field
17553  */
17554 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);
17555
17556 /**
17557  * Creates a copy of the UserConfig
17558  */
17559 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
17560
17561 /**
17562  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
17563  */
17564 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
17565
17566 /**
17567  * Frees any resources used by the BestBlock, if is_owned is set and inner is non-NULL.
17568  */
17569 void BestBlock_free(struct LDKBestBlock this_obj);
17570
17571 /**
17572  * Creates a copy of the BestBlock
17573  */
17574 struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
17575
17576 /**
17577  * Constructs a `BestBlock` that represents the genesis block at height 0 of the given
17578  * network.
17579  */
17580 MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
17581
17582 /**
17583  * Returns a `BestBlock` as identified by the given block hash and height.
17584  */
17585 MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
17586
17587 /**
17588  * Returns the best block hash.
17589  */
17590 MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
17591
17592 /**
17593  * Returns the best block height.
17594  */
17595 MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
17596
17597 /**
17598  * Creates a copy of the AccessError
17599  */
17600 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
17601
17602 /**
17603  * Utility method to constructs a new UnknownChain-variant AccessError
17604  */
17605 enum LDKAccessError AccessError_unknown_chain(void);
17606
17607 /**
17608  * Utility method to constructs a new UnknownTx-variant AccessError
17609  */
17610 enum LDKAccessError AccessError_unknown_tx(void);
17611
17612 /**
17613  * Calls the free function if one is set
17614  */
17615 void Access_free(struct LDKAccess this_ptr);
17616
17617 /**
17618  * Calls the free function if one is set
17619  */
17620 void Listen_free(struct LDKListen this_ptr);
17621
17622 /**
17623  * Calls the free function if one is set
17624  */
17625 void Confirm_free(struct LDKConfirm this_ptr);
17626
17627 /**
17628  * Creates a copy of the ChannelMonitorUpdateErr
17629  */
17630 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
17631
17632 /**
17633  * Utility method to constructs a new TemporaryFailure-variant ChannelMonitorUpdateErr
17634  */
17635 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_temporary_failure(void);
17636
17637 /**
17638  * Utility method to constructs a new PermanentFailure-variant ChannelMonitorUpdateErr
17639  */
17640 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_permanent_failure(void);
17641
17642 /**
17643  * Calls the free function if one is set
17644  */
17645 void Watch_free(struct LDKWatch this_ptr);
17646
17647 /**
17648  * Calls the free function if one is set
17649  */
17650 void Filter_free(struct LDKFilter this_ptr);
17651
17652 /**
17653  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
17654  */
17655 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
17656
17657 /**
17658  * First block where the transaction output may have been spent.
17659  *
17660  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
17661  */
17662 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
17663
17664 /**
17665  * First block where the transaction output may have been spent.
17666  *
17667  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
17668  */
17669 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
17670
17671 /**
17672  * Outpoint identifying the transaction output.
17673  */
17674 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
17675
17676 /**
17677  * Outpoint identifying the transaction output.
17678  */
17679 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
17680
17681 /**
17682  * Spending condition of the transaction output.
17683  */
17684 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
17685
17686 /**
17687  * Spending condition of the transaction output.
17688  */
17689 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
17690
17691 /**
17692  * Constructs a new WatchedOutput given each field
17693  */
17694 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
17695
17696 /**
17697  * Creates a copy of the WatchedOutput
17698  */
17699 struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
17700
17701 /**
17702  * Checks if two WatchedOutputs contain equal inner contents.
17703  */
17704 uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
17705
17706 /**
17707  * Calls the free function if one is set
17708  */
17709 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
17710
17711 /**
17712  * Creates a copy of the ConfirmationTarget
17713  */
17714 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
17715
17716 /**
17717  * Utility method to constructs a new Background-variant ConfirmationTarget
17718  */
17719 enum LDKConfirmationTarget ConfirmationTarget_background(void);
17720
17721 /**
17722  * Utility method to constructs a new Normal-variant ConfirmationTarget
17723  */
17724 enum LDKConfirmationTarget ConfirmationTarget_normal(void);
17725
17726 /**
17727  * Utility method to constructs a new HighPriority-variant ConfirmationTarget
17728  */
17729 enum LDKConfirmationTarget ConfirmationTarget_high_priority(void);
17730
17731 /**
17732  * Checks if two ConfirmationTargets contain equal inner contents.
17733  * This ignores pointers and is_owned flags and looks at the values in fields.
17734  */
17735 bool ConfirmationTarget_eq(const enum LDKConfirmationTarget *NONNULL_PTR a, const enum LDKConfirmationTarget *NONNULL_PTR b);
17736
17737 /**
17738  * Calls the free function if one is set
17739  */
17740 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
17741
17742 /**
17743  * Frees any resources used by the MonitorUpdateId, if is_owned is set and inner is non-NULL.
17744  */
17745 void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
17746
17747 /**
17748  * Creates a copy of the MonitorUpdateId
17749  */
17750 struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
17751
17752 /**
17753  * Checks if two MonitorUpdateIds contain equal inner contents.
17754  */
17755 uint64_t MonitorUpdateId_hash(const struct LDKMonitorUpdateId *NONNULL_PTR o);
17756
17757 /**
17758  * Checks if two MonitorUpdateIds contain equal inner contents.
17759  * This ignores pointers and is_owned flags and looks at the values in fields.
17760  * Two objects with NULL inner values will be considered "equal" here.
17761  */
17762 bool MonitorUpdateId_eq(const struct LDKMonitorUpdateId *NONNULL_PTR a, const struct LDKMonitorUpdateId *NONNULL_PTR b);
17763
17764 /**
17765  * Calls the free function if one is set
17766  */
17767 void Persist_free(struct LDKPersist this_ptr);
17768
17769 /**
17770  * Frees any resources used by the LockedChannelMonitor, if is_owned is set and inner is non-NULL.
17771  */
17772 void LockedChannelMonitor_free(struct LDKLockedChannelMonitor this_obj);
17773
17774 /**
17775  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
17776  */
17777 void ChainMonitor_free(struct LDKChainMonitor this_obj);
17778
17779 /**
17780  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
17781  *
17782  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
17783  * will call back to it indicating transactions and outputs of interest. This allows clients to
17784  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
17785  * always need to fetch full blocks absent another means for determining which blocks contain
17786  * transactions relevant to the watched channels.
17787  */
17788 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKCOption_FilterZ chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
17789
17790 /**
17791  * Gets the balances in the contained [`ChannelMonitor`]s which are claimable on-chain or
17792  * claims which are awaiting confirmation.
17793  *
17794  * Includes the balances from each [`ChannelMonitor`] *except* those included in
17795  * `ignored_channels`, allowing you to filter out balances from channels which are still open
17796  * (and whose balance should likely be pulled from the [`ChannelDetails`]).
17797  *
17798  * See [`ChannelMonitor::get_claimable_balances`] for more details on the exact criteria for
17799  * inclusion in the return value.
17800  */
17801 MUST_USE_RES struct LDKCVec_BalanceZ ChainMonitor_get_claimable_balances(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKCVec_ChannelDetailsZ ignored_channels);
17802
17803 /**
17804  * Gets the [`LockedChannelMonitor`] for a given funding outpoint, returning an `Err` if no
17805  * such [`ChannelMonitor`] is currently being monitored for.
17806  *
17807  * Note that the result holds a mutex over our monitor set, and should not be held
17808  * indefinitely.
17809  */
17810 MUST_USE_RES struct LDKCResult_LockedChannelMonitorNoneZ ChainMonitor_get_monitor(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo);
17811
17812 /**
17813  * Lists the funding outpoint of each [`ChannelMonitor`] being monitored.
17814  *
17815  * Note that [`ChannelMonitor`]s are not removed when a channel is closed as they are always
17816  * monitoring for on-chain state resolutions.
17817  */
17818 MUST_USE_RES struct LDKCVec_OutPointZ ChainMonitor_list_monitors(const struct LDKChainMonitor *NONNULL_PTR this_arg);
17819
17820 /**
17821  * Indicates the persistence of a [`ChannelMonitor`] has completed after
17822  * [`ChannelMonitorUpdateErr::TemporaryFailure`] was returned from an update operation.
17823  *
17824  * Thus, the anticipated use is, at a high level:
17825  *  1) This [`ChainMonitor`] calls [`Persist::update_persisted_channel`] which stores the
17826  *     update to disk and begins updating any remote (e.g. watchtower/backup) copies,
17827  *     returning [`ChannelMonitorUpdateErr::TemporaryFailure`],
17828  *  2) once all remote copies are updated, you call this function with the
17829  *     `completed_update_id` that completed, and once all pending updates have completed the
17830  *     channel will be re-enabled.
17831  *
17832  * Returns an [`APIError::APIMisuseError`] if `funding_txo` does not match any currently
17833  * registered [`ChannelMonitor`]s.
17834  */
17835 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);
17836
17837 /**
17838  * Constructs a new Listen which calls the relevant methods on this_arg.
17839  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
17840  */
17841 struct LDKListen ChainMonitor_as_Listen(const struct LDKChainMonitor *NONNULL_PTR this_arg);
17842
17843 /**
17844  * Constructs a new Confirm which calls the relevant methods on this_arg.
17845  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
17846  */
17847 struct LDKConfirm ChainMonitor_as_Confirm(const struct LDKChainMonitor *NONNULL_PTR this_arg);
17848
17849 /**
17850  * Constructs a new Watch which calls the relevant methods on this_arg.
17851  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
17852  */
17853 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
17854
17855 /**
17856  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
17857  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
17858  */
17859 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
17860
17861 /**
17862  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
17863  */
17864 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
17865
17866 /**
17867  * The sequence number of this update. Updates *must* be replayed in-order according to this
17868  * sequence number (and updates may panic if they are not). The update_id values are strictly
17869  * increasing and increase by one for each new update, with one exception specified below.
17870  *
17871  * This sequence number is also used to track up to which points updates which returned
17872  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
17873  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
17874  *
17875  * The only instance where update_id values are not strictly increasing is the case where we
17876  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
17877  * its docs for more details.
17878  */
17879 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
17880
17881 /**
17882  * The sequence number of this update. Updates *must* be replayed in-order according to this
17883  * sequence number (and updates may panic if they are not). The update_id values are strictly
17884  * increasing and increase by one for each new update, with one exception specified below.
17885  *
17886  * This sequence number is also used to track up to which points updates which returned
17887  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
17888  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
17889  *
17890  * The only instance where update_id values are not strictly increasing is the case where we
17891  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
17892  * its docs for more details.
17893  */
17894 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
17895
17896 /**
17897  * Creates a copy of the ChannelMonitorUpdate
17898  */
17899 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
17900
17901 /**
17902  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
17903  */
17904 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
17905
17906 /**
17907  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
17908  */
17909 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
17910
17911 /**
17912  * Frees any resources used by the MonitorEvent
17913  */
17914 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
17915
17916 /**
17917  * Creates a copy of the MonitorEvent
17918  */
17919 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
17920
17921 /**
17922  * Utility method to constructs a new HTLCEvent-variant MonitorEvent
17923  */
17924 struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
17925
17926 /**
17927  * Utility method to constructs a new CommitmentTxConfirmed-variant MonitorEvent
17928  */
17929 struct LDKMonitorEvent MonitorEvent_commitment_tx_confirmed(struct LDKOutPoint a);
17930
17931 /**
17932  * Utility method to constructs a new UpdateCompleted-variant MonitorEvent
17933  */
17934 struct LDKMonitorEvent MonitorEvent_update_completed(struct LDKOutPoint funding_txo, uint64_t monitor_update_id);
17935
17936 /**
17937  * Utility method to constructs a new UpdateFailed-variant MonitorEvent
17938  */
17939 struct LDKMonitorEvent MonitorEvent_update_failed(struct LDKOutPoint a);
17940
17941 /**
17942  * Serialize the MonitorEvent object into a byte array which can be read by MonitorEvent_read
17943  */
17944 struct LDKCVec_u8Z MonitorEvent_write(const struct LDKMonitorEvent *NONNULL_PTR obj);
17945
17946 /**
17947  * Read a MonitorEvent from a byte array, created by MonitorEvent_write
17948  */
17949 struct LDKCResult_COption_MonitorEventZDecodeErrorZ MonitorEvent_read(struct LDKu8slice ser);
17950
17951 /**
17952  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
17953  */
17954 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
17955
17956 /**
17957  * Creates a copy of the HTLCUpdate
17958  */
17959 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
17960
17961 /**
17962  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
17963  */
17964 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
17965
17966 /**
17967  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
17968  */
17969 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
17970
17971 /**
17972  * Frees any resources used by the Balance
17973  */
17974 void Balance_free(struct LDKBalance this_ptr);
17975
17976 /**
17977  * Creates a copy of the Balance
17978  */
17979 struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
17980
17981 /**
17982  * Utility method to constructs a new ClaimableOnChannelClose-variant Balance
17983  */
17984 struct LDKBalance Balance_claimable_on_channel_close(uint64_t claimable_amount_satoshis);
17985
17986 /**
17987  * Utility method to constructs a new ClaimableAwaitingConfirmations-variant Balance
17988  */
17989 struct LDKBalance Balance_claimable_awaiting_confirmations(uint64_t claimable_amount_satoshis, uint32_t confirmation_height);
17990
17991 /**
17992  * Utility method to constructs a new ContentiousClaimable-variant Balance
17993  */
17994 struct LDKBalance Balance_contentious_claimable(uint64_t claimable_amount_satoshis, uint32_t timeout_height);
17995
17996 /**
17997  * Utility method to constructs a new MaybeClaimableHTLCAwaitingTimeout-variant Balance
17998  */
17999 struct LDKBalance Balance_maybe_claimable_htlcawaiting_timeout(uint64_t claimable_amount_satoshis, uint32_t claimable_height);
18000
18001 /**
18002  * Checks if two Balances contain equal inner contents.
18003  * This ignores pointers and is_owned flags and looks at the values in fields.
18004  */
18005 bool Balance_eq(const struct LDKBalance *NONNULL_PTR a, const struct LDKBalance *NONNULL_PTR b);
18006
18007 /**
18008  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
18009  */
18010 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
18011
18012 /**
18013  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
18014  */
18015 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
18016
18017 /**
18018  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
18019  * itself.
18020  *
18021  * panics if the given update is not the next update by update_id.
18022  */
18023 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);
18024
18025 /**
18026  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
18027  * ChannelMonitor.
18028  */
18029 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18030
18031 /**
18032  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
18033  */
18034 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18035
18036 /**
18037  * Gets a list of txids, with their output scripts (in the order they appear in the
18038  * transaction), which we must learn about spends of via block_connected().
18039  */
18040 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18041
18042 /**
18043  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
18044  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
18045  * have been registered.
18046  */
18047 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
18048
18049 /**
18050  * Get the list of HTLCs who's status has been updated on chain. This should be called by
18051  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
18052  */
18053 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18054
18055 /**
18056  * Gets the list of pending events which were generated by previous actions, clearing the list
18057  * in the process.
18058  *
18059  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
18060  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
18061  * no internal locking in ChannelMonitors.
18062  */
18063 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18064
18065 /**
18066  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
18067  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
18068  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
18069  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
18070  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
18071  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
18072  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
18073  * out-of-band the other node operator to coordinate with him if option is available to you.
18074  * In any-case, choice is up to the user.
18075  */
18076 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);
18077
18078 /**
18079  * Processes transactions in a newly connected block, which may result in any of the following:
18080  * - update the monitor's state against resolved HTLCs
18081  * - punish the counterparty in the case of seeing a revoked commitment transaction
18082  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
18083  * - detect settled outputs for later spending
18084  * - schedule and bump any in-flight claims
18085  *
18086  * Returns any new outputs to watch from `txdata`; after called, these are also included in
18087  * [`get_outputs_to_watch`].
18088  *
18089  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
18090  */
18091 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);
18092
18093 /**
18094  * Determines if the disconnected block contained any transactions of interest and updates
18095  * appropriately.
18096  */
18097 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);
18098
18099 /**
18100  * Processes transactions confirmed in a block with the given header and height, returning new
18101  * outputs to watch. See [`block_connected`] for details.
18102  *
18103  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
18104  * blocks. See [`chain::Confirm`] for calling expectations.
18105  *
18106  * [`block_connected`]: Self::block_connected
18107  */
18108 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);
18109
18110 /**
18111  * Processes a transaction that was reorganized out of the chain.
18112  *
18113  * Used instead of [`block_disconnected`] by clients that are notified of transactions rather
18114  * than blocks. See [`chain::Confirm`] for calling expectations.
18115  *
18116  * [`block_disconnected`]: Self::block_disconnected
18117  */
18118 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);
18119
18120 /**
18121  * Updates the monitor with the current best chain tip, returning new outputs to watch. See
18122  * [`block_connected`] for details.
18123  *
18124  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
18125  * blocks. See [`chain::Confirm`] for calling expectations.
18126  *
18127  * [`block_connected`]: Self::block_connected
18128  */
18129 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);
18130
18131 /**
18132  * Returns the set of txids that should be monitored for re-organization out of the chain.
18133  */
18134 MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18135
18136 /**
18137  * Gets the latest best block which was connected either via the [`chain::Listen`] or
18138  * [`chain::Confirm`] interfaces.
18139  */
18140 MUST_USE_RES struct LDKBestBlock ChannelMonitor_current_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18141
18142 /**
18143  * Gets the balances in this channel which are either claimable by us if we were to
18144  * force-close the channel now or which are claimable on-chain (possibly awaiting
18145  * confirmation).
18146  *
18147  * Any balances in the channel which are available on-chain (excluding on-chain fees) are
18148  * included here until an [`Event::SpendableOutputs`] event has been generated for the
18149  * balance, or until our counterparty has claimed the balance and accrued several
18150  * confirmations on the claim transaction.
18151  *
18152  * Note that the balances available when you or your counterparty have broadcasted revoked
18153  * state(s) may not be fully captured here.
18154  *
18155  * See [`Balance`] for additional details on the types of claimable balances which
18156  * may be returned here and their meanings.
18157  */
18158 MUST_USE_RES struct LDKCVec_BalanceZ ChannelMonitor_get_claimable_balances(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
18159
18160 /**
18161  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
18162  */
18163 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
18164
18165 /**
18166  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
18167  */
18168 void OutPoint_free(struct LDKOutPoint this_obj);
18169
18170 /**
18171  * The referenced transaction's txid.
18172  */
18173 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
18174
18175 /**
18176  * The referenced transaction's txid.
18177  */
18178 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18179
18180 /**
18181  * The index of the referenced output in its transaction's vout.
18182  */
18183 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
18184
18185 /**
18186  * The index of the referenced output in its transaction's vout.
18187  */
18188 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
18189
18190 /**
18191  * Constructs a new OutPoint given each field
18192  */
18193 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
18194
18195 /**
18196  * Creates a copy of the OutPoint
18197  */
18198 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
18199
18200 /**
18201  * Checks if two OutPoints contain equal inner contents.
18202  * This ignores pointers and is_owned flags and looks at the values in fields.
18203  * Two objects with NULL inner values will be considered "equal" here.
18204  */
18205 bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
18206
18207 /**
18208  * Checks if two OutPoints contain equal inner contents.
18209  */
18210 uint64_t OutPoint_hash(const struct LDKOutPoint *NONNULL_PTR o);
18211
18212 /**
18213  * Convert an `OutPoint` to a lightning channel id.
18214  */
18215 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
18216
18217 /**
18218  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
18219  */
18220 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
18221
18222 /**
18223  * Read a OutPoint from a byte array, created by OutPoint_write
18224  */
18225 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
18226
18227 /**
18228  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
18229  */
18230 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
18231
18232 /**
18233  * The outpoint which is spendable
18234  */
18235 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18236
18237 /**
18238  * The outpoint which is spendable
18239  */
18240 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
18241
18242 /**
18243  * Per commitment point to derive delayed_payment_key by key holder
18244  */
18245 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18246
18247 /**
18248  * Per commitment point to derive delayed_payment_key by key holder
18249  */
18250 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18251
18252 /**
18253  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
18254  * the witness_script.
18255  */
18256 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18257
18258 /**
18259  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
18260  * the witness_script.
18261  */
18262 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
18263
18264 /**
18265  * The output which is referenced by the given outpoint
18266  */
18267 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
18268
18269 /**
18270  * The revocation point specific to the commitment transaction which was broadcast. Used to
18271  * derive the witnessScript for this output.
18272  */
18273 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18274
18275 /**
18276  * The revocation point specific to the commitment transaction which was broadcast. Used to
18277  * derive the witnessScript for this output.
18278  */
18279 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18280
18281 /**
18282  * Arbitrary identification information returned by a call to
18283  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18284  * the channel to spend the output.
18285  */
18286 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
18287
18288 /**
18289  * Arbitrary identification information returned by a call to
18290  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18291  * the channel to spend the output.
18292  */
18293 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18294
18295 /**
18296  * The value of the channel which this output originated from, possibly indirectly.
18297  */
18298 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18299
18300 /**
18301  * The value of the channel which this output originated from, possibly indirectly.
18302  */
18303 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
18304
18305 /**
18306  * Constructs a new DelayedPaymentOutputDescriptor given each field
18307  */
18308 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);
18309
18310 /**
18311  * Creates a copy of the DelayedPaymentOutputDescriptor
18312  */
18313 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
18314
18315 /**
18316  * Serialize the DelayedPaymentOutputDescriptor object into a byte array which can be read by DelayedPaymentOutputDescriptor_read
18317  */
18318 struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
18319
18320 /**
18321  * Read a DelayedPaymentOutputDescriptor from a byte array, created by DelayedPaymentOutputDescriptor_write
18322  */
18323 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ DelayedPaymentOutputDescriptor_read(struct LDKu8slice ser);
18324
18325 /**
18326  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
18327  */
18328 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
18329
18330 /**
18331  * The outpoint which is spendable
18332  */
18333 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18334
18335 /**
18336  * The outpoint which is spendable
18337  */
18338 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
18339
18340 /**
18341  * The output which is referenced by the given outpoint
18342  */
18343 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
18344
18345 /**
18346  * Arbitrary identification information returned by a call to
18347  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18348  * the channel to spend the output.
18349  */
18350 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
18351
18352 /**
18353  * Arbitrary identification information returned by a call to
18354  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
18355  * the channel to spend the output.
18356  */
18357 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18358
18359 /**
18360  * The value of the channel which this transactions spends.
18361  */
18362 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
18363
18364 /**
18365  * The value of the channel which this transactions spends.
18366  */
18367 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
18368
18369 /**
18370  * Constructs a new StaticPaymentOutputDescriptor given each field
18371  */
18372 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);
18373
18374 /**
18375  * Creates a copy of the StaticPaymentOutputDescriptor
18376  */
18377 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
18378
18379 /**
18380  * Serialize the StaticPaymentOutputDescriptor object into a byte array which can be read by StaticPaymentOutputDescriptor_read
18381  */
18382 struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
18383
18384 /**
18385  * Read a StaticPaymentOutputDescriptor from a byte array, created by StaticPaymentOutputDescriptor_write
18386  */
18387 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ StaticPaymentOutputDescriptor_read(struct LDKu8slice ser);
18388
18389 /**
18390  * Frees any resources used by the SpendableOutputDescriptor
18391  */
18392 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
18393
18394 /**
18395  * Creates a copy of the SpendableOutputDescriptor
18396  */
18397 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
18398
18399 /**
18400  * Utility method to constructs a new StaticOutput-variant SpendableOutputDescriptor
18401  */
18402 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
18403
18404 /**
18405  * Utility method to constructs a new DelayedPaymentOutput-variant SpendableOutputDescriptor
18406  */
18407 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_delayed_payment_output(struct LDKDelayedPaymentOutputDescriptor a);
18408
18409 /**
18410  * Utility method to constructs a new StaticPaymentOutput-variant SpendableOutputDescriptor
18411  */
18412 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_payment_output(struct LDKStaticPaymentOutputDescriptor a);
18413
18414 /**
18415  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
18416  */
18417 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
18418
18419 /**
18420  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
18421  */
18422 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
18423
18424 /**
18425  * Calls the free function if one is set
18426  */
18427 void BaseSign_free(struct LDKBaseSign this_ptr);
18428
18429 /**
18430  * Creates a copy of a Sign
18431  */
18432 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
18433
18434 /**
18435  * Calls the free function if one is set
18436  */
18437 void Sign_free(struct LDKSign this_ptr);
18438
18439 /**
18440  * Creates a copy of the Recipient
18441  */
18442 enum LDKRecipient Recipient_clone(const enum LDKRecipient *NONNULL_PTR orig);
18443
18444 /**
18445  * Utility method to constructs a new Node-variant Recipient
18446  */
18447 enum LDKRecipient Recipient_node(void);
18448
18449 /**
18450  * Utility method to constructs a new PhantomNode-variant Recipient
18451  */
18452 enum LDKRecipient Recipient_phantom_node(void);
18453
18454 /**
18455  * Calls the free function if one is set
18456  */
18457 void KeysInterface_free(struct LDKKeysInterface this_ptr);
18458
18459 /**
18460  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
18461  */
18462 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
18463
18464 /**
18465  * Private key of anchor tx
18466  */
18467 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18468
18469 /**
18470  * Private key of anchor tx
18471  */
18472 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18473
18474 /**
18475  * Holder secret key for blinded revocation pubkey
18476  */
18477 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18478
18479 /**
18480  * Holder secret key for blinded revocation pubkey
18481  */
18482 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18483
18484 /**
18485  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
18486  */
18487 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18488
18489 /**
18490  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
18491  */
18492 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18493
18494 /**
18495  * Holder secret key used in HTLC tx
18496  */
18497 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18498
18499 /**
18500  * Holder secret key used in HTLC tx
18501  */
18502 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18503
18504 /**
18505  * Holder htlc secret key used in commitment tx htlc outputs
18506  */
18507 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18508
18509 /**
18510  * Holder htlc secret key used in commitment tx htlc outputs
18511  */
18512 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
18513
18514 /**
18515  * Commitment seed
18516  */
18517 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
18518
18519 /**
18520  * Commitment seed
18521  */
18522 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18523
18524 /**
18525  * Creates a copy of the InMemorySigner
18526  */
18527 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
18528
18529 /**
18530  * Create a new InMemorySigner
18531  */
18532 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);
18533
18534 /**
18535  * Counterparty pubkeys.
18536  * Will panic if ready_channel wasn't called.
18537  */
18538 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18539
18540 /**
18541  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
18542  * transactions, ie the amount of time that we have to wait to recover our funds if we
18543  * broadcast a transaction.
18544  * Will panic if ready_channel wasn't called.
18545  */
18546 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18547
18548 /**
18549  * The contest_delay value specified by us and applied on transactions broadcastable
18550  * by our counterparty, ie the amount of time that they have to wait to recover their funds
18551  * if they broadcast a transaction.
18552  * Will panic if ready_channel wasn't called.
18553  */
18554 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18555
18556 /**
18557  * Whether the holder is the initiator
18558  * Will panic if ready_channel wasn't called.
18559  */
18560 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18561
18562 /**
18563  * Funding outpoint
18564  * Will panic if ready_channel wasn't called.
18565  */
18566 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18567
18568 /**
18569  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
18570  * building transactions.
18571  *
18572  * Will panic if ready_channel wasn't called.
18573  */
18574 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18575
18576 /**
18577  * Whether anchors should be used.
18578  * Will panic if ready_channel wasn't called.
18579  */
18580 MUST_USE_RES bool InMemorySigner_opt_anchors(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18581
18582 /**
18583  * Sign the single input of spend_tx at index `input_idx` which spends the output
18584  * described by descriptor, returning the witness stack for the input.
18585  *
18586  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
18587  * is not spending the outpoint described by `descriptor.outpoint`,
18588  * or if an output descriptor script_pubkey does not match the one we can spend.
18589  */
18590 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);
18591
18592 /**
18593  * Sign the single input of spend_tx at index `input_idx` which spends the output
18594  * described by descriptor, returning the witness stack for the input.
18595  *
18596  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
18597  * is not spending the outpoint described by `descriptor.outpoint`, does not have a
18598  * sequence set to `descriptor.to_self_delay`, or if an output descriptor
18599  * script_pubkey does not match the one we can spend.
18600  */
18601 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);
18602
18603 /**
18604  * Constructs a new BaseSign which calls the relevant methods on this_arg.
18605  * This copies the `inner` pointer in this_arg and thus the returned BaseSign must be freed before this_arg is
18606  */
18607 struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18608
18609 /**
18610  * Constructs a new Sign which calls the relevant methods on this_arg.
18611  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
18612  */
18613 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
18614
18615 /**
18616  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
18617  */
18618 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
18619
18620 /**
18621  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
18622  */
18623 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser, struct LDKSecretKey arg);
18624
18625 /**
18626  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
18627  */
18628 void KeysManager_free(struct LDKKeysManager this_obj);
18629
18630 /**
18631  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
18632  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
18633  * starting_time isn't strictly required to actually be a time, but it must absolutely,
18634  * without a doubt, be unique to this instance. ie if you start multiple times with the same
18635  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
18636  * simply use the current time (with very high precision).
18637  *
18638  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
18639  * obviously, starting_time should be unique every time you reload the library - it is only
18640  * used to generate new ephemeral key data (which will be stored by the individual channel if
18641  * necessary).
18642  *
18643  * Note that the seed is required to recover certain on-chain funds independent of
18644  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
18645  * channel, and some on-chain during-closing funds.
18646  *
18647  * Note that until the 0.1 release there is no guarantee of backward compatibility between
18648  * versions. Once the library is more fully supported, the docs will be updated to include a
18649  * detailed description of the guarantee.
18650  */
18651 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
18652
18653 /**
18654  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
18655  *
18656  * Key derivation parameters are accessible through a per-channel secrets
18657  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
18658  * onchain output detection for which a corresponding delayed_payment_key must be derived.
18659  */
18660 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]);
18661
18662 /**
18663  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
18664  * output to the given change destination (if sufficient change value remains). The
18665  * transaction will have a feerate, at least, of the given value.
18666  *
18667  * Returns `Err(())` if the output value is greater than the input value minus required fee,
18668  * if a descriptor was duplicated, or if an output descriptor `script_pubkey`
18669  * does not match the one we can spend.
18670  *
18671  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
18672  *
18673  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
18674  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
18675  */
18676 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);
18677
18678 /**
18679  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
18680  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
18681  */
18682 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
18683
18684 /**
18685  * Frees any resources used by the PhantomKeysManager, if is_owned is set and inner is non-NULL.
18686  */
18687 void PhantomKeysManager_free(struct LDKPhantomKeysManager this_obj);
18688
18689 /**
18690  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
18691  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
18692  */
18693 struct LDKKeysInterface PhantomKeysManager_as_KeysInterface(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg);
18694
18695 /**
18696  * Constructs a `PhantomKeysManager` given a 32-byte seed and an additional `cross_node_seed`
18697  * that is shared across all nodes that intend to participate in [phantom node payments] together.
18698  *
18699  * See [`KeysManager::new`] for more information on `seed`, `starting_time_secs`, and
18700  * `starting_time_nanos`.
18701  *
18702  * `cross_node_seed` must be the same across all phantom payment-receiving nodes and also the
18703  * same across restarts, or else inbound payments may fail.
18704  *
18705  * [phantom node payments]: PhantomKeysManager
18706  */
18707 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]);
18708
18709 /**
18710  * See [`KeysManager::spend_spendable_outputs`] for documentation on this method.
18711  */
18712 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);
18713
18714 /**
18715  * See [`KeysManager::derive_channel_keys`] for documentation on this method.
18716  */
18717 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]);
18718
18719 /**
18720  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
18721  */
18722 void ChannelManager_free(struct LDKChannelManager this_obj);
18723
18724 /**
18725  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
18726  */
18727 void ChainParameters_free(struct LDKChainParameters this_obj);
18728
18729 /**
18730  * The network for determining the `chain_hash` in Lightning messages.
18731  */
18732 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
18733
18734 /**
18735  * The network for determining the `chain_hash` in Lightning messages.
18736  */
18737 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
18738
18739 /**
18740  * The hash and height of the latest block successfully connected.
18741  *
18742  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
18743  */
18744 struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
18745
18746 /**
18747  * The hash and height of the latest block successfully connected.
18748  *
18749  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
18750  */
18751 void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
18752
18753 /**
18754  * Constructs a new ChainParameters given each field
18755  */
18756 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
18757
18758 /**
18759  * Creates a copy of the ChainParameters
18760  */
18761 struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
18762
18763 /**
18764  * Frees any resources used by the CounterpartyForwardingInfo, if is_owned is set and inner is non-NULL.
18765  */
18766 void CounterpartyForwardingInfo_free(struct LDKCounterpartyForwardingInfo this_obj);
18767
18768 /**
18769  * Base routing fee in millisatoshis.
18770  */
18771 uint32_t CounterpartyForwardingInfo_get_fee_base_msat(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
18772
18773 /**
18774  * Base routing fee in millisatoshis.
18775  */
18776 void CounterpartyForwardingInfo_set_fee_base_msat(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
18777
18778 /**
18779  * Amount in millionths of a satoshi the channel will charge per transferred satoshi.
18780  */
18781 uint32_t CounterpartyForwardingInfo_get_fee_proportional_millionths(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
18782
18783 /**
18784  * Amount in millionths of a satoshi the channel will charge per transferred satoshi.
18785  */
18786 void CounterpartyForwardingInfo_set_fee_proportional_millionths(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
18787
18788 /**
18789  * The minimum difference in cltv_expiry between an ingoing HTLC and its outgoing counterpart,
18790  * such that the outgoing HTLC is forwardable to this counterparty. See `msgs::ChannelUpdate`'s
18791  * `cltv_expiry_delta` for more details.
18792  */
18793 uint16_t CounterpartyForwardingInfo_get_cltv_expiry_delta(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
18794
18795 /**
18796  * The minimum difference in cltv_expiry between an ingoing HTLC and its outgoing counterpart,
18797  * such that the outgoing HTLC is forwardable to this counterparty. See `msgs::ChannelUpdate`'s
18798  * `cltv_expiry_delta` for more details.
18799  */
18800 void CounterpartyForwardingInfo_set_cltv_expiry_delta(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint16_t val);
18801
18802 /**
18803  * Constructs a new CounterpartyForwardingInfo given each field
18804  */
18805 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);
18806
18807 /**
18808  * Creates a copy of the CounterpartyForwardingInfo
18809  */
18810 struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
18811
18812 /**
18813  * Frees any resources used by the ChannelCounterparty, if is_owned is set and inner is non-NULL.
18814  */
18815 void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
18816
18817 /**
18818  * The node_id of our counterparty
18819  */
18820 struct LDKPublicKey ChannelCounterparty_get_node_id(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
18821
18822 /**
18823  * The node_id of our counterparty
18824  */
18825 void ChannelCounterparty_set_node_id(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKPublicKey val);
18826
18827 /**
18828  * The Features the channel counterparty provided upon last connection.
18829  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
18830  * many routing-relevant features are present in the init context.
18831  */
18832 struct LDKInitFeatures ChannelCounterparty_get_features(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
18833
18834 /**
18835  * The Features the channel counterparty provided upon last connection.
18836  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
18837  * many routing-relevant features are present in the init context.
18838  */
18839 void ChannelCounterparty_set_features(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
18840
18841 /**
18842  * The value, in satoshis, that must always be held in the channel for our counterparty. This
18843  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
18844  * claiming at least this value on chain.
18845  *
18846  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
18847  *
18848  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
18849  */
18850 uint64_t ChannelCounterparty_get_unspendable_punishment_reserve(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
18851
18852 /**
18853  * The value, in satoshis, that must always be held in the channel for our counterparty. This
18854  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
18855  * claiming at least this value on chain.
18856  *
18857  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
18858  *
18859  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
18860  */
18861 void ChannelCounterparty_set_unspendable_punishment_reserve(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, uint64_t val);
18862
18863 /**
18864  * Information on the fees and requirements that the counterparty requires when forwarding
18865  * payments to us through this channel.
18866  *
18867  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18868  */
18869 struct LDKCounterpartyForwardingInfo ChannelCounterparty_get_forwarding_info(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
18870
18871 /**
18872  * Information on the fees and requirements that the counterparty requires when forwarding
18873  * payments to us through this channel.
18874  *
18875  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18876  */
18877 void ChannelCounterparty_set_forwarding_info(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCounterpartyForwardingInfo val);
18878
18879 /**
18880  * Constructs a new ChannelCounterparty given each field
18881  */
18882 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);
18883
18884 /**
18885  * Creates a copy of the ChannelCounterparty
18886  */
18887 struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
18888
18889 /**
18890  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
18891  */
18892 void ChannelDetails_free(struct LDKChannelDetails this_obj);
18893
18894 /**
18895  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
18896  * thereafter this is the txid of the funding transaction xor the funding transaction output).
18897  * Note that this means this value is *not* persistent - it can change once during the
18898  * lifetime of the channel.
18899  */
18900 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
18901
18902 /**
18903  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
18904  * thereafter this is the txid of the funding transaction xor the funding transaction output).
18905  * Note that this means this value is *not* persistent - it can change once during the
18906  * lifetime of the channel.
18907  */
18908 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
18909
18910 /**
18911  * Parameters which apply to our counterparty. See individual fields for more information.
18912  */
18913 struct LDKChannelCounterparty ChannelDetails_get_counterparty(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
18914
18915 /**
18916  * Parameters which apply to our counterparty. See individual fields for more information.
18917  */
18918 void ChannelDetails_set_counterparty(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelCounterparty val);
18919
18920 /**
18921  * The Channel's funding transaction output, if we've negotiated the funding transaction with
18922  * our counterparty already.
18923  *
18924  * Note that, if this has been set, `channel_id` will be equivalent to
18925  * `funding_txo.unwrap().to_channel_id()`.
18926  *
18927  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
18928  */
18929 struct LDKOutPoint ChannelDetails_get_funding_txo(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
18930
18931 /**
18932  * The Channel's funding transaction output, if we've negotiated the funding transaction with
18933  * our counterparty already.
18934  *
18935  * Note that, if this has been set, `channel_id` will be equivalent to
18936  * `funding_txo.unwrap().to_channel_id()`.
18937  *
18938  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
18939  */
18940 void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
18941
18942 /**
18943  * The position of the funding transaction in the chain. None if the funding transaction has
18944  * not yet been confirmed and the channel fully opened.
18945  */
18946 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
18947
18948 /**
18949  * The position of the funding transaction in the chain. None if the funding transaction has
18950  * not yet been confirmed and the channel fully opened.
18951  */
18952 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
18953
18954 /**
18955  * The value, in satoshis, of this channel as appears in the funding output
18956  */
18957 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
18958
18959 /**
18960  * The value, in satoshis, of this channel as appears in the funding output
18961  */
18962 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
18963
18964 /**
18965  * The value, in satoshis, that must always be held in the channel for us. This value ensures
18966  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
18967  * this value on chain.
18968  *
18969  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
18970  *
18971  * This value will be `None` for outbound channels until the counterparty accepts the channel.
18972  *
18973  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
18974  */
18975 struct LDKCOption_u64Z ChannelDetails_get_unspendable_punishment_reserve(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
18976
18977 /**
18978  * The value, in satoshis, that must always be held in the channel for us. This value ensures
18979  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
18980  * this value on chain.
18981  *
18982  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
18983  *
18984  * This value will be `None` for outbound channels until the counterparty accepts the channel.
18985  *
18986  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
18987  */
18988 void ChannelDetails_set_unspendable_punishment_reserve(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
18989
18990 /**
18991  * The `user_channel_id` passed in to create_channel, or 0 if the channel was inbound.
18992  */
18993 uint64_t ChannelDetails_get_user_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
18994
18995 /**
18996  * The `user_channel_id` passed in to create_channel, or 0 if the channel was inbound.
18997  */
18998 void ChannelDetails_set_user_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
18999
19000 /**
19001  * Our total balance.  This is the amount we would get if we close the channel.
19002  * This value is not exact. Due to various in-flight changes and feerate changes, exactly this
19003  * amount is not likely to be recoverable on close.
19004  *
19005  * This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
19006  * balance is not available for inclusion in new outbound HTLCs). This further does not include
19007  * any pending outgoing HTLCs which are awaiting some other resolution to be sent.
19008  * This does not consider any on-chain fees.
19009  *
19010  * See also [`ChannelDetails::outbound_capacity_msat`]
19011  */
19012 uint64_t ChannelDetails_get_balance_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19013
19014 /**
19015  * Our total balance.  This is the amount we would get if we close the channel.
19016  * This value is not exact. Due to various in-flight changes and feerate changes, exactly this
19017  * amount is not likely to be recoverable on close.
19018  *
19019  * This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
19020  * balance is not available for inclusion in new outbound HTLCs). This further does not include
19021  * any pending outgoing HTLCs which are awaiting some other resolution to be sent.
19022  * This does not consider any on-chain fees.
19023  *
19024  * See also [`ChannelDetails::outbound_capacity_msat`]
19025  */
19026 void ChannelDetails_set_balance_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19027
19028 /**
19029  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
19030  * any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19031  * available for inclusion in new outbound HTLCs). This further does not include any pending
19032  * outgoing HTLCs which are awaiting some other resolution to be sent.
19033  *
19034  * See also [`ChannelDetails::balance_msat`]
19035  *
19036  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19037  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
19038  * should be able to spend nearly this amount.
19039  */
19040 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19041
19042 /**
19043  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
19044  * any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19045  * available for inclusion in new outbound HTLCs). This further does not include any pending
19046  * outgoing HTLCs which are awaiting some other resolution to be sent.
19047  *
19048  * See also [`ChannelDetails::balance_msat`]
19049  *
19050  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19051  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
19052  * should be able to spend nearly this amount.
19053  */
19054 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19055
19056 /**
19057  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
19058  * include any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19059  * available for inclusion in new inbound HTLCs).
19060  * Note that there are some corner cases not fully handled here, so the actual available
19061  * inbound capacity may be slightly higher than this.
19062  *
19063  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19064  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
19065  * However, our counterparty should be able to spend nearly this amount.
19066  */
19067 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19068
19069 /**
19070  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
19071  * include any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
19072  * available for inclusion in new inbound HTLCs).
19073  * Note that there are some corner cases not fully handled here, so the actual available
19074  * inbound capacity may be slightly higher than this.
19075  *
19076  * This value is not exact. Due to various in-flight changes, feerate changes, and our
19077  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
19078  * However, our counterparty should be able to spend nearly this amount.
19079  */
19080 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
19081
19082 /**
19083  * The number of required confirmations on the funding transaction before the funding will be
19084  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
19085  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
19086  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
19087  * [`ChannelHandshakeLimits::max_minimum_depth`].
19088  *
19089  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19090  *
19091  * [`is_outbound`]: ChannelDetails::is_outbound
19092  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
19093  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
19094  */
19095 struct LDKCOption_u32Z ChannelDetails_get_confirmations_required(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19096
19097 /**
19098  * The number of required confirmations on the funding transaction before the funding will be
19099  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
19100  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
19101  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
19102  * [`ChannelHandshakeLimits::max_minimum_depth`].
19103  *
19104  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19105  *
19106  * [`is_outbound`]: ChannelDetails::is_outbound
19107  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
19108  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
19109  */
19110 void ChannelDetails_set_confirmations_required(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
19111
19112 /**
19113  * The number of blocks (after our commitment transaction confirms) that we will need to wait
19114  * until we can claim our funds after we force-close the channel. During this time our
19115  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
19116  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
19117  * time to claim our non-HTLC-encumbered funds.
19118  *
19119  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19120  */
19121 struct LDKCOption_u16Z ChannelDetails_get_force_close_spend_delay(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19122
19123 /**
19124  * The number of blocks (after our commitment transaction confirms) that we will need to wait
19125  * until we can claim our funds after we force-close the channel. During this time our
19126  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
19127  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
19128  * time to claim our non-HTLC-encumbered funds.
19129  *
19130  * This value will be `None` for outbound channels until the counterparty accepts the channel.
19131  */
19132 void ChannelDetails_set_force_close_spend_delay(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u16Z val);
19133
19134 /**
19135  * True if the channel was initiated (and thus funded) by us.
19136  */
19137 bool ChannelDetails_get_is_outbound(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19138
19139 /**
19140  * True if the channel was initiated (and thus funded) by us.
19141  */
19142 void ChannelDetails_set_is_outbound(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19143
19144 /**
19145  * True if the channel is confirmed, funding_locked messages have been exchanged, and the
19146  * channel is not currently being shut down. `funding_locked` message exchange implies the
19147  * required confirmation count has been reached (and we were connected to the peer at some
19148  * point after the funding transaction received enough confirmations). The required
19149  * confirmation count is provided in [`confirmations_required`].
19150  *
19151  * [`confirmations_required`]: ChannelDetails::confirmations_required
19152  */
19153 bool ChannelDetails_get_is_funding_locked(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19154
19155 /**
19156  * True if the channel is confirmed, funding_locked messages have been exchanged, and the
19157  * channel is not currently being shut down. `funding_locked` message exchange implies the
19158  * required confirmation count has been reached (and we were connected to the peer at some
19159  * point after the funding transaction received enough confirmations). The required
19160  * confirmation count is provided in [`confirmations_required`].
19161  *
19162  * [`confirmations_required`]: ChannelDetails::confirmations_required
19163  */
19164 void ChannelDetails_set_is_funding_locked(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19165
19166 /**
19167  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
19168  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
19169  *
19170  * This is a strict superset of `is_funding_locked`.
19171  */
19172 bool ChannelDetails_get_is_usable(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19173
19174 /**
19175  * True if the channel is (a) confirmed and funding_locked messages have been exchanged, (b)
19176  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
19177  *
19178  * This is a strict superset of `is_funding_locked`.
19179  */
19180 void ChannelDetails_set_is_usable(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19181
19182 /**
19183  * True if this channel is (or will be) publicly-announced.
19184  */
19185 bool ChannelDetails_get_is_public(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
19186
19187 /**
19188  * True if this channel is (or will be) publicly-announced.
19189  */
19190 void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
19191
19192 /**
19193  * Constructs a new ChannelDetails given each field
19194  */
19195 MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKCOption_u64Z short_channel_id_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_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);
19196
19197 /**
19198  * Creates a copy of the ChannelDetails
19199  */
19200 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
19201
19202 /**
19203  * Frees any resources used by the PaymentSendFailure
19204  */
19205 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
19206
19207 /**
19208  * Creates a copy of the PaymentSendFailure
19209  */
19210 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
19211
19212 /**
19213  * Utility method to constructs a new ParameterError-variant PaymentSendFailure
19214  */
19215 struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
19216
19217 /**
19218  * Utility method to constructs a new PathParameterError-variant PaymentSendFailure
19219  */
19220 struct LDKPaymentSendFailure PaymentSendFailure_path_parameter_error(struct LDKCVec_CResult_NoneAPIErrorZZ a);
19221
19222 /**
19223  * Utility method to constructs a new AllFailedRetrySafe-variant PaymentSendFailure
19224  */
19225 struct LDKPaymentSendFailure PaymentSendFailure_all_failed_retry_safe(struct LDKCVec_APIErrorZ a);
19226
19227 /**
19228  * Utility method to constructs a new PartialFailure-variant PaymentSendFailure
19229  */
19230 struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ results, struct LDKRouteParameters failed_paths_retry, struct LDKThirtyTwoBytes payment_id);
19231
19232 /**
19233  * Frees any resources used by the PhantomRouteHints, if is_owned is set and inner is non-NULL.
19234  */
19235 void PhantomRouteHints_free(struct LDKPhantomRouteHints this_obj);
19236
19237 /**
19238  * The list of channels to be included in the invoice route hints.
19239  */
19240 struct LDKCVec_ChannelDetailsZ PhantomRouteHints_get_channels(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
19241
19242 /**
19243  * The list of channels to be included in the invoice route hints.
19244  */
19245 void PhantomRouteHints_set_channels(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKCVec_ChannelDetailsZ val);
19246
19247 /**
19248  * A fake scid used for representing the phantom node's fake channel in generating the invoice
19249  * route hints.
19250  */
19251 uint64_t PhantomRouteHints_get_phantom_scid(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
19252
19253 /**
19254  * A fake scid used for representing the phantom node's fake channel in generating the invoice
19255  * route hints.
19256  */
19257 void PhantomRouteHints_set_phantom_scid(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, uint64_t val);
19258
19259 /**
19260  * The pubkey of the real backing node that would ultimately receive the payment.
19261  */
19262 struct LDKPublicKey PhantomRouteHints_get_real_node_pubkey(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
19263
19264 /**
19265  * The pubkey of the real backing node that would ultimately receive the payment.
19266  */
19267 void PhantomRouteHints_set_real_node_pubkey(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKPublicKey val);
19268
19269 /**
19270  * Constructs a new PhantomRouteHints given each field
19271  */
19272 MUST_USE_RES struct LDKPhantomRouteHints PhantomRouteHints_new(struct LDKCVec_ChannelDetailsZ channels_arg, uint64_t phantom_scid_arg, struct LDKPublicKey real_node_pubkey_arg);
19273
19274 /**
19275  * Constructs a new ChannelManager to hold several channels and route between them.
19276  *
19277  * This is the main \"logic hub\" for all channel-related actions, and implements
19278  * ChannelMessageHandler.
19279  *
19280  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
19281  *
19282  * panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
19283  *
19284  * Users need to notify the new ChannelManager when a new block is connected or
19285  * disconnected using its `block_connected` and `block_disconnected` methods, starting
19286  * from after `params.latest_hash`.
19287  */
19288 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);
19289
19290 /**
19291  * Gets the current configuration applied to all new channels,  as
19292  */
19293 MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
19294
19295 /**
19296  * Creates a new outbound channel to the given remote node and with the given value.
19297  *
19298  * `user_channel_id` will be provided back as in
19299  * [`Event::FundingGenerationReady::user_channel_id`] to allow tracking of which events
19300  * correspond with which `create_channel` call. Note that the `user_channel_id` defaults to 0
19301  * for inbound channels, so you may wish to avoid using 0 for `user_channel_id` here.
19302  * `user_channel_id` has no meaning inside of LDK, it is simply copied to events and otherwise
19303  * ignored.
19304  *
19305  * Raises [`APIError::APIMisuseError`] when `channel_value_satoshis` > 2**24 or `push_msat` is
19306  * greater than `channel_value_satoshis * 1k` or `channel_value_satoshis < 1000`.
19307  *
19308  * Note that we do not check if you are currently connected to the given peer. If no
19309  * connection is available, the outbound `open_channel` message may fail to send, resulting in
19310  * the channel eventually being silently forgotten (dropped on reload).
19311  *
19312  * Returns the new Channel's temporary `channel_id`. This ID will appear as
19313  * [`Event::FundingGenerationReady::temporary_channel_id`] and in
19314  * [`ChannelDetails::channel_id`] until after
19315  * [`ChannelManager::funding_transaction_generated`] is called, swapping the Channel's ID for
19316  * one derived from the funding transaction's TXID. If the counterparty rejects the channel
19317  * immediately, this temporary ID will appear in [`Event::ChannelClosed::channel_id`].
19318  *
19319  * [`Event::FundingGenerationReady::user_channel_id`]: events::Event::FundingGenerationReady::user_channel_id
19320  * [`Event::FundingGenerationReady::temporary_channel_id`]: events::Event::FundingGenerationReady::temporary_channel_id
19321  * [`Event::ChannelClosed::channel_id`]: events::Event::ChannelClosed::channel_id
19322  *
19323  * Note that override_config (or a relevant inner pointer) may be NULL or all-0s to represent None
19324  */
19325 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);
19326
19327 /**
19328  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
19329  * more information.
19330  */
19331 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
19332
19333 /**
19334  * Gets the list of usable channels, in random order. Useful as an argument to
19335  * get_route to ensure non-announced channels are used.
19336  *
19337  * These are guaranteed to have their [`ChannelDetails::is_usable`] value set to true, see the
19338  * documentation for [`ChannelDetails::is_usable`] for more info on exactly what the criteria
19339  * are.
19340  */
19341 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
19342
19343 /**
19344  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
19345  * will be accepted on the given channel, and after additional timeout/the closing of all
19346  * pending HTLCs, the channel will be closed on chain.
19347  *
19348  *  * If we are the channel initiator, we will pay between our [`Background`] and
19349  *    [`ChannelConfig::force_close_avoidance_max_fee_satoshis`] plus our [`Normal`] fee
19350  *    estimate.
19351  *  * If our counterparty is the channel initiator, we will require a channel closing
19352  *    transaction feerate of at least our [`Background`] feerate or the feerate which
19353  *    would appear on a force-closure transaction, whichever is lower. We will allow our
19354  *    counterparty to pay as much fee as they'd like, however.
19355  *
19356  * May generate a SendShutdown message event on success, which should be relayed.
19357  *
19358  * [`ChannelConfig::force_close_avoidance_max_fee_satoshis`]: crate::util::config::ChannelConfig::force_close_avoidance_max_fee_satoshis
19359  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
19360  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
19361  */
19362 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
19363
19364 /**
19365  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
19366  * will be accepted on the given channel, and after additional timeout/the closing of all
19367  * pending HTLCs, the channel will be closed on chain.
19368  *
19369  * `target_feerate_sat_per_1000_weight` has different meanings depending on if we initiated
19370  * the channel being closed or not:
19371  *  * If we are the channel initiator, we will pay at least this feerate on the closing
19372  *    transaction. The upper-bound is set by
19373  *    [`ChannelConfig::force_close_avoidance_max_fee_satoshis`] plus our [`Normal`] fee
19374  *    estimate (or `target_feerate_sat_per_1000_weight`, if it is greater).
19375  *  * If our counterparty is the channel initiator, we will refuse to accept a channel closure
19376  *    transaction feerate below `target_feerate_sat_per_1000_weight` (or the feerate which
19377  *    will appear on a force-closure transaction, whichever is lower).
19378  *
19379  * May generate a SendShutdown message event on success, which should be relayed.
19380  *
19381  * [`ChannelConfig::force_close_avoidance_max_fee_satoshis`]: crate::util::config::ChannelConfig::force_close_avoidance_max_fee_satoshis
19382  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
19383  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
19384  */
19385 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);
19386
19387 /**
19388  * Force closes a channel, immediately broadcasting the latest local commitment transaction to
19389  * the chain and rejecting new HTLCs on the given channel. Fails if channel_id is unknown to the manager.
19390  */
19391 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32]);
19392
19393 /**
19394  * Force close all channels, immediately broadcasting the latest local commitment transaction
19395  * for each to the chain and rejecting new HTLCs on each.
19396  */
19397 void ChannelManager_force_close_all_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
19398
19399 /**
19400  * Sends a payment along a given route.
19401  *
19402  * Value parameters are provided via the last hop in route, see documentation for RouteHop
19403  * fields for more info.
19404  *
19405  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
19406  * payment), we don't do anything to stop you! We always try to ensure that if the provided
19407  * next hop knows the preimage to payment_hash they can claim an additional amount as
19408  * specified in the last hop in the route! Thus, you should probably do your own
19409  * payment_preimage tracking (which you should already be doing as they represent \"proof of
19410  * payment\") and prevent double-sends yourself.
19411  *
19412  * May generate SendHTLCs message(s) event on success, which should be relayed.
19413  *
19414  * Each path may have a different return value, and PaymentSendValue may return a Vec with
19415  * each entry matching the corresponding-index entry in the route paths, see
19416  * PaymentSendFailure for more info.
19417  *
19418  * In general, a path may raise:
19419  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
19420  *    node public key) is specified.
19421  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
19422  *    (including due to previous monitor update failure or new permanent monitor update
19423  *    failure).
19424  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
19425  *    relevant updates.
19426  *
19427  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
19428  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
19429  * different route unless you intend to pay twice!
19430  *
19431  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
19432  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
19433  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
19434  * must not contain multiple paths as multi-path payments require a recipient-provided
19435  * payment_secret.
19436  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
19437  * bit set (either as required or as available). If multiple paths are present in the Route,
19438  * we assume the invoice had the basic_mpp feature set.
19439  *
19440  * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
19441  */
19442 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);
19443
19444 /**
19445  * Retries a payment along the given [`Route`].
19446  *
19447  * Errors returned are a superset of those returned from [`send_payment`], so see
19448  * [`send_payment`] documentation for more details on errors. This method will also error if the
19449  * retry amount puts the payment more than 10% over the payment's total amount, if the payment
19450  * for the given `payment_id` cannot be found (likely due to timeout or success), or if
19451  * further retries have been disabled with [`abandon_payment`].
19452  *
19453  * [`send_payment`]: [`ChannelManager::send_payment`]
19454  * [`abandon_payment`]: [`ChannelManager::abandon_payment`]
19455  */
19456 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);
19457
19458 /**
19459  * Signals that no further retries for the given payment will occur.
19460  *
19461  * After this method returns, any future calls to [`retry_payment`] for the given `payment_id`
19462  * will fail with [`PaymentSendFailure::ParameterError`]. If no such event has been generated,
19463  * an [`Event::PaymentFailed`] event will be generated as soon as there are no remaining
19464  * pending HTLCs for this payment.
19465  *
19466  * Note that calling this method does *not* prevent a payment from succeeding. You must still
19467  * wait until you receive either a [`Event::PaymentFailed`] or [`Event::PaymentSent`] event to
19468  * determine the ultimate status of a payment.
19469  *
19470  * [`retry_payment`]: Self::retry_payment
19471  * [`Event::PaymentFailed`]: events::Event::PaymentFailed
19472  * [`Event::PaymentSent`]: events::Event::PaymentSent
19473  */
19474 void ChannelManager_abandon_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id);
19475
19476 /**
19477  * Send a spontaneous payment, which is a payment that does not require the recipient to have
19478  * generated an invoice. Optionally, you may specify the preimage. If you do choose to specify
19479  * the preimage, it must be a cryptographically secure random value that no intermediate node
19480  * would be able to guess -- otherwise, an intermediate node may claim the payment and it will
19481  * never reach the recipient.
19482  *
19483  * See [`send_payment`] documentation for more details on the return value of this function.
19484  *
19485  * Similar to regular payments, you MUST NOT reuse a `payment_preimage` value. See
19486  * [`send_payment`] for more information about the risks of duplicate preimage usage.
19487  *
19488  * Note that `route` must have exactly one path.
19489  *
19490  * [`send_payment`]: Self::send_payment
19491  *
19492  * Note that payment_preimage (or a relevant inner pointer) may be NULL or all-0s to represent None
19493  */
19494 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);
19495
19496 /**
19497  * Call this upon creation of a funding transaction for the given channel.
19498  *
19499  * Returns an [`APIError::APIMisuseError`] if the funding_transaction spent non-SegWit outputs
19500  * or if no output was found which matches the parameters in [`Event::FundingGenerationReady`].
19501  *
19502  * Returns [`APIError::ChannelUnavailable`] if a funding transaction has already been provided
19503  * for the channel or if the channel has been closed as indicated by [`Event::ChannelClosed`].
19504  *
19505  * May panic if the output found in the funding transaction is duplicative with some other
19506  * channel (note that this should be trivially prevented by using unique funding transaction
19507  * keys per-channel).
19508  *
19509  * Do NOT broadcast the funding transaction yourself. When we have safely received our
19510  * counterparty's signature the funding transaction will automatically be broadcast via the
19511  * [`BroadcasterInterface`] provided when this `ChannelManager` was constructed.
19512  *
19513  * Note that this includes RBF or similar transaction replacement strategies - lightning does
19514  * not currently support replacing a funding transaction on an existing channel. Instead,
19515  * create a new channel with a conflicting funding transaction.
19516  *
19517  * [`Event::FundingGenerationReady`]: crate::util::events::Event::FundingGenerationReady
19518  * [`Event::ChannelClosed`]: crate::util::events::Event::ChannelClosed
19519  */
19520 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);
19521
19522 /**
19523  * Regenerates channel_announcements and generates a signed node_announcement from the given
19524  * arguments, providing them in corresponding events via
19525  * [`get_and_clear_pending_msg_events`], if at least one public channel has been confirmed
19526  * on-chain. This effectively re-broadcasts all channel announcements and sends our node
19527  * announcement to ensure that the lightning P2P network is aware of the channels we have and
19528  * our network addresses.
19529  *
19530  * `rgb` is a node \"color\" and `alias` is a printable human-readable string to describe this
19531  * node to humans. They carry no in-protocol meaning.
19532  *
19533  * `addresses` represent the set (possibly empty) of socket addresses on which this node
19534  * accepts incoming connections. These will be included in the node_announcement, publicly
19535  * tying these addresses together and to this node. If you wish to preserve user privacy,
19536  * addresses should likely contain only Tor Onion addresses.
19537  *
19538  * Panics if `addresses` is absurdly large (more than 500).
19539  *
19540  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
19541  */
19542 void ChannelManager_broadcast_node_announcement(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
19543
19544 /**
19545  * Processes HTLCs which are pending waiting on random forward delay.
19546  *
19547  * Should only really ever be called in response to a PendingHTLCsForwardable event.
19548  * Will likely generate further events.
19549  */
19550 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
19551
19552 /**
19553  * Performs actions which should happen on startup and roughly once per minute thereafter.
19554  *
19555  * This currently includes:
19556  *  * Increasing or decreasing the on-chain feerate estimates for our outbound channels,
19557  *  * Broadcasting `ChannelUpdate` messages if we've been disconnected from our peer for more
19558  *    than a minute, informing the network that they should no longer attempt to route over
19559  *    the channel.
19560  *
19561  * Note that this may cause reentrancy through `chain::Watch::update_channel` calls or feerate
19562  * estimate fetches.
19563  */
19564 void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
19565
19566 /**
19567  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
19568  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
19569  * along the path (including in our own channel on which we received it).
19570  * Returns false if no payment was found to fail backwards, true if the process of failing the
19571  * HTLC backwards has been started.
19572  */
19573 MUST_USE_RES bool ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
19574
19575 /**
19576  * Provides a payment preimage in response to [`Event::PaymentReceived`], generating any
19577  * [`MessageSendEvent`]s needed to claim the payment.
19578  *
19579  * Note that if you did not set an `amount_msat` when calling [`create_inbound_payment`] or
19580  * [`create_inbound_payment_for_hash`] you must check that the amount in the `PaymentReceived`
19581  * event matches your expectation. If you fail to do so and call this method, you may provide
19582  * the sender \"proof-of-payment\" when they did not fulfill the full expected payment.
19583  *
19584  * Returns whether any HTLCs were claimed, and thus if any new [`MessageSendEvent`]s are now
19585  * pending for processing via [`get_and_clear_pending_msg_events`].
19586  *
19587  * [`Event::PaymentReceived`]: crate::util::events::Event::PaymentReceived
19588  * [`create_inbound_payment`]: Self::create_inbound_payment
19589  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
19590  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
19591  */
19592 MUST_USE_RES bool ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage);
19593
19594 /**
19595  * Gets the node_id held by this ChannelManager
19596  */
19597 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
19598
19599 /**
19600  * Called to accept a request to open a channel after [`Event::OpenChannelRequest`] has been
19601  * triggered.
19602  *
19603  * The `temporary_channel_id` parameter indicates which inbound channel should be accepted.
19604  *
19605  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
19606  */
19607 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_accept_inbound_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32]);
19608
19609 /**
19610  * Gets a payment secret and payment hash for use in an invoice given to a third party wishing
19611  * to pay us.
19612  *
19613  * This differs from [`create_inbound_payment_for_hash`] only in that it generates the
19614  * [`PaymentHash`] and [`PaymentPreimage`] for you.
19615  *
19616  * The [`PaymentPreimage`] will ultimately be returned to you in the [`PaymentReceived`], which
19617  * will have the [`PaymentReceived::payment_preimage`] field filled in. That should then be
19618  * passed directly to [`claim_funds`].
19619  *
19620  * See [`create_inbound_payment_for_hash`] for detailed documentation on behavior and requirements.
19621  *
19622  * Note that a malicious eavesdropper can intuit whether an inbound payment was created by
19623  * `create_inbound_payment` or `create_inbound_payment_for_hash` based on runtime.
19624  *
19625  * # Note
19626  *
19627  * If you register an inbound payment with this method, then serialize the `ChannelManager`, then
19628  * deserialize it with a node running 0.0.103 and earlier, the payment will fail to be received.
19629  *
19630  * Errors if `min_value_msat` is greater than total bitcoin supply.
19631  *
19632  * [`claim_funds`]: Self::claim_funds
19633  * [`PaymentReceived`]: events::Event::PaymentReceived
19634  * [`PaymentReceived::payment_preimage`]: events::Event::PaymentReceived::payment_preimage
19635  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
19636  */
19637 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);
19638
19639 /**
19640  * Legacy version of [`create_inbound_payment`]. Use this method if you wish to share
19641  * serialized state with LDK node(s) running 0.0.103 and earlier.
19642  *
19643  * # Note
19644  * This method is deprecated and will be removed soon.
19645  *
19646  * [`create_inbound_payment`]: Self::create_inbound_payment
19647  */
19648 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);
19649
19650 /**
19651  * Gets a [`PaymentSecret`] for a given [`PaymentHash`], for which the payment preimage is
19652  * stored external to LDK.
19653  *
19654  * A [`PaymentReceived`] event will only be generated if the [`PaymentSecret`] matches a
19655  * payment secret fetched via this method or [`create_inbound_payment`], and which is at least
19656  * the `min_value_msat` provided here, if one is provided.
19657  *
19658  * The [`PaymentHash`] (and corresponding [`PaymentPreimage`]) should be globally unique, though
19659  * note that LDK will not stop you from registering duplicate payment hashes for inbound
19660  * payments.
19661  *
19662  * `min_value_msat` should be set if the invoice being generated contains a value. Any payment
19663  * received for the returned [`PaymentHash`] will be required to be at least `min_value_msat`
19664  * before a [`PaymentReceived`] event will be generated, ensuring that we do not provide the
19665  * sender \"proof-of-payment\" unless they have paid the required amount.
19666  *
19667  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
19668  * in excess of the current time. This should roughly match the expiry time set in the invoice.
19669  * After this many seconds, we will remove the inbound payment, resulting in any attempts to
19670  * pay the invoice failing. The BOLT spec suggests 3,600 secs as a default validity time for
19671  * invoices when no timeout is set.
19672  *
19673  * Note that we use block header time to time-out pending inbound payments (with some margin
19674  * to compensate for the inaccuracy of block header timestamps). Thus, in practice we will
19675  * accept a payment and generate a [`PaymentReceived`] event for some time after the expiry.
19676  * If you need exact expiry semantics, you should enforce them upon receipt of
19677  * [`PaymentReceived`].
19678  *
19679  * May panic if `invoice_expiry_delta_secs` is greater than one year.
19680  *
19681  * Note that invoices generated for inbound payments should have their `min_final_cltv_expiry`
19682  * set to at least [`MIN_FINAL_CLTV_EXPIRY`].
19683  *
19684  * Note that a malicious eavesdropper can intuit whether an inbound payment was created by
19685  * `create_inbound_payment` or `create_inbound_payment_for_hash` based on runtime.
19686  *
19687  * # Note
19688  *
19689  * If you register an inbound payment with this method, then serialize the `ChannelManager`, then
19690  * deserialize it with a node running 0.0.103 and earlier, the payment will fail to be received.
19691  *
19692  * Errors if `min_value_msat` is greater than total bitcoin supply.
19693  *
19694  * [`create_inbound_payment`]: Self::create_inbound_payment
19695  * [`PaymentReceived`]: events::Event::PaymentReceived
19696  */
19697 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);
19698
19699 /**
19700  * Legacy version of [`create_inbound_payment_for_hash`]. Use this method if you wish to share
19701  * serialized state with LDK node(s) running 0.0.103 and earlier.
19702  *
19703  * # Note
19704  * This method is deprecated and will be removed soon.
19705  *
19706  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
19707  */
19708 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);
19709
19710 /**
19711  * Gets an LDK-generated payment preimage from a payment hash and payment secret that were
19712  * previously returned from [`create_inbound_payment`].
19713  *
19714  * [`create_inbound_payment`]: Self::create_inbound_payment
19715  */
19716 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);
19717
19718 /**
19719  * Gets a fake short channel id for use in receiving [phantom node payments]. These fake scids
19720  * are used when constructing the phantom invoice's route hints.
19721  *
19722  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
19723  */
19724 MUST_USE_RES uint64_t ChannelManager_get_phantom_scid(const struct LDKChannelManager *NONNULL_PTR this_arg);
19725
19726 /**
19727  * Gets route hints for use in receiving [phantom node payments].
19728  *
19729  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
19730  */
19731 MUST_USE_RES struct LDKPhantomRouteHints ChannelManager_get_phantom_route_hints(const struct LDKChannelManager *NONNULL_PTR this_arg);
19732
19733 /**
19734  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
19735  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
19736  */
19737 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
19738
19739 /**
19740  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
19741  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
19742  */
19743 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
19744
19745 /**
19746  * Constructs a new Listen which calls the relevant methods on this_arg.
19747  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
19748  */
19749 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
19750
19751 /**
19752  * Constructs a new Confirm which calls the relevant methods on this_arg.
19753  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
19754  */
19755 struct LDKConfirm ChannelManager_as_Confirm(const struct LDKChannelManager *NONNULL_PTR this_arg);
19756
19757 /**
19758  * Blocks until ChannelManager needs to be persisted or a timeout is reached. It returns a bool
19759  * indicating whether persistence is necessary. Only one listener on
19760  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
19761  * up.
19762  *
19763  * Note that this method is not available with the `no-std` feature.
19764  */
19765 MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
19766
19767 /**
19768  * Blocks until ChannelManager needs to be persisted. Only one listener on
19769  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
19770  * up.
19771  */
19772 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
19773
19774 /**
19775  * Gets the latest best block which was connected either via the [`chain::Listen`] or
19776  * [`chain::Confirm`] interfaces.
19777  */
19778 MUST_USE_RES struct LDKBestBlock ChannelManager_current_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg);
19779
19780 /**
19781  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
19782  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
19783  */
19784 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
19785
19786 /**
19787  * Serialize the CounterpartyForwardingInfo object into a byte array which can be read by CounterpartyForwardingInfo_read
19788  */
19789 struct LDKCVec_u8Z CounterpartyForwardingInfo_write(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR obj);
19790
19791 /**
19792  * Read a CounterpartyForwardingInfo from a byte array, created by CounterpartyForwardingInfo_write
19793  */
19794 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CounterpartyForwardingInfo_read(struct LDKu8slice ser);
19795
19796 /**
19797  * Serialize the ChannelCounterparty object into a byte array which can be read by ChannelCounterparty_read
19798  */
19799 struct LDKCVec_u8Z ChannelCounterparty_write(const struct LDKChannelCounterparty *NONNULL_PTR obj);
19800
19801 /**
19802  * Read a ChannelCounterparty from a byte array, created by ChannelCounterparty_write
19803  */
19804 struct LDKCResult_ChannelCounterpartyDecodeErrorZ ChannelCounterparty_read(struct LDKu8slice ser);
19805
19806 /**
19807  * Serialize the ChannelDetails object into a byte array which can be read by ChannelDetails_read
19808  */
19809 struct LDKCVec_u8Z ChannelDetails_write(const struct LDKChannelDetails *NONNULL_PTR obj);
19810
19811 /**
19812  * Read a ChannelDetails from a byte array, created by ChannelDetails_write
19813  */
19814 struct LDKCResult_ChannelDetailsDecodeErrorZ ChannelDetails_read(struct LDKu8slice ser);
19815
19816 /**
19817  * Serialize the PhantomRouteHints object into a byte array which can be read by PhantomRouteHints_read
19818  */
19819 struct LDKCVec_u8Z PhantomRouteHints_write(const struct LDKPhantomRouteHints *NONNULL_PTR obj);
19820
19821 /**
19822  * Read a PhantomRouteHints from a byte array, created by PhantomRouteHints_write
19823  */
19824 struct LDKCResult_PhantomRouteHintsDecodeErrorZ PhantomRouteHints_read(struct LDKu8slice ser);
19825
19826 /**
19827  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
19828  */
19829 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
19830
19831 /**
19832  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
19833  */
19834 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
19835
19836 /**
19837  * The keys provider which will give us relevant keys. Some keys will be loaded during
19838  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
19839  * signing data.
19840  */
19841 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
19842
19843 /**
19844  * The keys provider which will give us relevant keys. Some keys will be loaded during
19845  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
19846  * signing data.
19847  */
19848 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
19849
19850 /**
19851  * The fee_estimator for use in the ChannelManager in the future.
19852  *
19853  * No calls to the FeeEstimator will be made during deserialization.
19854  */
19855 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
19856
19857 /**
19858  * The fee_estimator for use in the ChannelManager in the future.
19859  *
19860  * No calls to the FeeEstimator will be made during deserialization.
19861  */
19862 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
19863
19864 /**
19865  * The chain::Watch for use in the ChannelManager in the future.
19866  *
19867  * No calls to the chain::Watch will be made during deserialization. It is assumed that
19868  * you have deserialized ChannelMonitors separately and will add them to your
19869  * chain::Watch after deserializing this ChannelManager.
19870  */
19871 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
19872
19873 /**
19874  * The chain::Watch for use in the ChannelManager in the future.
19875  *
19876  * No calls to the chain::Watch will be made during deserialization. It is assumed that
19877  * you have deserialized ChannelMonitors separately and will add them to your
19878  * chain::Watch after deserializing this ChannelManager.
19879  */
19880 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
19881
19882 /**
19883  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
19884  * used to broadcast the latest local commitment transactions of channels which must be
19885  * force-closed during deserialization.
19886  */
19887 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
19888
19889 /**
19890  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
19891  * used to broadcast the latest local commitment transactions of channels which must be
19892  * force-closed during deserialization.
19893  */
19894 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
19895
19896 /**
19897  * The Logger for use in the ChannelManager and which may be used to log information during
19898  * deserialization.
19899  */
19900 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
19901
19902 /**
19903  * The Logger for use in the ChannelManager and which may be used to log information during
19904  * deserialization.
19905  */
19906 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
19907
19908 /**
19909  * Default settings used for new channels. Any existing channels will continue to use the
19910  * runtime settings which were stored when the ChannelManager was serialized.
19911  */
19912 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
19913
19914 /**
19915  * Default settings used for new channels. Any existing channels will continue to use the
19916  * runtime settings which were stored when the ChannelManager was serialized.
19917  */
19918 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
19919
19920 /**
19921  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
19922  * HashMap for you. This is primarily useful for C bindings where it is not practical to
19923  * populate a HashMap directly from C.
19924  */
19925 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);
19926
19927 /**
19928  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
19929  */
19930 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
19931
19932 /**
19933  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
19934  */
19935 void DecodeError_free(struct LDKDecodeError this_obj);
19936
19937 /**
19938  * Creates a copy of the DecodeError
19939  */
19940 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
19941
19942 /**
19943  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
19944  */
19945 void Init_free(struct LDKInit this_obj);
19946
19947 /**
19948  * The relevant features which the sender supports
19949  */
19950 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
19951
19952 /**
19953  * The relevant features which the sender supports
19954  */
19955 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
19956
19957 /**
19958  * Constructs a new Init given each field
19959  */
19960 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
19961
19962 /**
19963  * Creates a copy of the Init
19964  */
19965 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
19966
19967 /**
19968  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
19969  */
19970 void ErrorMessage_free(struct LDKErrorMessage this_obj);
19971
19972 /**
19973  * The channel ID involved in the error.
19974  *
19975  * All-0s indicates a general error unrelated to a specific channel, after which all channels
19976  * with the sending peer should be closed.
19977  */
19978 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
19979
19980 /**
19981  * The channel ID involved in the error.
19982  *
19983  * All-0s indicates a general error unrelated to a specific channel, after which all channels
19984  * with the sending peer should be closed.
19985  */
19986 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
19987
19988 /**
19989  * A possibly human-readable error description.
19990  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
19991  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
19992  * the terminal emulator or the logging subsystem.
19993  */
19994 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
19995
19996 /**
19997  * A possibly human-readable error description.
19998  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
19999  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20000  * the terminal emulator or the logging subsystem.
20001  */
20002 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKStr val);
20003
20004 /**
20005  * Constructs a new ErrorMessage given each field
20006  */
20007 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
20008
20009 /**
20010  * Creates a copy of the ErrorMessage
20011  */
20012 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
20013
20014 /**
20015  * Frees any resources used by the WarningMessage, if is_owned is set and inner is non-NULL.
20016  */
20017 void WarningMessage_free(struct LDKWarningMessage this_obj);
20018
20019 /**
20020  * The channel ID involved in the warning.
20021  *
20022  * All-0s indicates a warning unrelated to a specific channel.
20023  */
20024 const uint8_t (*WarningMessage_get_channel_id(const struct LDKWarningMessage *NONNULL_PTR this_ptr))[32];
20025
20026 /**
20027  * The channel ID involved in the warning.
20028  *
20029  * All-0s indicates a warning unrelated to a specific channel.
20030  */
20031 void WarningMessage_set_channel_id(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20032
20033 /**
20034  * A possibly human-readable warning description.
20035  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
20036  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20037  * the terminal emulator or the logging subsystem.
20038  */
20039 struct LDKStr WarningMessage_get_data(const struct LDKWarningMessage *NONNULL_PTR this_ptr);
20040
20041 /**
20042  * A possibly human-readable warning description.
20043  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
20044  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
20045  * the terminal emulator or the logging subsystem.
20046  */
20047 void WarningMessage_set_data(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKStr val);
20048
20049 /**
20050  * Constructs a new WarningMessage given each field
20051  */
20052 MUST_USE_RES struct LDKWarningMessage WarningMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
20053
20054 /**
20055  * Creates a copy of the WarningMessage
20056  */
20057 struct LDKWarningMessage WarningMessage_clone(const struct LDKWarningMessage *NONNULL_PTR orig);
20058
20059 /**
20060  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
20061  */
20062 void Ping_free(struct LDKPing this_obj);
20063
20064 /**
20065  * The desired response length
20066  */
20067 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
20068
20069 /**
20070  * The desired response length
20071  */
20072 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
20073
20074 /**
20075  * The ping packet size.
20076  * This field is not sent on the wire. byteslen zeros are sent.
20077  */
20078 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
20079
20080 /**
20081  * The ping packet size.
20082  * This field is not sent on the wire. byteslen zeros are sent.
20083  */
20084 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
20085
20086 /**
20087  * Constructs a new Ping given each field
20088  */
20089 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
20090
20091 /**
20092  * Creates a copy of the Ping
20093  */
20094 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
20095
20096 /**
20097  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
20098  */
20099 void Pong_free(struct LDKPong this_obj);
20100
20101 /**
20102  * The pong packet size.
20103  * This field is not sent on the wire. byteslen zeros are sent.
20104  */
20105 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
20106
20107 /**
20108  * The pong packet size.
20109  * This field is not sent on the wire. byteslen zeros are sent.
20110  */
20111 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
20112
20113 /**
20114  * Constructs a new Pong given each field
20115  */
20116 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
20117
20118 /**
20119  * Creates a copy of the Pong
20120  */
20121 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
20122
20123 /**
20124  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
20125  */
20126 void OpenChannel_free(struct LDKOpenChannel this_obj);
20127
20128 /**
20129  * The genesis hash of the blockchain where the channel is to be opened
20130  */
20131 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
20132
20133 /**
20134  * The genesis hash of the blockchain where the channel is to be opened
20135  */
20136 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20137
20138 /**
20139  * A temporary channel ID, until the funding outpoint is announced
20140  */
20141 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
20142
20143 /**
20144  * A temporary channel ID, until the funding outpoint is announced
20145  */
20146 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20147
20148 /**
20149  * The channel value
20150  */
20151 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20152
20153 /**
20154  * The channel value
20155  */
20156 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20157
20158 /**
20159  * The amount to push to the counterparty as part of the open, in milli-satoshi
20160  */
20161 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20162
20163 /**
20164  * The amount to push to the counterparty as part of the open, in milli-satoshi
20165  */
20166 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20167
20168 /**
20169  * The threshold below which outputs on transactions broadcast by sender will be omitted
20170  */
20171 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20172
20173 /**
20174  * The threshold below which outputs on transactions broadcast by sender will be omitted
20175  */
20176 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20177
20178 /**
20179  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20180  */
20181 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20182
20183 /**
20184  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20185  */
20186 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20187
20188 /**
20189  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20190  */
20191 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20192
20193 /**
20194  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20195  */
20196 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20197
20198 /**
20199  * The minimum HTLC size incoming to sender, in milli-satoshi
20200  */
20201 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20202
20203 /**
20204  * The minimum HTLC size incoming to sender, in milli-satoshi
20205  */
20206 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
20207
20208 /**
20209  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
20210  */
20211 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20212
20213 /**
20214  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
20215  */
20216 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
20217
20218 /**
20219  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20220  */
20221 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20222
20223 /**
20224  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20225  */
20226 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
20227
20228 /**
20229  * The maximum number of inbound HTLCs towards sender
20230  */
20231 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20232
20233 /**
20234  * The maximum number of inbound HTLCs towards sender
20235  */
20236 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
20237
20238 /**
20239  * The sender's key controlling the funding transaction
20240  */
20241 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20242
20243 /**
20244  * The sender's key controlling the funding transaction
20245  */
20246 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20247
20248 /**
20249  * Used to derive a revocation key for transactions broadcast by counterparty
20250  */
20251 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20252
20253 /**
20254  * Used to derive a revocation key for transactions broadcast by counterparty
20255  */
20256 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20257
20258 /**
20259  * A payment key to sender for transactions broadcast by counterparty
20260  */
20261 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20262
20263 /**
20264  * A payment key to sender for transactions broadcast by counterparty
20265  */
20266 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20267
20268 /**
20269  * Used to derive a payment key to sender for transactions broadcast by sender
20270  */
20271 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20272
20273 /**
20274  * Used to derive a payment key to sender for transactions broadcast by sender
20275  */
20276 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20277
20278 /**
20279  * Used to derive an HTLC payment key to sender
20280  */
20281 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20282
20283 /**
20284  * Used to derive an HTLC payment key to sender
20285  */
20286 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20287
20288 /**
20289  * The first to-be-broadcast-by-sender transaction's per commitment point
20290  */
20291 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20292
20293 /**
20294  * The first to-be-broadcast-by-sender transaction's per commitment point
20295  */
20296 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20297
20298 /**
20299  * Channel flags
20300  */
20301 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20302
20303 /**
20304  * Channel flags
20305  */
20306 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
20307
20308 /**
20309  * The channel type that this channel will represent. If none is set, we derive the channel
20310  * type from the intersection of our feature bits with our counterparty's feature bits from
20311  * the Init message.
20312  *
20313  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
20314  */
20315 struct LDKChannelTypeFeatures OpenChannel_get_channel_type(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
20316
20317 /**
20318  * The channel type that this channel will represent. If none is set, we derive the channel
20319  * type from the intersection of our feature bits with our counterparty's feature bits from
20320  * the Init message.
20321  *
20322  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
20323  */
20324 void OpenChannel_set_channel_type(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
20325
20326 /**
20327  * Creates a copy of the OpenChannel
20328  */
20329 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
20330
20331 /**
20332  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
20333  */
20334 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
20335
20336 /**
20337  * A temporary channel ID, until the funding outpoint is announced
20338  */
20339 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
20340
20341 /**
20342  * A temporary channel ID, until the funding outpoint is announced
20343  */
20344 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20345
20346 /**
20347  * The threshold below which outputs on transactions broadcast by sender will be omitted
20348  */
20349 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20350
20351 /**
20352  * The threshold below which outputs on transactions broadcast by sender will be omitted
20353  */
20354 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20355
20356 /**
20357  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20358  */
20359 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20360
20361 /**
20362  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
20363  */
20364 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20365
20366 /**
20367  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20368  */
20369 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20370
20371 /**
20372  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
20373  */
20374 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20375
20376 /**
20377  * The minimum HTLC size incoming to sender, in milli-satoshi
20378  */
20379 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20380
20381 /**
20382  * The minimum HTLC size incoming to sender, in milli-satoshi
20383  */
20384 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
20385
20386 /**
20387  * Minimum depth of the funding transaction before the channel is considered open
20388  */
20389 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20390
20391 /**
20392  * Minimum depth of the funding transaction before the channel is considered open
20393  */
20394 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
20395
20396 /**
20397  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20398  */
20399 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20400
20401 /**
20402  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
20403  */
20404 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
20405
20406 /**
20407  * The maximum number of inbound HTLCs towards sender
20408  */
20409 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20410
20411 /**
20412  * The maximum number of inbound HTLCs towards sender
20413  */
20414 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
20415
20416 /**
20417  * The sender's key controlling the funding transaction
20418  */
20419 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20420
20421 /**
20422  * The sender's key controlling the funding transaction
20423  */
20424 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20425
20426 /**
20427  * Used to derive a revocation key for transactions broadcast by counterparty
20428  */
20429 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20430
20431 /**
20432  * Used to derive a revocation key for transactions broadcast by counterparty
20433  */
20434 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20435
20436 /**
20437  * A payment key to sender for transactions broadcast by counterparty
20438  */
20439 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20440
20441 /**
20442  * A payment key to sender for transactions broadcast by counterparty
20443  */
20444 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20445
20446 /**
20447  * Used to derive a payment key to sender for transactions broadcast by sender
20448  */
20449 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20450
20451 /**
20452  * Used to derive a payment key to sender for transactions broadcast by sender
20453  */
20454 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20455
20456 /**
20457  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
20458  */
20459 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20460
20461 /**
20462  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
20463  */
20464 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20465
20466 /**
20467  * The first to-be-broadcast-by-sender transaction's per commitment point
20468  */
20469 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20470
20471 /**
20472  * The first to-be-broadcast-by-sender transaction's per commitment point
20473  */
20474 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20475
20476 /**
20477  * The channel type that this channel will represent. If none is set, we derive the channel
20478  * type from the intersection of our feature bits with our counterparty's feature bits from
20479  * the Init message.
20480  *
20481  * This is required to match the equivalent field in [`OpenChannel::channel_type`].
20482  *
20483  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
20484  */
20485 struct LDKChannelTypeFeatures AcceptChannel_get_channel_type(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
20486
20487 /**
20488  * The channel type that this channel will represent. If none is set, we derive the channel
20489  * type from the intersection of our feature bits with our counterparty's feature bits from
20490  * the Init message.
20491  *
20492  * This is required to match the equivalent field in [`OpenChannel::channel_type`].
20493  *
20494  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
20495  */
20496 void AcceptChannel_set_channel_type(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
20497
20498 /**
20499  * Creates a copy of the AcceptChannel
20500  */
20501 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
20502
20503 /**
20504  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
20505  */
20506 void FundingCreated_free(struct LDKFundingCreated this_obj);
20507
20508 /**
20509  * A temporary channel ID, until the funding is established
20510  */
20511 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
20512
20513 /**
20514  * A temporary channel ID, until the funding is established
20515  */
20516 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20517
20518 /**
20519  * The funding transaction ID
20520  */
20521 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
20522
20523 /**
20524  * The funding transaction ID
20525  */
20526 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20527
20528 /**
20529  * The specific output index funding this channel
20530  */
20531 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
20532
20533 /**
20534  * The specific output index funding this channel
20535  */
20536 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
20537
20538 /**
20539  * The signature of the channel initiator (funder) on the initial commitment transaction
20540  */
20541 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
20542
20543 /**
20544  * The signature of the channel initiator (funder) on the initial commitment transaction
20545  */
20546 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
20547
20548 /**
20549  * Constructs a new FundingCreated given each field
20550  */
20551 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);
20552
20553 /**
20554  * Creates a copy of the FundingCreated
20555  */
20556 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
20557
20558 /**
20559  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
20560  */
20561 void FundingSigned_free(struct LDKFundingSigned this_obj);
20562
20563 /**
20564  * The channel ID
20565  */
20566 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
20567
20568 /**
20569  * The channel ID
20570  */
20571 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20572
20573 /**
20574  * The signature of the channel acceptor (fundee) on the initial commitment transaction
20575  */
20576 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
20577
20578 /**
20579  * The signature of the channel acceptor (fundee) on the initial commitment transaction
20580  */
20581 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
20582
20583 /**
20584  * Constructs a new FundingSigned given each field
20585  */
20586 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
20587
20588 /**
20589  * Creates a copy of the FundingSigned
20590  */
20591 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
20592
20593 /**
20594  * Frees any resources used by the FundingLocked, if is_owned is set and inner is non-NULL.
20595  */
20596 void FundingLocked_free(struct LDKFundingLocked this_obj);
20597
20598 /**
20599  * The channel ID
20600  */
20601 const uint8_t (*FundingLocked_get_channel_id(const struct LDKFundingLocked *NONNULL_PTR this_ptr))[32];
20602
20603 /**
20604  * The channel ID
20605  */
20606 void FundingLocked_set_channel_id(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20607
20608 /**
20609  * The per-commitment point of the second commitment transaction
20610  */
20611 struct LDKPublicKey FundingLocked_get_next_per_commitment_point(const struct LDKFundingLocked *NONNULL_PTR this_ptr);
20612
20613 /**
20614  * The per-commitment point of the second commitment transaction
20615  */
20616 void FundingLocked_set_next_per_commitment_point(struct LDKFundingLocked *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20617
20618 /**
20619  * Constructs a new FundingLocked given each field
20620  */
20621 MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
20622
20623 /**
20624  * Creates a copy of the FundingLocked
20625  */
20626 struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
20627
20628 /**
20629  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
20630  */
20631 void Shutdown_free(struct LDKShutdown this_obj);
20632
20633 /**
20634  * The channel ID
20635  */
20636 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
20637
20638 /**
20639  * The channel ID
20640  */
20641 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20642
20643 /**
20644  * The destination of this peer's funds on closing.
20645  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
20646  */
20647 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
20648
20649 /**
20650  * The destination of this peer's funds on closing.
20651  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
20652  */
20653 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
20654
20655 /**
20656  * Constructs a new Shutdown given each field
20657  */
20658 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
20659
20660 /**
20661  * Creates a copy of the Shutdown
20662  */
20663 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
20664
20665 /**
20666  * Frees any resources used by the ClosingSignedFeeRange, if is_owned is set and inner is non-NULL.
20667  */
20668 void ClosingSignedFeeRange_free(struct LDKClosingSignedFeeRange this_obj);
20669
20670 /**
20671  * The minimum absolute fee, in satoshis, which the sender is willing to place on the closing
20672  * transaction.
20673  */
20674 uint64_t ClosingSignedFeeRange_get_min_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
20675
20676 /**
20677  * The minimum absolute fee, in satoshis, which the sender is willing to place on the closing
20678  * transaction.
20679  */
20680 void ClosingSignedFeeRange_set_min_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
20681
20682 /**
20683  * The maximum absolute fee, in satoshis, which the sender is willing to place on the closing
20684  * transaction.
20685  */
20686 uint64_t ClosingSignedFeeRange_get_max_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
20687
20688 /**
20689  * The maximum absolute fee, in satoshis, which the sender is willing to place on the closing
20690  * transaction.
20691  */
20692 void ClosingSignedFeeRange_set_max_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
20693
20694 /**
20695  * Constructs a new ClosingSignedFeeRange given each field
20696  */
20697 MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
20698
20699 /**
20700  * Creates a copy of the ClosingSignedFeeRange
20701  */
20702 struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
20703
20704 /**
20705  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
20706  */
20707 void ClosingSigned_free(struct LDKClosingSigned this_obj);
20708
20709 /**
20710  * The channel ID
20711  */
20712 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
20713
20714 /**
20715  * The channel ID
20716  */
20717 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20718
20719 /**
20720  * The proposed total fee for the closing transaction
20721  */
20722 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
20723
20724 /**
20725  * The proposed total fee for the closing transaction
20726  */
20727 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
20728
20729 /**
20730  * A signature on the closing transaction
20731  */
20732 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
20733
20734 /**
20735  * A signature on the closing transaction
20736  */
20737 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
20738
20739 /**
20740  * The minimum and maximum fees which the sender is willing to accept, provided only by new
20741  * nodes.
20742  *
20743  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
20744  */
20745 struct LDKClosingSignedFeeRange ClosingSigned_get_fee_range(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
20746
20747 /**
20748  * The minimum and maximum fees which the sender is willing to accept, provided only by new
20749  * nodes.
20750  *
20751  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
20752  */
20753 void ClosingSigned_set_fee_range(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKClosingSignedFeeRange val);
20754
20755 /**
20756  * Constructs a new ClosingSigned given each field
20757  */
20758 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);
20759
20760 /**
20761  * Creates a copy of the ClosingSigned
20762  */
20763 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
20764
20765 /**
20766  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
20767  */
20768 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
20769
20770 /**
20771  * The channel ID
20772  */
20773 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
20774
20775 /**
20776  * The channel ID
20777  */
20778 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20779
20780 /**
20781  * The HTLC ID
20782  */
20783 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
20784
20785 /**
20786  * The HTLC ID
20787  */
20788 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
20789
20790 /**
20791  * The HTLC value in milli-satoshi
20792  */
20793 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
20794
20795 /**
20796  * The HTLC value in milli-satoshi
20797  */
20798 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
20799
20800 /**
20801  * The payment hash, the pre-image of which controls HTLC redemption
20802  */
20803 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
20804
20805 /**
20806  * The payment hash, the pre-image of which controls HTLC redemption
20807  */
20808 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20809
20810 /**
20811  * The expiry height of the HTLC
20812  */
20813 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
20814
20815 /**
20816  * The expiry height of the HTLC
20817  */
20818 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
20819
20820 /**
20821  * Creates a copy of the UpdateAddHTLC
20822  */
20823 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
20824
20825 /**
20826  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
20827  */
20828 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
20829
20830 /**
20831  * The channel ID
20832  */
20833 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
20834
20835 /**
20836  * The channel ID
20837  */
20838 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20839
20840 /**
20841  * The HTLC ID
20842  */
20843 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
20844
20845 /**
20846  * The HTLC ID
20847  */
20848 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
20849
20850 /**
20851  * The pre-image of the payment hash, allowing HTLC redemption
20852  */
20853 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
20854
20855 /**
20856  * The pre-image of the payment hash, allowing HTLC redemption
20857  */
20858 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20859
20860 /**
20861  * Constructs a new UpdateFulfillHTLC given each field
20862  */
20863 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
20864
20865 /**
20866  * Creates a copy of the UpdateFulfillHTLC
20867  */
20868 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
20869
20870 /**
20871  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
20872  */
20873 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
20874
20875 /**
20876  * The channel ID
20877  */
20878 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
20879
20880 /**
20881  * The channel ID
20882  */
20883 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20884
20885 /**
20886  * The HTLC ID
20887  */
20888 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
20889
20890 /**
20891  * The HTLC ID
20892  */
20893 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
20894
20895 /**
20896  * Creates a copy of the UpdateFailHTLC
20897  */
20898 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
20899
20900 /**
20901  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
20902  */
20903 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
20904
20905 /**
20906  * The channel ID
20907  */
20908 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
20909
20910 /**
20911  * The channel ID
20912  */
20913 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20914
20915 /**
20916  * The HTLC ID
20917  */
20918 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
20919
20920 /**
20921  * The HTLC ID
20922  */
20923 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
20924
20925 /**
20926  * The failure code
20927  */
20928 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
20929
20930 /**
20931  * The failure code
20932  */
20933 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
20934
20935 /**
20936  * Creates a copy of the UpdateFailMalformedHTLC
20937  */
20938 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
20939
20940 /**
20941  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
20942  */
20943 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
20944
20945 /**
20946  * The channel ID
20947  */
20948 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
20949
20950 /**
20951  * The channel ID
20952  */
20953 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20954
20955 /**
20956  * A signature on the commitment transaction
20957  */
20958 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
20959
20960 /**
20961  * A signature on the commitment transaction
20962  */
20963 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
20964
20965 /**
20966  * Signatures on the HTLC transactions
20967  */
20968 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
20969
20970 /**
20971  * Constructs a new CommitmentSigned given each field
20972  */
20973 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
20974
20975 /**
20976  * Creates a copy of the CommitmentSigned
20977  */
20978 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
20979
20980 /**
20981  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
20982  */
20983 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
20984
20985 /**
20986  * The channel ID
20987  */
20988 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
20989
20990 /**
20991  * The channel ID
20992  */
20993 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20994
20995 /**
20996  * The secret corresponding to the per-commitment point
20997  */
20998 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
20999
21000 /**
21001  * The secret corresponding to the per-commitment point
21002  */
21003 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21004
21005 /**
21006  * The next sender-broadcast commitment transaction's per-commitment point
21007  */
21008 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
21009
21010 /**
21011  * The next sender-broadcast commitment transaction's per-commitment point
21012  */
21013 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21014
21015 /**
21016  * Constructs a new RevokeAndACK given each field
21017  */
21018 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);
21019
21020 /**
21021  * Creates a copy of the RevokeAndACK
21022  */
21023 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
21024
21025 /**
21026  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
21027  */
21028 void UpdateFee_free(struct LDKUpdateFee this_obj);
21029
21030 /**
21031  * The channel ID
21032  */
21033 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
21034
21035 /**
21036  * The channel ID
21037  */
21038 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21039
21040 /**
21041  * Fee rate per 1000-weight of the transaction
21042  */
21043 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
21044
21045 /**
21046  * Fee rate per 1000-weight of the transaction
21047  */
21048 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
21049
21050 /**
21051  * Constructs a new UpdateFee given each field
21052  */
21053 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
21054
21055 /**
21056  * Creates a copy of the UpdateFee
21057  */
21058 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
21059
21060 /**
21061  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
21062  */
21063 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
21064
21065 /**
21066  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
21067  * belonging to the recipient
21068  */
21069 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
21070
21071 /**
21072  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
21073  * belonging to the recipient
21074  */
21075 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21076
21077 /**
21078  * The sender's per-commitment point for their current commitment transaction
21079  */
21080 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
21081
21082 /**
21083  * The sender's per-commitment point for their current commitment transaction
21084  */
21085 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21086
21087 /**
21088  * Constructs a new DataLossProtect given each field
21089  */
21090 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
21091
21092 /**
21093  * Creates a copy of the DataLossProtect
21094  */
21095 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
21096
21097 /**
21098  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
21099  */
21100 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
21101
21102 /**
21103  * The channel ID
21104  */
21105 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
21106
21107 /**
21108  * The channel ID
21109  */
21110 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21111
21112 /**
21113  * The next commitment number for the sender
21114  */
21115 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
21116
21117 /**
21118  * The next commitment number for the sender
21119  */
21120 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
21121
21122 /**
21123  * The next commitment number for the recipient
21124  */
21125 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
21126
21127 /**
21128  * The next commitment number for the recipient
21129  */
21130 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
21131
21132 /**
21133  * Creates a copy of the ChannelReestablish
21134  */
21135 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
21136
21137 /**
21138  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
21139  */
21140 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
21141
21142 /**
21143  * The channel ID
21144  */
21145 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
21146
21147 /**
21148  * The channel ID
21149  */
21150 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21151
21152 /**
21153  * The short channel ID
21154  */
21155 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
21156
21157 /**
21158  * The short channel ID
21159  */
21160 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
21161
21162 /**
21163  * A signature by the node key
21164  */
21165 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
21166
21167 /**
21168  * A signature by the node key
21169  */
21170 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
21171
21172 /**
21173  * A signature by the funding key
21174  */
21175 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
21176
21177 /**
21178  * A signature by the funding key
21179  */
21180 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
21181
21182 /**
21183  * Constructs a new AnnouncementSignatures given each field
21184  */
21185 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);
21186
21187 /**
21188  * Creates a copy of the AnnouncementSignatures
21189  */
21190 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
21191
21192 /**
21193  * Frees any resources used by the NetAddress
21194  */
21195 void NetAddress_free(struct LDKNetAddress this_ptr);
21196
21197 /**
21198  * Creates a copy of the NetAddress
21199  */
21200 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
21201
21202 /**
21203  * Utility method to constructs a new IPv4-variant NetAddress
21204  */
21205 struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
21206
21207 /**
21208  * Utility method to constructs a new IPv6-variant NetAddress
21209  */
21210 struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
21211
21212 /**
21213  * Utility method to constructs a new OnionV2-variant NetAddress
21214  */
21215 struct LDKNetAddress NetAddress_onion_v2(struct LDKTwelveBytes a);
21216
21217 /**
21218  * Utility method to constructs a new OnionV3-variant NetAddress
21219  */
21220 struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
21221
21222 /**
21223  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
21224  */
21225 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
21226
21227 /**
21228  * Read a NetAddress from a byte array, created by NetAddress_write
21229  */
21230 struct LDKCResult_NetAddressDecodeErrorZ NetAddress_read(struct LDKu8slice ser);
21231
21232 /**
21233  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
21234  */
21235 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
21236
21237 /**
21238  * The advertised features
21239  */
21240 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
21241
21242 /**
21243  * The advertised features
21244  */
21245 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
21246
21247 /**
21248  * A strictly monotonic announcement counter, with gaps allowed
21249  */
21250 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
21251
21252 /**
21253  * A strictly monotonic announcement counter, with gaps allowed
21254  */
21255 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
21256
21257 /**
21258  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
21259  * to this node).
21260  */
21261 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
21262
21263 /**
21264  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
21265  * to this node).
21266  */
21267 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21268
21269 /**
21270  * An RGB color for UI purposes
21271  */
21272 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
21273
21274 /**
21275  * An RGB color for UI purposes
21276  */
21277 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
21278
21279 /**
21280  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
21281  * of uniqueness.
21282  */
21283 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
21284
21285 /**
21286  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
21287  * of uniqueness.
21288  */
21289 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21290
21291 /**
21292  * List of addresses on which this node is reachable
21293  */
21294 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
21295
21296 /**
21297  * Creates a copy of the UnsignedNodeAnnouncement
21298  */
21299 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
21300
21301 /**
21302  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
21303  */
21304 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
21305
21306 /**
21307  * The signature by the node key
21308  */
21309 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
21310
21311 /**
21312  * The signature by the node key
21313  */
21314 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21315
21316 /**
21317  * The actual content of the announcement
21318  */
21319 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
21320
21321 /**
21322  * The actual content of the announcement
21323  */
21324 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
21325
21326 /**
21327  * Constructs a new NodeAnnouncement given each field
21328  */
21329 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
21330
21331 /**
21332  * Creates a copy of the NodeAnnouncement
21333  */
21334 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
21335
21336 /**
21337  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
21338  */
21339 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
21340
21341 /**
21342  * The advertised channel features
21343  */
21344 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21345
21346 /**
21347  * The advertised channel features
21348  */
21349 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
21350
21351 /**
21352  * The genesis hash of the blockchain where the channel is to be opened
21353  */
21354 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
21355
21356 /**
21357  * The genesis hash of the blockchain where the channel is to be opened
21358  */
21359 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21360
21361 /**
21362  * The short channel ID
21363  */
21364 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21365
21366 /**
21367  * The short channel ID
21368  */
21369 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
21370
21371 /**
21372  * One of the two node_ids which are endpoints of this channel
21373  */
21374 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21375
21376 /**
21377  * One of the two node_ids which are endpoints of this channel
21378  */
21379 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21380
21381 /**
21382  * The other of the two node_ids which are endpoints of this channel
21383  */
21384 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21385
21386 /**
21387  * The other of the two node_ids which are endpoints of this channel
21388  */
21389 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21390
21391 /**
21392  * The funding key for the first node
21393  */
21394 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21395
21396 /**
21397  * The funding key for the first node
21398  */
21399 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21400
21401 /**
21402  * The funding key for the second node
21403  */
21404 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
21405
21406 /**
21407  * The funding key for the second node
21408  */
21409 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21410
21411 /**
21412  * Creates a copy of the UnsignedChannelAnnouncement
21413  */
21414 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
21415
21416 /**
21417  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
21418  */
21419 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
21420
21421 /**
21422  * Authentication of the announcement by the first public node
21423  */
21424 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21425
21426 /**
21427  * Authentication of the announcement by the first public node
21428  */
21429 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21430
21431 /**
21432  * Authentication of the announcement by the second public node
21433  */
21434 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21435
21436 /**
21437  * Authentication of the announcement by the second public node
21438  */
21439 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21440
21441 /**
21442  * Proof of funding UTXO ownership by the first public node
21443  */
21444 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21445
21446 /**
21447  * Proof of funding UTXO ownership by the first public node
21448  */
21449 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21450
21451 /**
21452  * Proof of funding UTXO ownership by the second public node
21453  */
21454 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21455
21456 /**
21457  * Proof of funding UTXO ownership by the second public node
21458  */
21459 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
21460
21461 /**
21462  * The actual announcement
21463  */
21464 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
21465
21466 /**
21467  * The actual announcement
21468  */
21469 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
21470
21471 /**
21472  * Constructs a new ChannelAnnouncement given each field
21473  */
21474 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);
21475
21476 /**
21477  * Creates a copy of the ChannelAnnouncement
21478  */
21479 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
21480
21481 /**
21482  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
21483  */
21484 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
21485
21486 /**
21487  * The genesis hash of the blockchain where the channel is to be opened
21488  */
21489 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
21490
21491 /**
21492  * The genesis hash of the blockchain where the channel is to be opened
21493  */
21494 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21495
21496 /**
21497  * The short channel ID
21498  */
21499 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21500
21501 /**
21502  * The short channel ID
21503  */
21504 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
21505
21506 /**
21507  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
21508  */
21509 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21510
21511 /**
21512  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
21513  */
21514 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
21515
21516 /**
21517  * Channel flags
21518  */
21519 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21520
21521 /**
21522  * Channel flags
21523  */
21524 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
21525
21526 /**
21527  * The number of blocks such that if:
21528  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
21529  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
21530  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
21531  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
21532  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
21533  * forwarding. Note that the HTLC sender is the one who originally sets this value when
21534  * constructing the route.
21535  */
21536 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21537
21538 /**
21539  * The number of blocks such that if:
21540  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
21541  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
21542  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
21543  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
21544  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
21545  * forwarding. Note that the HTLC sender is the one who originally sets this value when
21546  * constructing the route.
21547  */
21548 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
21549
21550 /**
21551  * The minimum HTLC size incoming to sender, in milli-satoshi
21552  */
21553 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21554
21555 /**
21556  * The minimum HTLC size incoming to sender, in milli-satoshi
21557  */
21558 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
21559
21560 /**
21561  * The base HTLC fee charged by sender, in milli-satoshi
21562  */
21563 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21564
21565 /**
21566  * The base HTLC fee charged by sender, in milli-satoshi
21567  */
21568 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
21569
21570 /**
21571  * The amount to fee multiplier, in micro-satoshi
21572  */
21573 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
21574
21575 /**
21576  * The amount to fee multiplier, in micro-satoshi
21577  */
21578 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
21579
21580 /**
21581  * Creates a copy of the UnsignedChannelUpdate
21582  */
21583 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
21584
21585 /**
21586  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
21587  */
21588 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
21589
21590 /**
21591  * A signature of the channel update
21592  */
21593 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
21594
21595 /**
21596  * A signature of the channel update
21597  */
21598 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
21599
21600 /**
21601  * The actual channel update
21602  */
21603 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
21604
21605 /**
21606  * The actual channel update
21607  */
21608 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
21609
21610 /**
21611  * Constructs a new ChannelUpdate given each field
21612  */
21613 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
21614
21615 /**
21616  * Creates a copy of the ChannelUpdate
21617  */
21618 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
21619
21620 /**
21621  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
21622  */
21623 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
21624
21625 /**
21626  * The genesis hash of the blockchain being queried
21627  */
21628 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
21629
21630 /**
21631  * The genesis hash of the blockchain being queried
21632  */
21633 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21634
21635 /**
21636  * The height of the first block for the channel UTXOs being queried
21637  */
21638 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
21639
21640 /**
21641  * The height of the first block for the channel UTXOs being queried
21642  */
21643 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
21644
21645 /**
21646  * The number of blocks to include in the query results
21647  */
21648 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
21649
21650 /**
21651  * The number of blocks to include in the query results
21652  */
21653 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
21654
21655 /**
21656  * Constructs a new QueryChannelRange given each field
21657  */
21658 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
21659
21660 /**
21661  * Creates a copy of the QueryChannelRange
21662  */
21663 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
21664
21665 /**
21666  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
21667  */
21668 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
21669
21670 /**
21671  * The genesis hash of the blockchain being queried
21672  */
21673 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
21674
21675 /**
21676  * The genesis hash of the blockchain being queried
21677  */
21678 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21679
21680 /**
21681  * The height of the first block in the range of the reply
21682  */
21683 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
21684
21685 /**
21686  * The height of the first block in the range of the reply
21687  */
21688 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
21689
21690 /**
21691  * The number of blocks included in the range of the reply
21692  */
21693 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
21694
21695 /**
21696  * The number of blocks included in the range of the reply
21697  */
21698 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
21699
21700 /**
21701  * True when this is the final reply for a query
21702  */
21703 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
21704
21705 /**
21706  * True when this is the final reply for a query
21707  */
21708 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
21709
21710 /**
21711  * The short_channel_ids in the channel range
21712  */
21713 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
21714
21715 /**
21716  * Constructs a new ReplyChannelRange given each field
21717  */
21718 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);
21719
21720 /**
21721  * Creates a copy of the ReplyChannelRange
21722  */
21723 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
21724
21725 /**
21726  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
21727  */
21728 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
21729
21730 /**
21731  * The genesis hash of the blockchain being queried
21732  */
21733 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
21734
21735 /**
21736  * The genesis hash of the blockchain being queried
21737  */
21738 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21739
21740 /**
21741  * The short_channel_ids that are being queried
21742  */
21743 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
21744
21745 /**
21746  * Constructs a new QueryShortChannelIds given each field
21747  */
21748 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
21749
21750 /**
21751  * Creates a copy of the QueryShortChannelIds
21752  */
21753 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
21754
21755 /**
21756  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
21757  */
21758 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
21759
21760 /**
21761  * The genesis hash of the blockchain that was queried
21762  */
21763 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
21764
21765 /**
21766  * The genesis hash of the blockchain that was queried
21767  */
21768 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21769
21770 /**
21771  * Indicates if the query recipient maintains up-to-date channel
21772  * information for the chain_hash
21773  */
21774 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
21775
21776 /**
21777  * Indicates if the query recipient maintains up-to-date channel
21778  * information for the chain_hash
21779  */
21780 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
21781
21782 /**
21783  * Constructs a new ReplyShortChannelIdsEnd given each field
21784  */
21785 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
21786
21787 /**
21788  * Creates a copy of the ReplyShortChannelIdsEnd
21789  */
21790 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
21791
21792 /**
21793  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
21794  */
21795 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
21796
21797 /**
21798  * The genesis hash of the blockchain for channel and node information
21799  */
21800 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
21801
21802 /**
21803  * The genesis hash of the blockchain for channel and node information
21804  */
21805 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21806
21807 /**
21808  * The starting unix timestamp
21809  */
21810 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
21811
21812 /**
21813  * The starting unix timestamp
21814  */
21815 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
21816
21817 /**
21818  * The range of information in seconds
21819  */
21820 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
21821
21822 /**
21823  * The range of information in seconds
21824  */
21825 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
21826
21827 /**
21828  * Constructs a new GossipTimestampFilter given each field
21829  */
21830 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
21831
21832 /**
21833  * Creates a copy of the GossipTimestampFilter
21834  */
21835 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
21836
21837 /**
21838  * Frees any resources used by the ErrorAction
21839  */
21840 void ErrorAction_free(struct LDKErrorAction this_ptr);
21841
21842 /**
21843  * Creates a copy of the ErrorAction
21844  */
21845 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
21846
21847 /**
21848  * Utility method to constructs a new DisconnectPeer-variant ErrorAction
21849  */
21850 struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
21851
21852 /**
21853  * Utility method to constructs a new IgnoreError-variant ErrorAction
21854  */
21855 struct LDKErrorAction ErrorAction_ignore_error(void);
21856
21857 /**
21858  * Utility method to constructs a new IgnoreAndLog-variant ErrorAction
21859  */
21860 struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
21861
21862 /**
21863  * Utility method to constructs a new IgnoreDuplicateGossip-variant ErrorAction
21864  */
21865 struct LDKErrorAction ErrorAction_ignore_duplicate_gossip(void);
21866
21867 /**
21868  * Utility method to constructs a new SendErrorMessage-variant ErrorAction
21869  */
21870 struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
21871
21872 /**
21873  * Utility method to constructs a new SendWarningMessage-variant ErrorAction
21874  */
21875 struct LDKErrorAction ErrorAction_send_warning_message(struct LDKWarningMessage msg, enum LDKLevel log_level);
21876
21877 /**
21878  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
21879  */
21880 void LightningError_free(struct LDKLightningError this_obj);
21881
21882 /**
21883  * A human-readable message describing the error
21884  */
21885 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
21886
21887 /**
21888  * A human-readable message describing the error
21889  */
21890 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKStr val);
21891
21892 /**
21893  * The action which should be taken against the offending peer.
21894  */
21895 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
21896
21897 /**
21898  * The action which should be taken against the offending peer.
21899  */
21900 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
21901
21902 /**
21903  * Constructs a new LightningError given each field
21904  */
21905 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
21906
21907 /**
21908  * Creates a copy of the LightningError
21909  */
21910 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
21911
21912 /**
21913  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
21914  */
21915 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
21916
21917 /**
21918  * update_add_htlc messages which should be sent
21919  */
21920 struct LDKCVec_UpdateAddHTLCZ CommitmentUpdate_get_update_add_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
21921
21922 /**
21923  * update_add_htlc messages which should be sent
21924  */
21925 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
21926
21927 /**
21928  * update_fulfill_htlc messages which should be sent
21929  */
21930 struct LDKCVec_UpdateFulfillHTLCZ CommitmentUpdate_get_update_fulfill_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
21931
21932 /**
21933  * update_fulfill_htlc messages which should be sent
21934  */
21935 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
21936
21937 /**
21938  * update_fail_htlc messages which should be sent
21939  */
21940 struct LDKCVec_UpdateFailHTLCZ CommitmentUpdate_get_update_fail_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
21941
21942 /**
21943  * update_fail_htlc messages which should be sent
21944  */
21945 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
21946
21947 /**
21948  * update_fail_malformed_htlc messages which should be sent
21949  */
21950 struct LDKCVec_UpdateFailMalformedHTLCZ CommitmentUpdate_get_update_fail_malformed_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
21951
21952 /**
21953  * update_fail_malformed_htlc messages which should be sent
21954  */
21955 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
21956
21957 /**
21958  * An update_fee message which should be sent
21959  *
21960  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
21961  */
21962 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
21963
21964 /**
21965  * An update_fee message which should be sent
21966  *
21967  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
21968  */
21969 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
21970
21971 /**
21972  * Finally, the commitment_signed message which should be sent
21973  */
21974 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
21975
21976 /**
21977  * Finally, the commitment_signed message which should be sent
21978  */
21979 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
21980
21981 /**
21982  * Constructs a new CommitmentUpdate given each field
21983  */
21984 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);
21985
21986 /**
21987  * Creates a copy of the CommitmentUpdate
21988  */
21989 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
21990
21991 /**
21992  * Calls the free function if one is set
21993  */
21994 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
21995
21996 /**
21997  * Calls the free function if one is set
21998  */
21999 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
22000
22001 /**
22002  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
22003  */
22004 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
22005
22006 /**
22007  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
22008  */
22009 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
22010
22011 /**
22012  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
22013  */
22014 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
22015
22016 /**
22017  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
22018  */
22019 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
22020
22021 /**
22022  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
22023  */
22024 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
22025
22026 /**
22027  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
22028  */
22029 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
22030
22031 /**
22032  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
22033  */
22034 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
22035
22036 /**
22037  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
22038  */
22039 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
22040
22041 /**
22042  * Serialize the ClosingSignedFeeRange object into a byte array which can be read by ClosingSignedFeeRange_read
22043  */
22044 struct LDKCVec_u8Z ClosingSignedFeeRange_write(const struct LDKClosingSignedFeeRange *NONNULL_PTR obj);
22045
22046 /**
22047  * Read a ClosingSignedFeeRange from a byte array, created by ClosingSignedFeeRange_write
22048  */
22049 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ ClosingSignedFeeRange_read(struct LDKu8slice ser);
22050
22051 /**
22052  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
22053  */
22054 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
22055
22056 /**
22057  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
22058  */
22059 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
22060
22061 /**
22062  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
22063  */
22064 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
22065
22066 /**
22067  * Read a FundingCreated from a byte array, created by FundingCreated_write
22068  */
22069 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
22070
22071 /**
22072  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
22073  */
22074 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
22075
22076 /**
22077  * Read a FundingSigned from a byte array, created by FundingSigned_write
22078  */
22079 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
22080
22081 /**
22082  * Serialize the FundingLocked object into a byte array which can be read by FundingLocked_read
22083  */
22084 struct LDKCVec_u8Z FundingLocked_write(const struct LDKFundingLocked *NONNULL_PTR obj);
22085
22086 /**
22087  * Read a FundingLocked from a byte array, created by FundingLocked_write
22088  */
22089 struct LDKCResult_FundingLockedDecodeErrorZ FundingLocked_read(struct LDKu8slice ser);
22090
22091 /**
22092  * Serialize the Init object into a byte array which can be read by Init_read
22093  */
22094 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
22095
22096 /**
22097  * Read a Init from a byte array, created by Init_write
22098  */
22099 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
22100
22101 /**
22102  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
22103  */
22104 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
22105
22106 /**
22107  * Read a OpenChannel from a byte array, created by OpenChannel_write
22108  */
22109 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
22110
22111 /**
22112  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
22113  */
22114 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
22115
22116 /**
22117  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
22118  */
22119 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
22120
22121 /**
22122  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
22123  */
22124 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
22125
22126 /**
22127  * Read a Shutdown from a byte array, created by Shutdown_write
22128  */
22129 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
22130
22131 /**
22132  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
22133  */
22134 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
22135
22136 /**
22137  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
22138  */
22139 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
22140
22141 /**
22142  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
22143  */
22144 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
22145
22146 /**
22147  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
22148  */
22149 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
22150
22151 /**
22152  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
22153  */
22154 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
22155
22156 /**
22157  * Read a UpdateFee from a byte array, created by UpdateFee_write
22158  */
22159 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
22160
22161 /**
22162  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
22163  */
22164 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
22165
22166 /**
22167  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
22168  */
22169 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
22170
22171 /**
22172  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
22173  */
22174 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
22175
22176 /**
22177  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
22178  */
22179 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
22180
22181 /**
22182  * Serialize the Ping object into a byte array which can be read by Ping_read
22183  */
22184 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
22185
22186 /**
22187  * Read a Ping from a byte array, created by Ping_write
22188  */
22189 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
22190
22191 /**
22192  * Serialize the Pong object into a byte array which can be read by Pong_read
22193  */
22194 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
22195
22196 /**
22197  * Read a Pong from a byte array, created by Pong_write
22198  */
22199 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
22200
22201 /**
22202  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
22203  */
22204 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
22205
22206 /**
22207  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
22208  */
22209 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
22210
22211 /**
22212  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
22213  */
22214 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
22215
22216 /**
22217  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
22218  */
22219 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
22220
22221 /**
22222  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
22223  */
22224 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
22225
22226 /**
22227  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
22228  */
22229 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
22230
22231 /**
22232  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
22233  */
22234 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
22235
22236 /**
22237  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
22238  */
22239 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
22240
22241 /**
22242  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
22243  */
22244 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
22245
22246 /**
22247  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
22248  */
22249 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
22250
22251 /**
22252  * Serialize the WarningMessage object into a byte array which can be read by WarningMessage_read
22253  */
22254 struct LDKCVec_u8Z WarningMessage_write(const struct LDKWarningMessage *NONNULL_PTR obj);
22255
22256 /**
22257  * Read a WarningMessage from a byte array, created by WarningMessage_write
22258  */
22259 struct LDKCResult_WarningMessageDecodeErrorZ WarningMessage_read(struct LDKu8slice ser);
22260
22261 /**
22262  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
22263  */
22264 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
22265
22266 /**
22267  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
22268  */
22269 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
22270
22271 /**
22272  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
22273  */
22274 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
22275
22276 /**
22277  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
22278  */
22279 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
22280
22281 /**
22282  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
22283  */
22284 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
22285
22286 /**
22287  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
22288  */
22289 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
22290
22291 /**
22292  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
22293  */
22294 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
22295
22296 /**
22297  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
22298  */
22299 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
22300
22301 /**
22302  *\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
22303  */
22304 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
22305
22306 /**
22307  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
22308  */
22309 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
22310
22311 /**
22312  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
22313  */
22314 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
22315
22316 /**
22317  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
22318  */
22319 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
22320
22321 /**
22322  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
22323  */
22324 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
22325
22326 /**
22327  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
22328  */
22329 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
22330
22331 /**
22332  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
22333  */
22334 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
22335
22336 /**
22337  * Calls the free function if one is set
22338  */
22339 void CustomMessageHandler_free(struct LDKCustomMessageHandler this_ptr);
22340
22341 /**
22342  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
22343  */
22344 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
22345
22346 /**
22347  * Constructs a new IgnoringMessageHandler given each field
22348  */
22349 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
22350
22351 /**
22352  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
22353  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
22354  */
22355 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22356
22357 /**
22358  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
22359  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
22360  */
22361 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22362
22363 /**
22364  * Constructs a new CustomMessageReader which calls the relevant methods on this_arg.
22365  * This copies the `inner` pointer in this_arg and thus the returned CustomMessageReader must be freed before this_arg is
22366  */
22367 struct LDKCustomMessageReader IgnoringMessageHandler_as_CustomMessageReader(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22368
22369 /**
22370  * Constructs a new CustomMessageHandler which calls the relevant methods on this_arg.
22371  * This copies the `inner` pointer in this_arg and thus the returned CustomMessageHandler must be freed before this_arg is
22372  */
22373 struct LDKCustomMessageHandler IgnoringMessageHandler_as_CustomMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
22374
22375 /**
22376  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
22377  */
22378 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
22379
22380 /**
22381  * Constructs a new ErroringMessageHandler
22382  */
22383 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
22384
22385 /**
22386  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
22387  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
22388  */
22389 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
22390
22391 /**
22392  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
22393  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
22394  */
22395 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
22396
22397 /**
22398  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
22399  */
22400 void MessageHandler_free(struct LDKMessageHandler this_obj);
22401
22402 /**
22403  * A message handler which handles messages specific to channels. Usually this is just a
22404  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
22405  *
22406  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
22407  */
22408 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
22409
22410 /**
22411  * A message handler which handles messages specific to channels. Usually this is just a
22412  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
22413  *
22414  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
22415  */
22416 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
22417
22418 /**
22419  * A message handler which handles messages updating our knowledge of the network channel
22420  * graph. Usually this is just a [`NetGraphMsgHandler`] object or an
22421  * [`IgnoringMessageHandler`].
22422  *
22423  * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
22424  */
22425 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
22426
22427 /**
22428  * A message handler which handles messages updating our knowledge of the network channel
22429  * graph. Usually this is just a [`NetGraphMsgHandler`] object or an
22430  * [`IgnoringMessageHandler`].
22431  *
22432  * [`NetGraphMsgHandler`]: crate::routing::network_graph::NetGraphMsgHandler
22433  */
22434 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
22435
22436 /**
22437  * Constructs a new MessageHandler given each field
22438  */
22439 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
22440
22441 /**
22442  * Creates a copy of a SocketDescriptor
22443  */
22444 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
22445
22446 /**
22447  * Calls the free function if one is set
22448  */
22449 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
22450
22451 /**
22452  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
22453  */
22454 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
22455
22456 /**
22457  * Used to indicate that we probably can't make any future connections to this peer, implying
22458  * we should go ahead and force-close any channels we have with it.
22459  */
22460 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
22461
22462 /**
22463  * Used to indicate that we probably can't make any future connections to this peer, implying
22464  * we should go ahead and force-close any channels we have with it.
22465  */
22466 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
22467
22468 /**
22469  * Constructs a new PeerHandleError given each field
22470  */
22471 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
22472
22473 /**
22474  * Creates a copy of the PeerHandleError
22475  */
22476 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
22477
22478 /**
22479  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
22480  */
22481 void PeerManager_free(struct LDKPeerManager this_obj);
22482
22483 /**
22484  * Constructs a new PeerManager with the given message handlers and node_id secret key
22485  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
22486  * cryptographically secure random bytes.
22487  */
22488 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);
22489
22490 /**
22491  * Get the list of node ids for peers which have completed the initial handshake.
22492  *
22493  * For outbound connections, this will be the same as the their_node_id parameter passed in to
22494  * new_outbound_connection, however entries will only appear once the initial handshake has
22495  * completed and we are sure the remote peer has the private key for the given node_id.
22496  */
22497 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
22498
22499 /**
22500  * Indicates a new outbound connection has been established to a node with the given node_id.
22501  * Note that if an Err is returned here you MUST NOT call socket_disconnected for the new
22502  * descriptor but must disconnect the connection immediately.
22503  *
22504  * Returns a small number of bytes to send to the remote node (currently always 50).
22505  *
22506  * Panics if descriptor is duplicative with some other descriptor which has not yet been
22507  * [`socket_disconnected()`].
22508  *
22509  * [`socket_disconnected()`]: PeerManager::socket_disconnected
22510  */
22511 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);
22512
22513 /**
22514  * Indicates a new inbound connection has been established.
22515  *
22516  * May refuse the connection by returning an Err, but will never write bytes to the remote end
22517  * (outbound connector always speaks first). Note that if an Err is returned here you MUST NOT
22518  * call socket_disconnected for the new descriptor but must disconnect the connection
22519  * immediately.
22520  *
22521  * Panics if descriptor is duplicative with some other descriptor which has not yet been
22522  * [`socket_disconnected()`].
22523  *
22524  * [`socket_disconnected()`]: PeerManager::socket_disconnected
22525  */
22526 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor);
22527
22528 /**
22529  * Indicates that there is room to write data to the given socket descriptor.
22530  *
22531  * May return an Err to indicate that the connection should be closed.
22532  *
22533  * May call [`send_data`] on the descriptor passed in (or an equal descriptor) before
22534  * returning. Thus, be very careful with reentrancy issues! The invariants around calling
22535  * [`write_buffer_space_avail`] in case a write did not fully complete must still hold - be
22536  * ready to call `[write_buffer_space_avail`] again if a write call generated here isn't
22537  * sufficient!
22538  *
22539  * [`send_data`]: SocketDescriptor::send_data
22540  * [`write_buffer_space_avail`]: PeerManager::write_buffer_space_avail
22541  */
22542 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
22543
22544 /**
22545  * Indicates that data was read from the given socket descriptor.
22546  *
22547  * May return an Err to indicate that the connection should be closed.
22548  *
22549  * Will *not* call back into [`send_data`] on any descriptors to avoid reentrancy complexity.
22550  * Thus, however, you should call [`process_events`] after any `read_event` to generate
22551  * [`send_data`] calls to handle responses.
22552  *
22553  * If `Ok(true)` is returned, further read_events should not be triggered until a
22554  * [`send_data`] call on this descriptor has `resume_read` set (preventing DoS issues in the
22555  * send buffer).
22556  *
22557  * [`send_data`]: SocketDescriptor::send_data
22558  * [`process_events`]: PeerManager::process_events
22559  */
22560 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);
22561
22562 /**
22563  * Checks for any events generated by our handlers and processes them. Includes sending most
22564  * response messages as well as messages generated by calls to handler functions directly (eg
22565  * functions like [`ChannelManager::process_pending_htlc_forwards`] or [`send_payment`]).
22566  *
22567  * May call [`send_data`] on [`SocketDescriptor`]s. Thus, be very careful with reentrancy
22568  * issues!
22569  *
22570  * You don't have to call this function explicitly if you are using [`lightning-net-tokio`]
22571  * or one of the other clients provided in our language bindings.
22572  *
22573  * [`send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
22574  * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
22575  * [`send_data`]: SocketDescriptor::send_data
22576  */
22577 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
22578
22579 /**
22580  * Indicates that the given socket descriptor's connection is now closed.
22581  */
22582 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
22583
22584 /**
22585  * Disconnect a peer given its node id.
22586  *
22587  * Set `no_connection_possible` to true to prevent any further connection with this peer,
22588  * force-closing any channels we have with it.
22589  *
22590  * If a peer is connected, this will call [`disconnect_socket`] on the descriptor for the
22591  * peer. Thus, be very careful about reentrancy issues.
22592  *
22593  * [`disconnect_socket`]: SocketDescriptor::disconnect_socket
22594  */
22595 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
22596
22597 /**
22598  * Disconnects all currently-connected peers. This is useful on platforms where there may be
22599  * an indication that TCP sockets have stalled even if we weren't around to time them out
22600  * using regular ping/pongs.
22601  */
22602 void PeerManager_disconnect_all_peers(const struct LDKPeerManager *NONNULL_PTR this_arg);
22603
22604 /**
22605  * Send pings to each peer and disconnect those which did not respond to the last round of
22606  * pings.
22607  *
22608  * This may be called on any timescale you want, however, roughly once every five to ten
22609  * seconds is preferred. The call rate determines both how often we send a ping to our peers
22610  * and how much time they have to respond before we disconnect them.
22611  *
22612  * May call [`send_data`] on all [`SocketDescriptor`]s. Thus, be very careful with reentrancy
22613  * issues!
22614  *
22615  * [`send_data`]: SocketDescriptor::send_data
22616  */
22617 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
22618
22619 /**
22620  * Gets the weight for an HTLC-Success transaction.
22621  */
22622 uint64_t htlc_success_tx_weight(bool opt_anchors);
22623
22624 /**
22625  * Gets the weight for an HTLC-Timeout transaction.
22626  */
22627 uint64_t htlc_timeout_tx_weight(bool opt_anchors);
22628
22629 /**
22630  * Build the commitment secret from the seed and the commitment number
22631  */
22632 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
22633
22634 /**
22635  * Build a closing transaction
22636  */
22637 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);
22638
22639 /**
22640  * Frees any resources used by the CounterpartyCommitmentSecrets, if is_owned is set and inner is non-NULL.
22641  */
22642 void CounterpartyCommitmentSecrets_free(struct LDKCounterpartyCommitmentSecrets this_obj);
22643
22644 /**
22645  * Creates a copy of the CounterpartyCommitmentSecrets
22646  */
22647 struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_clone(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR orig);
22648
22649 /**
22650  * Creates a new empty `CounterpartyCommitmentSecrets` structure.
22651  */
22652 MUST_USE_RES struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_new(void);
22653
22654 /**
22655  * Returns the minimum index of all stored secrets. Note that indexes start
22656  * at 1 << 48 and get decremented by one for each new secret.
22657  */
22658 MUST_USE_RES uint64_t CounterpartyCommitmentSecrets_get_min_seen_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg);
22659
22660 /**
22661  * Inserts the `secret` at `idx`. Returns `Ok(())` if the secret
22662  * was generated in accordance with BOLT 3 and is consistent with previous secrets.
22663  */
22664 MUST_USE_RES struct LDKCResult_NoneNoneZ CounterpartyCommitmentSecrets_provide_secret(struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx, struct LDKThirtyTwoBytes secret);
22665
22666 /**
22667  * Returns the secret at `idx`.
22668  * Returns `None` if `idx` is < [`CounterpartyCommitmentSecrets::get_min_seen_secret`].
22669  *
22670  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
22671  */
22672 MUST_USE_RES struct LDKThirtyTwoBytes CounterpartyCommitmentSecrets_get_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx);
22673
22674 /**
22675  * Serialize the CounterpartyCommitmentSecrets object into a byte array which can be read by CounterpartyCommitmentSecrets_read
22676  */
22677 struct LDKCVec_u8Z CounterpartyCommitmentSecrets_write(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR obj);
22678
22679 /**
22680  * Read a CounterpartyCommitmentSecrets from a byte array, created by CounterpartyCommitmentSecrets_write
22681  */
22682 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CounterpartyCommitmentSecrets_read(struct LDKu8slice ser);
22683
22684 /**
22685  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
22686  * from the base secret and the per_commitment_point.
22687  *
22688  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
22689  * generated (ie our own).
22690  */
22691 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
22692
22693 /**
22694  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
22695  * from the base point and the per_commitment_key. This is the public equivalent of
22696  * derive_private_key - using only public keys to derive a public key instead of private keys.
22697  *
22698  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
22699  * generated (ie our own).
22700  */
22701 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
22702
22703 /**
22704  * Derives a per-commitment-transaction revocation key from its constituent parts.
22705  *
22706  * Only the cheating participant owns a valid witness to propagate a revoked
22707  * commitment transaction, thus per_commitment_secret always come from cheater
22708  * and revocation_base_secret always come from punisher, which is the broadcaster
22709  * of the transaction spending with this key knowledge.
22710  *
22711  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
22712  * generated (ie our own).
22713  */
22714 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
22715
22716 /**
22717  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
22718  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
22719  * public key instead of private keys.
22720  *
22721  * Only the cheating participant owns a valid witness to propagate a revoked
22722  * commitment transaction, thus per_commitment_point always come from cheater
22723  * and revocation_base_point always come from punisher, which is the broadcaster
22724  * of the transaction spending with this key knowledge.
22725  *
22726  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
22727  * generated (ie our own).
22728  */
22729 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
22730
22731 /**
22732  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
22733  */
22734 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
22735
22736 /**
22737  * The broadcaster's per-commitment public key which was used to derive the other keys.
22738  */
22739 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
22740
22741 /**
22742  * The broadcaster's per-commitment public key which was used to derive the other keys.
22743  */
22744 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22745
22746 /**
22747  * The revocation key which is used to allow the broadcaster of the commitment
22748  * transaction to provide their counterparty the ability to punish them if they broadcast
22749  * an old state.
22750  */
22751 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
22752
22753 /**
22754  * The revocation key which is used to allow the broadcaster of the commitment
22755  * transaction to provide their counterparty the ability to punish them if they broadcast
22756  * an old state.
22757  */
22758 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22759
22760 /**
22761  * Broadcaster's HTLC Key
22762  */
22763 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
22764
22765 /**
22766  * Broadcaster's HTLC Key
22767  */
22768 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22769
22770 /**
22771  * Countersignatory's HTLC Key
22772  */
22773 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
22774
22775 /**
22776  * Countersignatory's HTLC Key
22777  */
22778 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22779
22780 /**
22781  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
22782  */
22783 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
22784
22785 /**
22786  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
22787  */
22788 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22789
22790 /**
22791  * Constructs a new TxCreationKeys given each field
22792  */
22793 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);
22794
22795 /**
22796  * Creates a copy of the TxCreationKeys
22797  */
22798 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
22799
22800 /**
22801  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
22802  */
22803 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
22804
22805 /**
22806  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
22807  */
22808 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
22809
22810 /**
22811  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
22812  */
22813 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
22814
22815 /**
22816  * The public key which is used to sign all commitment transactions, as it appears in the
22817  * on-chain channel lock-in 2-of-2 multisig output.
22818  */
22819 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
22820
22821 /**
22822  * The public key which is used to sign all commitment transactions, as it appears in the
22823  * on-chain channel lock-in 2-of-2 multisig output.
22824  */
22825 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22826
22827 /**
22828  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
22829  * revocation keys. This is combined with the per-commitment-secret generated by the
22830  * counterparty to create a secret which the counterparty can reveal to revoke previous
22831  * states.
22832  */
22833 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
22834
22835 /**
22836  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
22837  * revocation keys. This is combined with the per-commitment-secret generated by the
22838  * counterparty to create a secret which the counterparty can reveal to revoke previous
22839  * states.
22840  */
22841 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22842
22843 /**
22844  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
22845  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
22846  * static across every commitment transaction.
22847  */
22848 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
22849
22850 /**
22851  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
22852  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
22853  * static across every commitment transaction.
22854  */
22855 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22856
22857 /**
22858  * The base point which is used (with derive_public_key) to derive a per-commitment payment
22859  * public key which receives non-HTLC-encumbered funds which are only available for spending
22860  * after some delay (or can be claimed via the revocation path).
22861  */
22862 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
22863
22864 /**
22865  * The base point which is used (with derive_public_key) to derive a per-commitment payment
22866  * public key which receives non-HTLC-encumbered funds which are only available for spending
22867  * after some delay (or can be claimed via the revocation path).
22868  */
22869 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22870
22871 /**
22872  * The base point which is used (with derive_public_key) to derive a per-commitment public key
22873  * which is used to encumber HTLC-in-flight outputs.
22874  */
22875 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
22876
22877 /**
22878  * The base point which is used (with derive_public_key) to derive a per-commitment public key
22879  * which is used to encumber HTLC-in-flight outputs.
22880  */
22881 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22882
22883 /**
22884  * Constructs a new ChannelPublicKeys given each field
22885  */
22886 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);
22887
22888 /**
22889  * Creates a copy of the ChannelPublicKeys
22890  */
22891 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
22892
22893 /**
22894  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
22895  */
22896 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
22897
22898 /**
22899  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
22900  */
22901 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
22902
22903 /**
22904  * Create per-state keys from channel base points and the per-commitment point.
22905  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
22906  */
22907 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);
22908
22909 /**
22910  * Generate per-state keys from channel static keys.
22911  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
22912  */
22913 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);
22914
22915 /**
22916  * A script either spendable by the revocation
22917  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
22918  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
22919  */
22920 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
22921
22922 /**
22923  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
22924  */
22925 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
22926
22927 /**
22928  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
22929  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
22930  * need to compare this value to whether the commitment transaction in question is that of
22931  * the counterparty or our own.
22932  */
22933 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
22934
22935 /**
22936  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
22937  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
22938  * need to compare this value to whether the commitment transaction in question is that of
22939  * the counterparty or our own.
22940  */
22941 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
22942
22943 /**
22944  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
22945  * this divided by 1000.
22946  */
22947 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
22948
22949 /**
22950  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
22951  * this divided by 1000.
22952  */
22953 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
22954
22955 /**
22956  * The CLTV lock-time at which this HTLC expires.
22957  */
22958 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
22959
22960 /**
22961  * The CLTV lock-time at which this HTLC expires.
22962  */
22963 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
22964
22965 /**
22966  * The hash of the preimage which unlocks this HTLC.
22967  */
22968 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
22969
22970 /**
22971  * The hash of the preimage which unlocks this HTLC.
22972  */
22973 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22974
22975 /**
22976  * The position within the commitment transactions' outputs. This may be None if the value is
22977  * below the dust limit (in which case no output appears in the commitment transaction and the
22978  * value is spent to additional transaction fees).
22979  */
22980 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
22981
22982 /**
22983  * The position within the commitment transactions' outputs. This may be None if the value is
22984  * below the dust limit (in which case no output appears in the commitment transaction and the
22985  * value is spent to additional transaction fees).
22986  */
22987 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
22988
22989 /**
22990  * Constructs a new HTLCOutputInCommitment given each field
22991  */
22992 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);
22993
22994 /**
22995  * Creates a copy of the HTLCOutputInCommitment
22996  */
22997 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
22998
22999 /**
23000  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
23001  */
23002 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
23003
23004 /**
23005  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
23006  */
23007 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
23008
23009 /**
23010  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
23011  * does not need to have its previous_output_index filled.
23012  */
23013 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, const struct LDKTxCreationKeys *NONNULL_PTR keys);
23014
23015 /**
23016  * Gets the redeemscript for a funding output from the two funding public keys.
23017  * Note that the order of funding public keys does not matter.
23018  */
23019 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
23020
23021 /**
23022  * Builds an unsigned HTLC-Success or HTLC-Timeout transaction from the given channel and HTLC
23023  * parameters. This is used by [`TrustedCommitmentTransaction::get_htlc_sigs`] to fetch the
23024  * transaction which needs signing, and can be used to construct an HTLC transaction which is
23025  * broadcastable given a counterparty HTLC signature.
23026  *
23027  * Panics if htlc.transaction_output_index.is_none() (as such HTLCs do not appear in the
23028  * commitment transaction).
23029  */
23030 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);
23031
23032 /**
23033  * Gets the witnessScript for an anchor output from the funding public key.
23034  * The witness in the spending input must be:
23035  * <BIP 143 funding_signature>
23036  * After 16 blocks of confirmation, an alternative satisfying witness could be:
23037  * <>
23038  * (empty vector required to satisfy compliance with MINIMALIF-standard rule)
23039  */
23040 struct LDKCVec_u8Z get_anchor_redeemscript(struct LDKPublicKey funding_pubkey);
23041
23042 /**
23043  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
23044  */
23045 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
23046
23047 /**
23048  * Holder public keys
23049  */
23050 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23051
23052 /**
23053  * Holder public keys
23054  */
23055 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
23056
23057 /**
23058  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
23059  */
23060 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23061
23062 /**
23063  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
23064  */
23065 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
23066
23067 /**
23068  * Whether the holder is the initiator of this channel.
23069  * This is an input to the commitment number obscure factor computation.
23070  */
23071 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23072
23073 /**
23074  * Whether the holder is the initiator of this channel.
23075  * This is an input to the commitment number obscure factor computation.
23076  */
23077 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
23078
23079 /**
23080  * The late-bound counterparty channel transaction parameters.
23081  * These parameters are populated at the point in the protocol where the counterparty provides them.
23082  *
23083  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23084  */
23085 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23086
23087 /**
23088  * The late-bound counterparty channel transaction parameters.
23089  * These parameters are populated at the point in the protocol where the counterparty provides them.
23090  *
23091  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23092  */
23093 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
23094
23095 /**
23096  * The late-bound funding outpoint
23097  *
23098  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23099  */
23100 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23101
23102 /**
23103  * The late-bound funding outpoint
23104  *
23105  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23106  */
23107 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
23108
23109 /**
23110  * Are anchors used for this channel.  Boolean is serialization backwards-compatible
23111  */
23112 enum LDKCOption_NoneZ ChannelTransactionParameters_get_opt_anchors(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
23113
23114 /**
23115  * Are anchors used for this channel.  Boolean is serialization backwards-compatible
23116  */
23117 void ChannelTransactionParameters_set_opt_anchors(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, enum LDKCOption_NoneZ val);
23118
23119 /**
23120  * Constructs a new ChannelTransactionParameters given each field
23121  */
23122 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);
23123
23124 /**
23125  * Creates a copy of the ChannelTransactionParameters
23126  */
23127 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
23128
23129 /**
23130  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
23131  */
23132 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
23133
23134 /**
23135  * Counter-party public keys
23136  */
23137 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
23138
23139 /**
23140  * Counter-party public keys
23141  */
23142 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
23143
23144 /**
23145  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
23146  */
23147 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
23148
23149 /**
23150  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
23151  */
23152 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
23153
23154 /**
23155  * Constructs a new CounterpartyChannelTransactionParameters given each field
23156  */
23157 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
23158
23159 /**
23160  * Creates a copy of the CounterpartyChannelTransactionParameters
23161  */
23162 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
23163
23164 /**
23165  * Whether the late bound parameters are populated.
23166  */
23167 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
23168
23169 /**
23170  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
23171  * given that the holder is the broadcaster.
23172  *
23173  * self.is_populated() must be true before calling this function.
23174  */
23175 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
23176
23177 /**
23178  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
23179  * given that the counterparty is the broadcaster.
23180  *
23181  * self.is_populated() must be true before calling this function.
23182  */
23183 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
23184
23185 /**
23186  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
23187  */
23188 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
23189
23190 /**
23191  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
23192  */
23193 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
23194
23195 /**
23196  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
23197  */
23198 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
23199
23200 /**
23201  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
23202  */
23203 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
23204
23205 /**
23206  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
23207  */
23208 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
23209
23210 /**
23211  * Get the channel pubkeys for the broadcaster
23212  */
23213 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23214
23215 /**
23216  * Get the channel pubkeys for the countersignatory
23217  */
23218 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23219
23220 /**
23221  * Get the contest delay applicable to the transactions.
23222  * Note that the contest delay was selected by the countersignatory.
23223  */
23224 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23225
23226 /**
23227  * Whether the channel is outbound from the broadcaster.
23228  *
23229  * The boolean representing the side that initiated the channel is
23230  * an input to the commitment number obscure factor computation.
23231  */
23232 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23233
23234 /**
23235  * The funding outpoint
23236  */
23237 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23238
23239 /**
23240  * Whether to use anchors for this channel
23241  */
23242 MUST_USE_RES bool DirectedChannelTransactionParameters_opt_anchors(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
23243
23244 /**
23245  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
23246  */
23247 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
23248
23249 /**
23250  * Our counterparty's signature for the transaction
23251  */
23252 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
23253
23254 /**
23255  * Our counterparty's signature for the transaction
23256  */
23257 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
23258
23259 /**
23260  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
23261  */
23262 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
23263
23264 /**
23265  * Creates a copy of the HolderCommitmentTransaction
23266  */
23267 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
23268
23269 /**
23270  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
23271  */
23272 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
23273
23274 /**
23275  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
23276  */
23277 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
23278
23279 /**
23280  * Create a new holder transaction with the given counterparty signatures.
23281  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
23282  */
23283 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);
23284
23285 /**
23286  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
23287  */
23288 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
23289
23290 /**
23291  * The commitment transaction
23292  */
23293 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
23294
23295 /**
23296  * The commitment transaction
23297  */
23298 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
23299
23300 /**
23301  * The txid for the commitment transaction.
23302  *
23303  * This is provided as a performance optimization, instead of calling transaction.txid()
23304  * multiple times.
23305  */
23306 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
23307
23308 /**
23309  * The txid for the commitment transaction.
23310  *
23311  * This is provided as a performance optimization, instead of calling transaction.txid()
23312  * multiple times.
23313  */
23314 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23315
23316 /**
23317  * Constructs a new BuiltCommitmentTransaction given each field
23318  */
23319 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
23320
23321 /**
23322  * Creates a copy of the BuiltCommitmentTransaction
23323  */
23324 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
23325
23326 /**
23327  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
23328  */
23329 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
23330
23331 /**
23332  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
23333  */
23334 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
23335
23336 /**
23337  * Get the SIGHASH_ALL sighash value of the transaction.
23338  *
23339  * This can be used to verify a signature.
23340  */
23341 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);
23342
23343 /**
23344  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
23345  * because we are about to broadcast a holder transaction.
23346  */
23347 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);
23348
23349 /**
23350  * Frees any resources used by the ClosingTransaction, if is_owned is set and inner is non-NULL.
23351  */
23352 void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
23353
23354 /**
23355  * Creates a copy of the ClosingTransaction
23356  */
23357 struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
23358
23359 /**
23360  * Checks if two ClosingTransactions contain equal inner contents.
23361  */
23362 uint64_t ClosingTransaction_hash(const struct LDKClosingTransaction *NONNULL_PTR o);
23363
23364 /**
23365  * Construct an object of the class
23366  */
23367 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);
23368
23369 /**
23370  * Trust our pre-built transaction.
23371  *
23372  * Applies a wrapper which allows access to the transaction.
23373  *
23374  * This should only be used if you fully trust the builder of this object. It should not
23375  * be used by an external signer - instead use the verify function.
23376  */
23377 MUST_USE_RES struct LDKTrustedClosingTransaction ClosingTransaction_trust(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23378
23379 /**
23380  * Verify our pre-built transaction.
23381  *
23382  * Applies a wrapper which allows access to the transaction.
23383  *
23384  * An external validating signer must call this method before signing
23385  * or using the built transaction.
23386  */
23387 MUST_USE_RES struct LDKCResult_TrustedClosingTransactionNoneZ ClosingTransaction_verify(const struct LDKClosingTransaction *NONNULL_PTR this_arg, struct LDKOutPoint funding_outpoint);
23388
23389 /**
23390  * The value to be sent to the holder, or zero if the output will be omitted
23391  */
23392 MUST_USE_RES uint64_t ClosingTransaction_to_holder_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23393
23394 /**
23395  * The value to be sent to the counterparty, or zero if the output will be omitted
23396  */
23397 MUST_USE_RES uint64_t ClosingTransaction_to_counterparty_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23398
23399 /**
23400  * The destination of the holder's output
23401  */
23402 MUST_USE_RES struct LDKu8slice ClosingTransaction_to_holder_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23403
23404 /**
23405  * The destination of the counterparty's output
23406  */
23407 MUST_USE_RES struct LDKu8slice ClosingTransaction_to_counterparty_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
23408
23409 /**
23410  * Frees any resources used by the TrustedClosingTransaction, if is_owned is set and inner is non-NULL.
23411  */
23412 void TrustedClosingTransaction_free(struct LDKTrustedClosingTransaction this_obj);
23413
23414 /**
23415  * The pre-built Bitcoin commitment transaction
23416  */
23417 MUST_USE_RES struct LDKTransaction TrustedClosingTransaction_built_transaction(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg);
23418
23419 /**
23420  * Get the SIGHASH_ALL sighash value of the transaction.
23421  *
23422  * This can be used to verify a signature.
23423  */
23424 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);
23425
23426 /**
23427  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
23428  * because we are about to broadcast a holder transaction.
23429  */
23430 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);
23431
23432 /**
23433  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
23434  */
23435 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
23436
23437 /**
23438  * Creates a copy of the CommitmentTransaction
23439  */
23440 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
23441
23442 /**
23443  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
23444  */
23445 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
23446
23447 /**
23448  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
23449  */
23450 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
23451
23452 /**
23453  * The backwards-counting commitment number
23454  */
23455 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23456
23457 /**
23458  * The value to be sent to the broadcaster
23459  */
23460 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23461
23462 /**
23463  * The value to be sent to the counterparty
23464  */
23465 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23466
23467 /**
23468  * The feerate paid per 1000-weight-unit in this commitment transaction.
23469  */
23470 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23471
23472 /**
23473  * Trust our pre-built transaction and derived transaction creation public keys.
23474  *
23475  * Applies a wrapper which allows access to these fields.
23476  *
23477  * This should only be used if you fully trust the builder of this object.  It should not
23478  * be used by an external signer - instead use the verify function.
23479  */
23480 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
23481
23482 /**
23483  * Verify our pre-built transaction and derived transaction creation public keys.
23484  *
23485  * Applies a wrapper which allows access to these fields.
23486  *
23487  * An external validating signer must call this method before signing
23488  * or using the built transaction.
23489  */
23490 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);
23491
23492 /**
23493  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
23494  */
23495 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
23496
23497 /**
23498  * The transaction ID of the built Bitcoin transaction
23499  */
23500 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23501
23502 /**
23503  * The pre-built Bitcoin commitment transaction
23504  */
23505 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23506
23507 /**
23508  * The pre-calculated transaction creation public keys.
23509  */
23510 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23511
23512 /**
23513  * Should anchors be used.
23514  */
23515 MUST_USE_RES bool TrustedCommitmentTransaction_opt_anchors(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
23516
23517 /**
23518  * Get a signature for each HTLC which was included in the commitment transaction (ie for
23519  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
23520  *
23521  * The returned Vec has one entry for each HTLC, and in the same order.
23522  *
23523  * This function is only valid in the holder commitment context, it always uses SigHashType::All.
23524  */
23525 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);
23526
23527 /**
23528  * Commitment transaction numbers which appear in the transactions themselves are XOR'd with a
23529  * shared secret first. This prevents on-chain observers from discovering how many commitment
23530  * transactions occurred in a channel before it was closed.
23531  *
23532  * This function gets the shared secret from relevant channel public keys and can be used to
23533  * \"decrypt\" the commitment transaction number given a commitment transaction on-chain.
23534  */
23535 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
23536
23537 /**
23538  * Checks if two InitFeaturess contain equal inner contents.
23539  * This ignores pointers and is_owned flags and looks at the values in fields.
23540  * Two objects with NULL inner values will be considered "equal" here.
23541  */
23542 bool InitFeatures_eq(const struct LDKInitFeatures *NONNULL_PTR a, const struct LDKInitFeatures *NONNULL_PTR b);
23543
23544 /**
23545  * Checks if two NodeFeaturess contain equal inner contents.
23546  * This ignores pointers and is_owned flags and looks at the values in fields.
23547  * Two objects with NULL inner values will be considered "equal" here.
23548  */
23549 bool NodeFeatures_eq(const struct LDKNodeFeatures *NONNULL_PTR a, const struct LDKNodeFeatures *NONNULL_PTR b);
23550
23551 /**
23552  * Checks if two ChannelFeaturess contain equal inner contents.
23553  * This ignores pointers and is_owned flags and looks at the values in fields.
23554  * Two objects with NULL inner values will be considered "equal" here.
23555  */
23556 bool ChannelFeatures_eq(const struct LDKChannelFeatures *NONNULL_PTR a, const struct LDKChannelFeatures *NONNULL_PTR b);
23557
23558 /**
23559  * Checks if two InvoiceFeaturess contain equal inner contents.
23560  * This ignores pointers and is_owned flags and looks at the values in fields.
23561  * Two objects with NULL inner values will be considered "equal" here.
23562  */
23563 bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
23564
23565 /**
23566  * Checks if two ChannelTypeFeaturess contain equal inner contents.
23567  * This ignores pointers and is_owned flags and looks at the values in fields.
23568  * Two objects with NULL inner values will be considered "equal" here.
23569  */
23570 bool ChannelTypeFeatures_eq(const struct LDKChannelTypeFeatures *NONNULL_PTR a, const struct LDKChannelTypeFeatures *NONNULL_PTR b);
23571
23572 /**
23573  * Creates a copy of the InitFeatures
23574  */
23575 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
23576
23577 /**
23578  * Creates a copy of the NodeFeatures
23579  */
23580 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
23581
23582 /**
23583  * Creates a copy of the ChannelFeatures
23584  */
23585 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
23586
23587 /**
23588  * Creates a copy of the InvoiceFeatures
23589  */
23590 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
23591
23592 /**
23593  * Creates a copy of the ChannelTypeFeatures
23594  */
23595 struct LDKChannelTypeFeatures ChannelTypeFeatures_clone(const struct LDKChannelTypeFeatures *NONNULL_PTR orig);
23596
23597 /**
23598  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
23599  */
23600 void InitFeatures_free(struct LDKInitFeatures this_obj);
23601
23602 /**
23603  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
23604  */
23605 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
23606
23607 /**
23608  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
23609  */
23610 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
23611
23612 /**
23613  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
23614  */
23615 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
23616
23617 /**
23618  * Frees any resources used by the ChannelTypeFeatures, if is_owned is set and inner is non-NULL.
23619  */
23620 void ChannelTypeFeatures_free(struct LDKChannelTypeFeatures this_obj);
23621
23622 /**
23623  * Create a blank Features with no features set
23624  */
23625 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
23626
23627 /**
23628  * Creates a Features with the bits set which are known by the implementation
23629  */
23630 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
23631
23632 /**
23633  * Returns true if this `Features` object contains unknown feature flags which are set as
23634  * \"required\".
23635  */
23636 MUST_USE_RES bool InitFeatures_requires_unknown_bits(const struct LDKInitFeatures *NONNULL_PTR this_arg);
23637
23638 /**
23639  * Create a blank Features with no features set
23640  */
23641 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
23642
23643 /**
23644  * Creates a Features with the bits set which are known by the implementation
23645  */
23646 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
23647
23648 /**
23649  * Returns true if this `Features` object contains unknown feature flags which are set as
23650  * \"required\".
23651  */
23652 MUST_USE_RES bool NodeFeatures_requires_unknown_bits(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
23653
23654 /**
23655  * Create a blank Features with no features set
23656  */
23657 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
23658
23659 /**
23660  * Creates a Features with the bits set which are known by the implementation
23661  */
23662 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
23663
23664 /**
23665  * Returns true if this `Features` object contains unknown feature flags which are set as
23666  * \"required\".
23667  */
23668 MUST_USE_RES bool ChannelFeatures_requires_unknown_bits(const struct LDKChannelFeatures *NONNULL_PTR this_arg);
23669
23670 /**
23671  * Create a blank Features with no features set
23672  */
23673 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
23674
23675 /**
23676  * Creates a Features with the bits set which are known by the implementation
23677  */
23678 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
23679
23680 /**
23681  * Returns true if this `Features` object contains unknown feature flags which are set as
23682  * \"required\".
23683  */
23684 MUST_USE_RES bool InvoiceFeatures_requires_unknown_bits(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
23685
23686 /**
23687  * Create a blank Features with no features set
23688  */
23689 MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_empty(void);
23690
23691 /**
23692  * Creates a Features with the bits set which are known by the implementation
23693  */
23694 MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_known(void);
23695
23696 /**
23697  * Returns true if this `Features` object contains unknown feature flags which are set as
23698  * \"required\".
23699  */
23700 MUST_USE_RES bool ChannelTypeFeatures_requires_unknown_bits(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
23701
23702 /**
23703  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
23704  */
23705 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
23706
23707 /**
23708  * Read a InitFeatures from a byte array, created by InitFeatures_write
23709  */
23710 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
23711
23712 /**
23713  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
23714  */
23715 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
23716
23717 /**
23718  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
23719  */
23720 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
23721
23722 /**
23723  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
23724  */
23725 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
23726
23727 /**
23728  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
23729  */
23730 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
23731
23732 /**
23733  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
23734  */
23735 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
23736
23737 /**
23738  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
23739  */
23740 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
23741
23742 /**
23743  * Serialize the ChannelTypeFeatures object into a byte array which can be read by ChannelTypeFeatures_read
23744  */
23745 struct LDKCVec_u8Z ChannelTypeFeatures_write(const struct LDKChannelTypeFeatures *NONNULL_PTR obj);
23746
23747 /**
23748  * Read a ChannelTypeFeatures from a byte array, created by ChannelTypeFeatures_write
23749  */
23750 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ ChannelTypeFeatures_read(struct LDKu8slice ser);
23751
23752 /**
23753  * Frees any resources used by the ShutdownScript, if is_owned is set and inner is non-NULL.
23754  */
23755 void ShutdownScript_free(struct LDKShutdownScript this_obj);
23756
23757 /**
23758  * Creates a copy of the ShutdownScript
23759  */
23760 struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
23761
23762 /**
23763  * Frees any resources used by the InvalidShutdownScript, if is_owned is set and inner is non-NULL.
23764  */
23765 void InvalidShutdownScript_free(struct LDKInvalidShutdownScript this_obj);
23766
23767 /**
23768  * The script that did not meet the requirements from [BOLT #2].
23769  *
23770  * [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md
23771  */
23772 struct LDKu8slice InvalidShutdownScript_get_script(const struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr);
23773
23774 /**
23775  * The script that did not meet the requirements from [BOLT #2].
23776  *
23777  * [BOLT #2]: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md
23778  */
23779 void InvalidShutdownScript_set_script(struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
23780
23781 /**
23782  * Constructs a new InvalidShutdownScript given each field
23783  */
23784 MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
23785
23786 /**
23787  * Creates a copy of the InvalidShutdownScript
23788  */
23789 struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
23790
23791 /**
23792  * Serialize the ShutdownScript object into a byte array which can be read by ShutdownScript_read
23793  */
23794 struct LDKCVec_u8Z ShutdownScript_write(const struct LDKShutdownScript *NONNULL_PTR obj);
23795
23796 /**
23797  * Read a ShutdownScript from a byte array, created by ShutdownScript_write
23798  */
23799 struct LDKCResult_ShutdownScriptDecodeErrorZ ShutdownScript_read(struct LDKu8slice ser);
23800
23801 /**
23802  * Generates a P2WPKH script pubkey from the given [`WPubkeyHash`].
23803  */
23804 MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wpkh(const uint8_t (*pubkey_hash)[20]);
23805
23806 /**
23807  * Generates a P2WSH script pubkey from the given [`WScriptHash`].
23808  */
23809 MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wsh(const uint8_t (*script_hash)[32]);
23810
23811 /**
23812  * Generates a witness script pubkey from the given segwit version and program.
23813  *
23814  * Note for version-zero witness scripts you must use [`ShutdownScript::new_p2wpkh`] or
23815  * [`ShutdownScript::new_p2wsh`] instead.
23816  *
23817  * # Errors
23818  *
23819  * This function may return an error if `program` is invalid for the segwit `version`.
23820  */
23821 MUST_USE_RES struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ ShutdownScript_new_witness_program(uint8_t version, struct LDKu8slice program);
23822
23823 /**
23824  * Converts the shutdown script into the underlying [`Script`].
23825  */
23826 MUST_USE_RES struct LDKCVec_u8Z ShutdownScript_into_inner(struct LDKShutdownScript this_arg);
23827
23828 /**
23829  * Returns the [`PublicKey`] used for a P2WPKH shutdown script if constructed directly from it.
23830  *
23831  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23832  */
23833 MUST_USE_RES struct LDKPublicKey ShutdownScript_as_legacy_pubkey(const struct LDKShutdownScript *NONNULL_PTR this_arg);
23834
23835 /**
23836  * Returns whether the shutdown script is compatible with the features as defined by BOLT #2.
23837  *
23838  * Specifically, checks for compliance with feature `option_shutdown_anysegwit`.
23839  */
23840 MUST_USE_RES bool ShutdownScript_is_compatible(const struct LDKShutdownScript *NONNULL_PTR this_arg, const struct LDKInitFeatures *NONNULL_PTR features);
23841
23842 /**
23843  * Calls the free function if one is set
23844  */
23845 void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
23846
23847 /**
23848  * Calls the free function if one is set
23849  */
23850 void Type_free(struct LDKType this_ptr);
23851
23852 /**
23853  * Frees any resources used by the NodeId, if is_owned is set and inner is non-NULL.
23854  */
23855 void NodeId_free(struct LDKNodeId this_obj);
23856
23857 /**
23858  * Creates a copy of the NodeId
23859  */
23860 struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
23861
23862 /**
23863  * Create a new NodeId from a public key
23864  */
23865 MUST_USE_RES struct LDKNodeId NodeId_from_pubkey(struct LDKPublicKey pubkey);
23866
23867 /**
23868  * Get the public key slice from this NodeId
23869  */
23870 MUST_USE_RES struct LDKu8slice NodeId_as_slice(const struct LDKNodeId *NONNULL_PTR this_arg);
23871
23872 /**
23873  * Checks if two NodeIds contain equal inner contents.
23874  */
23875 uint64_t NodeId_hash(const struct LDKNodeId *NONNULL_PTR o);
23876
23877 /**
23878  * Serialize the NodeId object into a byte array which can be read by NodeId_read
23879  */
23880 struct LDKCVec_u8Z NodeId_write(const struct LDKNodeId *NONNULL_PTR obj);
23881
23882 /**
23883  * Read a NodeId from a byte array, created by NodeId_write
23884  */
23885 struct LDKCResult_NodeIdDecodeErrorZ NodeId_read(struct LDKu8slice ser);
23886
23887 /**
23888  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
23889  */
23890 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
23891
23892 /**
23893  * Creates a copy of the NetworkGraph
23894  */
23895 struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
23896
23897 /**
23898  * Frees any resources used by the ReadOnlyNetworkGraph, if is_owned is set and inner is non-NULL.
23899  */
23900 void ReadOnlyNetworkGraph_free(struct LDKReadOnlyNetworkGraph this_obj);
23901
23902 /**
23903  * Frees any resources used by the NetworkUpdate
23904  */
23905 void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
23906
23907 /**
23908  * Creates a copy of the NetworkUpdate
23909  */
23910 struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
23911
23912 /**
23913  * Utility method to constructs a new ChannelUpdateMessage-variant NetworkUpdate
23914  */
23915 struct LDKNetworkUpdate NetworkUpdate_channel_update_message(struct LDKChannelUpdate msg);
23916
23917 /**
23918  * Utility method to constructs a new ChannelClosed-variant NetworkUpdate
23919  */
23920 struct LDKNetworkUpdate NetworkUpdate_channel_closed(uint64_t short_channel_id, bool is_permanent);
23921
23922 /**
23923  * Utility method to constructs a new NodeFailure-variant NetworkUpdate
23924  */
23925 struct LDKNetworkUpdate NetworkUpdate_node_failure(struct LDKPublicKey node_id, bool is_permanent);
23926
23927 /**
23928  * Serialize the NetworkUpdate object into a byte array which can be read by NetworkUpdate_read
23929  */
23930 struct LDKCVec_u8Z NetworkUpdate_write(const struct LDKNetworkUpdate *NONNULL_PTR obj);
23931
23932 /**
23933  * Read a NetworkUpdate from a byte array, created by NetworkUpdate_write
23934  */
23935 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ NetworkUpdate_read(struct LDKu8slice ser);
23936
23937 /**
23938  * Constructs a new EventHandler which calls the relevant methods on this_arg.
23939  * This copies the `inner` pointer in this_arg and thus the returned EventHandler must be freed before this_arg is
23940  */
23941 struct LDKEventHandler NetGraphMsgHandler_as_EventHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
23942
23943 /**
23944  * Frees any resources used by the NetGraphMsgHandler, if is_owned is set and inner is non-NULL.
23945  */
23946 void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
23947
23948 /**
23949  * Creates a new tracker of the actual state of the network of channels and nodes,
23950  * assuming an existing Network Graph.
23951  * Chain monitor is used to make sure announced channels exist on-chain,
23952  * channel data is correct, and that the announcement is signed with
23953  * channel owners' keys.
23954  */
23955 MUST_USE_RES struct LDKNetGraphMsgHandler NetGraphMsgHandler_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKCOption_AccessZ chain_access, struct LDKLogger logger);
23956
23957 /**
23958  * Adds a provider used to check new announcements. Does not affect
23959  * existing announcements unless they are updated.
23960  * Add, update or remove the provider would replace the current one.
23961  */
23962 void NetGraphMsgHandler_add_chain_access(struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg, struct LDKCOption_AccessZ chain_access);
23963
23964 /**
23965  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
23966  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
23967  */
23968 struct LDKRoutingMessageHandler NetGraphMsgHandler_as_RoutingMessageHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
23969
23970 /**
23971  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
23972  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
23973  */
23974 struct LDKMessageSendEventsProvider NetGraphMsgHandler_as_MessageSendEventsProvider(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
23975
23976 /**
23977  * Frees any resources used by the ChannelUpdateInfo, if is_owned is set and inner is non-NULL.
23978  */
23979 void ChannelUpdateInfo_free(struct LDKChannelUpdateInfo this_obj);
23980
23981 /**
23982  * When the last update to the channel direction was issued.
23983  * Value is opaque, as set in the announcement.
23984  */
23985 uint32_t ChannelUpdateInfo_get_last_update(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
23986
23987 /**
23988  * When the last update to the channel direction was issued.
23989  * Value is opaque, as set in the announcement.
23990  */
23991 void ChannelUpdateInfo_set_last_update(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint32_t val);
23992
23993 /**
23994  * Whether the channel can be currently used for payments (in this one direction).
23995  */
23996 bool ChannelUpdateInfo_get_enabled(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
23997
23998 /**
23999  * Whether the channel can be currently used for payments (in this one direction).
24000  */
24001 void ChannelUpdateInfo_set_enabled(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, bool val);
24002
24003 /**
24004  * The difference in CLTV values that you must have when routing through this channel.
24005  */
24006 uint16_t ChannelUpdateInfo_get_cltv_expiry_delta(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24007
24008 /**
24009  * The difference in CLTV values that you must have when routing through this channel.
24010  */
24011 void ChannelUpdateInfo_set_cltv_expiry_delta(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint16_t val);
24012
24013 /**
24014  * The minimum value, which must be relayed to the next hop via the channel
24015  */
24016 uint64_t ChannelUpdateInfo_get_htlc_minimum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24017
24018 /**
24019  * The minimum value, which must be relayed to the next hop via the channel
24020  */
24021 void ChannelUpdateInfo_set_htlc_minimum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint64_t val);
24022
24023 /**
24024  * The maximum value which may be relayed to the next hop via the channel.
24025  */
24026 struct LDKCOption_u64Z ChannelUpdateInfo_get_htlc_maximum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24027
24028 /**
24029  * The maximum value which may be relayed to the next hop via the channel.
24030  */
24031 void ChannelUpdateInfo_set_htlc_maximum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
24032
24033 /**
24034  * Fees charged when the channel is used for routing
24035  */
24036 struct LDKRoutingFees ChannelUpdateInfo_get_fees(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24037
24038 /**
24039  * Fees charged when the channel is used for routing
24040  */
24041 void ChannelUpdateInfo_set_fees(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
24042
24043 /**
24044  * Most recent update for the channel received from the network
24045  * Mostly redundant with the data we store in fields explicitly.
24046  * Everything else is useful only for sending out for initial routing sync.
24047  * Not stored if contains excess data to prevent DoS.
24048  *
24049  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24050  */
24051 struct LDKChannelUpdate ChannelUpdateInfo_get_last_update_message(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
24052
24053 /**
24054  * Most recent update for the channel received from the network
24055  * Mostly redundant with the data we store in fields explicitly.
24056  * Everything else is useful only for sending out for initial routing sync.
24057  * Not stored if contains excess data to prevent DoS.
24058  *
24059  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24060  */
24061 void ChannelUpdateInfo_set_last_update_message(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
24062
24063 /**
24064  * Constructs a new ChannelUpdateInfo given each field
24065  */
24066 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);
24067
24068 /**
24069  * Creates a copy of the ChannelUpdateInfo
24070  */
24071 struct LDKChannelUpdateInfo ChannelUpdateInfo_clone(const struct LDKChannelUpdateInfo *NONNULL_PTR orig);
24072
24073 /**
24074  * Serialize the ChannelUpdateInfo object into a byte array which can be read by ChannelUpdateInfo_read
24075  */
24076 struct LDKCVec_u8Z ChannelUpdateInfo_write(const struct LDKChannelUpdateInfo *NONNULL_PTR obj);
24077
24078 /**
24079  * Read a ChannelUpdateInfo from a byte array, created by ChannelUpdateInfo_write
24080  */
24081 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ ChannelUpdateInfo_read(struct LDKu8slice ser);
24082
24083 /**
24084  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
24085  */
24086 void ChannelInfo_free(struct LDKChannelInfo this_obj);
24087
24088 /**
24089  * Protocol features of a channel communicated during its announcement
24090  */
24091 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24092
24093 /**
24094  * Protocol features of a channel communicated during its announcement
24095  */
24096 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
24097
24098 /**
24099  * Source node of the first direction of a channel
24100  */
24101 struct LDKNodeId ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24102
24103 /**
24104  * Source node of the first direction of a channel
24105  */
24106 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
24107
24108 /**
24109  * Details about the first direction of a channel
24110  *
24111  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24112  */
24113 struct LDKChannelUpdateInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24114
24115 /**
24116  * Details about the first direction of a channel
24117  *
24118  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24119  */
24120 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
24121
24122 /**
24123  * Source node of the second direction of a channel
24124  */
24125 struct LDKNodeId ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24126
24127 /**
24128  * Source node of the second direction of a channel
24129  */
24130 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
24131
24132 /**
24133  * Details about the second direction of a channel
24134  *
24135  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24136  */
24137 struct LDKChannelUpdateInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24138
24139 /**
24140  * Details about the second direction of a channel
24141  *
24142  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24143  */
24144 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
24145
24146 /**
24147  * The channel capacity as seen on-chain, if chain lookup is available.
24148  */
24149 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24150
24151 /**
24152  * The channel capacity as seen on-chain, if chain lookup is available.
24153  */
24154 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
24155
24156 /**
24157  * An initial announcement of the channel
24158  * Mostly redundant with the data we store in fields explicitly.
24159  * Everything else is useful only for sending out for initial routing sync.
24160  * Not stored if contains excess data to prevent DoS.
24161  *
24162  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24163  */
24164 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
24165
24166 /**
24167  * An initial announcement of the channel
24168  * Mostly redundant with the data we store in fields explicitly.
24169  * Everything else is useful only for sending out for initial routing sync.
24170  * Not stored if contains excess data to prevent DoS.
24171  *
24172  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24173  */
24174 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
24175
24176 /**
24177  * Creates a copy of the ChannelInfo
24178  */
24179 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
24180
24181 /**
24182  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
24183  */
24184 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
24185
24186 /**
24187  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
24188  */
24189 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
24190
24191 /**
24192  * Frees any resources used by the DirectedChannelInfo, if is_owned is set and inner is non-NULL.
24193  */
24194 void DirectedChannelInfo_free(struct LDKDirectedChannelInfo this_obj);
24195
24196 /**
24197  * Creates a copy of the DirectedChannelInfo
24198  */
24199 struct LDKDirectedChannelInfo DirectedChannelInfo_clone(const struct LDKDirectedChannelInfo *NONNULL_PTR orig);
24200
24201 /**
24202  * Returns information for the channel.
24203  */
24204 MUST_USE_RES struct LDKChannelInfo DirectedChannelInfo_channel(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
24205
24206 /**
24207  * Returns information for the direction.
24208  *
24209  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24210  */
24211 MUST_USE_RES struct LDKChannelUpdateInfo DirectedChannelInfo_direction(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
24212
24213 /**
24214  * Returns the [`EffectiveCapacity`] of the channel in the direction.
24215  *
24216  * This is either the total capacity from the funding transaction, if known, or the
24217  * `htlc_maximum_msat` for the direction as advertised by the gossip network, if known,
24218  * whichever is smaller.
24219  */
24220 MUST_USE_RES struct LDKEffectiveCapacity DirectedChannelInfo_effective_capacity(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
24221
24222 /**
24223  * Frees any resources used by the EffectiveCapacity
24224  */
24225 void EffectiveCapacity_free(struct LDKEffectiveCapacity this_ptr);
24226
24227 /**
24228  * Creates a copy of the EffectiveCapacity
24229  */
24230 struct LDKEffectiveCapacity EffectiveCapacity_clone(const struct LDKEffectiveCapacity *NONNULL_PTR orig);
24231
24232 /**
24233  * Utility method to constructs a new ExactLiquidity-variant EffectiveCapacity
24234  */
24235 struct LDKEffectiveCapacity EffectiveCapacity_exact_liquidity(uint64_t liquidity_msat);
24236
24237 /**
24238  * Utility method to constructs a new MaximumHTLC-variant EffectiveCapacity
24239  */
24240 struct LDKEffectiveCapacity EffectiveCapacity_maximum_htlc(uint64_t amount_msat);
24241
24242 /**
24243  * Utility method to constructs a new Total-variant EffectiveCapacity
24244  */
24245 struct LDKEffectiveCapacity EffectiveCapacity_total(uint64_t capacity_msat);
24246
24247 /**
24248  * Utility method to constructs a new Infinite-variant EffectiveCapacity
24249  */
24250 struct LDKEffectiveCapacity EffectiveCapacity_infinite(void);
24251
24252 /**
24253  * Utility method to constructs a new Unknown-variant EffectiveCapacity
24254  */
24255 struct LDKEffectiveCapacity EffectiveCapacity_unknown(void);
24256
24257 /**
24258  * Returns the effective capacity denominated in millisatoshi.
24259  */
24260 MUST_USE_RES uint64_t EffectiveCapacity_as_msat(const struct LDKEffectiveCapacity *NONNULL_PTR this_arg);
24261
24262 /**
24263  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
24264  */
24265 void RoutingFees_free(struct LDKRoutingFees this_obj);
24266
24267 /**
24268  * Flat routing fee in satoshis
24269  */
24270 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
24271
24272 /**
24273  * Flat routing fee in satoshis
24274  */
24275 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
24276
24277 /**
24278  * Liquidity-based routing fee in millionths of a routed amount.
24279  * In other words, 10000 is 1%.
24280  */
24281 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
24282
24283 /**
24284  * Liquidity-based routing fee in millionths of a routed amount.
24285  * In other words, 10000 is 1%.
24286  */
24287 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
24288
24289 /**
24290  * Constructs a new RoutingFees given each field
24291  */
24292 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
24293
24294 /**
24295  * Checks if two RoutingFeess contain equal inner contents.
24296  * This ignores pointers and is_owned flags and looks at the values in fields.
24297  * Two objects with NULL inner values will be considered "equal" here.
24298  */
24299 bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
24300
24301 /**
24302  * Creates a copy of the RoutingFees
24303  */
24304 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
24305
24306 /**
24307  * Checks if two RoutingFeess contain equal inner contents.
24308  */
24309 uint64_t RoutingFees_hash(const struct LDKRoutingFees *NONNULL_PTR o);
24310
24311 /**
24312  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
24313  */
24314 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
24315
24316 /**
24317  * Read a RoutingFees from a byte array, created by RoutingFees_write
24318  */
24319 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
24320
24321 /**
24322  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
24323  */
24324 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
24325
24326 /**
24327  * Protocol features the node announced support for
24328  */
24329 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
24330
24331 /**
24332  * Protocol features the node announced support for
24333  */
24334 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
24335
24336 /**
24337  * When the last known update to the node state was issued.
24338  * Value is opaque, as set in the announcement.
24339  */
24340 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
24341
24342 /**
24343  * When the last known update to the node state was issued.
24344  * Value is opaque, as set in the announcement.
24345  */
24346 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
24347
24348 /**
24349  * Color assigned to the node
24350  */
24351 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
24352
24353 /**
24354  * Color assigned to the node
24355  */
24356 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
24357
24358 /**
24359  * Moniker assigned to the node.
24360  * May be invalid or malicious (eg control chars),
24361  * should not be exposed to the user.
24362  */
24363 const uint8_t (*NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[32];
24364
24365 /**
24366  * Moniker assigned to the node.
24367  * May be invalid or malicious (eg control chars),
24368  * should not be exposed to the user.
24369  */
24370 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24371
24372 /**
24373  * Internet-level addresses via which one can connect to the node
24374  */
24375 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
24376
24377 /**
24378  * An initial announcement of the node
24379  * Mostly redundant with the data we store in fields explicitly.
24380  * Everything else is useful only for sending out for initial routing sync.
24381  * Not stored if contains excess data to prevent DoS.
24382  *
24383  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24384  */
24385 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
24386
24387 /**
24388  * An initial announcement of the node
24389  * Mostly redundant with the data we store in fields explicitly.
24390  * Everything else is useful only for sending out for initial routing sync.
24391  * Not stored if contains excess data to prevent DoS.
24392  *
24393  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24394  */
24395 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
24396
24397 /**
24398  * Constructs a new NodeAnnouncementInfo given each field
24399  */
24400 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);
24401
24402 /**
24403  * Creates a copy of the NodeAnnouncementInfo
24404  */
24405 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
24406
24407 /**
24408  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
24409  */
24410 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
24411
24412 /**
24413  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
24414  */
24415 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
24416
24417 /**
24418  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
24419  */
24420 void NodeInfo_free(struct LDKNodeInfo this_obj);
24421
24422 /**
24423  * All valid channels a node has announced
24424  */
24425 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
24426
24427 /**
24428  * Lowest fees enabling routing via any of the enabled, known channels to a node.
24429  * The two fields (flat and proportional fee) are independent,
24430  * meaning they don't have to refer to the same channel.
24431  *
24432  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24433  */
24434 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
24435
24436 /**
24437  * Lowest fees enabling routing via any of the enabled, known channels to a node.
24438  * The two fields (flat and proportional fee) are independent,
24439  * meaning they don't have to refer to the same channel.
24440  *
24441  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24442  */
24443 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
24444
24445 /**
24446  * More information about a node from node_announcement.
24447  * Optional because we store a Node entry after learning about it from
24448  * a channel announcement, but before receiving a node announcement.
24449  *
24450  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24451  */
24452 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
24453
24454 /**
24455  * More information about a node from node_announcement.
24456  * Optional because we store a Node entry after learning about it from
24457  * a channel announcement, but before receiving a node announcement.
24458  *
24459  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24460  */
24461 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
24462
24463 /**
24464  * Constructs a new NodeInfo given each field
24465  */
24466 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
24467
24468 /**
24469  * Creates a copy of the NodeInfo
24470  */
24471 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
24472
24473 /**
24474  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
24475  */
24476 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
24477
24478 /**
24479  * Read a NodeInfo from a byte array, created by NodeInfo_write
24480  */
24481 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
24482
24483 /**
24484  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
24485  */
24486 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
24487
24488 /**
24489  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
24490  */
24491 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser);
24492
24493 /**
24494  * Creates a new, empty, network graph.
24495  */
24496 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash);
24497
24498 /**
24499  * Returns a read-only view of the network graph.
24500  */
24501 MUST_USE_RES struct LDKReadOnlyNetworkGraph NetworkGraph_read_only(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
24502
24503 /**
24504  * For an already known node (from channel announcements), update its stored properties from a
24505  * given node announcement.
24506  *
24507  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
24508  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
24509  * routing messages from a source using a protocol other than the lightning P2P protocol.
24510  */
24511 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
24512
24513 /**
24514  * For an already known node (from channel announcements), update its stored properties from a
24515  * given node announcement without verifying the associated signatures. Because we aren't
24516  * given the associated signatures here we cannot relay the node announcement to any of our
24517  * peers.
24518  */
24519 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);
24520
24521 /**
24522  * Store or update channel info from a channel announcement.
24523  *
24524  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
24525  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
24526  * routing messages from a source using a protocol other than the lightning P2P protocol.
24527  *
24528  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
24529  * the corresponding UTXO exists on chain and is correctly-formatted.
24530  */
24531 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);
24532
24533 /**
24534  * Store or update channel info from a channel announcement without verifying the associated
24535  * signatures. Because we aren't given the associated signatures here we cannot relay the
24536  * channel announcement to any of our peers.
24537  *
24538  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
24539  * the corresponding UTXO exists on chain and is correctly-formatted.
24540  */
24541 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);
24542
24543 /**
24544  * Close a channel if a corresponding HTLC fail was sent.
24545  * If permanent, removes a channel from the local storage.
24546  * May cause the removal of nodes too, if this was their last channel.
24547  * If not permanent, makes channels unavailable for routing.
24548  */
24549 void NetworkGraph_close_channel_from_update(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
24550
24551 /**
24552  * Marks a node in the graph as failed.
24553  */
24554 void NetworkGraph_fail_node(const struct LDKNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey _node_id, bool is_permanent);
24555
24556 /**
24557  * Removes information about channels that we haven't heard any updates about in some time.
24558  * This can be used regularly to prune the network graph of channels that likely no longer
24559  * exist.
24560  *
24561  * While there is no formal requirement that nodes regularly re-broadcast their channel
24562  * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
24563  * pruning occur for updates which are at least two weeks old, which we implement here.
24564  *
24565  * Note that for users of the `lightning-background-processor` crate this method may be
24566  * automatically called regularly for you.
24567  *
24568  * This method is only available with the `std` feature. See
24569  * [`NetworkGraph::remove_stale_channels_with_time`] for `no-std` use.
24570  */
24571 void NetworkGraph_remove_stale_channels(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
24572
24573 /**
24574  * Removes information about channels that we haven't heard any updates about in some time.
24575  * This can be used regularly to prune the network graph of channels that likely no longer
24576  * exist.
24577  *
24578  * While there is no formal requirement that nodes regularly re-broadcast their channel
24579  * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
24580  * pruning occur for updates which are at least two weeks old, which we implement here.
24581  *
24582  * This function takes the current unix time as an argument. For users with the `std` feature
24583  * enabled, [`NetworkGraph::remove_stale_channels`] may be preferable.
24584  */
24585 void NetworkGraph_remove_stale_channels_with_time(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t current_time_unix);
24586
24587 /**
24588  * For an already known (from announcement) channel, update info about one of the directions
24589  * of the channel.
24590  *
24591  * You probably don't want to call this directly, instead relying on a NetGraphMsgHandler's
24592  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
24593  * routing messages from a source using a protocol other than the lightning P2P protocol.
24594  *
24595  * If built with `no-std`, any updates with a timestamp more than two weeks in the past or
24596  * materially in the future will be rejected.
24597  */
24598 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
24599
24600 /**
24601  * For an already known (from announcement) channel, update info about one of the directions
24602  * of the channel without verifying the associated signatures. Because we aren't given the
24603  * associated signatures here we cannot relay the channel update to any of our peers.
24604  *
24605  * If built with `no-std`, any updates with a timestamp more than two weeks in the past or
24606  * materially in the future will be rejected.
24607  */
24608 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
24609
24610 /**
24611  * Get network addresses by node id.
24612  * Returns None if the requested node is completely unknown,
24613  * or if node announcement for the node was never received.
24614  */
24615 MUST_USE_RES struct LDKCOption_CVec_NetAddressZZ ReadOnlyNetworkGraph_get_addresses(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey pubkey);
24616
24617 /**
24618  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
24619  */
24620 void RouteHop_free(struct LDKRouteHop this_obj);
24621
24622 /**
24623  * The node_id of the node at this hop.
24624  */
24625 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24626
24627 /**
24628  * The node_id of the node at this hop.
24629  */
24630 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24631
24632 /**
24633  * The node_announcement features of the node at this hop. For the last hop, these may be
24634  * amended to match the features present in the invoice this node generated.
24635  */
24636 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24637
24638 /**
24639  * The node_announcement features of the node at this hop. For the last hop, these may be
24640  * amended to match the features present in the invoice this node generated.
24641  */
24642 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
24643
24644 /**
24645  * The channel that should be used from the previous hop to reach this node.
24646  */
24647 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24648
24649 /**
24650  * The channel that should be used from the previous hop to reach this node.
24651  */
24652 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
24653
24654 /**
24655  * The channel_announcement features of the channel that should be used from the previous hop
24656  * to reach this node.
24657  */
24658 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24659
24660 /**
24661  * The channel_announcement features of the channel that should be used from the previous hop
24662  * to reach this node.
24663  */
24664 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
24665
24666 /**
24667  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
24668  * For the last hop, this should be the full value of the payment (might be more than
24669  * requested if we had to match htlc_minimum_msat).
24670  */
24671 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24672
24673 /**
24674  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
24675  * For the last hop, this should be the full value of the payment (might be more than
24676  * requested if we had to match htlc_minimum_msat).
24677  */
24678 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
24679
24680 /**
24681  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
24682  * expected at the destination, in excess of the current block height.
24683  */
24684 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
24685
24686 /**
24687  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
24688  * expected at the destination, in excess of the current block height.
24689  */
24690 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
24691
24692 /**
24693  * Constructs a new RouteHop given each field
24694  */
24695 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);
24696
24697 /**
24698  * Creates a copy of the RouteHop
24699  */
24700 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
24701
24702 /**
24703  * Checks if two RouteHops contain equal inner contents.
24704  */
24705 uint64_t RouteHop_hash(const struct LDKRouteHop *NONNULL_PTR o);
24706
24707 /**
24708  * Checks if two RouteHops contain equal inner contents.
24709  * This ignores pointers and is_owned flags and looks at the values in fields.
24710  * Two objects with NULL inner values will be considered "equal" here.
24711  */
24712 bool RouteHop_eq(const struct LDKRouteHop *NONNULL_PTR a, const struct LDKRouteHop *NONNULL_PTR b);
24713
24714 /**
24715  * Serialize the RouteHop object into a byte array which can be read by RouteHop_read
24716  */
24717 struct LDKCVec_u8Z RouteHop_write(const struct LDKRouteHop *NONNULL_PTR obj);
24718
24719 /**
24720  * Read a RouteHop from a byte array, created by RouteHop_write
24721  */
24722 struct LDKCResult_RouteHopDecodeErrorZ RouteHop_read(struct LDKu8slice ser);
24723
24724 /**
24725  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
24726  */
24727 void Route_free(struct LDKRoute this_obj);
24728
24729 /**
24730  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
24731  * last RouteHop in each path must be the same.
24732  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
24733  * destination. Thus, this must always be at least length one. While the maximum length of any
24734  * given path is variable, keeping the length of any path to less than 20 should currently
24735  * ensure it is viable.
24736  */
24737 struct LDKCVec_CVec_RouteHopZZ Route_get_paths(const struct LDKRoute *NONNULL_PTR this_ptr);
24738
24739 /**
24740  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
24741  * last RouteHop in each path must be the same.
24742  * Each entry represents a list of hops, NOT INCLUDING our own, where the last hop is the
24743  * destination. Thus, this must always be at least length one. While the maximum length of any
24744  * given path is variable, keeping the length of any path to less than 20 should currently
24745  * ensure it is viable.
24746  */
24747 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
24748
24749 /**
24750  * The `payment_params` parameter passed to [`find_route`].
24751  * This is used by `ChannelManager` to track information which may be required for retries,
24752  * provided back to you via [`Event::PaymentPathFailed`].
24753  *
24754  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
24755  *
24756  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24757  */
24758 struct LDKPaymentParameters Route_get_payment_params(const struct LDKRoute *NONNULL_PTR this_ptr);
24759
24760 /**
24761  * The `payment_params` parameter passed to [`find_route`].
24762  * This is used by `ChannelManager` to track information which may be required for retries,
24763  * provided back to you via [`Event::PaymentPathFailed`].
24764  *
24765  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
24766  *
24767  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24768  */
24769 void Route_set_payment_params(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
24770
24771 /**
24772  * Constructs a new Route given each field
24773  */
24774 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPaymentParameters payment_params_arg);
24775
24776 /**
24777  * Creates a copy of the Route
24778  */
24779 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
24780
24781 /**
24782  * Checks if two Routes contain equal inner contents.
24783  */
24784 uint64_t Route_hash(const struct LDKRoute *NONNULL_PTR o);
24785
24786 /**
24787  * Checks if two Routes contain equal inner contents.
24788  * This ignores pointers and is_owned flags and looks at the values in fields.
24789  * Two objects with NULL inner values will be considered "equal" here.
24790  */
24791 bool Route_eq(const struct LDKRoute *NONNULL_PTR a, const struct LDKRoute *NONNULL_PTR b);
24792
24793 /**
24794  * Returns the total amount of fees paid on this [`Route`].
24795  *
24796  * This doesn't include any extra payment made to the recipient, which can happen in excess of
24797  * the amount passed to [`find_route`]'s `params.final_value_msat`.
24798  */
24799 MUST_USE_RES uint64_t Route_get_total_fees(const struct LDKRoute *NONNULL_PTR this_arg);
24800
24801 /**
24802  * Returns the total amount paid on this [`Route`], excluding the fees.
24803  */
24804 MUST_USE_RES uint64_t Route_get_total_amount(const struct LDKRoute *NONNULL_PTR this_arg);
24805
24806 /**
24807  * Serialize the Route object into a byte array which can be read by Route_read
24808  */
24809 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
24810
24811 /**
24812  * Read a Route from a byte array, created by Route_write
24813  */
24814 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
24815
24816 /**
24817  * Frees any resources used by the RouteParameters, if is_owned is set and inner is non-NULL.
24818  */
24819 void RouteParameters_free(struct LDKRouteParameters this_obj);
24820
24821 /**
24822  * The parameters of the failed payment path.
24823  */
24824 struct LDKPaymentParameters RouteParameters_get_payment_params(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
24825
24826 /**
24827  * The parameters of the failed payment path.
24828  */
24829 void RouteParameters_set_payment_params(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
24830
24831 /**
24832  * The amount in msats sent on the failed payment path.
24833  */
24834 uint64_t RouteParameters_get_final_value_msat(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
24835
24836 /**
24837  * The amount in msats sent on the failed payment path.
24838  */
24839 void RouteParameters_set_final_value_msat(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint64_t val);
24840
24841 /**
24842  * The CLTV on the final hop of the failed payment path.
24843  */
24844 uint32_t RouteParameters_get_final_cltv_expiry_delta(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
24845
24846 /**
24847  * The CLTV on the final hop of the failed payment path.
24848  */
24849 void RouteParameters_set_final_cltv_expiry_delta(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint32_t val);
24850
24851 /**
24852  * Constructs a new RouteParameters given each field
24853  */
24854 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);
24855
24856 /**
24857  * Creates a copy of the RouteParameters
24858  */
24859 struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
24860
24861 /**
24862  * Serialize the RouteParameters object into a byte array which can be read by RouteParameters_read
24863  */
24864 struct LDKCVec_u8Z RouteParameters_write(const struct LDKRouteParameters *NONNULL_PTR obj);
24865
24866 /**
24867  * Read a RouteParameters from a byte array, created by RouteParameters_write
24868  */
24869 struct LDKCResult_RouteParametersDecodeErrorZ RouteParameters_read(struct LDKu8slice ser);
24870
24871 /**
24872  * Frees any resources used by the PaymentParameters, if is_owned is set and inner is non-NULL.
24873  */
24874 void PaymentParameters_free(struct LDKPaymentParameters this_obj);
24875
24876 /**
24877  * The node id of the payee.
24878  */
24879 struct LDKPublicKey PaymentParameters_get_payee_pubkey(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
24880
24881 /**
24882  * The node id of the payee.
24883  */
24884 void PaymentParameters_set_payee_pubkey(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24885
24886 /**
24887  * Features supported by the payee.
24888  *
24889  * May be set from the payee's invoice or via [`for_keysend`]. May be `None` if the invoice
24890  * does not contain any features.
24891  *
24892  * [`for_keysend`]: Self::for_keysend
24893  *
24894  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24895  */
24896 struct LDKInvoiceFeatures PaymentParameters_get_features(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
24897
24898 /**
24899  * Features supported by the payee.
24900  *
24901  * May be set from the payee's invoice or via [`for_keysend`]. May be `None` if the invoice
24902  * does not contain any features.
24903  *
24904  * [`for_keysend`]: Self::for_keysend
24905  *
24906  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24907  */
24908 void PaymentParameters_set_features(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
24909
24910 /**
24911  * Hints for routing to the payee, containing channels connecting the payee to public nodes.
24912  */
24913 struct LDKCVec_RouteHintZ PaymentParameters_get_route_hints(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
24914
24915 /**
24916  * Hints for routing to the payee, containing channels connecting the payee to public nodes.
24917  */
24918 void PaymentParameters_set_route_hints(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
24919
24920 /**
24921  * Expiration of a payment to the payee, in seconds relative to the UNIX epoch.
24922  */
24923 struct LDKCOption_u64Z PaymentParameters_get_expiry_time(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
24924
24925 /**
24926  * Expiration of a payment to the payee, in seconds relative to the UNIX epoch.
24927  */
24928 void PaymentParameters_set_expiry_time(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
24929
24930 /**
24931  * The maximum total CLTV delta we accept for the route.
24932  */
24933 uint32_t PaymentParameters_get_max_total_cltv_expiry_delta(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
24934
24935 /**
24936  * The maximum total CLTV delta we accept for the route.
24937  */
24938 void PaymentParameters_set_max_total_cltv_expiry_delta(struct LDKPaymentParameters *NONNULL_PTR this_ptr, uint32_t val);
24939
24940 /**
24941  * Constructs a new PaymentParameters given each field
24942  */
24943 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);
24944
24945 /**
24946  * Creates a copy of the PaymentParameters
24947  */
24948 struct LDKPaymentParameters PaymentParameters_clone(const struct LDKPaymentParameters *NONNULL_PTR orig);
24949
24950 /**
24951  * Checks if two PaymentParameterss contain equal inner contents.
24952  */
24953 uint64_t PaymentParameters_hash(const struct LDKPaymentParameters *NONNULL_PTR o);
24954
24955 /**
24956  * Checks if two PaymentParameterss contain equal inner contents.
24957  * This ignores pointers and is_owned flags and looks at the values in fields.
24958  * Two objects with NULL inner values will be considered "equal" here.
24959  */
24960 bool PaymentParameters_eq(const struct LDKPaymentParameters *NONNULL_PTR a, const struct LDKPaymentParameters *NONNULL_PTR b);
24961
24962 /**
24963  * Serialize the PaymentParameters object into a byte array which can be read by PaymentParameters_read
24964  */
24965 struct LDKCVec_u8Z PaymentParameters_write(const struct LDKPaymentParameters *NONNULL_PTR obj);
24966
24967 /**
24968  * Read a PaymentParameters from a byte array, created by PaymentParameters_write
24969  */
24970 struct LDKCResult_PaymentParametersDecodeErrorZ PaymentParameters_read(struct LDKu8slice ser);
24971
24972 /**
24973  * Creates a payee with the node id of the given `pubkey`.
24974  */
24975 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_from_node_id(struct LDKPublicKey payee_pubkey);
24976
24977 /**
24978  * Creates a payee with the node id of the given `pubkey` to use for keysend payments.
24979  */
24980 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_for_keysend(struct LDKPublicKey payee_pubkey);
24981
24982 /**
24983  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
24984  */
24985 void RouteHint_free(struct LDKRouteHint this_obj);
24986
24987 struct LDKCVec_RouteHintHopZ RouteHint_get_a(const struct LDKRouteHint *NONNULL_PTR this_ptr);
24988
24989 void RouteHint_set_a(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintHopZ val);
24990
24991 /**
24992  * Constructs a new RouteHint given each field
24993  */
24994 MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
24995
24996 /**
24997  * Creates a copy of the RouteHint
24998  */
24999 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
25000
25001 /**
25002  * Checks if two RouteHints contain equal inner contents.
25003  */
25004 uint64_t RouteHint_hash(const struct LDKRouteHint *NONNULL_PTR o);
25005
25006 /**
25007  * Checks if two RouteHints contain equal inner contents.
25008  * This ignores pointers and is_owned flags and looks at the values in fields.
25009  * Two objects with NULL inner values will be considered "equal" here.
25010  */
25011 bool RouteHint_eq(const struct LDKRouteHint *NONNULL_PTR a, const struct LDKRouteHint *NONNULL_PTR b);
25012
25013 /**
25014  * Serialize the RouteHint object into a byte array which can be read by RouteHint_read
25015  */
25016 struct LDKCVec_u8Z RouteHint_write(const struct LDKRouteHint *NONNULL_PTR obj);
25017
25018 /**
25019  * Read a RouteHint from a byte array, created by RouteHint_write
25020  */
25021 struct LDKCResult_RouteHintDecodeErrorZ RouteHint_read(struct LDKu8slice ser);
25022
25023 /**
25024  * Frees any resources used by the RouteHintHop, if is_owned is set and inner is non-NULL.
25025  */
25026 void RouteHintHop_free(struct LDKRouteHintHop this_obj);
25027
25028 /**
25029  * The node_id of the non-target end of the route
25030  */
25031 struct LDKPublicKey RouteHintHop_get_src_node_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25032
25033 /**
25034  * The node_id of the non-target end of the route
25035  */
25036 void RouteHintHop_set_src_node_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25037
25038 /**
25039  * The short_channel_id of this channel
25040  */
25041 uint64_t RouteHintHop_get_short_channel_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25042
25043 /**
25044  * The short_channel_id of this channel
25045  */
25046 void RouteHintHop_set_short_channel_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint64_t val);
25047
25048 /**
25049  * The fees which must be paid to use this channel
25050  */
25051 struct LDKRoutingFees RouteHintHop_get_fees(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25052
25053 /**
25054  * The fees which must be paid to use this channel
25055  */
25056 void RouteHintHop_set_fees(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
25057
25058 /**
25059  * The difference in CLTV values between this node and the next node.
25060  */
25061 uint16_t RouteHintHop_get_cltv_expiry_delta(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25062
25063 /**
25064  * The difference in CLTV values between this node and the next node.
25065  */
25066 void RouteHintHop_set_cltv_expiry_delta(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint16_t val);
25067
25068 /**
25069  * The minimum value, in msat, which must be relayed to the next hop.
25070  */
25071 struct LDKCOption_u64Z RouteHintHop_get_htlc_minimum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25072
25073 /**
25074  * The minimum value, in msat, which must be relayed to the next hop.
25075  */
25076 void RouteHintHop_set_htlc_minimum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
25077
25078 /**
25079  * The maximum value in msat available for routing with a single HTLC.
25080  */
25081 struct LDKCOption_u64Z RouteHintHop_get_htlc_maximum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
25082
25083 /**
25084  * The maximum value in msat available for routing with a single HTLC.
25085  */
25086 void RouteHintHop_set_htlc_maximum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
25087
25088 /**
25089  * Constructs a new RouteHintHop given each field
25090  */
25091 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);
25092
25093 /**
25094  * Creates a copy of the RouteHintHop
25095  */
25096 struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
25097
25098 /**
25099  * Checks if two RouteHintHops contain equal inner contents.
25100  */
25101 uint64_t RouteHintHop_hash(const struct LDKRouteHintHop *NONNULL_PTR o);
25102
25103 /**
25104  * Checks if two RouteHintHops contain equal inner contents.
25105  * This ignores pointers and is_owned flags and looks at the values in fields.
25106  * Two objects with NULL inner values will be considered "equal" here.
25107  */
25108 bool RouteHintHop_eq(const struct LDKRouteHintHop *NONNULL_PTR a, const struct LDKRouteHintHop *NONNULL_PTR b);
25109
25110 /**
25111  * Serialize the RouteHintHop object into a byte array which can be read by RouteHintHop_read
25112  */
25113 struct LDKCVec_u8Z RouteHintHop_write(const struct LDKRouteHintHop *NONNULL_PTR obj);
25114
25115 /**
25116  * Read a RouteHintHop from a byte array, created by RouteHintHop_write
25117  */
25118 struct LDKCResult_RouteHintHopDecodeErrorZ RouteHintHop_read(struct LDKu8slice ser);
25119
25120 /**
25121  * Finds a route from us (payer) to the given target node (payee).
25122  *
25123  * If the payee provided features in their invoice, they should be provided via `params.payee`.
25124  * Without this, MPP will only be used if the payee's features are available in the network graph.
25125  *
25126  * Private routing paths between a public node and the target may be included in `params.payee`.
25127  *
25128  * If some channels aren't announced, it may be useful to fill in `first_hops` with the results
25129  * from [`ChannelManager::list_usable_channels`]. If it is filled in, the view of our local
25130  * channels from [`NetworkGraph`] will be ignored, and only those in `first_hops` will be used.
25131  *
25132  * The fees on channels from us to the next hop are ignored as they are assumed to all be equal.
25133  * However, the enabled/disabled bit on such channels as well as the `htlc_minimum_msat` /
25134  * `htlc_maximum_msat` *are* checked as they may change based on the receiving node.
25135  *
25136  * # Note
25137  *
25138  * May be used to re-compute a [`Route`] when handling a [`Event::PaymentPathFailed`]. Any
25139  * adjustments to the [`NetworkGraph`] and channel scores should be made prior to calling this
25140  * function.
25141  *
25142  * # Panics
25143  *
25144  * Panics if first_hops contains channels without short_channel_ids;
25145  * [`ChannelManager::list_usable_channels`] will never include such channels.
25146  *
25147  * [`ChannelManager::list_usable_channels`]: crate::ln::channelmanager::ChannelManager::list_usable_channels
25148  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
25149  *
25150  * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
25151  */
25152 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);
25153
25154 /**
25155  * Calls the free function if one is set
25156  */
25157 void Score_free(struct LDKScore this_ptr);
25158
25159 /**
25160  * Calls the free function if one is set
25161  */
25162 void LockableScore_free(struct LDKLockableScore this_ptr);
25163
25164 /**
25165  * Frees any resources used by the MultiThreadedLockableScore, if is_owned is set and inner is non-NULL.
25166  */
25167 void MultiThreadedLockableScore_free(struct LDKMultiThreadedLockableScore this_obj);
25168
25169 /**
25170  * Creates a new [`MultiThreadedLockableScore`] given an underlying [`Score`].
25171  */
25172 MUST_USE_RES struct LDKMultiThreadedLockableScore MultiThreadedLockableScore_new(struct LDKScore score);
25173
25174 /**
25175  * Frees any resources used by the FixedPenaltyScorer, if is_owned is set and inner is non-NULL.
25176  */
25177 void FixedPenaltyScorer_free(struct LDKFixedPenaltyScorer this_obj);
25178
25179 /**
25180  * Serialize the FixedPenaltyScorer object into a byte array which can be read by FixedPenaltyScorer_read
25181  */
25182 struct LDKCVec_u8Z FixedPenaltyScorer_write(const struct LDKFixedPenaltyScorer *NONNULL_PTR obj);
25183
25184 /**
25185  * Read a FixedPenaltyScorer from a byte array, created by FixedPenaltyScorer_write
25186  */
25187 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ FixedPenaltyScorer_read(struct LDKu8slice ser);
25188
25189 /**
25190  * Creates a new scorer using `penalty_msat`.
25191  */
25192 MUST_USE_RES struct LDKFixedPenaltyScorer FixedPenaltyScorer_with_penalty(uint64_t penalty_msat);
25193
25194 /**
25195  * Constructs a new Score which calls the relevant methods on this_arg.
25196  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
25197  */
25198 struct LDKScore FixedPenaltyScorer_as_Score(const struct LDKFixedPenaltyScorer *NONNULL_PTR this_arg);
25199
25200 /**
25201  * Frees any resources used by the Scorer, if is_owned is set and inner is non-NULL.
25202  */
25203 void Scorer_free(struct LDKScorer this_obj);
25204
25205 /**
25206  * Frees any resources used by the ScoringParameters, if is_owned is set and inner is non-NULL.
25207  */
25208 void ScoringParameters_free(struct LDKScoringParameters this_obj);
25209
25210 /**
25211  * A fixed penalty in msats to apply to each channel.
25212  *
25213  * Default value: 500 msat
25214  */
25215 uint64_t ScoringParameters_get_base_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25216
25217 /**
25218  * A fixed penalty in msats to apply to each channel.
25219  *
25220  * Default value: 500 msat
25221  */
25222 void ScoringParameters_set_base_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25223
25224 /**
25225  * A penalty in msats to apply to a channel upon failing to relay a payment.
25226  *
25227  * This accumulates for each failure but may be reduced over time based on
25228  * [`failure_penalty_half_life`] or when successfully routing through a channel.
25229  *
25230  * Default value: 1,024,000 msat
25231  *
25232  * [`failure_penalty_half_life`]: Self::failure_penalty_half_life
25233  */
25234 uint64_t ScoringParameters_get_failure_penalty_msat(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25235
25236 /**
25237  * A penalty in msats to apply to a channel upon failing to relay a payment.
25238  *
25239  * This accumulates for each failure but may be reduced over time based on
25240  * [`failure_penalty_half_life`] or when successfully routing through a channel.
25241  *
25242  * Default value: 1,024,000 msat
25243  *
25244  * [`failure_penalty_half_life`]: Self::failure_penalty_half_life
25245  */
25246 void ScoringParameters_set_failure_penalty_msat(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25247
25248 /**
25249  * When the amount being sent over a channel is this many 1024ths of the total channel
25250  * capacity, we begin applying [`overuse_penalty_msat_per_1024th`].
25251  *
25252  * Default value: 128 1024ths (i.e. begin penalizing when an HTLC uses 1/8th of a channel)
25253  *
25254  * [`overuse_penalty_msat_per_1024th`]: Self::overuse_penalty_msat_per_1024th
25255  */
25256 uint16_t ScoringParameters_get_overuse_penalty_start_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25257
25258 /**
25259  * When the amount being sent over a channel is this many 1024ths of the total channel
25260  * capacity, we begin applying [`overuse_penalty_msat_per_1024th`].
25261  *
25262  * Default value: 128 1024ths (i.e. begin penalizing when an HTLC uses 1/8th of a channel)
25263  *
25264  * [`overuse_penalty_msat_per_1024th`]: Self::overuse_penalty_msat_per_1024th
25265  */
25266 void ScoringParameters_set_overuse_penalty_start_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint16_t val);
25267
25268 /**
25269  * A penalty applied, per whole 1024ths of the channel capacity which the amount being sent
25270  * over the channel exceeds [`overuse_penalty_start_1024th`] by.
25271  *
25272  * Default value: 20 msat (i.e. 2560 msat penalty to use 1/4th of a channel, 7680 msat penalty
25273  *                to use half a channel, and 12,560 msat penalty to use 3/4ths of a channel)
25274  *
25275  * [`overuse_penalty_start_1024th`]: Self::overuse_penalty_start_1024th
25276  */
25277 uint64_t ScoringParameters_get_overuse_penalty_msat_per_1024th(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25278
25279 /**
25280  * A penalty applied, per whole 1024ths of the channel capacity which the amount being sent
25281  * over the channel exceeds [`overuse_penalty_start_1024th`] by.
25282  *
25283  * Default value: 20 msat (i.e. 2560 msat penalty to use 1/4th of a channel, 7680 msat penalty
25284  *                to use half a channel, and 12,560 msat penalty to use 3/4ths of a channel)
25285  *
25286  * [`overuse_penalty_start_1024th`]: Self::overuse_penalty_start_1024th
25287  */
25288 void ScoringParameters_set_overuse_penalty_msat_per_1024th(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25289
25290 /**
25291  * The time required to elapse before any accumulated [`failure_penalty_msat`] penalties are
25292  * cut in half.
25293  *
25294  * Successfully routing through a channel will immediately cut the penalty in half as well.
25295  *
25296  * Default value: 1 hour
25297  *
25298  * # Note
25299  *
25300  * When built with the `no-std` feature, time will never elapse. Therefore, this penalty will
25301  * never decay.
25302  *
25303  * [`failure_penalty_msat`]: Self::failure_penalty_msat
25304  */
25305 uint64_t ScoringParameters_get_failure_penalty_half_life(const struct LDKScoringParameters *NONNULL_PTR this_ptr);
25306
25307 /**
25308  * The time required to elapse before any accumulated [`failure_penalty_msat`] penalties are
25309  * cut in half.
25310  *
25311  * Successfully routing through a channel will immediately cut the penalty in half as well.
25312  *
25313  * Default value: 1 hour
25314  *
25315  * # Note
25316  *
25317  * When built with the `no-std` feature, time will never elapse. Therefore, this penalty will
25318  * never decay.
25319  *
25320  * [`failure_penalty_msat`]: Self::failure_penalty_msat
25321  */
25322 void ScoringParameters_set_failure_penalty_half_life(struct LDKScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25323
25324 /**
25325  * Constructs a new ScoringParameters given each field
25326  */
25327 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);
25328
25329 /**
25330  * Serialize the ScoringParameters object into a byte array which can be read by ScoringParameters_read
25331  */
25332 struct LDKCVec_u8Z ScoringParameters_write(const struct LDKScoringParameters *NONNULL_PTR obj);
25333
25334 /**
25335  * Read a ScoringParameters from a byte array, created by ScoringParameters_write
25336  */
25337 struct LDKCResult_ScoringParametersDecodeErrorZ ScoringParameters_read(struct LDKu8slice ser);
25338
25339 /**
25340  * Creates a new scorer using the given scoring parameters.
25341  */
25342 MUST_USE_RES struct LDKScorer Scorer_new(struct LDKScoringParameters params);
25343
25344 /**
25345  * Creates a "default" Scorer. See struct and individual field documentaiton for details on which values are used.
25346  */
25347 MUST_USE_RES struct LDKScorer Scorer_default(void);
25348
25349 /**
25350  * Creates a "default" ScoringParameters. See struct and individual field documentaiton for details on which values are used.
25351  */
25352 MUST_USE_RES struct LDKScoringParameters ScoringParameters_default(void);
25353
25354 /**
25355  * Constructs a new Score which calls the relevant methods on this_arg.
25356  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
25357  */
25358 struct LDKScore Scorer_as_Score(const struct LDKScorer *NONNULL_PTR this_arg);
25359
25360 /**
25361  * Serialize the Scorer object into a byte array which can be read by Scorer_read
25362  */
25363 struct LDKCVec_u8Z Scorer_write(const struct LDKScorer *NONNULL_PTR obj);
25364
25365 /**
25366  * Read a Scorer from a byte array, created by Scorer_write
25367  */
25368 struct LDKCResult_ScorerDecodeErrorZ Scorer_read(struct LDKu8slice ser);
25369
25370 /**
25371  * Frees any resources used by the ProbabilisticScorer, if is_owned is set and inner is non-NULL.
25372  */
25373 void ProbabilisticScorer_free(struct LDKProbabilisticScorer this_obj);
25374
25375 /**
25376  * Frees any resources used by the ProbabilisticScoringParameters, if is_owned is set and inner is non-NULL.
25377  */
25378 void ProbabilisticScoringParameters_free(struct LDKProbabilisticScoringParameters this_obj);
25379
25380 /**
25381  * A multiplier used to determine the amount in msats willing to be paid to avoid routing
25382  * through a channel, as per multiplying by the negative `log10` of the channel's success
25383  * probability for a payment.
25384  *
25385  * The success probability is determined by the effective channel capacity, the payment amount,
25386  * and knowledge learned from prior successful and unsuccessful payments. The lower bound of
25387  * the success probability is 0.01, effectively limiting the penalty to the range
25388  * `0..=2*liquidity_penalty_multiplier_msat`. The knowledge learned is decayed over time based
25389  * on [`liquidity_offset_half_life`].
25390  *
25391  * Default value: 10,000 msat
25392  *
25393  * [`liquidity_offset_half_life`]: Self::liquidity_offset_half_life
25394  */
25395 uint64_t ProbabilisticScoringParameters_get_liquidity_penalty_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
25396
25397 /**
25398  * A multiplier used to determine the amount in msats willing to be paid to avoid routing
25399  * through a channel, as per multiplying by the negative `log10` of the channel's success
25400  * probability for a payment.
25401  *
25402  * The success probability is determined by the effective channel capacity, the payment amount,
25403  * and knowledge learned from prior successful and unsuccessful payments. The lower bound of
25404  * the success probability is 0.01, effectively limiting the penalty to the range
25405  * `0..=2*liquidity_penalty_multiplier_msat`. The knowledge learned is decayed over time based
25406  * on [`liquidity_offset_half_life`].
25407  *
25408  * Default value: 10,000 msat
25409  *
25410  * [`liquidity_offset_half_life`]: Self::liquidity_offset_half_life
25411  */
25412 void ProbabilisticScoringParameters_set_liquidity_penalty_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25413
25414 /**
25415  * The time required to elapse before any knowledge learned about channel liquidity balances is
25416  * cut in half.
25417  *
25418  * The bounds are defined in terms of offsets and are initially zero. Increasing the offsets
25419  * gives tighter bounds on the channel liquidity balance. Thus, halving the offsets decreases
25420  * the certainty of the channel liquidity balance.
25421  *
25422  * Default value: 1 hour
25423  *
25424  * # Note
25425  *
25426  * When built with the `no-std` feature, time will never elapse. Therefore, the channel
25427  * liquidity knowledge will never decay except when the bounds cross.
25428  */
25429 uint64_t ProbabilisticScoringParameters_get_liquidity_offset_half_life(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
25430
25431 /**
25432  * The time required to elapse before any knowledge learned about channel liquidity balances is
25433  * cut in half.
25434  *
25435  * The bounds are defined in terms of offsets and are initially zero. Increasing the offsets
25436  * gives tighter bounds on the channel liquidity balance. Thus, halving the offsets decreases
25437  * the certainty of the channel liquidity balance.
25438  *
25439  * Default value: 1 hour
25440  *
25441  * # Note
25442  *
25443  * When built with the `no-std` feature, time will never elapse. Therefore, the channel
25444  * liquidity knowledge will never decay except when the bounds cross.
25445  */
25446 void ProbabilisticScoringParameters_set_liquidity_offset_half_life(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
25447
25448 /**
25449  * Constructs a new ProbabilisticScoringParameters given each field
25450  */
25451 MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_new(uint64_t liquidity_penalty_multiplier_msat_arg, uint64_t liquidity_offset_half_life_arg);
25452
25453 /**
25454  * Creates a copy of the ProbabilisticScoringParameters
25455  */
25456 struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_clone(const struct LDKProbabilisticScoringParameters *NONNULL_PTR orig);
25457
25458 /**
25459  * Serialize the ProbabilisticScoringParameters object into a byte array which can be read by ProbabilisticScoringParameters_read
25460  */
25461 struct LDKCVec_u8Z ProbabilisticScoringParameters_write(const struct LDKProbabilisticScoringParameters *NONNULL_PTR obj);
25462
25463 /**
25464  * Read a ProbabilisticScoringParameters from a byte array, created by ProbabilisticScoringParameters_write
25465  */
25466 struct LDKCResult_ProbabilisticScoringParametersDecodeErrorZ ProbabilisticScoringParameters_read(struct LDKu8slice ser);
25467
25468 /**
25469  * Creates a new scorer using the given scoring parameters for sending payments from a node
25470  * through a network graph.
25471  */
25472 MUST_USE_RES struct LDKProbabilisticScorer ProbabilisticScorer_new(struct LDKProbabilisticScoringParameters params, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
25473
25474 /**
25475  * Creates a "default" ProbabilisticScoringParameters. See struct and individual field documentaiton for details on which values are used.
25476  */
25477 MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_default(void);
25478
25479 /**
25480  * Constructs a new Score which calls the relevant methods on this_arg.
25481  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
25482  */
25483 struct LDKScore ProbabilisticScorer_as_Score(const struct LDKProbabilisticScorer *NONNULL_PTR this_arg);
25484
25485 /**
25486  * Serialize the ProbabilisticScorer object into a byte array which can be read by ProbabilisticScorer_read
25487  */
25488 struct LDKCVec_u8Z ProbabilisticScorer_write(const struct LDKProbabilisticScorer *NONNULL_PTR obj);
25489
25490 /**
25491  * Read a ProbabilisticScorer from a byte array, created by ProbabilisticScorer_write
25492  */
25493 struct LDKCResult_ProbabilisticScorerDecodeErrorZ ProbabilisticScorer_read(struct LDKu8slice ser, struct LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ arg);
25494
25495 /**
25496  * Frees any resources used by the FilesystemPersister, if is_owned is set and inner is non-NULL.
25497  */
25498 void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
25499
25500 /**
25501  * Initialize a new FilesystemPersister and set the path to the individual channels'
25502  * files.
25503  */
25504 MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKStr path_to_channel_data);
25505
25506 /**
25507  * Get the directory which was provided when this persister was initialized.
25508  */
25509 MUST_USE_RES struct LDKStr FilesystemPersister_get_data_dir(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
25510
25511 /**
25512  * Writes the provided `ChannelManager` to the path provided at `FilesystemPersister`
25513  * initialization, within a file called \"manager\".
25514  */
25515 MUST_USE_RES struct LDKCResult_NoneErrorZ FilesystemPersister_persist_manager(struct LDKStr data_dir, const struct LDKChannelManager *NONNULL_PTR manager);
25516
25517 /**
25518  * Read `ChannelMonitor`s from disk.
25519  */
25520 MUST_USE_RES struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ FilesystemPersister_read_channelmonitors(const struct LDKFilesystemPersister *NONNULL_PTR this_arg, struct LDKKeysInterface keys_manager);
25521
25522 /**
25523  * Constructs a new Persist which calls the relevant methods on this_arg.
25524  * This copies the `inner` pointer in this_arg and thus the returned Persist must be freed before this_arg is
25525  */
25526 struct LDKPersist FilesystemPersister_as_Persist(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
25527
25528 /**
25529  * Frees any resources used by the BackgroundProcessor, if is_owned is set and inner is non-NULL.
25530  */
25531 void BackgroundProcessor_free(struct LDKBackgroundProcessor this_obj);
25532
25533 /**
25534  * Calls the free function if one is set
25535  */
25536 void ChannelManagerPersister_free(struct LDKChannelManagerPersister this_ptr);
25537
25538 /**
25539  * Start a background thread that takes care of responsibilities enumerated in the [top-level
25540  * documentation].
25541  *
25542  * The thread runs indefinitely unless the object is dropped, [`stop`] is called, or
25543  * `persist_manager` returns an error. In case of an error, the error is retrieved by calling
25544  * either [`join`] or [`stop`].
25545  *
25546  * # Data Persistence
25547  *
25548  * `persist_manager` is responsible for writing out the [`ChannelManager`] to disk, and/or
25549  * uploading to one or more backup services. See [`ChannelManager::write`] for writing out a
25550  * [`ChannelManager`]. See [`FilesystemPersister::persist_manager`] for Rust-Lightning's
25551  * provided implementation.
25552  *
25553  * Typically, users should either implement [`ChannelManagerPersister`] to never return an
25554  * error or call [`join`] and handle any error that may arise. For the latter case,
25555  * `BackgroundProcessor` must be restarted by calling `start` again after handling the error.
25556  *
25557  * # Event Handling
25558  *
25559  * `event_handler` is responsible for handling events that users should be notified of (e.g.,
25560  * payment failed). [`BackgroundProcessor`] may decorate the given [`EventHandler`] with common
25561  * functionality implemented by other handlers.
25562  * * [`NetGraphMsgHandler`] if given will update the [`NetworkGraph`] based on payment failures.
25563  *
25564  * [top-level documentation]: BackgroundProcessor
25565  * [`join`]: Self::join
25566  * [`stop`]: Self::stop
25567  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
25568  * [`ChannelManager::write`]: lightning::ln::channelmanager::ChannelManager#impl-Writeable
25569  * [`FilesystemPersister::persist_manager`]: lightning_persister::FilesystemPersister::persist_manager
25570  * [`NetworkGraph`]: lightning::routing::network_graph::NetworkGraph
25571  *
25572  * Note that net_graph_msg_handler (or a relevant inner pointer) may be NULL or all-0s to represent None
25573  */
25574 MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKChannelManagerPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, struct LDKNetGraphMsgHandler net_graph_msg_handler, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger);
25575
25576 /**
25577  * Join `BackgroundProcessor`'s thread, returning any error that occurred while persisting
25578  * [`ChannelManager`].
25579  *
25580  * # Panics
25581  *
25582  * This function panics if the background thread has panicked such as while persisting or
25583  * handling events.
25584  *
25585  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
25586  */
25587 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_join(struct LDKBackgroundProcessor this_arg);
25588
25589 /**
25590  * Stop `BackgroundProcessor`'s thread, returning any error that occurred while persisting
25591  * [`ChannelManager`].
25592  *
25593  * # Panics
25594  *
25595  * This function panics if the background thread has panicked such as while persisting or
25596  * handling events.
25597  *
25598  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
25599  */
25600 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_stop(struct LDKBackgroundProcessor this_arg);
25601
25602 /**
25603  * Frees any resources used by the Invoice, if is_owned is set and inner is non-NULL.
25604  */
25605 void Invoice_free(struct LDKInvoice this_obj);
25606
25607 /**
25608  * Checks if two Invoices contain equal inner contents.
25609  * This ignores pointers and is_owned flags and looks at the values in fields.
25610  * Two objects with NULL inner values will be considered "equal" here.
25611  */
25612 bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
25613
25614 /**
25615  * Creates a copy of the Invoice
25616  */
25617 struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
25618
25619 /**
25620  * Frees any resources used by the SignedRawInvoice, if is_owned is set and inner is non-NULL.
25621  */
25622 void SignedRawInvoice_free(struct LDKSignedRawInvoice this_obj);
25623
25624 /**
25625  * Checks if two SignedRawInvoices contain equal inner contents.
25626  * This ignores pointers and is_owned flags and looks at the values in fields.
25627  * Two objects with NULL inner values will be considered "equal" here.
25628  */
25629 bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
25630
25631 /**
25632  * Creates a copy of the SignedRawInvoice
25633  */
25634 struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
25635
25636 /**
25637  * Frees any resources used by the RawInvoice, if is_owned is set and inner is non-NULL.
25638  */
25639 void RawInvoice_free(struct LDKRawInvoice this_obj);
25640
25641 /**
25642  * data part
25643  */
25644 struct LDKRawDataPart RawInvoice_get_data(const struct LDKRawInvoice *NONNULL_PTR this_ptr);
25645
25646 /**
25647  * data part
25648  */
25649 void RawInvoice_set_data(struct LDKRawInvoice *NONNULL_PTR this_ptr, struct LDKRawDataPart val);
25650
25651 /**
25652  * Checks if two RawInvoices contain equal inner contents.
25653  * This ignores pointers and is_owned flags and looks at the values in fields.
25654  * Two objects with NULL inner values will be considered "equal" here.
25655  */
25656 bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
25657
25658 /**
25659  * Creates a copy of the RawInvoice
25660  */
25661 struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
25662
25663 /**
25664  * Frees any resources used by the RawDataPart, if is_owned is set and inner is non-NULL.
25665  */
25666 void RawDataPart_free(struct LDKRawDataPart this_obj);
25667
25668 /**
25669  * generation time of the invoice
25670  */
25671 struct LDKPositiveTimestamp RawDataPart_get_timestamp(const struct LDKRawDataPart *NONNULL_PTR this_ptr);
25672
25673 /**
25674  * generation time of the invoice
25675  */
25676 void RawDataPart_set_timestamp(struct LDKRawDataPart *NONNULL_PTR this_ptr, struct LDKPositiveTimestamp val);
25677
25678 /**
25679  * Checks if two RawDataParts contain equal inner contents.
25680  * This ignores pointers and is_owned flags and looks at the values in fields.
25681  * Two objects with NULL inner values will be considered "equal" here.
25682  */
25683 bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
25684
25685 /**
25686  * Creates a copy of the RawDataPart
25687  */
25688 struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
25689
25690 /**
25691  * Frees any resources used by the PositiveTimestamp, if is_owned is set and inner is non-NULL.
25692  */
25693 void PositiveTimestamp_free(struct LDKPositiveTimestamp this_obj);
25694
25695 /**
25696  * Checks if two PositiveTimestamps contain equal inner contents.
25697  * This ignores pointers and is_owned flags and looks at the values in fields.
25698  * Two objects with NULL inner values will be considered "equal" here.
25699  */
25700 bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
25701
25702 /**
25703  * Creates a copy of the PositiveTimestamp
25704  */
25705 struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
25706
25707 /**
25708  * Creates a copy of the SiPrefix
25709  */
25710 enum LDKSiPrefix SiPrefix_clone(const enum LDKSiPrefix *NONNULL_PTR orig);
25711
25712 /**
25713  * Utility method to constructs a new Milli-variant SiPrefix
25714  */
25715 enum LDKSiPrefix SiPrefix_milli(void);
25716
25717 /**
25718  * Utility method to constructs a new Micro-variant SiPrefix
25719  */
25720 enum LDKSiPrefix SiPrefix_micro(void);
25721
25722 /**
25723  * Utility method to constructs a new Nano-variant SiPrefix
25724  */
25725 enum LDKSiPrefix SiPrefix_nano(void);
25726
25727 /**
25728  * Utility method to constructs a new Pico-variant SiPrefix
25729  */
25730 enum LDKSiPrefix SiPrefix_pico(void);
25731
25732 /**
25733  * Checks if two SiPrefixs contain equal inner contents.
25734  * This ignores pointers and is_owned flags and looks at the values in fields.
25735  */
25736 bool SiPrefix_eq(const enum LDKSiPrefix *NONNULL_PTR a, const enum LDKSiPrefix *NONNULL_PTR b);
25737
25738 /**
25739  * Returns the multiplier to go from a BTC value to picoBTC implied by this SiPrefix.
25740  * This is effectively 10^12 * the prefix multiplier
25741  */
25742 MUST_USE_RES uint64_t SiPrefix_multiplier(const enum LDKSiPrefix *NONNULL_PTR this_arg);
25743
25744 /**
25745  * Creates a copy of the Currency
25746  */
25747 enum LDKCurrency Currency_clone(const enum LDKCurrency *NONNULL_PTR orig);
25748
25749 /**
25750  * Utility method to constructs a new Bitcoin-variant Currency
25751  */
25752 enum LDKCurrency Currency_bitcoin(void);
25753
25754 /**
25755  * Utility method to constructs a new BitcoinTestnet-variant Currency
25756  */
25757 enum LDKCurrency Currency_bitcoin_testnet(void);
25758
25759 /**
25760  * Utility method to constructs a new Regtest-variant Currency
25761  */
25762 enum LDKCurrency Currency_regtest(void);
25763
25764 /**
25765  * Utility method to constructs a new Simnet-variant Currency
25766  */
25767 enum LDKCurrency Currency_simnet(void);
25768
25769 /**
25770  * Utility method to constructs a new Signet-variant Currency
25771  */
25772 enum LDKCurrency Currency_signet(void);
25773
25774 /**
25775  * Checks if two Currencys contain equal inner contents.
25776  */
25777 uint64_t Currency_hash(const enum LDKCurrency *NONNULL_PTR o);
25778
25779 /**
25780  * Checks if two Currencys contain equal inner contents.
25781  * This ignores pointers and is_owned flags and looks at the values in fields.
25782  */
25783 bool Currency_eq(const enum LDKCurrency *NONNULL_PTR a, const enum LDKCurrency *NONNULL_PTR b);
25784
25785 /**
25786  * Frees any resources used by the Sha256, if is_owned is set and inner is non-NULL.
25787  */
25788 void Sha256_free(struct LDKSha256 this_obj);
25789
25790 /**
25791  * Creates a copy of the Sha256
25792  */
25793 struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
25794
25795 /**
25796  * Checks if two Sha256s contain equal inner contents.
25797  */
25798 uint64_t Sha256_hash(const struct LDKSha256 *NONNULL_PTR o);
25799
25800 /**
25801  * Checks if two Sha256s contain equal inner contents.
25802  * This ignores pointers and is_owned flags and looks at the values in fields.
25803  * Two objects with NULL inner values will be considered "equal" here.
25804  */
25805 bool Sha256_eq(const struct LDKSha256 *NONNULL_PTR a, const struct LDKSha256 *NONNULL_PTR b);
25806
25807 /**
25808  * Frees any resources used by the Description, if is_owned is set and inner is non-NULL.
25809  */
25810 void Description_free(struct LDKDescription this_obj);
25811
25812 /**
25813  * Creates a copy of the Description
25814  */
25815 struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
25816
25817 /**
25818  * Checks if two Descriptions contain equal inner contents.
25819  */
25820 uint64_t Description_hash(const struct LDKDescription *NONNULL_PTR o);
25821
25822 /**
25823  * Checks if two Descriptions contain equal inner contents.
25824  * This ignores pointers and is_owned flags and looks at the values in fields.
25825  * Two objects with NULL inner values will be considered "equal" here.
25826  */
25827 bool Description_eq(const struct LDKDescription *NONNULL_PTR a, const struct LDKDescription *NONNULL_PTR b);
25828
25829 /**
25830  * Frees any resources used by the PayeePubKey, if is_owned is set and inner is non-NULL.
25831  */
25832 void PayeePubKey_free(struct LDKPayeePubKey this_obj);
25833
25834 struct LDKPublicKey PayeePubKey_get_a(const struct LDKPayeePubKey *NONNULL_PTR this_ptr);
25835
25836 void PayeePubKey_set_a(struct LDKPayeePubKey *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25837
25838 /**
25839  * Constructs a new PayeePubKey given each field
25840  */
25841 MUST_USE_RES struct LDKPayeePubKey PayeePubKey_new(struct LDKPublicKey a_arg);
25842
25843 /**
25844  * Creates a copy of the PayeePubKey
25845  */
25846 struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
25847
25848 /**
25849  * Checks if two PayeePubKeys contain equal inner contents.
25850  */
25851 uint64_t PayeePubKey_hash(const struct LDKPayeePubKey *NONNULL_PTR o);
25852
25853 /**
25854  * Checks if two PayeePubKeys contain equal inner contents.
25855  * This ignores pointers and is_owned flags and looks at the values in fields.
25856  * Two objects with NULL inner values will be considered "equal" here.
25857  */
25858 bool PayeePubKey_eq(const struct LDKPayeePubKey *NONNULL_PTR a, const struct LDKPayeePubKey *NONNULL_PTR b);
25859
25860 /**
25861  * Frees any resources used by the ExpiryTime, if is_owned is set and inner is non-NULL.
25862  */
25863 void ExpiryTime_free(struct LDKExpiryTime this_obj);
25864
25865 /**
25866  * Creates a copy of the ExpiryTime
25867  */
25868 struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
25869
25870 /**
25871  * Checks if two ExpiryTimes contain equal inner contents.
25872  */
25873 uint64_t ExpiryTime_hash(const struct LDKExpiryTime *NONNULL_PTR o);
25874
25875 /**
25876  * Checks if two ExpiryTimes contain equal inner contents.
25877  * This ignores pointers and is_owned flags and looks at the values in fields.
25878  * Two objects with NULL inner values will be considered "equal" here.
25879  */
25880 bool ExpiryTime_eq(const struct LDKExpiryTime *NONNULL_PTR a, const struct LDKExpiryTime *NONNULL_PTR b);
25881
25882 /**
25883  * Frees any resources used by the MinFinalCltvExpiry, if is_owned is set and inner is non-NULL.
25884  */
25885 void MinFinalCltvExpiry_free(struct LDKMinFinalCltvExpiry this_obj);
25886
25887 uint64_t MinFinalCltvExpiry_get_a(const struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr);
25888
25889 void MinFinalCltvExpiry_set_a(struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr, uint64_t val);
25890
25891 /**
25892  * Constructs a new MinFinalCltvExpiry given each field
25893  */
25894 MUST_USE_RES struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_new(uint64_t a_arg);
25895
25896 /**
25897  * Creates a copy of the MinFinalCltvExpiry
25898  */
25899 struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
25900
25901 /**
25902  * Checks if two MinFinalCltvExpirys contain equal inner contents.
25903  */
25904 uint64_t MinFinalCltvExpiry_hash(const struct LDKMinFinalCltvExpiry *NONNULL_PTR o);
25905
25906 /**
25907  * Checks if two MinFinalCltvExpirys contain equal inner contents.
25908  * This ignores pointers and is_owned flags and looks at the values in fields.
25909  * Two objects with NULL inner values will be considered "equal" here.
25910  */
25911 bool MinFinalCltvExpiry_eq(const struct LDKMinFinalCltvExpiry *NONNULL_PTR a, const struct LDKMinFinalCltvExpiry *NONNULL_PTR b);
25912
25913 /**
25914  * Frees any resources used by the Fallback
25915  */
25916 void Fallback_free(struct LDKFallback this_ptr);
25917
25918 /**
25919  * Creates a copy of the Fallback
25920  */
25921 struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
25922
25923 /**
25924  * Utility method to constructs a new SegWitProgram-variant Fallback
25925  */
25926 struct LDKFallback Fallback_seg_wit_program(struct LDKu5 version, struct LDKCVec_u8Z program);
25927
25928 /**
25929  * Utility method to constructs a new PubKeyHash-variant Fallback
25930  */
25931 struct LDKFallback Fallback_pub_key_hash(struct LDKTwentyBytes a);
25932
25933 /**
25934  * Utility method to constructs a new ScriptHash-variant Fallback
25935  */
25936 struct LDKFallback Fallback_script_hash(struct LDKTwentyBytes a);
25937
25938 /**
25939  * Checks if two Fallbacks contain equal inner contents.
25940  */
25941 uint64_t Fallback_hash(const struct LDKFallback *NONNULL_PTR o);
25942
25943 /**
25944  * Checks if two Fallbacks contain equal inner contents.
25945  * This ignores pointers and is_owned flags and looks at the values in fields.
25946  */
25947 bool Fallback_eq(const struct LDKFallback *NONNULL_PTR a, const struct LDKFallback *NONNULL_PTR b);
25948
25949 /**
25950  * Frees any resources used by the InvoiceSignature, if is_owned is set and inner is non-NULL.
25951  */
25952 void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
25953
25954 /**
25955  * Creates a copy of the InvoiceSignature
25956  */
25957 struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
25958
25959 /**
25960  * Checks if two InvoiceSignatures contain equal inner contents.
25961  * This ignores pointers and is_owned flags and looks at the values in fields.
25962  * Two objects with NULL inner values will be considered "equal" here.
25963  */
25964 bool InvoiceSignature_eq(const struct LDKInvoiceSignature *NONNULL_PTR a, const struct LDKInvoiceSignature *NONNULL_PTR b);
25965
25966 /**
25967  * Frees any resources used by the PrivateRoute, if is_owned is set and inner is non-NULL.
25968  */
25969 void PrivateRoute_free(struct LDKPrivateRoute this_obj);
25970
25971 /**
25972  * Creates a copy of the PrivateRoute
25973  */
25974 struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
25975
25976 /**
25977  * Checks if two PrivateRoutes contain equal inner contents.
25978  */
25979 uint64_t PrivateRoute_hash(const struct LDKPrivateRoute *NONNULL_PTR o);
25980
25981 /**
25982  * Checks if two PrivateRoutes contain equal inner contents.
25983  * This ignores pointers and is_owned flags and looks at the values in fields.
25984  * Two objects with NULL inner values will be considered "equal" here.
25985  */
25986 bool PrivateRoute_eq(const struct LDKPrivateRoute *NONNULL_PTR a, const struct LDKPrivateRoute *NONNULL_PTR b);
25987
25988 /**
25989  * Disassembles the `SignedRawInvoice` into its three parts:
25990  *  1. raw invoice
25991  *  2. hash of the raw invoice
25992  *  3. signature
25993  */
25994 MUST_USE_RES struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ SignedRawInvoice_into_parts(struct LDKSignedRawInvoice this_arg);
25995
25996 /**
25997  * The `RawInvoice` which was signed.
25998  */
25999 MUST_USE_RES struct LDKRawInvoice SignedRawInvoice_raw_invoice(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26000
26001 /**
26002  * The hash of the `RawInvoice` that was signed.
26003  */
26004 MUST_USE_RES const uint8_t (*SignedRawInvoice_hash(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg))[32];
26005
26006 /**
26007  * InvoiceSignature for the invoice.
26008  */
26009 MUST_USE_RES struct LDKInvoiceSignature SignedRawInvoice_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26010
26011 /**
26012  * Recovers the public key used for signing the invoice from the recoverable signature.
26013  */
26014 MUST_USE_RES struct LDKCResult_PayeePubKeyErrorZ SignedRawInvoice_recover_payee_pub_key(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26015
26016 /**
26017  * Checks if the signature is valid for the included payee public key or if none exists if it's
26018  * valid for the recovered signature (which should always be true?).
26019  */
26020 MUST_USE_RES bool SignedRawInvoice_check_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
26021
26022 /**
26023  * Calculate the hash of the encoded `RawInvoice`
26024  */
26025 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26026
26027 /**
26028  *
26029  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26030  */
26031 MUST_USE_RES struct LDKSha256 RawInvoice_payment_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26032
26033 /**
26034  *
26035  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26036  */
26037 MUST_USE_RES struct LDKDescription RawInvoice_description(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26038
26039 /**
26040  *
26041  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26042  */
26043 MUST_USE_RES struct LDKPayeePubKey RawInvoice_payee_pub_key(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26044
26045 /**
26046  *
26047  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26048  */
26049 MUST_USE_RES struct LDKSha256 RawInvoice_description_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26050
26051 /**
26052  *
26053  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26054  */
26055 MUST_USE_RES struct LDKExpiryTime RawInvoice_expiry_time(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26056
26057 /**
26058  *
26059  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26060  */
26061 MUST_USE_RES struct LDKMinFinalCltvExpiry RawInvoice_min_final_cltv_expiry(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26062
26063 /**
26064  *
26065  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26066  */
26067 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_payment_secret(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26068
26069 /**
26070  *
26071  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26072  */
26073 MUST_USE_RES struct LDKInvoiceFeatures RawInvoice_features(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26074
26075 MUST_USE_RES struct LDKCVec_PrivateRouteZ RawInvoice_private_routes(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26076
26077 MUST_USE_RES struct LDKCOption_u64Z RawInvoice_amount_pico_btc(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26078
26079 MUST_USE_RES enum LDKCurrency RawInvoice_currency(const struct LDKRawInvoice *NONNULL_PTR this_arg);
26080
26081 /**
26082  * Creates a `PositiveTimestamp` from a Unix timestamp in the range `0..=MAX_TIMESTAMP`.
26083  *
26084  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
26085  */
26086 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_unix_timestamp(uint64_t unix_seconds);
26087
26088 /**
26089  * Creates a `PositiveTimestamp` from a [`SystemTime`] with a corresponding Unix timestamp in
26090  * the range `0..=MAX_TIMESTAMP`.
26091  *
26092  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
26093  */
26094 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_system_time(uint64_t time);
26095
26096 /**
26097  * Creates a `PositiveTimestamp` from a [`Duration`] since the Unix epoch in the range
26098  * `0..=MAX_TIMESTAMP`.
26099  *
26100  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
26101  */
26102 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_duration_since_epoch(uint64_t duration);
26103
26104 /**
26105  * Returns the Unix timestamp representing the stored time
26106  */
26107 MUST_USE_RES uint64_t PositiveTimestamp_as_unix_timestamp(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
26108
26109 /**
26110  * Returns the duration of the stored time since the Unix epoch
26111  */
26112 MUST_USE_RES uint64_t PositiveTimestamp_as_duration_since_epoch(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
26113
26114 /**
26115  * Returns the [`SystemTime`] representing the stored time
26116  */
26117 MUST_USE_RES uint64_t PositiveTimestamp_as_time(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
26118
26119 /**
26120  * Transform the `Invoice` into it's unchecked version
26121  */
26122 MUST_USE_RES struct LDKSignedRawInvoice Invoice_into_signed_raw(struct LDKInvoice this_arg);
26123
26124 /**
26125  * Check that the invoice is signed correctly and that key recovery works
26126  */
26127 MUST_USE_RES struct LDKCResult_NoneSemanticErrorZ Invoice_check_signature(const struct LDKInvoice *NONNULL_PTR this_arg);
26128
26129 /**
26130  * Constructs an `Invoice` from a `SignedRawInvoice` by checking all its invariants.
26131  * ```
26132  * use lightning_invoice::*;
26133  *
26134  * let invoice = \"lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\\
26135  * h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\\
26136  * 5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\\
26137  * h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\\
26138  * j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\\
26139  * ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\\
26140  * guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\\
26141  * ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\\
26142  * p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\\
26143  * 8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\\
26144  * j5r6drg6k6zcqj0fcwg\";
26145  *
26146  * let signed = invoice.parse::<SignedRawInvoice>().unwrap();
26147  *
26148  * assert!(Invoice::from_signed(signed).is_ok());
26149  * ```
26150  */
26151 MUST_USE_RES struct LDKCResult_InvoiceSemanticErrorZ Invoice_from_signed(struct LDKSignedRawInvoice signed_invoice);
26152
26153 /**
26154  * Returns the `Invoice`'s timestamp (should equal its creation time)
26155  */
26156 MUST_USE_RES uint64_t Invoice_timestamp(const struct LDKInvoice *NONNULL_PTR this_arg);
26157
26158 /**
26159  * Returns the `Invoice`'s timestamp as a duration since the Unix epoch
26160  */
26161 MUST_USE_RES uint64_t Invoice_duration_since_epoch(const struct LDKInvoice *NONNULL_PTR this_arg);
26162
26163 /**
26164  * Returns the hash to which we will receive the preimage on completion of the payment
26165  */
26166 MUST_USE_RES const uint8_t (*Invoice_payment_hash(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
26167
26168 /**
26169  * Get the payee's public key if one was included in the invoice
26170  *
26171  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26172  */
26173 MUST_USE_RES struct LDKPublicKey Invoice_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
26174
26175 /**
26176  * Get the payment secret if one was included in the invoice
26177  */
26178 MUST_USE_RES const uint8_t (*Invoice_payment_secret(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
26179
26180 /**
26181  * Get the invoice features if they were included in the invoice
26182  *
26183  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
26184  */
26185 MUST_USE_RES struct LDKInvoiceFeatures Invoice_features(const struct LDKInvoice *NONNULL_PTR this_arg);
26186
26187 /**
26188  * Recover the payee's public key (only to be used if none was included in the invoice)
26189  */
26190 MUST_USE_RES struct LDKPublicKey Invoice_recover_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
26191
26192 /**
26193  * Returns the invoice's expiry time, if present, otherwise [`DEFAULT_EXPIRY_TIME`].
26194  */
26195 MUST_USE_RES uint64_t Invoice_expiry_time(const struct LDKInvoice *NONNULL_PTR this_arg);
26196
26197 /**
26198  * Returns whether the invoice has expired.
26199  */
26200 MUST_USE_RES bool Invoice_is_expired(const struct LDKInvoice *NONNULL_PTR this_arg);
26201
26202 /**
26203  * Returns whether the expiry time would pass at the given point in time.
26204  * `at_time` is the timestamp as a duration since the Unix epoch.
26205  */
26206 MUST_USE_RES bool Invoice_would_expire(const struct LDKInvoice *NONNULL_PTR this_arg, uint64_t at_time);
26207
26208 /**
26209  * Returns the invoice's `min_final_cltv_expiry` time, if present, otherwise
26210  * [`DEFAULT_MIN_FINAL_CLTV_EXPIRY`].
26211  */
26212 MUST_USE_RES uint64_t Invoice_min_final_cltv_expiry(const struct LDKInvoice *NONNULL_PTR this_arg);
26213
26214 /**
26215  * Returns a list of all routes included in the invoice
26216  */
26217 MUST_USE_RES struct LDKCVec_PrivateRouteZ Invoice_private_routes(const struct LDKInvoice *NONNULL_PTR this_arg);
26218
26219 /**
26220  * Returns a list of all routes included in the invoice as the underlying hints
26221  */
26222 MUST_USE_RES struct LDKCVec_RouteHintZ Invoice_route_hints(const struct LDKInvoice *NONNULL_PTR this_arg);
26223
26224 /**
26225  * Returns the currency for which the invoice was issued
26226  */
26227 MUST_USE_RES enum LDKCurrency Invoice_currency(const struct LDKInvoice *NONNULL_PTR this_arg);
26228
26229 /**
26230  * Returns the amount if specified in the invoice as millisatoshis.
26231  */
26232 MUST_USE_RES struct LDKCOption_u64Z Invoice_amount_milli_satoshis(const struct LDKInvoice *NONNULL_PTR this_arg);
26233
26234 /**
26235  * Creates a new `Description` if `description` is at most 1023 __bytes__ long,
26236  * returns `CreationError::DescriptionTooLong` otherwise
26237  *
26238  * Please note that single characters may use more than one byte due to UTF8 encoding.
26239  */
26240 MUST_USE_RES struct LDKCResult_DescriptionCreationErrorZ Description_new(struct LDKStr description);
26241
26242 /**
26243  * Returns the underlying description `String`
26244  */
26245 MUST_USE_RES struct LDKStr Description_into_inner(struct LDKDescription this_arg);
26246
26247 /**
26248  * Construct an `ExpiryTime` from seconds.
26249  */
26250 MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_seconds(uint64_t seconds);
26251
26252 /**
26253  * Construct an `ExpiryTime` from a `Duration`.
26254  */
26255 MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_duration(uint64_t duration);
26256
26257 /**
26258  * Returns the expiry time in seconds
26259  */
26260 MUST_USE_RES uint64_t ExpiryTime_as_seconds(const struct LDKExpiryTime *NONNULL_PTR this_arg);
26261
26262 /**
26263  * Returns a reference to the underlying `Duration` (=expiry time)
26264  */
26265 MUST_USE_RES uint64_t ExpiryTime_as_duration(const struct LDKExpiryTime *NONNULL_PTR this_arg);
26266
26267 /**
26268  * Creates a new (partial) route from a list of hops
26269  */
26270 MUST_USE_RES struct LDKCResult_PrivateRouteCreationErrorZ PrivateRoute_new(struct LDKRouteHint hops);
26271
26272 /**
26273  * Returns the underlying list of hops
26274  */
26275 MUST_USE_RES struct LDKRouteHint PrivateRoute_into_inner(struct LDKPrivateRoute this_arg);
26276
26277 /**
26278  * Creates a copy of the CreationError
26279  */
26280 enum LDKCreationError CreationError_clone(const enum LDKCreationError *NONNULL_PTR orig);
26281
26282 /**
26283  * Utility method to constructs a new DescriptionTooLong-variant CreationError
26284  */
26285 enum LDKCreationError CreationError_description_too_long(void);
26286
26287 /**
26288  * Utility method to constructs a new RouteTooLong-variant CreationError
26289  */
26290 enum LDKCreationError CreationError_route_too_long(void);
26291
26292 /**
26293  * Utility method to constructs a new TimestampOutOfBounds-variant CreationError
26294  */
26295 enum LDKCreationError CreationError_timestamp_out_of_bounds(void);
26296
26297 /**
26298  * Utility method to constructs a new InvalidAmount-variant CreationError
26299  */
26300 enum LDKCreationError CreationError_invalid_amount(void);
26301
26302 /**
26303  * Utility method to constructs a new MissingRouteHints-variant CreationError
26304  */
26305 enum LDKCreationError CreationError_missing_route_hints(void);
26306
26307 /**
26308  * Checks if two CreationErrors contain equal inner contents.
26309  * This ignores pointers and is_owned flags and looks at the values in fields.
26310  */
26311 bool CreationError_eq(const enum LDKCreationError *NONNULL_PTR a, const enum LDKCreationError *NONNULL_PTR b);
26312
26313 /**
26314  * Get the string representation of a CreationError object
26315  */
26316 struct LDKStr CreationError_to_str(const enum LDKCreationError *NONNULL_PTR o);
26317
26318 /**
26319  * Creates a copy of the SemanticError
26320  */
26321 enum LDKSemanticError SemanticError_clone(const enum LDKSemanticError *NONNULL_PTR orig);
26322
26323 /**
26324  * Utility method to constructs a new NoPaymentHash-variant SemanticError
26325  */
26326 enum LDKSemanticError SemanticError_no_payment_hash(void);
26327
26328 /**
26329  * Utility method to constructs a new MultiplePaymentHashes-variant SemanticError
26330  */
26331 enum LDKSemanticError SemanticError_multiple_payment_hashes(void);
26332
26333 /**
26334  * Utility method to constructs a new NoDescription-variant SemanticError
26335  */
26336 enum LDKSemanticError SemanticError_no_description(void);
26337
26338 /**
26339  * Utility method to constructs a new MultipleDescriptions-variant SemanticError
26340  */
26341 enum LDKSemanticError SemanticError_multiple_descriptions(void);
26342
26343 /**
26344  * Utility method to constructs a new NoPaymentSecret-variant SemanticError
26345  */
26346 enum LDKSemanticError SemanticError_no_payment_secret(void);
26347
26348 /**
26349  * Utility method to constructs a new MultiplePaymentSecrets-variant SemanticError
26350  */
26351 enum LDKSemanticError SemanticError_multiple_payment_secrets(void);
26352
26353 /**
26354  * Utility method to constructs a new InvalidFeatures-variant SemanticError
26355  */
26356 enum LDKSemanticError SemanticError_invalid_features(void);
26357
26358 /**
26359  * Utility method to constructs a new InvalidRecoveryId-variant SemanticError
26360  */
26361 enum LDKSemanticError SemanticError_invalid_recovery_id(void);
26362
26363 /**
26364  * Utility method to constructs a new InvalidSignature-variant SemanticError
26365  */
26366 enum LDKSemanticError SemanticError_invalid_signature(void);
26367
26368 /**
26369  * Utility method to constructs a new ImpreciseAmount-variant SemanticError
26370  */
26371 enum LDKSemanticError SemanticError_imprecise_amount(void);
26372
26373 /**
26374  * Checks if two SemanticErrors contain equal inner contents.
26375  * This ignores pointers and is_owned flags and looks at the values in fields.
26376  */
26377 bool SemanticError_eq(const enum LDKSemanticError *NONNULL_PTR a, const enum LDKSemanticError *NONNULL_PTR b);
26378
26379 /**
26380  * Get the string representation of a SemanticError object
26381  */
26382 struct LDKStr SemanticError_to_str(const enum LDKSemanticError *NONNULL_PTR o);
26383
26384 /**
26385  * Frees any resources used by the SignOrCreationError
26386  */
26387 void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
26388
26389 /**
26390  * Creates a copy of the SignOrCreationError
26391  */
26392 struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
26393
26394 /**
26395  * Utility method to constructs a new SignError-variant SignOrCreationError
26396  */
26397 struct LDKSignOrCreationError SignOrCreationError_sign_error(void);
26398
26399 /**
26400  * Utility method to constructs a new CreationError-variant SignOrCreationError
26401  */
26402 struct LDKSignOrCreationError SignOrCreationError_creation_error(enum LDKCreationError a);
26403
26404 /**
26405  * Checks if two SignOrCreationErrors contain equal inner contents.
26406  * This ignores pointers and is_owned flags and looks at the values in fields.
26407  */
26408 bool SignOrCreationError_eq(const struct LDKSignOrCreationError *NONNULL_PTR a, const struct LDKSignOrCreationError *NONNULL_PTR b);
26409
26410 /**
26411  * Get the string representation of a SignOrCreationError object
26412  */
26413 struct LDKStr SignOrCreationError_to_str(const struct LDKSignOrCreationError *NONNULL_PTR o);
26414
26415 /**
26416  * Frees any resources used by the InvoicePayer, if is_owned is set and inner is non-NULL.
26417  */
26418 void InvoicePayer_free(struct LDKInvoicePayer this_obj);
26419
26420 /**
26421  * Calls the free function if one is set
26422  */
26423 void Payer_free(struct LDKPayer this_ptr);
26424
26425 /**
26426  * Calls the free function if one is set
26427  */
26428 void Router_free(struct LDKRouter this_ptr);
26429
26430 /**
26431  * Frees any resources used by the RetryAttempts, if is_owned is set and inner is non-NULL.
26432  */
26433 void RetryAttempts_free(struct LDKRetryAttempts this_obj);
26434
26435 uintptr_t RetryAttempts_get_a(const struct LDKRetryAttempts *NONNULL_PTR this_ptr);
26436
26437 void RetryAttempts_set_a(struct LDKRetryAttempts *NONNULL_PTR this_ptr, uintptr_t val);
26438
26439 /**
26440  * Constructs a new RetryAttempts given each field
26441  */
26442 MUST_USE_RES struct LDKRetryAttempts RetryAttempts_new(uintptr_t a_arg);
26443
26444 /**
26445  * Creates a copy of the RetryAttempts
26446  */
26447 struct LDKRetryAttempts RetryAttempts_clone(const struct LDKRetryAttempts *NONNULL_PTR orig);
26448
26449 /**
26450  * Checks if two RetryAttemptss contain equal inner contents.
26451  * This ignores pointers and is_owned flags and looks at the values in fields.
26452  * Two objects with NULL inner values will be considered "equal" here.
26453  */
26454 bool RetryAttempts_eq(const struct LDKRetryAttempts *NONNULL_PTR a, const struct LDKRetryAttempts *NONNULL_PTR b);
26455
26456 /**
26457  * Checks if two RetryAttemptss contain equal inner contents.
26458  */
26459 uint64_t RetryAttempts_hash(const struct LDKRetryAttempts *NONNULL_PTR o);
26460
26461 /**
26462  * Frees any resources used by the PaymentError
26463  */
26464 void PaymentError_free(struct LDKPaymentError this_ptr);
26465
26466 /**
26467  * Creates a copy of the PaymentError
26468  */
26469 struct LDKPaymentError PaymentError_clone(const struct LDKPaymentError *NONNULL_PTR orig);
26470
26471 /**
26472  * Utility method to constructs a new Invoice-variant PaymentError
26473  */
26474 struct LDKPaymentError PaymentError_invoice(struct LDKStr a);
26475
26476 /**
26477  * Utility method to constructs a new Routing-variant PaymentError
26478  */
26479 struct LDKPaymentError PaymentError_routing(struct LDKLightningError a);
26480
26481 /**
26482  * Utility method to constructs a new Sending-variant PaymentError
26483  */
26484 struct LDKPaymentError PaymentError_sending(struct LDKPaymentSendFailure a);
26485
26486 /**
26487  * Creates an invoice payer that retries failed payment paths.
26488  *
26489  * Will forward any [`Event::PaymentPathFailed`] events to the decorated `event_handler` once
26490  * `retry_attempts` has been exceeded for a given [`Invoice`].
26491  */
26492 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);
26493
26494 /**
26495  * Pays the given [`Invoice`], caching it for later use in case a retry is needed.
26496  *
26497  * You should ensure that the `invoice.payment_hash()` is unique and the same payment_hash has
26498  * never been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so
26499  * for you.
26500  */
26501 MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice);
26502
26503 /**
26504  * Pays the given zero-value [`Invoice`] using the given amount, caching it for later use in
26505  * case a retry is needed.
26506  *
26507  * You should ensure that the `invoice.payment_hash()` is unique and the same payment_hash has
26508  * never been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so
26509  * for you.
26510  */
26511 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);
26512
26513 /**
26514  * Pays `pubkey` an amount using the hash of the given preimage, caching it for later use in
26515  * case a retry is needed.
26516  *
26517  * You should ensure that `payment_preimage` is unique and that its `payment_hash` has never
26518  * been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so for you.
26519  */
26520 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);
26521
26522 /**
26523  * Removes the payment cached by the given payment hash.
26524  *
26525  * Should be called once a payment has failed or succeeded if not using [`InvoicePayer`] as an
26526  * [`EventHandler`]. Otherwise, calling this method is unnecessary.
26527  */
26528 void InvoicePayer_remove_cached_payment(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
26529
26530 /**
26531  * Constructs a new EventHandler which calls the relevant methods on this_arg.
26532  * This copies the `inner` pointer in this_arg and thus the returned EventHandler must be freed before this_arg is
26533  */
26534 struct LDKEventHandler InvoicePayer_as_EventHandler(const struct LDKInvoicePayer *NONNULL_PTR this_arg);
26535
26536 /**
26537  * Utility to create an invoice that can be paid to one of multiple nodes, or a \"phantom invoice.\"
26538  * See [`PhantomKeysManager`] for more information on phantom node payments.
26539  *
26540  * `phantom_route_hints` parameter:
26541  * * Contains channel info for all nodes participating in the phantom invoice
26542  * * Entries are retrieved from a call to [`ChannelManager::get_phantom_route_hints`] on each
26543  *   participating node
26544  * * It is fine to cache `phantom_route_hints` and reuse it across invoices, as long as the data is
26545  *   updated when a channel becomes disabled or closes
26546  * * Note that if too many channels are included in [`PhantomRouteHints::channels`], the invoice
26547  *   may be too long for QR code scanning. To fix this, `PhantomRouteHints::channels` may be pared
26548  *   down
26549  *
26550  * `payment_hash` and `payment_secret` come from [`ChannelManager::create_inbound_payment`] or
26551  * [`ChannelManager::create_inbound_payment_for_hash`]. These values can be retrieved from any
26552  * participating node.
26553  *
26554  * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
26555  * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
26556  * requirement).
26557  *
26558  * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
26559  * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
26560  * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
26561  */
26562 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);
26563
26564 /**
26565  * Utility to construct an invoice. Generally, unless you want to do something like a custom
26566  * cltv_expiry, this is what you should be using to create an invoice. The reason being, this
26567  * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
26568  * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
26569  * that the payment secret is valid when the invoice is paid.
26570  */
26571 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);
26572
26573 /**
26574  * See [`create_invoice_from_channelmanager`]
26575  * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
26576  * available and the current time is supplied by the caller.
26577  */
26578 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);
26579
26580 /**
26581  * Frees any resources used by the DefaultRouter, if is_owned is set and inner is non-NULL.
26582  */
26583 void DefaultRouter_free(struct LDKDefaultRouter this_obj);
26584
26585 /**
26586  * Creates a new router using the given [`NetworkGraph`] and  [`Logger`].
26587  */
26588 MUST_USE_RES struct LDKDefaultRouter DefaultRouter_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger);
26589
26590 /**
26591  * Constructs a new Router which calls the relevant methods on this_arg.
26592  * This copies the `inner` pointer in this_arg and thus the returned Router must be freed before this_arg is
26593  */
26594 struct LDKRouter DefaultRouter_as_Router(const struct LDKDefaultRouter *NONNULL_PTR this_arg);
26595
26596 /**
26597  * Constructs a new Payer which calls the relevant methods on this_arg.
26598  * This copies the `inner` pointer in this_arg and thus the returned Payer must be freed before this_arg is
26599  */
26600 struct LDKPayer ChannelManager_as_Payer(const struct LDKChannelManager *NONNULL_PTR this_arg);
26601
26602 /**
26603  * Read a SiPrefix object from a string
26604  */
26605 struct LDKCResult_SiPrefixNoneZ SiPrefix_from_str(struct LDKStr s);
26606
26607 /**
26608  * Read a Invoice object from a string
26609  */
26610 struct LDKCResult_InvoiceNoneZ Invoice_from_str(struct LDKStr s);
26611
26612 /**
26613  * Read a SignedRawInvoice object from a string
26614  */
26615 struct LDKCResult_SignedRawInvoiceNoneZ SignedRawInvoice_from_str(struct LDKStr s);
26616
26617 /**
26618  * Get the string representation of a Invoice object
26619  */
26620 struct LDKStr Invoice_to_str(const struct LDKInvoice *NONNULL_PTR o);
26621
26622 /**
26623  * Get the string representation of a SignedRawInvoice object
26624  */
26625 struct LDKStr SignedRawInvoice_to_str(const struct LDKSignedRawInvoice *NONNULL_PTR o);
26626
26627 /**
26628  * Get the string representation of a Currency object
26629  */
26630 struct LDKStr Currency_to_str(const enum LDKCurrency *NONNULL_PTR o);
26631
26632 /**
26633  * Get the string representation of a SiPrefix object
26634  */
26635 struct LDKStr SiPrefix_to_str(const enum LDKSiPrefix *NONNULL_PTR o);
26636
26637 #endif /* LDK_C_BINDINGS_H */
26638
26639 #include "ldk_ver.h"