Update auto-generated bindings for backport of RGS-no-std support
[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.24.3 */
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 shared secret.
345     */
346    LDKSecp256k1Error_InvalidSharedSecret,
347    /**
348     * Bad recovery id
349     */
350    LDKSecp256k1Error_InvalidRecoveryId,
351    /**
352     * Invalid tweak for add_assign or mul_assign
353     */
354    LDKSecp256k1Error_InvalidTweak,
355    /**
356     * Didn't pass enough memory to context creation with preallocated memory
357     */
358    LDKSecp256k1Error_NotEnoughMemory,
359    /**
360     * Bad set of public keys.
361     */
362    LDKSecp256k1Error_InvalidPublicKeySum,
363    /**
364     * The only valid parity values are 0 or 1.
365     */
366    LDKSecp256k1Error_InvalidParityValue,
367    /**
368     * Must be last for serialization purposes
369     */
370    LDKSecp256k1Error_Sentinel,
371 } LDKSecp256k1Error;
372
373 /**
374  * Errors that may occur when converting a `RawInvoice` to an `Invoice`. They relate to the
375  * requirements sections in BOLT #11
376  */
377 typedef enum LDKSemanticError {
378    /**
379     * The invoice is missing the mandatory payment hash
380     */
381    LDKSemanticError_NoPaymentHash,
382    /**
383     * The invoice has multiple payment hashes which isn't allowed
384     */
385    LDKSemanticError_MultiplePaymentHashes,
386    /**
387     * No description or description hash are part of the invoice
388     */
389    LDKSemanticError_NoDescription,
390    /**
391     * The invoice contains multiple descriptions and/or description hashes which isn't allowed
392     */
393    LDKSemanticError_MultipleDescriptions,
394    /**
395     * The invoice is missing the mandatory payment secret, which all modern lightning nodes
396     * should provide.
397     */
398    LDKSemanticError_NoPaymentSecret,
399    /**
400     * The invoice contains multiple payment secrets
401     */
402    LDKSemanticError_MultiplePaymentSecrets,
403    /**
404     * The invoice's features are invalid
405     */
406    LDKSemanticError_InvalidFeatures,
407    /**
408     * The recovery id doesn't fit the signature/pub key
409     */
410    LDKSemanticError_InvalidRecoveryId,
411    /**
412     * The invoice's signature is invalid
413     */
414    LDKSemanticError_InvalidSignature,
415    /**
416     * The invoice's amount was not a whole number of millisatoshis
417     */
418    LDKSemanticError_ImpreciseAmount,
419    /**
420     * Must be last for serialization purposes
421     */
422    LDKSemanticError_Sentinel,
423 } LDKSemanticError;
424
425 /**
426  * SI prefixes for the human readable part
427  */
428 typedef enum LDKSiPrefix {
429    /**
430     * 10^-3
431     */
432    LDKSiPrefix_Milli,
433    /**
434     * 10^-6
435     */
436    LDKSiPrefix_Micro,
437    /**
438     * 10^-9
439     */
440    LDKSiPrefix_Nano,
441    /**
442     * 10^-12
443     */
444    LDKSiPrefix_Pico,
445    /**
446     * Must be last for serialization purposes
447     */
448    LDKSiPrefix_Sentinel,
449 } LDKSiPrefix;
450
451 /**
452  * A Rust str object, ie a reference to a UTF8-valid string.
453  * This is *not* null-terminated so cannot be used directly as a C string!
454  */
455 typedef struct LDKStr {
456    /**
457     * A pointer to the string's bytes, in UTF8 encoding
458     */
459    const uint8_t *chars;
460    /**
461     * The number of bytes (not characters!) pointed to by `chars`
462     */
463    uintptr_t len;
464    /**
465     * Whether the data pointed to by `chars` should be freed or not.
466     */
467    bool chars_is_owned;
468 } LDKStr;
469
470 /**
471  * Represents a scalar value between zero and the secp256k1 curve order, in big endian.
472  */
473 typedef struct LDKBigEndianScalar {
474    /**
475     * The bytes of the scalar value.
476     */
477    uint8_t big_endian_bytes[32];
478 } LDKBigEndianScalar;
479
480 /**
481  * Arbitrary 32 bytes, which could represent one of a few different things. You probably want to
482  * look up the corresponding function in rust-lightning's docs.
483  */
484 typedef struct LDKThirtyTwoBytes {
485    /**
486     * The thirty-two bytes
487     */
488    uint8_t data[32];
489 } LDKThirtyTwoBytes;
490
491 /**
492  * Represents an error returned from the bech32 library during validation of some bech32 data
493  */
494 typedef enum LDKBech32Error_Tag {
495    /**
496     * String does not contain the separator character
497     */
498    LDKBech32Error_MissingSeparator,
499    /**
500     * The checksum does not match the rest of the data
501     */
502    LDKBech32Error_InvalidChecksum,
503    /**
504     * The data or human-readable part is too long or too short
505     */
506    LDKBech32Error_InvalidLength,
507    /**
508     * Some part of the string contains an invalid character
509     */
510    LDKBech32Error_InvalidChar,
511    /**
512     * Some part of the data has an invalid value
513     */
514    LDKBech32Error_InvalidData,
515    /**
516     * The bit conversion failed due to a padding issue
517     */
518    LDKBech32Error_InvalidPadding,
519    /**
520     * The whole string must be of one case
521     */
522    LDKBech32Error_MixedCase,
523    /**
524     * Must be last for serialization purposes
525     */
526    LDKBech32Error_Sentinel,
527 } LDKBech32Error_Tag;
528
529 typedef struct LDKBech32Error {
530    LDKBech32Error_Tag tag;
531    union {
532       struct {
533          uint32_t invalid_char;
534       };
535       struct {
536          uint8_t invalid_data;
537       };
538    };
539 } LDKBech32Error;
540
541 /**
542  * A serialized transaction, in (pointer, length) form.
543  *
544  * This type optionally owns its own memory, and thus the semantics around access change based on
545  * the `data_is_owned` flag. If `data_is_owned` is set, you must call `Transaction_free` to free
546  * the underlying buffer before the object goes out of scope. If `data_is_owned` is not set, any
547  * access to the buffer after the scope in which the object was provided to you is invalid. eg,
548  * access after you return from the call in which a `!data_is_owned` `Transaction` is provided to
549  * you would be invalid.
550  *
551  * Note that, while it may change in the future, because transactions on the Rust side are stored
552  * in a deserialized form, all `Transaction`s generated on the Rust side will have `data_is_owned`
553  * set. Similarly, while it may change in the future, all `Transaction`s you pass to Rust may have
554  * `data_is_owned` either set or unset at your discretion.
555  */
556 typedef struct LDKTransaction {
557    /**
558     * The serialized transaction data.
559     *
560     * This is non-const for your convenience, an object passed to Rust is never written to.
561     */
562    uint8_t *data;
563    /**
564     * The length of the serialized transaction
565     */
566    uintptr_t datalen;
567    /**
568     * Whether the data pointed to by `data` should be freed or not.
569     */
570    bool data_is_owned;
571 } LDKTransaction;
572
573 /**
574  * A dynamically-allocated array of u8s of arbitrary size.
575  * This corresponds to std::vector in C++
576  */
577 typedef struct LDKCVec_u8Z {
578    /**
579     * The elements in the array.
580     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
581     */
582    uint8_t *data;
583    /**
584     * The number of elements pointed to by `data`.
585     */
586    uintptr_t datalen;
587 } LDKCVec_u8Z;
588
589 /**
590  * A transaction output including a scriptPubKey and value.
591  * This type *does* own its own memory, so must be free'd appropriately.
592  */
593 typedef struct LDKTxOut {
594    /**
595     * The script_pubkey in this output
596     */
597    struct LDKCVec_u8Z script_pubkey;
598    /**
599     * The value, in satoshis, of this output
600     */
601    uint64_t value;
602 } LDKTxOut;
603
604 /**
605  * Represents a valid secp256k1 public key serialized in "compressed form" as a 33 byte array.
606  */
607 typedef struct LDKPublicKey {
608    /**
609     * The bytes of the public key
610     */
611    uint8_t compressed_form[33];
612 } LDKPublicKey;
613
614 /**
615  * A dynamically-allocated array of crate::c_types::PublicKeys of arbitrary size.
616  * This corresponds to std::vector in C++
617  */
618 typedef struct LDKCVec_PublicKeyZ {
619    /**
620     * The elements in the array.
621     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
622     */
623    struct LDKPublicKey *data;
624    /**
625     * The number of elements pointed to by `data`.
626     */
627    uintptr_t datalen;
628 } LDKCVec_PublicKeyZ;
629
630
631
632 /**
633  * Onion messages can be sent and received to blinded routes, which serve to hide the identity of
634  * the recipient.
635  */
636 typedef struct MUST_USE_STRUCT LDKBlindedRoute {
637    /**
638     * A pointer to the opaque Rust object.
639     * Nearly everywhere, inner must be non-null, however in places where
640     * the Rust equivalent takes an Option, it may be set to null to indicate None.
641     */
642    LDKnativeBlindedRoute *inner;
643    /**
644     * Indicates that this is the only struct which contains the same pointer.
645     * Rust functions which take ownership of an object provided via an argument require
646     * this to be true and invalidate the object pointed to by inner.
647     */
648    bool is_owned;
649 } LDKBlindedRoute;
650
651 /**
652  * The contents of CResult_BlindedRouteNoneZ
653  */
654 typedef union LDKCResult_BlindedRouteNoneZPtr {
655    /**
656     * A pointer to the contents in the success state.
657     * Reading from this pointer when `result_ok` is not set is undefined.
658     */
659    struct LDKBlindedRoute *result;
660    /**
661     * Note that this value is always NULL, as there are no contents in the Err variant
662     */
663    void *err;
664 } LDKCResult_BlindedRouteNoneZPtr;
665
666 /**
667  * A CResult_BlindedRouteNoneZ represents the result of a fallible operation,
668  * containing a crate::lightning::onion_message::blinded_route::BlindedRoute on success and a () on failure.
669  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
670  */
671 typedef struct LDKCResult_BlindedRouteNoneZ {
672    /**
673     * The contents of this CResult_BlindedRouteNoneZ, accessible via either
674     * `err` or `result` depending on the state of `result_ok`.
675     */
676    union LDKCResult_BlindedRouteNoneZPtr contents;
677    /**
678     * Whether this CResult_BlindedRouteNoneZ represents a success state.
679     */
680    bool result_ok;
681 } LDKCResult_BlindedRouteNoneZ;
682
683
684
685 /**
686  * An error in decoding a message or struct.
687  */
688 typedef struct MUST_USE_STRUCT LDKDecodeError {
689    /**
690     * A pointer to the opaque Rust object.
691     * Nearly everywhere, inner must be non-null, however in places where
692     * the Rust equivalent takes an Option, it may be set to null to indicate None.
693     */
694    LDKnativeDecodeError *inner;
695    /**
696     * Indicates that this is the only struct which contains the same pointer.
697     * Rust functions which take ownership of an object provided via an argument require
698     * this to be true and invalidate the object pointed to by inner.
699     */
700    bool is_owned;
701 } LDKDecodeError;
702
703 /**
704  * The contents of CResult_BlindedRouteDecodeErrorZ
705  */
706 typedef union LDKCResult_BlindedRouteDecodeErrorZPtr {
707    /**
708     * A pointer to the contents in the success state.
709     * Reading from this pointer when `result_ok` is not set is undefined.
710     */
711    struct LDKBlindedRoute *result;
712    /**
713     * A pointer to the contents in the error state.
714     * Reading from this pointer when `result_ok` is set is undefined.
715     */
716    struct LDKDecodeError *err;
717 } LDKCResult_BlindedRouteDecodeErrorZPtr;
718
719 /**
720  * A CResult_BlindedRouteDecodeErrorZ represents the result of a fallible operation,
721  * containing a crate::lightning::onion_message::blinded_route::BlindedRoute on success and a crate::lightning::ln::msgs::DecodeError on failure.
722  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
723  */
724 typedef struct LDKCResult_BlindedRouteDecodeErrorZ {
725    /**
726     * The contents of this CResult_BlindedRouteDecodeErrorZ, accessible via either
727     * `err` or `result` depending on the state of `result_ok`.
728     */
729    union LDKCResult_BlindedRouteDecodeErrorZPtr contents;
730    /**
731     * Whether this CResult_BlindedRouteDecodeErrorZ represents a success state.
732     */
733    bool result_ok;
734 } LDKCResult_BlindedRouteDecodeErrorZ;
735
736
737
738 /**
739  * Used to construct the blinded hops portion of a blinded route. These hops cannot be identified
740  * by outside observers and thus can be used to hide the identity of the recipient.
741  */
742 typedef struct MUST_USE_STRUCT LDKBlindedHop {
743    /**
744     * A pointer to the opaque Rust object.
745     * Nearly everywhere, inner must be non-null, however in places where
746     * the Rust equivalent takes an Option, it may be set to null to indicate None.
747     */
748    LDKnativeBlindedHop *inner;
749    /**
750     * Indicates that this is the only struct which contains the same pointer.
751     * Rust functions which take ownership of an object provided via an argument require
752     * this to be true and invalidate the object pointed to by inner.
753     */
754    bool is_owned;
755 } LDKBlindedHop;
756
757 /**
758  * The contents of CResult_BlindedHopDecodeErrorZ
759  */
760 typedef union LDKCResult_BlindedHopDecodeErrorZPtr {
761    /**
762     * A pointer to the contents in the success state.
763     * Reading from this pointer when `result_ok` is not set is undefined.
764     */
765    struct LDKBlindedHop *result;
766    /**
767     * A pointer to the contents in the error state.
768     * Reading from this pointer when `result_ok` is set is undefined.
769     */
770    struct LDKDecodeError *err;
771 } LDKCResult_BlindedHopDecodeErrorZPtr;
772
773 /**
774  * A CResult_BlindedHopDecodeErrorZ represents the result of a fallible operation,
775  * containing a crate::lightning::onion_message::blinded_route::BlindedHop on success and a crate::lightning::ln::msgs::DecodeError on failure.
776  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
777  */
778 typedef struct LDKCResult_BlindedHopDecodeErrorZ {
779    /**
780     * The contents of this CResult_BlindedHopDecodeErrorZ, accessible via either
781     * `err` or `result` depending on the state of `result_ok`.
782     */
783    union LDKCResult_BlindedHopDecodeErrorZPtr contents;
784    /**
785     * Whether this CResult_BlindedHopDecodeErrorZ represents a success state.
786     */
787    bool result_ok;
788 } LDKCResult_BlindedHopDecodeErrorZ;
789
790 /**
791  * The contents of CResult_NoneNoneZ
792  */
793 typedef union LDKCResult_NoneNoneZPtr {
794    /**
795     * Note that this value is always NULL, as there are no contents in the OK variant
796     */
797    void *result;
798    /**
799     * Note that this value is always NULL, as there are no contents in the Err variant
800     */
801    void *err;
802 } LDKCResult_NoneNoneZPtr;
803
804 /**
805  * A CResult_NoneNoneZ represents the result of a fallible operation,
806  * containing a () on success and a () on failure.
807  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
808  */
809 typedef struct LDKCResult_NoneNoneZ {
810    /**
811     * The contents of this CResult_NoneNoneZ, accessible via either
812     * `err` or `result` depending on the state of `result_ok`.
813     */
814    union LDKCResult_NoneNoneZPtr contents;
815    /**
816     * Whether this CResult_NoneNoneZ represents a success state.
817     */
818    bool result_ok;
819 } LDKCResult_NoneNoneZ;
820
821
822
823 /**
824  * Implements the per-commitment secret storage scheme from
825  * [BOLT 3](https://github.com/lightning/bolts/blob/dcbf8583976df087c79c3ce0b535311212e6812d/03-transactions.md#efficient-per-commitment-secret-storage).
826  *
827  * Allows us to keep track of all of the revocation secrets of our counterparty in just 50*32 bytes
828  * or so.
829  */
830 typedef struct MUST_USE_STRUCT LDKCounterpartyCommitmentSecrets {
831    /**
832     * A pointer to the opaque Rust object.
833     * Nearly everywhere, inner must be non-null, however in places where
834     * the Rust equivalent takes an Option, it may be set to null to indicate None.
835     */
836    LDKnativeCounterpartyCommitmentSecrets *inner;
837    /**
838     * Indicates that this is the only struct which contains the same pointer.
839     * Rust functions which take ownership of an object provided via an argument require
840     * this to be true and invalidate the object pointed to by inner.
841     */
842    bool is_owned;
843 } LDKCounterpartyCommitmentSecrets;
844
845 /**
846  * The contents of CResult_CounterpartyCommitmentSecretsDecodeErrorZ
847  */
848 typedef union LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZPtr {
849    /**
850     * A pointer to the contents in the success state.
851     * Reading from this pointer when `result_ok` is not set is undefined.
852     */
853    struct LDKCounterpartyCommitmentSecrets *result;
854    /**
855     * A pointer to the contents in the error state.
856     * Reading from this pointer when `result_ok` is set is undefined.
857     */
858    struct LDKDecodeError *err;
859 } LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZPtr;
860
861 /**
862  * A CResult_CounterpartyCommitmentSecretsDecodeErrorZ represents the result of a fallible operation,
863  * containing a crate::lightning::ln::chan_utils::CounterpartyCommitmentSecrets on success and a crate::lightning::ln::msgs::DecodeError on failure.
864  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
865  */
866 typedef struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ {
867    /**
868     * The contents of this CResult_CounterpartyCommitmentSecretsDecodeErrorZ, accessible via either
869     * `err` or `result` depending on the state of `result_ok`.
870     */
871    union LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZPtr contents;
872    /**
873     * Whether this CResult_CounterpartyCommitmentSecretsDecodeErrorZ represents a success state.
874     */
875    bool result_ok;
876 } LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ;
877
878 /**
879  * Represents a valid secp256k1 secret key serialized as a 32 byte array.
880  */
881 typedef struct LDKSecretKey {
882    /**
883     * The bytes of the secret key
884     */
885    uint8_t bytes[32];
886 } LDKSecretKey;
887
888 /**
889  * The contents of CResult_SecretKeyErrorZ
890  */
891 typedef union LDKCResult_SecretKeyErrorZPtr {
892    /**
893     * A pointer to the contents in the success state.
894     * Reading from this pointer when `result_ok` is not set is undefined.
895     */
896    struct LDKSecretKey *result;
897    /**
898     * A pointer to the contents in the error state.
899     * Reading from this pointer when `result_ok` is set is undefined.
900     */
901    enum LDKSecp256k1Error *err;
902 } LDKCResult_SecretKeyErrorZPtr;
903
904 /**
905  * A CResult_SecretKeyErrorZ represents the result of a fallible operation,
906  * containing a crate::c_types::SecretKey on success and a crate::c_types::Secp256k1Error on failure.
907  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
908  */
909 typedef struct LDKCResult_SecretKeyErrorZ {
910    /**
911     * The contents of this CResult_SecretKeyErrorZ, accessible via either
912     * `err` or `result` depending on the state of `result_ok`.
913     */
914    union LDKCResult_SecretKeyErrorZPtr contents;
915    /**
916     * Whether this CResult_SecretKeyErrorZ represents a success state.
917     */
918    bool result_ok;
919 } LDKCResult_SecretKeyErrorZ;
920
921 /**
922  * The contents of CResult_PublicKeyErrorZ
923  */
924 typedef union LDKCResult_PublicKeyErrorZPtr {
925    /**
926     * A pointer to the contents in the success state.
927     * Reading from this pointer when `result_ok` is not set is undefined.
928     */
929    struct LDKPublicKey *result;
930    /**
931     * A pointer to the contents in the error state.
932     * Reading from this pointer when `result_ok` is set is undefined.
933     */
934    enum LDKSecp256k1Error *err;
935 } LDKCResult_PublicKeyErrorZPtr;
936
937 /**
938  * A CResult_PublicKeyErrorZ represents the result of a fallible operation,
939  * containing a crate::c_types::PublicKey on success and a crate::c_types::Secp256k1Error on failure.
940  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
941  */
942 typedef struct LDKCResult_PublicKeyErrorZ {
943    /**
944     * The contents of this CResult_PublicKeyErrorZ, accessible via either
945     * `err` or `result` depending on the state of `result_ok`.
946     */
947    union LDKCResult_PublicKeyErrorZPtr contents;
948    /**
949     * Whether this CResult_PublicKeyErrorZ represents a success state.
950     */
951    bool result_ok;
952 } LDKCResult_PublicKeyErrorZ;
953
954
955
956 /**
957  * The set of public keys which are used in the creation of one commitment transaction.
958  * These are derived from the channel base keys and per-commitment data.
959  *
960  * A broadcaster key is provided from potential broadcaster of the computed transaction.
961  * A countersignatory key is coming from a protocol participant unable to broadcast the
962  * transaction.
963  *
964  * These keys are assumed to be good, either because the code derived them from
965  * channel basepoints via the new function, or they were obtained via
966  * CommitmentTransaction.trust().keys() because we trusted the source of the
967  * pre-calculated keys.
968  */
969 typedef struct MUST_USE_STRUCT LDKTxCreationKeys {
970    /**
971     * A pointer to the opaque Rust object.
972     * Nearly everywhere, inner must be non-null, however in places where
973     * the Rust equivalent takes an Option, it may be set to null to indicate None.
974     */
975    LDKnativeTxCreationKeys *inner;
976    /**
977     * Indicates that this is the only struct which contains the same pointer.
978     * Rust functions which take ownership of an object provided via an argument require
979     * this to be true and invalidate the object pointed to by inner.
980     */
981    bool is_owned;
982 } LDKTxCreationKeys;
983
984 /**
985  * The contents of CResult_TxCreationKeysDecodeErrorZ
986  */
987 typedef union LDKCResult_TxCreationKeysDecodeErrorZPtr {
988    /**
989     * A pointer to the contents in the success state.
990     * Reading from this pointer when `result_ok` is not set is undefined.
991     */
992    struct LDKTxCreationKeys *result;
993    /**
994     * A pointer to the contents in the error state.
995     * Reading from this pointer when `result_ok` is set is undefined.
996     */
997    struct LDKDecodeError *err;
998 } LDKCResult_TxCreationKeysDecodeErrorZPtr;
999
1000 /**
1001  * A CResult_TxCreationKeysDecodeErrorZ represents the result of a fallible operation,
1002  * containing a crate::lightning::ln::chan_utils::TxCreationKeys on success and a crate::lightning::ln::msgs::DecodeError on failure.
1003  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1004  */
1005 typedef struct LDKCResult_TxCreationKeysDecodeErrorZ {
1006    /**
1007     * The contents of this CResult_TxCreationKeysDecodeErrorZ, accessible via either
1008     * `err` or `result` depending on the state of `result_ok`.
1009     */
1010    union LDKCResult_TxCreationKeysDecodeErrorZPtr contents;
1011    /**
1012     * Whether this CResult_TxCreationKeysDecodeErrorZ represents a success state.
1013     */
1014    bool result_ok;
1015 } LDKCResult_TxCreationKeysDecodeErrorZ;
1016
1017
1018
1019 /**
1020  * One counterparty's public keys which do not change over the life of a channel.
1021  */
1022 typedef struct MUST_USE_STRUCT LDKChannelPublicKeys {
1023    /**
1024     * A pointer to the opaque Rust object.
1025     * Nearly everywhere, inner must be non-null, however in places where
1026     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1027     */
1028    LDKnativeChannelPublicKeys *inner;
1029    /**
1030     * Indicates that this is the only struct which contains the same pointer.
1031     * Rust functions which take ownership of an object provided via an argument require
1032     * this to be true and invalidate the object pointed to by inner.
1033     */
1034    bool is_owned;
1035 } LDKChannelPublicKeys;
1036
1037 /**
1038  * The contents of CResult_ChannelPublicKeysDecodeErrorZ
1039  */
1040 typedef union LDKCResult_ChannelPublicKeysDecodeErrorZPtr {
1041    /**
1042     * A pointer to the contents in the success state.
1043     * Reading from this pointer when `result_ok` is not set is undefined.
1044     */
1045    struct LDKChannelPublicKeys *result;
1046    /**
1047     * A pointer to the contents in the error state.
1048     * Reading from this pointer when `result_ok` is set is undefined.
1049     */
1050    struct LDKDecodeError *err;
1051 } LDKCResult_ChannelPublicKeysDecodeErrorZPtr;
1052
1053 /**
1054  * A CResult_ChannelPublicKeysDecodeErrorZ represents the result of a fallible operation,
1055  * containing a crate::lightning::ln::chan_utils::ChannelPublicKeys on success and a crate::lightning::ln::msgs::DecodeError on failure.
1056  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1057  */
1058 typedef struct LDKCResult_ChannelPublicKeysDecodeErrorZ {
1059    /**
1060     * The contents of this CResult_ChannelPublicKeysDecodeErrorZ, accessible via either
1061     * `err` or `result` depending on the state of `result_ok`.
1062     */
1063    union LDKCResult_ChannelPublicKeysDecodeErrorZPtr contents;
1064    /**
1065     * Whether this CResult_ChannelPublicKeysDecodeErrorZ represents a success state.
1066     */
1067    bool result_ok;
1068 } LDKCResult_ChannelPublicKeysDecodeErrorZ;
1069
1070 /**
1071  * The contents of CResult_TxCreationKeysErrorZ
1072  */
1073 typedef union LDKCResult_TxCreationKeysErrorZPtr {
1074    /**
1075     * A pointer to the contents in the success state.
1076     * Reading from this pointer when `result_ok` is not set is undefined.
1077     */
1078    struct LDKTxCreationKeys *result;
1079    /**
1080     * A pointer to the contents in the error state.
1081     * Reading from this pointer when `result_ok` is set is undefined.
1082     */
1083    enum LDKSecp256k1Error *err;
1084 } LDKCResult_TxCreationKeysErrorZPtr;
1085
1086 /**
1087  * A CResult_TxCreationKeysErrorZ represents the result of a fallible operation,
1088  * containing a crate::lightning::ln::chan_utils::TxCreationKeys on success and a crate::c_types::Secp256k1Error on failure.
1089  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1090  */
1091 typedef struct LDKCResult_TxCreationKeysErrorZ {
1092    /**
1093     * The contents of this CResult_TxCreationKeysErrorZ, accessible via either
1094     * `err` or `result` depending on the state of `result_ok`.
1095     */
1096    union LDKCResult_TxCreationKeysErrorZPtr contents;
1097    /**
1098     * Whether this CResult_TxCreationKeysErrorZ represents a success state.
1099     */
1100    bool result_ok;
1101 } LDKCResult_TxCreationKeysErrorZ;
1102
1103 /**
1104  * An enum which can either contain a u32 or not
1105  */
1106 typedef enum LDKCOption_u32Z_Tag {
1107    /**
1108     * When we're in this state, this COption_u32Z contains a u32
1109     */
1110    LDKCOption_u32Z_Some,
1111    /**
1112     * When we're in this state, this COption_u32Z contains nothing
1113     */
1114    LDKCOption_u32Z_None,
1115    /**
1116     * Must be last for serialization purposes
1117     */
1118    LDKCOption_u32Z_Sentinel,
1119 } LDKCOption_u32Z_Tag;
1120
1121 typedef struct LDKCOption_u32Z {
1122    LDKCOption_u32Z_Tag tag;
1123    union {
1124       struct {
1125          uint32_t some;
1126       };
1127    };
1128 } LDKCOption_u32Z;
1129
1130
1131
1132 /**
1133  * Information about an HTLC as it appears in a commitment transaction
1134  */
1135 typedef struct MUST_USE_STRUCT LDKHTLCOutputInCommitment {
1136    /**
1137     * A pointer to the opaque Rust object.
1138     * Nearly everywhere, inner must be non-null, however in places where
1139     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1140     */
1141    LDKnativeHTLCOutputInCommitment *inner;
1142    /**
1143     * Indicates that this is the only struct which contains the same pointer.
1144     * Rust functions which take ownership of an object provided via an argument require
1145     * this to be true and invalidate the object pointed to by inner.
1146     */
1147    bool is_owned;
1148 } LDKHTLCOutputInCommitment;
1149
1150 /**
1151  * The contents of CResult_HTLCOutputInCommitmentDecodeErrorZ
1152  */
1153 typedef union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr {
1154    /**
1155     * A pointer to the contents in the success state.
1156     * Reading from this pointer when `result_ok` is not set is undefined.
1157     */
1158    struct LDKHTLCOutputInCommitment *result;
1159    /**
1160     * A pointer to the contents in the error state.
1161     * Reading from this pointer when `result_ok` is set is undefined.
1162     */
1163    struct LDKDecodeError *err;
1164 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr;
1165
1166 /**
1167  * A CResult_HTLCOutputInCommitmentDecodeErrorZ represents the result of a fallible operation,
1168  * containing a crate::lightning::ln::chan_utils::HTLCOutputInCommitment on success and a crate::lightning::ln::msgs::DecodeError on failure.
1169  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1170  */
1171 typedef struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ {
1172    /**
1173     * The contents of this CResult_HTLCOutputInCommitmentDecodeErrorZ, accessible via either
1174     * `err` or `result` depending on the state of `result_ok`.
1175     */
1176    union LDKCResult_HTLCOutputInCommitmentDecodeErrorZPtr contents;
1177    /**
1178     * Whether this CResult_HTLCOutputInCommitmentDecodeErrorZ represents a success state.
1179     */
1180    bool result_ok;
1181 } LDKCResult_HTLCOutputInCommitmentDecodeErrorZ;
1182
1183
1184
1185 /**
1186  * Late-bound per-channel counterparty data used to build transactions.
1187  */
1188 typedef struct MUST_USE_STRUCT LDKCounterpartyChannelTransactionParameters {
1189    /**
1190     * A pointer to the opaque Rust object.
1191     * Nearly everywhere, inner must be non-null, however in places where
1192     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1193     */
1194    LDKnativeCounterpartyChannelTransactionParameters *inner;
1195    /**
1196     * Indicates that this is the only struct which contains the same pointer.
1197     * Rust functions which take ownership of an object provided via an argument require
1198     * this to be true and invalidate the object pointed to by inner.
1199     */
1200    bool is_owned;
1201 } LDKCounterpartyChannelTransactionParameters;
1202
1203 /**
1204  * The contents of CResult_CounterpartyChannelTransactionParametersDecodeErrorZ
1205  */
1206 typedef union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr {
1207    /**
1208     * A pointer to the contents in the success state.
1209     * Reading from this pointer when `result_ok` is not set is undefined.
1210     */
1211    struct LDKCounterpartyChannelTransactionParameters *result;
1212    /**
1213     * A pointer to the contents in the error state.
1214     * Reading from this pointer when `result_ok` is set is undefined.
1215     */
1216    struct LDKDecodeError *err;
1217 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr;
1218
1219 /**
1220  * A CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
1221  * containing a crate::lightning::ln::chan_utils::CounterpartyChannelTransactionParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
1222  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1223  */
1224 typedef struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ {
1225    /**
1226     * The contents of this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ, accessible via either
1227     * `err` or `result` depending on the state of `result_ok`.
1228     */
1229    union LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZPtr contents;
1230    /**
1231     * Whether this CResult_CounterpartyChannelTransactionParametersDecodeErrorZ represents a success state.
1232     */
1233    bool result_ok;
1234 } LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ;
1235
1236
1237
1238 /**
1239  * Per-channel data used to build transactions in conjunction with the per-commitment data (CommitmentTransaction).
1240  * The fields are organized by holder/counterparty.
1241  *
1242  * Normally, this is converted to the broadcaster/countersignatory-organized DirectedChannelTransactionParameters
1243  * before use, via the as_holder_broadcastable and as_counterparty_broadcastable functions.
1244  */
1245 typedef struct MUST_USE_STRUCT LDKChannelTransactionParameters {
1246    /**
1247     * A pointer to the opaque Rust object.
1248     * Nearly everywhere, inner must be non-null, however in places where
1249     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1250     */
1251    LDKnativeChannelTransactionParameters *inner;
1252    /**
1253     * Indicates that this is the only struct which contains the same pointer.
1254     * Rust functions which take ownership of an object provided via an argument require
1255     * this to be true and invalidate the object pointed to by inner.
1256     */
1257    bool is_owned;
1258 } LDKChannelTransactionParameters;
1259
1260 /**
1261  * The contents of CResult_ChannelTransactionParametersDecodeErrorZ
1262  */
1263 typedef union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr {
1264    /**
1265     * A pointer to the contents in the success state.
1266     * Reading from this pointer when `result_ok` is not set is undefined.
1267     */
1268    struct LDKChannelTransactionParameters *result;
1269    /**
1270     * A pointer to the contents in the error state.
1271     * Reading from this pointer when `result_ok` is set is undefined.
1272     */
1273    struct LDKDecodeError *err;
1274 } LDKCResult_ChannelTransactionParametersDecodeErrorZPtr;
1275
1276 /**
1277  * A CResult_ChannelTransactionParametersDecodeErrorZ represents the result of a fallible operation,
1278  * containing a crate::lightning::ln::chan_utils::ChannelTransactionParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
1279  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1280  */
1281 typedef struct LDKCResult_ChannelTransactionParametersDecodeErrorZ {
1282    /**
1283     * The contents of this CResult_ChannelTransactionParametersDecodeErrorZ, accessible via either
1284     * `err` or `result` depending on the state of `result_ok`.
1285     */
1286    union LDKCResult_ChannelTransactionParametersDecodeErrorZPtr contents;
1287    /**
1288     * Whether this CResult_ChannelTransactionParametersDecodeErrorZ represents a success state.
1289     */
1290    bool result_ok;
1291 } LDKCResult_ChannelTransactionParametersDecodeErrorZ;
1292
1293 /**
1294  * Represents a secp256k1 signature serialized as two 32-byte numbers
1295  */
1296 typedef struct LDKSignature {
1297    /**
1298     * The bytes of the signature in "compact" form
1299     */
1300    uint8_t compact_form[64];
1301 } LDKSignature;
1302
1303 /**
1304  * A dynamically-allocated array of crate::c_types::Signatures of arbitrary size.
1305  * This corresponds to std::vector in C++
1306  */
1307 typedef struct LDKCVec_SignatureZ {
1308    /**
1309     * The elements in the array.
1310     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1311     */
1312    struct LDKSignature *data;
1313    /**
1314     * The number of elements pointed to by `data`.
1315     */
1316    uintptr_t datalen;
1317 } LDKCVec_SignatureZ;
1318
1319
1320
1321 /**
1322  * Information needed to build and sign a holder's commitment transaction.
1323  *
1324  * The transaction is only signed once we are ready to broadcast.
1325  */
1326 typedef struct MUST_USE_STRUCT LDKHolderCommitmentTransaction {
1327    /**
1328     * A pointer to the opaque Rust object.
1329     * Nearly everywhere, inner must be non-null, however in places where
1330     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1331     */
1332    LDKnativeHolderCommitmentTransaction *inner;
1333    /**
1334     * Indicates that this is the only struct which contains the same pointer.
1335     * Rust functions which take ownership of an object provided via an argument require
1336     * this to be true and invalidate the object pointed to by inner.
1337     */
1338    bool is_owned;
1339 } LDKHolderCommitmentTransaction;
1340
1341 /**
1342  * The contents of CResult_HolderCommitmentTransactionDecodeErrorZ
1343  */
1344 typedef union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr {
1345    /**
1346     * A pointer to the contents in the success state.
1347     * Reading from this pointer when `result_ok` is not set is undefined.
1348     */
1349    struct LDKHolderCommitmentTransaction *result;
1350    /**
1351     * A pointer to the contents in the error state.
1352     * Reading from this pointer when `result_ok` is set is undefined.
1353     */
1354    struct LDKDecodeError *err;
1355 } LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr;
1356
1357 /**
1358  * A CResult_HolderCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1359  * containing a crate::lightning::ln::chan_utils::HolderCommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1360  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1361  */
1362 typedef struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ {
1363    /**
1364     * The contents of this CResult_HolderCommitmentTransactionDecodeErrorZ, accessible via either
1365     * `err` or `result` depending on the state of `result_ok`.
1366     */
1367    union LDKCResult_HolderCommitmentTransactionDecodeErrorZPtr contents;
1368    /**
1369     * Whether this CResult_HolderCommitmentTransactionDecodeErrorZ represents a success state.
1370     */
1371    bool result_ok;
1372 } LDKCResult_HolderCommitmentTransactionDecodeErrorZ;
1373
1374
1375
1376 /**
1377  * A pre-built Bitcoin commitment transaction and its txid.
1378  */
1379 typedef struct MUST_USE_STRUCT LDKBuiltCommitmentTransaction {
1380    /**
1381     * A pointer to the opaque Rust object.
1382     * Nearly everywhere, inner must be non-null, however in places where
1383     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1384     */
1385    LDKnativeBuiltCommitmentTransaction *inner;
1386    /**
1387     * Indicates that this is the only struct which contains the same pointer.
1388     * Rust functions which take ownership of an object provided via an argument require
1389     * this to be true and invalidate the object pointed to by inner.
1390     */
1391    bool is_owned;
1392 } LDKBuiltCommitmentTransaction;
1393
1394 /**
1395  * The contents of CResult_BuiltCommitmentTransactionDecodeErrorZ
1396  */
1397 typedef union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr {
1398    /**
1399     * A pointer to the contents in the success state.
1400     * Reading from this pointer when `result_ok` is not set is undefined.
1401     */
1402    struct LDKBuiltCommitmentTransaction *result;
1403    /**
1404     * A pointer to the contents in the error state.
1405     * Reading from this pointer when `result_ok` is set is undefined.
1406     */
1407    struct LDKDecodeError *err;
1408 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr;
1409
1410 /**
1411  * A CResult_BuiltCommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1412  * containing a crate::lightning::ln::chan_utils::BuiltCommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1413  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1414  */
1415 typedef struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ {
1416    /**
1417     * The contents of this CResult_BuiltCommitmentTransactionDecodeErrorZ, accessible via either
1418     * `err` or `result` depending on the state of `result_ok`.
1419     */
1420    union LDKCResult_BuiltCommitmentTransactionDecodeErrorZPtr contents;
1421    /**
1422     * Whether this CResult_BuiltCommitmentTransactionDecodeErrorZ represents a success state.
1423     */
1424    bool result_ok;
1425 } LDKCResult_BuiltCommitmentTransactionDecodeErrorZ;
1426
1427
1428
1429 /**
1430  * A wrapper on ClosingTransaction indicating that the built bitcoin
1431  * transaction is trusted.
1432  *
1433  * See trust() and verify() functions on CommitmentTransaction.
1434  *
1435  * This structure implements Deref.
1436  */
1437 typedef struct MUST_USE_STRUCT LDKTrustedClosingTransaction {
1438    /**
1439     * A pointer to the opaque Rust object.
1440     * Nearly everywhere, inner must be non-null, however in places where
1441     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1442     */
1443    LDKnativeTrustedClosingTransaction *inner;
1444    /**
1445     * Indicates that this is the only struct which contains the same pointer.
1446     * Rust functions which take ownership of an object provided via an argument require
1447     * this to be true and invalidate the object pointed to by inner.
1448     */
1449    bool is_owned;
1450 } LDKTrustedClosingTransaction;
1451
1452 /**
1453  * The contents of CResult_TrustedClosingTransactionNoneZ
1454  */
1455 typedef union LDKCResult_TrustedClosingTransactionNoneZPtr {
1456    /**
1457     * A pointer to the contents in the success state.
1458     * Reading from this pointer when `result_ok` is not set is undefined.
1459     */
1460    struct LDKTrustedClosingTransaction *result;
1461    /**
1462     * Note that this value is always NULL, as there are no contents in the Err variant
1463     */
1464    void *err;
1465 } LDKCResult_TrustedClosingTransactionNoneZPtr;
1466
1467 /**
1468  * A CResult_TrustedClosingTransactionNoneZ represents the result of a fallible operation,
1469  * containing a crate::lightning::ln::chan_utils::TrustedClosingTransaction on success and a () on failure.
1470  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1471  */
1472 typedef struct LDKCResult_TrustedClosingTransactionNoneZ {
1473    /**
1474     * The contents of this CResult_TrustedClosingTransactionNoneZ, accessible via either
1475     * `err` or `result` depending on the state of `result_ok`.
1476     */
1477    union LDKCResult_TrustedClosingTransactionNoneZPtr contents;
1478    /**
1479     * Whether this CResult_TrustedClosingTransactionNoneZ represents a success state.
1480     */
1481    bool result_ok;
1482 } LDKCResult_TrustedClosingTransactionNoneZ;
1483
1484
1485
1486 /**
1487  * This class tracks the per-transaction information needed to build a commitment transaction and will
1488  * actually build it and sign.  It is used for holder transactions that we sign only when needed
1489  * and for transactions we sign for the counterparty.
1490  *
1491  * This class can be used inside a signer implementation to generate a signature given the relevant
1492  * secret key.
1493  */
1494 typedef struct MUST_USE_STRUCT LDKCommitmentTransaction {
1495    /**
1496     * A pointer to the opaque Rust object.
1497     * Nearly everywhere, inner must be non-null, however in places where
1498     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1499     */
1500    LDKnativeCommitmentTransaction *inner;
1501    /**
1502     * Indicates that this is the only struct which contains the same pointer.
1503     * Rust functions which take ownership of an object provided via an argument require
1504     * this to be true and invalidate the object pointed to by inner.
1505     */
1506    bool is_owned;
1507 } LDKCommitmentTransaction;
1508
1509 /**
1510  * The contents of CResult_CommitmentTransactionDecodeErrorZ
1511  */
1512 typedef union LDKCResult_CommitmentTransactionDecodeErrorZPtr {
1513    /**
1514     * A pointer to the contents in the success state.
1515     * Reading from this pointer when `result_ok` is not set is undefined.
1516     */
1517    struct LDKCommitmentTransaction *result;
1518    /**
1519     * A pointer to the contents in the error state.
1520     * Reading from this pointer when `result_ok` is set is undefined.
1521     */
1522    struct LDKDecodeError *err;
1523 } LDKCResult_CommitmentTransactionDecodeErrorZPtr;
1524
1525 /**
1526  * A CResult_CommitmentTransactionDecodeErrorZ represents the result of a fallible operation,
1527  * containing a crate::lightning::ln::chan_utils::CommitmentTransaction on success and a crate::lightning::ln::msgs::DecodeError on failure.
1528  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1529  */
1530 typedef struct LDKCResult_CommitmentTransactionDecodeErrorZ {
1531    /**
1532     * The contents of this CResult_CommitmentTransactionDecodeErrorZ, accessible via either
1533     * `err` or `result` depending on the state of `result_ok`.
1534     */
1535    union LDKCResult_CommitmentTransactionDecodeErrorZPtr contents;
1536    /**
1537     * Whether this CResult_CommitmentTransactionDecodeErrorZ represents a success state.
1538     */
1539    bool result_ok;
1540 } LDKCResult_CommitmentTransactionDecodeErrorZ;
1541
1542
1543
1544 /**
1545  * A wrapper on CommitmentTransaction indicating that the derived fields (the built bitcoin
1546  * transaction and the transaction creation keys) are trusted.
1547  *
1548  * See trust() and verify() functions on CommitmentTransaction.
1549  *
1550  * This structure implements Deref.
1551  */
1552 typedef struct MUST_USE_STRUCT LDKTrustedCommitmentTransaction {
1553    /**
1554     * A pointer to the opaque Rust object.
1555     * Nearly everywhere, inner must be non-null, however in places where
1556     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1557     */
1558    LDKnativeTrustedCommitmentTransaction *inner;
1559    /**
1560     * Indicates that this is the only struct which contains the same pointer.
1561     * Rust functions which take ownership of an object provided via an argument require
1562     * this to be true and invalidate the object pointed to by inner.
1563     */
1564    bool is_owned;
1565 } LDKTrustedCommitmentTransaction;
1566
1567 /**
1568  * The contents of CResult_TrustedCommitmentTransactionNoneZ
1569  */
1570 typedef union LDKCResult_TrustedCommitmentTransactionNoneZPtr {
1571    /**
1572     * A pointer to the contents in the success state.
1573     * Reading from this pointer when `result_ok` is not set is undefined.
1574     */
1575    struct LDKTrustedCommitmentTransaction *result;
1576    /**
1577     * Note that this value is always NULL, as there are no contents in the Err variant
1578     */
1579    void *err;
1580 } LDKCResult_TrustedCommitmentTransactionNoneZPtr;
1581
1582 /**
1583  * A CResult_TrustedCommitmentTransactionNoneZ represents the result of a fallible operation,
1584  * containing a crate::lightning::ln::chan_utils::TrustedCommitmentTransaction on success and a () on failure.
1585  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1586  */
1587 typedef struct LDKCResult_TrustedCommitmentTransactionNoneZ {
1588    /**
1589     * The contents of this CResult_TrustedCommitmentTransactionNoneZ, accessible via either
1590     * `err` or `result` depending on the state of `result_ok`.
1591     */
1592    union LDKCResult_TrustedCommitmentTransactionNoneZPtr contents;
1593    /**
1594     * Whether this CResult_TrustedCommitmentTransactionNoneZ represents a success state.
1595     */
1596    bool result_ok;
1597 } LDKCResult_TrustedCommitmentTransactionNoneZ;
1598
1599 /**
1600  * The contents of CResult_CVec_SignatureZNoneZ
1601  */
1602 typedef union LDKCResult_CVec_SignatureZNoneZPtr {
1603    /**
1604     * A pointer to the contents in the success state.
1605     * Reading from this pointer when `result_ok` is not set is undefined.
1606     */
1607    struct LDKCVec_SignatureZ *result;
1608    /**
1609     * Note that this value is always NULL, as there are no contents in the Err variant
1610     */
1611    void *err;
1612 } LDKCResult_CVec_SignatureZNoneZPtr;
1613
1614 /**
1615  * A CResult_CVec_SignatureZNoneZ represents the result of a fallible operation,
1616  * containing a crate::c_types::derived::CVec_SignatureZ on success and a () on failure.
1617  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1618  */
1619 typedef struct LDKCResult_CVec_SignatureZNoneZ {
1620    /**
1621     * The contents of this CResult_CVec_SignatureZNoneZ, accessible via either
1622     * `err` or `result` depending on the state of `result_ok`.
1623     */
1624    union LDKCResult_CVec_SignatureZNoneZPtr contents;
1625    /**
1626     * Whether this CResult_CVec_SignatureZNoneZ represents a success state.
1627     */
1628    bool result_ok;
1629 } LDKCResult_CVec_SignatureZNoneZ;
1630
1631
1632
1633 /**
1634  * A script pubkey for shutting down a channel as defined by [BOLT #2].
1635  *
1636  * [BOLT #2]: https://github.com/lightning/bolts/blob/master/02-peer-protocol.md
1637  */
1638 typedef struct MUST_USE_STRUCT LDKShutdownScript {
1639    /**
1640     * A pointer to the opaque Rust object.
1641     * Nearly everywhere, inner must be non-null, however in places where
1642     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1643     */
1644    LDKnativeShutdownScript *inner;
1645    /**
1646     * Indicates that this is the only struct which contains the same pointer.
1647     * Rust functions which take ownership of an object provided via an argument require
1648     * this to be true and invalidate the object pointed to by inner.
1649     */
1650    bool is_owned;
1651 } LDKShutdownScript;
1652
1653 /**
1654  * The contents of CResult_ShutdownScriptDecodeErrorZ
1655  */
1656 typedef union LDKCResult_ShutdownScriptDecodeErrorZPtr {
1657    /**
1658     * A pointer to the contents in the success state.
1659     * Reading from this pointer when `result_ok` is not set is undefined.
1660     */
1661    struct LDKShutdownScript *result;
1662    /**
1663     * A pointer to the contents in the error state.
1664     * Reading from this pointer when `result_ok` is set is undefined.
1665     */
1666    struct LDKDecodeError *err;
1667 } LDKCResult_ShutdownScriptDecodeErrorZPtr;
1668
1669 /**
1670  * A CResult_ShutdownScriptDecodeErrorZ represents the result of a fallible operation,
1671  * containing a crate::lightning::ln::script::ShutdownScript on success and a crate::lightning::ln::msgs::DecodeError on failure.
1672  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1673  */
1674 typedef struct LDKCResult_ShutdownScriptDecodeErrorZ {
1675    /**
1676     * The contents of this CResult_ShutdownScriptDecodeErrorZ, accessible via either
1677     * `err` or `result` depending on the state of `result_ok`.
1678     */
1679    union LDKCResult_ShutdownScriptDecodeErrorZPtr contents;
1680    /**
1681     * Whether this CResult_ShutdownScriptDecodeErrorZ represents a success state.
1682     */
1683    bool result_ok;
1684 } LDKCResult_ShutdownScriptDecodeErrorZ;
1685
1686
1687
1688 /**
1689  * An error occurring when converting from [`Script`] to [`ShutdownScript`].
1690  */
1691 typedef struct MUST_USE_STRUCT LDKInvalidShutdownScript {
1692    /**
1693     * A pointer to the opaque Rust object.
1694     * Nearly everywhere, inner must be non-null, however in places where
1695     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1696     */
1697    LDKnativeInvalidShutdownScript *inner;
1698    /**
1699     * Indicates that this is the only struct which contains the same pointer.
1700     * Rust functions which take ownership of an object provided via an argument require
1701     * this to be true and invalidate the object pointed to by inner.
1702     */
1703    bool is_owned;
1704 } LDKInvalidShutdownScript;
1705
1706 /**
1707  * The contents of CResult_ShutdownScriptInvalidShutdownScriptZ
1708  */
1709 typedef union LDKCResult_ShutdownScriptInvalidShutdownScriptZPtr {
1710    /**
1711     * A pointer to the contents in the success state.
1712     * Reading from this pointer when `result_ok` is not set is undefined.
1713     */
1714    struct LDKShutdownScript *result;
1715    /**
1716     * A pointer to the contents in the error state.
1717     * Reading from this pointer when `result_ok` is set is undefined.
1718     */
1719    struct LDKInvalidShutdownScript *err;
1720 } LDKCResult_ShutdownScriptInvalidShutdownScriptZPtr;
1721
1722 /**
1723  * A CResult_ShutdownScriptInvalidShutdownScriptZ represents the result of a fallible operation,
1724  * containing a crate::lightning::ln::script::ShutdownScript on success and a crate::lightning::ln::script::InvalidShutdownScript on failure.
1725  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1726  */
1727 typedef struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ {
1728    /**
1729     * The contents of this CResult_ShutdownScriptInvalidShutdownScriptZ, accessible via either
1730     * `err` or `result` depending on the state of `result_ok`.
1731     */
1732    union LDKCResult_ShutdownScriptInvalidShutdownScriptZPtr contents;
1733    /**
1734     * Whether this CResult_ShutdownScriptInvalidShutdownScriptZ represents a success state.
1735     */
1736    bool result_ok;
1737 } LDKCResult_ShutdownScriptInvalidShutdownScriptZ;
1738
1739
1740
1741 /**
1742  * Represents the compressed public key of a node
1743  */
1744 typedef struct MUST_USE_STRUCT LDKNodeId {
1745    /**
1746     * A pointer to the opaque Rust object.
1747     * Nearly everywhere, inner must be non-null, however in places where
1748     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1749     */
1750    LDKnativeNodeId *inner;
1751    /**
1752     * Indicates that this is the only struct which contains the same pointer.
1753     * Rust functions which take ownership of an object provided via an argument require
1754     * this to be true and invalidate the object pointed to by inner.
1755     */
1756    bool is_owned;
1757 } LDKNodeId;
1758
1759
1760
1761 /**
1762  * Proposed use of a channel passed as a parameter to [`Score::channel_penalty_msat`].
1763  */
1764 typedef struct MUST_USE_STRUCT LDKChannelUsage {
1765    /**
1766     * A pointer to the opaque Rust object.
1767     * Nearly everywhere, inner must be non-null, however in places where
1768     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1769     */
1770    LDKnativeChannelUsage *inner;
1771    /**
1772     * Indicates that this is the only struct which contains the same pointer.
1773     * Rust functions which take ownership of an object provided via an argument require
1774     * this to be true and invalidate the object pointed to by inner.
1775     */
1776    bool is_owned;
1777 } LDKChannelUsage;
1778
1779
1780
1781 /**
1782  * A hop in a route
1783  */
1784 typedef struct MUST_USE_STRUCT LDKRouteHop {
1785    /**
1786     * A pointer to the opaque Rust object.
1787     * Nearly everywhere, inner must be non-null, however in places where
1788     * the Rust equivalent takes an Option, it may be set to null to indicate None.
1789     */
1790    LDKnativeRouteHop *inner;
1791    /**
1792     * Indicates that this is the only struct which contains the same pointer.
1793     * Rust functions which take ownership of an object provided via an argument require
1794     * this to be true and invalidate the object pointed to by inner.
1795     */
1796    bool is_owned;
1797 } LDKRouteHop;
1798
1799 /**
1800  * A dynamically-allocated array of crate::lightning::routing::router::RouteHops of arbitrary size.
1801  * This corresponds to std::vector in C++
1802  */
1803 typedef struct LDKCVec_RouteHopZ {
1804    /**
1805     * The elements in the array.
1806     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
1807     */
1808    struct LDKRouteHop *data;
1809    /**
1810     * The number of elements pointed to by `data`.
1811     */
1812    uintptr_t datalen;
1813 } LDKCVec_RouteHopZ;
1814
1815 /**
1816  * An interface used to score payment channels for path finding.
1817  *
1818  *\tScoring is in terms of fees willing to be paid in order to avoid routing through a channel.
1819  */
1820 typedef struct LDKScore {
1821    /**
1822     * An opaque pointer which is passed to your function implementations as an argument.
1823     * This has no meaning in the LDK, and can be NULL or any other value.
1824     */
1825    void *this_arg;
1826    /**
1827     * Returns the fee in msats willing to be paid to avoid routing `send_amt_msat` through the
1828     * given channel in the direction from `source` to `target`.
1829     *
1830     * The channel's capacity (less any other MPP parts that are also being considered for use in
1831     * the same payment) is given by `capacity_msat`. It may be determined from various sources
1832     * such as a chain data, network gossip, or invoice hints. For invoice hints, a capacity near
1833     * [`u64::max_value`] is given to indicate sufficient capacity for the invoice's full amount.
1834     * Thus, implementations should be overflow-safe.
1835     */
1836    uint64_t (*channel_penalty_msat)(const void *this_arg, uint64_t short_channel_id, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target, struct LDKChannelUsage usage);
1837    /**
1838     * Handles updating channel penalties after failing to route through a channel.
1839     */
1840    void (*payment_path_failed)(void *this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1841    /**
1842     * Handles updating channel penalties after successfully routing along a path.
1843     */
1844    void (*payment_path_successful)(void *this_arg, struct LDKCVec_RouteHopZ path);
1845    /**
1846     * Handles updating channel penalties after a probe over the given path failed.
1847     */
1848    void (*probe_failed)(void *this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
1849    /**
1850     * Handles updating channel penalties after a probe over the given path succeeded.
1851     */
1852    void (*probe_successful)(void *this_arg, struct LDKCVec_RouteHopZ path);
1853    /**
1854     * Serialize the object into a byte array
1855     */
1856    struct LDKCVec_u8Z (*write)(const void *this_arg);
1857    /**
1858     * Frees any resources associated with this object given its this_arg pointer.
1859     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
1860     */
1861    void (*free)(void *this_arg);
1862 } LDKScore;
1863
1864 /**
1865  * A scorer that is accessed under a lock.
1866  *
1867  * Needed so that calls to [`Score::channel_penalty_msat`] in [`find_route`] can be made while
1868  * having shared ownership of a scorer but without requiring internal locking in [`Score`]
1869  * implementations. Internal locking would be detrimental to route finding performance and could
1870  * result in [`Score::channel_penalty_msat`] returning a different value for the same channel.
1871  *
1872  * [`find_route`]: crate::routing::router::find_route
1873  */
1874 typedef struct LDKLockableScore {
1875    /**
1876     * An opaque pointer which is passed to your function implementations as an argument.
1877     * This has no meaning in the LDK, and can be NULL or any other value.
1878     */
1879    void *this_arg;
1880    /**
1881     * Returns the locked scorer.
1882     */
1883    struct LDKScore (*lock)(const void *this_arg);
1884    /**
1885     * Frees any resources associated with this object given its this_arg pointer.
1886     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
1887     */
1888    void (*free)(void *this_arg);
1889 } LDKLockableScore;
1890
1891 /**
1892  * Refers to a scorer that is accessible under lock and also writeable to disk
1893  *
1894  * We need this trait to be able to pass in a scorer to `lightning-background-processor` that will enable us to
1895  * use the Persister to persist it.
1896  */
1897 typedef struct LDKWriteableScore {
1898    /**
1899     * An opaque pointer which is passed to your function implementations as an argument.
1900     * This has no meaning in the LDK, and can be NULL or any other value.
1901     */
1902    void *this_arg;
1903    /**
1904     * Implementation of LockableScore for this object.
1905     */
1906    struct LDKLockableScore LockableScore;
1907    /**
1908     * Serialize the object into a byte array
1909     */
1910    struct LDKCVec_u8Z (*write)(const void *this_arg);
1911    /**
1912     * Frees any resources associated with this object given its this_arg pointer.
1913     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
1914     */
1915    void (*free)(void *this_arg);
1916 } LDKWriteableScore;
1917
1918 /**
1919  * An enum which can either contain a crate::lightning::routing::scoring::WriteableScore or not
1920  */
1921 typedef enum LDKCOption_WriteableScoreZ_Tag {
1922    /**
1923     * When we're in this state, this COption_WriteableScoreZ contains a crate::lightning::routing::scoring::WriteableScore
1924     */
1925    LDKCOption_WriteableScoreZ_Some,
1926    /**
1927     * When we're in this state, this COption_WriteableScoreZ contains nothing
1928     */
1929    LDKCOption_WriteableScoreZ_None,
1930    /**
1931     * Must be last for serialization purposes
1932     */
1933    LDKCOption_WriteableScoreZ_Sentinel,
1934 } LDKCOption_WriteableScoreZ_Tag;
1935
1936 typedef struct LDKCOption_WriteableScoreZ {
1937    LDKCOption_WriteableScoreZ_Tag tag;
1938    union {
1939       struct {
1940          struct LDKWriteableScore some;
1941       };
1942    };
1943 } LDKCOption_WriteableScoreZ;
1944
1945 /**
1946  * The contents of CResult_NoneErrorZ
1947  */
1948 typedef union LDKCResult_NoneErrorZPtr {
1949    /**
1950     * Note that this value is always NULL, as there are no contents in the OK variant
1951     */
1952    void *result;
1953    /**
1954     * A pointer to the contents in the error state.
1955     * Reading from this pointer when `result_ok` is set is undefined.
1956     */
1957    enum LDKIOError *err;
1958 } LDKCResult_NoneErrorZPtr;
1959
1960 /**
1961  * A CResult_NoneErrorZ represents the result of a fallible operation,
1962  * containing a () on success and a crate::c_types::IOError on failure.
1963  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1964  */
1965 typedef struct LDKCResult_NoneErrorZ {
1966    /**
1967     * The contents of this CResult_NoneErrorZ, accessible via either
1968     * `err` or `result` depending on the state of `result_ok`.
1969     */
1970    union LDKCResult_NoneErrorZPtr contents;
1971    /**
1972     * Whether this CResult_NoneErrorZ represents a success state.
1973     */
1974    bool result_ok;
1975 } LDKCResult_NoneErrorZ;
1976
1977 /**
1978  * The contents of CResult_RouteHopDecodeErrorZ
1979  */
1980 typedef union LDKCResult_RouteHopDecodeErrorZPtr {
1981    /**
1982     * A pointer to the contents in the success state.
1983     * Reading from this pointer when `result_ok` is not set is undefined.
1984     */
1985    struct LDKRouteHop *result;
1986    /**
1987     * A pointer to the contents in the error state.
1988     * Reading from this pointer when `result_ok` is set is undefined.
1989     */
1990    struct LDKDecodeError *err;
1991 } LDKCResult_RouteHopDecodeErrorZPtr;
1992
1993 /**
1994  * A CResult_RouteHopDecodeErrorZ represents the result of a fallible operation,
1995  * containing a crate::lightning::routing::router::RouteHop on success and a crate::lightning::ln::msgs::DecodeError on failure.
1996  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
1997  */
1998 typedef struct LDKCResult_RouteHopDecodeErrorZ {
1999    /**
2000     * The contents of this CResult_RouteHopDecodeErrorZ, accessible via either
2001     * `err` or `result` depending on the state of `result_ok`.
2002     */
2003    union LDKCResult_RouteHopDecodeErrorZPtr contents;
2004    /**
2005     * Whether this CResult_RouteHopDecodeErrorZ represents a success state.
2006     */
2007    bool result_ok;
2008 } LDKCResult_RouteHopDecodeErrorZ;
2009
2010 /**
2011  * A dynamically-allocated array of crate::c_types::derived::CVec_RouteHopZs of arbitrary size.
2012  * This corresponds to std::vector in C++
2013  */
2014 typedef struct LDKCVec_CVec_RouteHopZZ {
2015    /**
2016     * The elements in the array.
2017     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2018     */
2019    struct LDKCVec_RouteHopZ *data;
2020    /**
2021     * The number of elements pointed to by `data`.
2022     */
2023    uintptr_t datalen;
2024 } LDKCVec_CVec_RouteHopZZ;
2025
2026
2027
2028 /**
2029  * A route directs a payment from the sender (us) to the recipient. If the recipient supports MPP,
2030  * it can take multiple paths. Each path is composed of one or more hops through the network.
2031  */
2032 typedef struct MUST_USE_STRUCT LDKRoute {
2033    /**
2034     * A pointer to the opaque Rust object.
2035     * Nearly everywhere, inner must be non-null, however in places where
2036     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2037     */
2038    LDKnativeRoute *inner;
2039    /**
2040     * Indicates that this is the only struct which contains the same pointer.
2041     * Rust functions which take ownership of an object provided via an argument require
2042     * this to be true and invalidate the object pointed to by inner.
2043     */
2044    bool is_owned;
2045 } LDKRoute;
2046
2047 /**
2048  * The contents of CResult_RouteDecodeErrorZ
2049  */
2050 typedef union LDKCResult_RouteDecodeErrorZPtr {
2051    /**
2052     * A pointer to the contents in the success state.
2053     * Reading from this pointer when `result_ok` is not set is undefined.
2054     */
2055    struct LDKRoute *result;
2056    /**
2057     * A pointer to the contents in the error state.
2058     * Reading from this pointer when `result_ok` is set is undefined.
2059     */
2060    struct LDKDecodeError *err;
2061 } LDKCResult_RouteDecodeErrorZPtr;
2062
2063 /**
2064  * A CResult_RouteDecodeErrorZ represents the result of a fallible operation,
2065  * containing a crate::lightning::routing::router::Route on success and a crate::lightning::ln::msgs::DecodeError on failure.
2066  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2067  */
2068 typedef struct LDKCResult_RouteDecodeErrorZ {
2069    /**
2070     * The contents of this CResult_RouteDecodeErrorZ, accessible via either
2071     * `err` or `result` depending on the state of `result_ok`.
2072     */
2073    union LDKCResult_RouteDecodeErrorZPtr contents;
2074    /**
2075     * Whether this CResult_RouteDecodeErrorZ represents a success state.
2076     */
2077    bool result_ok;
2078 } LDKCResult_RouteDecodeErrorZ;
2079
2080
2081
2082 /**
2083  * Parameters needed to find a [`Route`].
2084  *
2085  * Passed to [`find_route`] and [`build_route_from_hops`], but also provided in
2086  * [`Event::PaymentPathFailed`] for retrying a failed payment path.
2087  *
2088  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
2089  */
2090 typedef struct MUST_USE_STRUCT LDKRouteParameters {
2091    /**
2092     * A pointer to the opaque Rust object.
2093     * Nearly everywhere, inner must be non-null, however in places where
2094     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2095     */
2096    LDKnativeRouteParameters *inner;
2097    /**
2098     * Indicates that this is the only struct which contains the same pointer.
2099     * Rust functions which take ownership of an object provided via an argument require
2100     * this to be true and invalidate the object pointed to by inner.
2101     */
2102    bool is_owned;
2103 } LDKRouteParameters;
2104
2105 /**
2106  * The contents of CResult_RouteParametersDecodeErrorZ
2107  */
2108 typedef union LDKCResult_RouteParametersDecodeErrorZPtr {
2109    /**
2110     * A pointer to the contents in the success state.
2111     * Reading from this pointer when `result_ok` is not set is undefined.
2112     */
2113    struct LDKRouteParameters *result;
2114    /**
2115     * A pointer to the contents in the error state.
2116     * Reading from this pointer when `result_ok` is set is undefined.
2117     */
2118    struct LDKDecodeError *err;
2119 } LDKCResult_RouteParametersDecodeErrorZPtr;
2120
2121 /**
2122  * A CResult_RouteParametersDecodeErrorZ represents the result of a fallible operation,
2123  * containing a crate::lightning::routing::router::RouteParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
2124  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2125  */
2126 typedef struct LDKCResult_RouteParametersDecodeErrorZ {
2127    /**
2128     * The contents of this CResult_RouteParametersDecodeErrorZ, accessible via either
2129     * `err` or `result` depending on the state of `result_ok`.
2130     */
2131    union LDKCResult_RouteParametersDecodeErrorZPtr contents;
2132    /**
2133     * Whether this CResult_RouteParametersDecodeErrorZ represents a success state.
2134     */
2135    bool result_ok;
2136 } LDKCResult_RouteParametersDecodeErrorZ;
2137
2138
2139
2140 /**
2141  * A list of hops along a payment path terminating with a channel to the recipient.
2142  */
2143 typedef struct MUST_USE_STRUCT LDKRouteHint {
2144    /**
2145     * A pointer to the opaque Rust object.
2146     * Nearly everywhere, inner must be non-null, however in places where
2147     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2148     */
2149    LDKnativeRouteHint *inner;
2150    /**
2151     * Indicates that this is the only struct which contains the same pointer.
2152     * Rust functions which take ownership of an object provided via an argument require
2153     * this to be true and invalidate the object pointed to by inner.
2154     */
2155    bool is_owned;
2156 } LDKRouteHint;
2157
2158 /**
2159  * A dynamically-allocated array of crate::lightning::routing::router::RouteHints of arbitrary size.
2160  * This corresponds to std::vector in C++
2161  */
2162 typedef struct LDKCVec_RouteHintZ {
2163    /**
2164     * The elements in the array.
2165     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2166     */
2167    struct LDKRouteHint *data;
2168    /**
2169     * The number of elements pointed to by `data`.
2170     */
2171    uintptr_t datalen;
2172 } LDKCVec_RouteHintZ;
2173
2174 /**
2175  * An enum which can either contain a u64 or not
2176  */
2177 typedef enum LDKCOption_u64Z_Tag {
2178    /**
2179     * When we're in this state, this COption_u64Z contains a u64
2180     */
2181    LDKCOption_u64Z_Some,
2182    /**
2183     * When we're in this state, this COption_u64Z contains nothing
2184     */
2185    LDKCOption_u64Z_None,
2186    /**
2187     * Must be last for serialization purposes
2188     */
2189    LDKCOption_u64Z_Sentinel,
2190 } LDKCOption_u64Z_Tag;
2191
2192 typedef struct LDKCOption_u64Z {
2193    LDKCOption_u64Z_Tag tag;
2194    union {
2195       struct {
2196          uint64_t some;
2197       };
2198    };
2199 } LDKCOption_u64Z;
2200
2201 /**
2202  * A dynamically-allocated array of u64s of arbitrary size.
2203  * This corresponds to std::vector in C++
2204  */
2205 typedef struct LDKCVec_u64Z {
2206    /**
2207     * The elements in the array.
2208     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2209     */
2210    uint64_t *data;
2211    /**
2212     * The number of elements pointed to by `data`.
2213     */
2214    uintptr_t datalen;
2215 } LDKCVec_u64Z;
2216
2217
2218
2219 /**
2220  * The recipient of a payment.
2221  */
2222 typedef struct MUST_USE_STRUCT LDKPaymentParameters {
2223    /**
2224     * A pointer to the opaque Rust object.
2225     * Nearly everywhere, inner must be non-null, however in places where
2226     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2227     */
2228    LDKnativePaymentParameters *inner;
2229    /**
2230     * Indicates that this is the only struct which contains the same pointer.
2231     * Rust functions which take ownership of an object provided via an argument require
2232     * this to be true and invalidate the object pointed to by inner.
2233     */
2234    bool is_owned;
2235 } LDKPaymentParameters;
2236
2237 /**
2238  * The contents of CResult_PaymentParametersDecodeErrorZ
2239  */
2240 typedef union LDKCResult_PaymentParametersDecodeErrorZPtr {
2241    /**
2242     * A pointer to the contents in the success state.
2243     * Reading from this pointer when `result_ok` is not set is undefined.
2244     */
2245    struct LDKPaymentParameters *result;
2246    /**
2247     * A pointer to the contents in the error state.
2248     * Reading from this pointer when `result_ok` is set is undefined.
2249     */
2250    struct LDKDecodeError *err;
2251 } LDKCResult_PaymentParametersDecodeErrorZPtr;
2252
2253 /**
2254  * A CResult_PaymentParametersDecodeErrorZ represents the result of a fallible operation,
2255  * containing a crate::lightning::routing::router::PaymentParameters on success and a crate::lightning::ln::msgs::DecodeError on failure.
2256  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2257  */
2258 typedef struct LDKCResult_PaymentParametersDecodeErrorZ {
2259    /**
2260     * The contents of this CResult_PaymentParametersDecodeErrorZ, accessible via either
2261     * `err` or `result` depending on the state of `result_ok`.
2262     */
2263    union LDKCResult_PaymentParametersDecodeErrorZPtr contents;
2264    /**
2265     * Whether this CResult_PaymentParametersDecodeErrorZ represents a success state.
2266     */
2267    bool result_ok;
2268 } LDKCResult_PaymentParametersDecodeErrorZ;
2269
2270
2271
2272 /**
2273  * A channel descriptor for a hop along a payment path.
2274  */
2275 typedef struct MUST_USE_STRUCT LDKRouteHintHop {
2276    /**
2277     * A pointer to the opaque Rust object.
2278     * Nearly everywhere, inner must be non-null, however in places where
2279     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2280     */
2281    LDKnativeRouteHintHop *inner;
2282    /**
2283     * Indicates that this is the only struct which contains the same pointer.
2284     * Rust functions which take ownership of an object provided via an argument require
2285     * this to be true and invalidate the object pointed to by inner.
2286     */
2287    bool is_owned;
2288 } LDKRouteHintHop;
2289
2290 /**
2291  * A dynamically-allocated array of crate::lightning::routing::router::RouteHintHops of arbitrary size.
2292  * This corresponds to std::vector in C++
2293  */
2294 typedef struct LDKCVec_RouteHintHopZ {
2295    /**
2296     * The elements in the array.
2297     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2298     */
2299    struct LDKRouteHintHop *data;
2300    /**
2301     * The number of elements pointed to by `data`.
2302     */
2303    uintptr_t datalen;
2304 } LDKCVec_RouteHintHopZ;
2305
2306 /**
2307  * The contents of CResult_RouteHintDecodeErrorZ
2308  */
2309 typedef union LDKCResult_RouteHintDecodeErrorZPtr {
2310    /**
2311     * A pointer to the contents in the success state.
2312     * Reading from this pointer when `result_ok` is not set is undefined.
2313     */
2314    struct LDKRouteHint *result;
2315    /**
2316     * A pointer to the contents in the error state.
2317     * Reading from this pointer when `result_ok` is set is undefined.
2318     */
2319    struct LDKDecodeError *err;
2320 } LDKCResult_RouteHintDecodeErrorZPtr;
2321
2322 /**
2323  * A CResult_RouteHintDecodeErrorZ represents the result of a fallible operation,
2324  * containing a crate::lightning::routing::router::RouteHint on success and a crate::lightning::ln::msgs::DecodeError on failure.
2325  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2326  */
2327 typedef struct LDKCResult_RouteHintDecodeErrorZ {
2328    /**
2329     * The contents of this CResult_RouteHintDecodeErrorZ, accessible via either
2330     * `err` or `result` depending on the state of `result_ok`.
2331     */
2332    union LDKCResult_RouteHintDecodeErrorZPtr contents;
2333    /**
2334     * Whether this CResult_RouteHintDecodeErrorZ represents a success state.
2335     */
2336    bool result_ok;
2337 } LDKCResult_RouteHintDecodeErrorZ;
2338
2339 /**
2340  * The contents of CResult_RouteHintHopDecodeErrorZ
2341  */
2342 typedef union LDKCResult_RouteHintHopDecodeErrorZPtr {
2343    /**
2344     * A pointer to the contents in the success state.
2345     * Reading from this pointer when `result_ok` is not set is undefined.
2346     */
2347    struct LDKRouteHintHop *result;
2348    /**
2349     * A pointer to the contents in the error state.
2350     * Reading from this pointer when `result_ok` is set is undefined.
2351     */
2352    struct LDKDecodeError *err;
2353 } LDKCResult_RouteHintHopDecodeErrorZPtr;
2354
2355 /**
2356  * A CResult_RouteHintHopDecodeErrorZ represents the result of a fallible operation,
2357  * containing a crate::lightning::routing::router::RouteHintHop on success and a crate::lightning::ln::msgs::DecodeError on failure.
2358  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2359  */
2360 typedef struct LDKCResult_RouteHintHopDecodeErrorZ {
2361    /**
2362     * The contents of this CResult_RouteHintHopDecodeErrorZ, accessible via either
2363     * `err` or `result` depending on the state of `result_ok`.
2364     */
2365    union LDKCResult_RouteHintHopDecodeErrorZPtr contents;
2366    /**
2367     * Whether this CResult_RouteHintHopDecodeErrorZ represents a success state.
2368     */
2369    bool result_ok;
2370 } LDKCResult_RouteHintHopDecodeErrorZ;
2371
2372
2373
2374 /**
2375  * Details of a channel, as returned by ChannelManager::list_channels and ChannelManager::list_usable_channels
2376  */
2377 typedef struct MUST_USE_STRUCT LDKChannelDetails {
2378    /**
2379     * A pointer to the opaque Rust object.
2380     * Nearly everywhere, inner must be non-null, however in places where
2381     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2382     */
2383    LDKnativeChannelDetails *inner;
2384    /**
2385     * Indicates that this is the only struct which contains the same pointer.
2386     * Rust functions which take ownership of an object provided via an argument require
2387     * this to be true and invalidate the object pointed to by inner.
2388     */
2389    bool is_owned;
2390 } LDKChannelDetails;
2391
2392 /**
2393  * A dynamically-allocated array of crate::lightning::ln::channelmanager::ChannelDetailss of arbitrary size.
2394  * This corresponds to std::vector in C++
2395  */
2396 typedef struct LDKCVec_ChannelDetailsZ {
2397    /**
2398     * The elements in the array.
2399     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
2400     */
2401    struct LDKChannelDetails *data;
2402    /**
2403     * The number of elements pointed to by `data`.
2404     */
2405    uintptr_t datalen;
2406 } LDKCVec_ChannelDetailsZ;
2407
2408
2409
2410 /**
2411  * An Err type for failure to process messages.
2412  */
2413 typedef struct MUST_USE_STRUCT LDKLightningError {
2414    /**
2415     * A pointer to the opaque Rust object.
2416     * Nearly everywhere, inner must be non-null, however in places where
2417     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2418     */
2419    LDKnativeLightningError *inner;
2420    /**
2421     * Indicates that this is the only struct which contains the same pointer.
2422     * Rust functions which take ownership of an object provided via an argument require
2423     * this to be true and invalidate the object pointed to by inner.
2424     */
2425    bool is_owned;
2426 } LDKLightningError;
2427
2428 /**
2429  * The contents of CResult_RouteLightningErrorZ
2430  */
2431 typedef union LDKCResult_RouteLightningErrorZPtr {
2432    /**
2433     * A pointer to the contents in the success state.
2434     * Reading from this pointer when `result_ok` is not set is undefined.
2435     */
2436    struct LDKRoute *result;
2437    /**
2438     * A pointer to the contents in the error state.
2439     * Reading from this pointer when `result_ok` is set is undefined.
2440     */
2441    struct LDKLightningError *err;
2442 } LDKCResult_RouteLightningErrorZPtr;
2443
2444 /**
2445  * A CResult_RouteLightningErrorZ represents the result of a fallible operation,
2446  * containing a crate::lightning::routing::router::Route on success and a crate::lightning::ln::msgs::LightningError on failure.
2447  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2448  */
2449 typedef struct LDKCResult_RouteLightningErrorZ {
2450    /**
2451     * The contents of this CResult_RouteLightningErrorZ, accessible via either
2452     * `err` or `result` depending on the state of `result_ok`.
2453     */
2454    union LDKCResult_RouteLightningErrorZPtr contents;
2455    /**
2456     * Whether this CResult_RouteLightningErrorZ represents a success state.
2457     */
2458    bool result_ok;
2459 } LDKCResult_RouteLightningErrorZ;
2460
2461 /**
2462  * Some information provided on receipt of payment depends on whether the payment received is a
2463  * spontaneous payment or a \"conventional\" lightning payment that's paying an invoice.
2464  */
2465 typedef enum LDKPaymentPurpose_Tag {
2466    /**
2467     * Information for receiving a payment that we generated an invoice for.
2468     */
2469    LDKPaymentPurpose_InvoicePayment,
2470    /**
2471     * Because this is a spontaneous payment, the payer generated their own preimage rather than us
2472     * (the payee) providing a preimage.
2473     */
2474    LDKPaymentPurpose_SpontaneousPayment,
2475    /**
2476     * Must be last for serialization purposes
2477     */
2478    LDKPaymentPurpose_Sentinel,
2479 } LDKPaymentPurpose_Tag;
2480
2481 typedef struct LDKPaymentPurpose_LDKInvoicePayment_Body {
2482    /**
2483     * The preimage to the payment_hash, if the payment hash (and secret) were fetched via
2484     * [`ChannelManager::create_inbound_payment`]. If provided, this can be handed directly to
2485     * [`ChannelManager::claim_funds`].
2486     *
2487     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
2488     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
2489     *
2490     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2491     */
2492    struct LDKThirtyTwoBytes payment_preimage;
2493    /**
2494     * The \"payment secret\". This authenticates the sender to the recipient, preventing a
2495     * number of deanonymization attacks during the routing process.
2496     * It is provided here for your reference, however its accuracy is enforced directly by
2497     * [`ChannelManager`] using the values you previously provided to
2498     * [`ChannelManager::create_inbound_payment`] or
2499     * [`ChannelManager::create_inbound_payment_for_hash`].
2500     *
2501     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
2502     * [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
2503     * [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
2504     */
2505    struct LDKThirtyTwoBytes payment_secret;
2506 } LDKPaymentPurpose_LDKInvoicePayment_Body;
2507
2508 typedef struct MUST_USE_STRUCT LDKPaymentPurpose {
2509    LDKPaymentPurpose_Tag tag;
2510    union {
2511       LDKPaymentPurpose_LDKInvoicePayment_Body invoice_payment;
2512       struct {
2513          struct LDKThirtyTwoBytes spontaneous_payment;
2514       };
2515    };
2516 } LDKPaymentPurpose;
2517
2518 /**
2519  * The contents of CResult_PaymentPurposeDecodeErrorZ
2520  */
2521 typedef union LDKCResult_PaymentPurposeDecodeErrorZPtr {
2522    /**
2523     * A pointer to the contents in the success state.
2524     * Reading from this pointer when `result_ok` is not set is undefined.
2525     */
2526    struct LDKPaymentPurpose *result;
2527    /**
2528     * A pointer to the contents in the error state.
2529     * Reading from this pointer when `result_ok` is set is undefined.
2530     */
2531    struct LDKDecodeError *err;
2532 } LDKCResult_PaymentPurposeDecodeErrorZPtr;
2533
2534 /**
2535  * A CResult_PaymentPurposeDecodeErrorZ represents the result of a fallible operation,
2536  * containing a crate::lightning::util::events::PaymentPurpose on success and a crate::lightning::ln::msgs::DecodeError on failure.
2537  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2538  */
2539 typedef struct LDKCResult_PaymentPurposeDecodeErrorZ {
2540    /**
2541     * The contents of this CResult_PaymentPurposeDecodeErrorZ, accessible via either
2542     * `err` or `result` depending on the state of `result_ok`.
2543     */
2544    union LDKCResult_PaymentPurposeDecodeErrorZPtr contents;
2545    /**
2546     * Whether this CResult_PaymentPurposeDecodeErrorZ represents a success state.
2547     */
2548    bool result_ok;
2549 } LDKCResult_PaymentPurposeDecodeErrorZ;
2550
2551 /**
2552  * The reason the channel was closed. See individual variants more details.
2553  */
2554 typedef enum LDKClosureReason_Tag {
2555    /**
2556     * Closure generated from receiving a peer error message.
2557     *
2558     * Our counterparty may have broadcasted their latest commitment state, and we have
2559     * as well.
2560     */
2561    LDKClosureReason_CounterpartyForceClosed,
2562    /**
2563     * Closure generated from [`ChannelManager::force_close_channel`], called by the user.
2564     *
2565     * [`ChannelManager::force_close_channel`]: crate::ln::channelmanager::ChannelManager::force_close_channel.
2566     */
2567    LDKClosureReason_HolderForceClosed,
2568    /**
2569     * The channel was closed after negotiating a cooperative close and we've now broadcasted
2570     * the cooperative close transaction. Note the shutdown may have been initiated by us.
2571     */
2572    LDKClosureReason_CooperativeClosure,
2573    /**
2574     * A commitment transaction was confirmed on chain, closing the channel. Most likely this
2575     * commitment transaction came from our counterparty, but it may also have come from
2576     * a copy of our own `ChannelMonitor`.
2577     */
2578    LDKClosureReason_CommitmentTxConfirmed,
2579    /**
2580     * The funding transaction failed to confirm in a timely manner on an inbound channel.
2581     */
2582    LDKClosureReason_FundingTimedOut,
2583    /**
2584     * Closure generated from processing an event, likely a HTLC forward/relay/reception.
2585     */
2586    LDKClosureReason_ProcessingError,
2587    /**
2588     * The peer disconnected prior to funding completing. In this case the spec mandates that we
2589     * forget the channel entirely - we can attempt again if the peer reconnects.
2590     *
2591     * In LDK versions prior to 0.0.107 this could also occur if we were unable to connect to the
2592     * peer because of mutual incompatibility between us and our channel counterparty.
2593     */
2594    LDKClosureReason_DisconnectedPeer,
2595    /**
2596     * Closure generated from `ChannelManager::read` if the ChannelMonitor is newer than
2597     * the ChannelManager deserialized.
2598     */
2599    LDKClosureReason_OutdatedChannelManager,
2600    /**
2601     * Must be last for serialization purposes
2602     */
2603    LDKClosureReason_Sentinel,
2604 } LDKClosureReason_Tag;
2605
2606 typedef struct LDKClosureReason_LDKCounterpartyForceClosed_Body {
2607    /**
2608     * The error which the peer sent us.
2609     *
2610     * The string should be sanitized before it is used (e.g emitted to logs
2611     * or printed to stdout). Otherwise, a well crafted error message may exploit
2612     * a security vulnerability in the terminal emulator or the logging subsystem.
2613     */
2614    struct LDKStr peer_msg;
2615 } LDKClosureReason_LDKCounterpartyForceClosed_Body;
2616
2617 typedef struct LDKClosureReason_LDKProcessingError_Body {
2618    /**
2619     * A developer-readable error message which we generated.
2620     */
2621    struct LDKStr err;
2622 } LDKClosureReason_LDKProcessingError_Body;
2623
2624 typedef struct MUST_USE_STRUCT LDKClosureReason {
2625    LDKClosureReason_Tag tag;
2626    union {
2627       LDKClosureReason_LDKCounterpartyForceClosed_Body counterparty_force_closed;
2628       LDKClosureReason_LDKProcessingError_Body processing_error;
2629    };
2630 } LDKClosureReason;
2631
2632 /**
2633  * An enum which can either contain a crate::lightning::util::events::ClosureReason or not
2634  */
2635 typedef enum LDKCOption_ClosureReasonZ_Tag {
2636    /**
2637     * When we're in this state, this COption_ClosureReasonZ contains a crate::lightning::util::events::ClosureReason
2638     */
2639    LDKCOption_ClosureReasonZ_Some,
2640    /**
2641     * When we're in this state, this COption_ClosureReasonZ contains nothing
2642     */
2643    LDKCOption_ClosureReasonZ_None,
2644    /**
2645     * Must be last for serialization purposes
2646     */
2647    LDKCOption_ClosureReasonZ_Sentinel,
2648 } LDKCOption_ClosureReasonZ_Tag;
2649
2650 typedef struct LDKCOption_ClosureReasonZ {
2651    LDKCOption_ClosureReasonZ_Tag tag;
2652    union {
2653       struct {
2654          struct LDKClosureReason some;
2655       };
2656    };
2657 } LDKCOption_ClosureReasonZ;
2658
2659 /**
2660  * The contents of CResult_COption_ClosureReasonZDecodeErrorZ
2661  */
2662 typedef union LDKCResult_COption_ClosureReasonZDecodeErrorZPtr {
2663    /**
2664     * A pointer to the contents in the success state.
2665     * Reading from this pointer when `result_ok` is not set is undefined.
2666     */
2667    struct LDKCOption_ClosureReasonZ *result;
2668    /**
2669     * A pointer to the contents in the error state.
2670     * Reading from this pointer when `result_ok` is set is undefined.
2671     */
2672    struct LDKDecodeError *err;
2673 } LDKCResult_COption_ClosureReasonZDecodeErrorZPtr;
2674
2675 /**
2676  * A CResult_COption_ClosureReasonZDecodeErrorZ represents the result of a fallible operation,
2677  * containing a crate::c_types::derived::COption_ClosureReasonZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
2678  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2679  */
2680 typedef struct LDKCResult_COption_ClosureReasonZDecodeErrorZ {
2681    /**
2682     * The contents of this CResult_COption_ClosureReasonZDecodeErrorZ, accessible via either
2683     * `err` or `result` depending on the state of `result_ok`.
2684     */
2685    union LDKCResult_COption_ClosureReasonZDecodeErrorZPtr contents;
2686    /**
2687     * Whether this CResult_COption_ClosureReasonZDecodeErrorZ represents a success state.
2688     */
2689    bool result_ok;
2690 } LDKCResult_COption_ClosureReasonZDecodeErrorZ;
2691
2692 /**
2693  * Intended destination of a failed HTLC as indicated in [`Event::HTLCHandlingFailed`].
2694  */
2695 typedef enum LDKHTLCDestination_Tag {
2696    /**
2697     * We tried forwarding to a channel but failed to do so. An example of such an instance is when
2698     * there is insufficient capacity in our outbound channel.
2699     */
2700    LDKHTLCDestination_NextHopChannel,
2701    /**
2702     * Scenario where we are unsure of the next node to forward the HTLC to.
2703     */
2704    LDKHTLCDestination_UnknownNextHop,
2705    /**
2706     * Failure scenario where an HTLC may have been forwarded to be intended for us,
2707     * but is invalid for some reason, so we reject it.
2708     *
2709     * Some of the reasons may include:
2710     * * HTLC Timeouts
2711     * * Expected MPP amount to claim does not equal HTLC total
2712     * * Claimable amount does not match expected amount
2713     */
2714    LDKHTLCDestination_FailedPayment,
2715    /**
2716     * Must be last for serialization purposes
2717     */
2718    LDKHTLCDestination_Sentinel,
2719 } LDKHTLCDestination_Tag;
2720
2721 typedef struct LDKHTLCDestination_LDKNextHopChannel_Body {
2722    /**
2723     * The `node_id` of the next node. For backwards compatibility, this field is
2724     * marked as optional, versions prior to 0.0.110 may not always be able to provide
2725     * counterparty node information.
2726     *
2727     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
2728     */
2729    struct LDKPublicKey node_id;
2730    /**
2731     * The outgoing `channel_id` between us and the next node.
2732     */
2733    struct LDKThirtyTwoBytes channel_id;
2734 } LDKHTLCDestination_LDKNextHopChannel_Body;
2735
2736 typedef struct LDKHTLCDestination_LDKUnknownNextHop_Body {
2737    /**
2738     * Short channel id we are requesting to forward an HTLC to.
2739     */
2740    uint64_t requested_forward_scid;
2741 } LDKHTLCDestination_LDKUnknownNextHop_Body;
2742
2743 typedef struct LDKHTLCDestination_LDKFailedPayment_Body {
2744    /**
2745     * The payment hash of the payment we attempted to process.
2746     */
2747    struct LDKThirtyTwoBytes payment_hash;
2748 } LDKHTLCDestination_LDKFailedPayment_Body;
2749
2750 typedef struct MUST_USE_STRUCT LDKHTLCDestination {
2751    LDKHTLCDestination_Tag tag;
2752    union {
2753       LDKHTLCDestination_LDKNextHopChannel_Body next_hop_channel;
2754       LDKHTLCDestination_LDKUnknownNextHop_Body unknown_next_hop;
2755       LDKHTLCDestination_LDKFailedPayment_Body failed_payment;
2756    };
2757 } LDKHTLCDestination;
2758
2759 /**
2760  * An enum which can either contain a crate::lightning::util::events::HTLCDestination or not
2761  */
2762 typedef enum LDKCOption_HTLCDestinationZ_Tag {
2763    /**
2764     * When we're in this state, this COption_HTLCDestinationZ contains a crate::lightning::util::events::HTLCDestination
2765     */
2766    LDKCOption_HTLCDestinationZ_Some,
2767    /**
2768     * When we're in this state, this COption_HTLCDestinationZ contains nothing
2769     */
2770    LDKCOption_HTLCDestinationZ_None,
2771    /**
2772     * Must be last for serialization purposes
2773     */
2774    LDKCOption_HTLCDestinationZ_Sentinel,
2775 } LDKCOption_HTLCDestinationZ_Tag;
2776
2777 typedef struct LDKCOption_HTLCDestinationZ {
2778    LDKCOption_HTLCDestinationZ_Tag tag;
2779    union {
2780       struct {
2781          struct LDKHTLCDestination some;
2782       };
2783    };
2784 } LDKCOption_HTLCDestinationZ;
2785
2786 /**
2787  * The contents of CResult_COption_HTLCDestinationZDecodeErrorZ
2788  */
2789 typedef union LDKCResult_COption_HTLCDestinationZDecodeErrorZPtr {
2790    /**
2791     * A pointer to the contents in the success state.
2792     * Reading from this pointer when `result_ok` is not set is undefined.
2793     */
2794    struct LDKCOption_HTLCDestinationZ *result;
2795    /**
2796     * A pointer to the contents in the error state.
2797     * Reading from this pointer when `result_ok` is set is undefined.
2798     */
2799    struct LDKDecodeError *err;
2800 } LDKCResult_COption_HTLCDestinationZDecodeErrorZPtr;
2801
2802 /**
2803  * A CResult_COption_HTLCDestinationZDecodeErrorZ represents the result of a fallible operation,
2804  * containing a crate::c_types::derived::COption_HTLCDestinationZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
2805  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
2806  */
2807 typedef struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ {
2808    /**
2809     * The contents of this CResult_COption_HTLCDestinationZDecodeErrorZ, accessible via either
2810     * `err` or `result` depending on the state of `result_ok`.
2811     */
2812    union LDKCResult_COption_HTLCDestinationZDecodeErrorZPtr contents;
2813    /**
2814     * Whether this CResult_COption_HTLCDestinationZDecodeErrorZ represents a success state.
2815     */
2816    bool result_ok;
2817 } LDKCResult_COption_HTLCDestinationZDecodeErrorZ;
2818
2819
2820
2821 /**
2822  * A channel_update message to be sent or received from a peer
2823  */
2824 typedef struct MUST_USE_STRUCT LDKChannelUpdate {
2825    /**
2826     * A pointer to the opaque Rust object.
2827     * Nearly everywhere, inner must be non-null, however in places where
2828     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2829     */
2830    LDKnativeChannelUpdate *inner;
2831    /**
2832     * Indicates that this is the only struct which contains the same pointer.
2833     * Rust functions which take ownership of an object provided via an argument require
2834     * this to be true and invalidate the object pointed to by inner.
2835     */
2836    bool is_owned;
2837 } LDKChannelUpdate;
2838
2839 /**
2840  * Update to the [`NetworkGraph`] based on payment failure information conveyed via the Onion
2841  * return packet by a node along the route. See [BOLT #4] for details.
2842  *
2843  * [BOLT #4]: https://github.com/lightning/bolts/blob/master/04-onion-routing.md
2844  */
2845 typedef enum LDKNetworkUpdate_Tag {
2846    /**
2847     * An error indicating a `channel_update` messages should be applied via
2848     * [`NetworkGraph::update_channel`].
2849     */
2850    LDKNetworkUpdate_ChannelUpdateMessage,
2851    /**
2852     * An error indicating that a channel failed to route a payment, which should be applied via
2853     * [`NetworkGraph::channel_failed`].
2854     */
2855    LDKNetworkUpdate_ChannelFailure,
2856    /**
2857     * An error indicating that a node failed to route a payment, which should be applied via
2858     * [`NetworkGraph::node_failed`].
2859     */
2860    LDKNetworkUpdate_NodeFailure,
2861    /**
2862     * Must be last for serialization purposes
2863     */
2864    LDKNetworkUpdate_Sentinel,
2865 } LDKNetworkUpdate_Tag;
2866
2867 typedef struct LDKNetworkUpdate_LDKChannelUpdateMessage_Body {
2868    /**
2869     * The update to apply via [`NetworkGraph::update_channel`].
2870     */
2871    struct LDKChannelUpdate msg;
2872 } LDKNetworkUpdate_LDKChannelUpdateMessage_Body;
2873
2874 typedef struct LDKNetworkUpdate_LDKChannelFailure_Body {
2875    /**
2876     * The short channel id of the closed channel.
2877     */
2878    uint64_t short_channel_id;
2879    /**
2880     * Whether the channel should be permanently removed or temporarily disabled until a new
2881     * `channel_update` message is received.
2882     */
2883    bool is_permanent;
2884 } LDKNetworkUpdate_LDKChannelFailure_Body;
2885
2886 typedef struct LDKNetworkUpdate_LDKNodeFailure_Body {
2887    /**
2888     * The node id of the failed node.
2889     */
2890    struct LDKPublicKey node_id;
2891    /**
2892     * Whether the node should be permanently removed from consideration or can be restored
2893     * when a new `channel_update` message is received.
2894     */
2895    bool is_permanent;
2896 } LDKNetworkUpdate_LDKNodeFailure_Body;
2897
2898 typedef struct MUST_USE_STRUCT LDKNetworkUpdate {
2899    LDKNetworkUpdate_Tag tag;
2900    union {
2901       LDKNetworkUpdate_LDKChannelUpdateMessage_Body channel_update_message;
2902       LDKNetworkUpdate_LDKChannelFailure_Body channel_failure;
2903       LDKNetworkUpdate_LDKNodeFailure_Body node_failure;
2904    };
2905 } LDKNetworkUpdate;
2906
2907 /**
2908  * An enum which can either contain a crate::lightning::routing::gossip::NetworkUpdate or not
2909  */
2910 typedef enum LDKCOption_NetworkUpdateZ_Tag {
2911    /**
2912     * When we're in this state, this COption_NetworkUpdateZ contains a crate::lightning::routing::gossip::NetworkUpdate
2913     */
2914    LDKCOption_NetworkUpdateZ_Some,
2915    /**
2916     * When we're in this state, this COption_NetworkUpdateZ contains nothing
2917     */
2918    LDKCOption_NetworkUpdateZ_None,
2919    /**
2920     * Must be last for serialization purposes
2921     */
2922    LDKCOption_NetworkUpdateZ_Sentinel,
2923 } LDKCOption_NetworkUpdateZ_Tag;
2924
2925 typedef struct LDKCOption_NetworkUpdateZ {
2926    LDKCOption_NetworkUpdateZ_Tag tag;
2927    union {
2928       struct {
2929          struct LDKNetworkUpdate some;
2930       };
2931    };
2932 } LDKCOption_NetworkUpdateZ;
2933
2934
2935
2936 /**
2937  * A reference to a transaction output.
2938  *
2939  * Differs from bitcoin::blockdata::transaction::OutPoint as the index is a u16 instead of u32
2940  * due to LN's restrictions on index values. Should reduce (possibly) unsafe conversions this way.
2941  */
2942 typedef struct MUST_USE_STRUCT LDKOutPoint {
2943    /**
2944     * A pointer to the opaque Rust object.
2945     * Nearly everywhere, inner must be non-null, however in places where
2946     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2947     */
2948    LDKnativeOutPoint *inner;
2949    /**
2950     * Indicates that this is the only struct which contains the same pointer.
2951     * Rust functions which take ownership of an object provided via an argument require
2952     * this to be true and invalidate the object pointed to by inner.
2953     */
2954    bool is_owned;
2955 } LDKOutPoint;
2956
2957
2958
2959 /**
2960  * Information about a spendable output to a P2WSH script. See
2961  * SpendableOutputDescriptor::DelayedPaymentOutput for more details on how to spend this.
2962  */
2963 typedef struct MUST_USE_STRUCT LDKDelayedPaymentOutputDescriptor {
2964    /**
2965     * A pointer to the opaque Rust object.
2966     * Nearly everywhere, inner must be non-null, however in places where
2967     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2968     */
2969    LDKnativeDelayedPaymentOutputDescriptor *inner;
2970    /**
2971     * Indicates that this is the only struct which contains the same pointer.
2972     * Rust functions which take ownership of an object provided via an argument require
2973     * this to be true and invalidate the object pointed to by inner.
2974     */
2975    bool is_owned;
2976 } LDKDelayedPaymentOutputDescriptor;
2977
2978
2979
2980 /**
2981  * Information about a spendable output to our \"payment key\". See
2982  * SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this.
2983  */
2984 typedef struct MUST_USE_STRUCT LDKStaticPaymentOutputDescriptor {
2985    /**
2986     * A pointer to the opaque Rust object.
2987     * Nearly everywhere, inner must be non-null, however in places where
2988     * the Rust equivalent takes an Option, it may be set to null to indicate None.
2989     */
2990    LDKnativeStaticPaymentOutputDescriptor *inner;
2991    /**
2992     * Indicates that this is the only struct which contains the same pointer.
2993     * Rust functions which take ownership of an object provided via an argument require
2994     * this to be true and invalidate the object pointed to by inner.
2995     */
2996    bool is_owned;
2997 } LDKStaticPaymentOutputDescriptor;
2998
2999 /**
3000  * When on-chain outputs are created by rust-lightning (which our counterparty is not able to
3001  * claim at any point in the future) an event is generated which you must track and be able to
3002  * spend on-chain. The information needed to do this is provided in this enum, including the
3003  * outpoint describing which txid and output index is available, the full output which exists at
3004  * that txid/index, and any keys or other information required to sign.
3005  */
3006 typedef enum LDKSpendableOutputDescriptor_Tag {
3007    /**
3008     * An output to a script which was provided via KeysInterface directly, either from
3009     * `get_destination_script()` or `get_shutdown_scriptpubkey()`, thus you should already know
3010     * how to spend it. No secret keys are provided as rust-lightning was never given any key.
3011     * These may include outputs from a transaction punishing our counterparty or claiming an HTLC
3012     * on-chain using the payment preimage or after it has timed out.
3013     */
3014    LDKSpendableOutputDescriptor_StaticOutput,
3015    /**
3016     * An output to a P2WSH script which can be spent with a single signature after a CSV delay.
3017     *
3018     * The witness in the spending input should be:
3019     * <BIP 143 signature> <empty vector> (MINIMALIF standard rule) <provided witnessScript>
3020     *
3021     * Note that the nSequence field in the spending input must be set to to_self_delay
3022     * (which means the transaction is not broadcastable until at least to_self_delay
3023     * blocks after the outpoint confirms).
3024     *
3025     * These are generally the result of a \"revocable\" output to us, spendable only by us unless
3026     * it is an output from an old state which we broadcast (which should never happen).
3027     *
3028     * To derive the delayed_payment key which is used to sign for this input, you must pass the
3029     * holder delayed_payment_base_key (ie the private key which corresponds to the pubkey in
3030     * Sign::pubkeys().delayed_payment_basepoint) and the provided per_commitment_point to
3031     * chan_utils::derive_private_key. The public key can be generated without the secret key
3032     * using chan_utils::derive_public_key and only the delayed_payment_basepoint which appears in
3033     * Sign::pubkeys().
3034     *
3035     * To derive the revocation_pubkey provided here (which is used in the witness
3036     * script generation), you must pass the counterparty revocation_basepoint (which appears in the
3037     * call to Sign::ready_channel) and the provided per_commitment point
3038     * to chan_utils::derive_public_revocation_key.
3039     *
3040     * The witness script which is hashed and included in the output script_pubkey may be
3041     * regenerated by passing the revocation_pubkey (derived as above), our delayed_payment pubkey
3042     * (derived as above), and the to_self_delay contained here to
3043     * chan_utils::get_revokeable_redeemscript.
3044     */
3045    LDKSpendableOutputDescriptor_DelayedPaymentOutput,
3046    /**
3047     * An output to a P2WPKH, spendable exclusively by our payment key (ie the private key which
3048     * corresponds to the public key in Sign::pubkeys().payment_point).
3049     * The witness in the spending input, is, thus, simply:
3050     * <BIP 143 signature> <payment key>
3051     *
3052     * These are generally the result of our counterparty having broadcast the current state,
3053     * allowing us to claim the non-HTLC-encumbered outputs immediately.
3054     */
3055    LDKSpendableOutputDescriptor_StaticPaymentOutput,
3056    /**
3057     * Must be last for serialization purposes
3058     */
3059    LDKSpendableOutputDescriptor_Sentinel,
3060 } LDKSpendableOutputDescriptor_Tag;
3061
3062 typedef struct LDKSpendableOutputDescriptor_LDKStaticOutput_Body {
3063    /**
3064     * The outpoint which is spendable
3065     */
3066    struct LDKOutPoint outpoint;
3067    /**
3068     * The output which is referenced by the given outpoint.
3069     */
3070    struct LDKTxOut output;
3071 } LDKSpendableOutputDescriptor_LDKStaticOutput_Body;
3072
3073 typedef struct MUST_USE_STRUCT LDKSpendableOutputDescriptor {
3074    LDKSpendableOutputDescriptor_Tag tag;
3075    union {
3076       LDKSpendableOutputDescriptor_LDKStaticOutput_Body static_output;
3077       struct {
3078          struct LDKDelayedPaymentOutputDescriptor delayed_payment_output;
3079       };
3080       struct {
3081          struct LDKStaticPaymentOutputDescriptor static_payment_output;
3082       };
3083    };
3084 } LDKSpendableOutputDescriptor;
3085
3086 /**
3087  * A dynamically-allocated array of crate::lightning::chain::keysinterface::SpendableOutputDescriptors of arbitrary size.
3088  * This corresponds to std::vector in C++
3089  */
3090 typedef struct LDKCVec_SpendableOutputDescriptorZ {
3091    /**
3092     * The elements in the array.
3093     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
3094     */
3095    struct LDKSpendableOutputDescriptor *data;
3096    /**
3097     * The number of elements pointed to by `data`.
3098     */
3099    uintptr_t datalen;
3100 } LDKCVec_SpendableOutputDescriptorZ;
3101
3102
3103
3104 /**
3105  * Features used within the channel_type field in an OpenChannel message.
3106  *
3107  * A channel is always of some known \"type\", describing the transaction formats used and the exact
3108  * semantics of our interaction with our peer.
3109  *
3110  * Note that because a channel is a specific type which is proposed by the opener and accepted by
3111  * the counterparty, only required features are allowed here.
3112  *
3113  * This is serialized differently from other feature types - it is not prefixed by a length, and
3114  * thus must only appear inside a TLV where its length is known in advance.
3115  */
3116 typedef struct MUST_USE_STRUCT LDKChannelTypeFeatures {
3117    /**
3118     * A pointer to the opaque Rust object.
3119     * Nearly everywhere, inner must be non-null, however in places where
3120     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3121     */
3122    LDKnativeChannelTypeFeatures *inner;
3123    /**
3124     * Indicates that this is the only struct which contains the same pointer.
3125     * Rust functions which take ownership of an object provided via an argument require
3126     * this to be true and invalidate the object pointed to by inner.
3127     */
3128    bool is_owned;
3129 } LDKChannelTypeFeatures;
3130
3131 /**
3132  * An Event which you should probably take some action in response to.
3133  *
3134  * Note that while Writeable and Readable are implemented for Event, you probably shouldn't use
3135  * them directly as they don't round-trip exactly (for example FundingGenerationReady is never
3136  * written as it makes no sense to respond to it after reconnecting to peers).
3137  */
3138 typedef enum LDKEvent_Tag {
3139    /**
3140     * Used to indicate that the client should generate a funding transaction with the given
3141     * parameters and then call [`ChannelManager::funding_transaction_generated`].
3142     * Generated in [`ChannelManager`] message handling.
3143     * Note that *all inputs* in the funding transaction must spend SegWit outputs or your
3144     * counterparty can steal your funds!
3145     *
3146     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3147     * [`ChannelManager::funding_transaction_generated`]: crate::ln::channelmanager::ChannelManager::funding_transaction_generated
3148     */
3149    LDKEvent_FundingGenerationReady,
3150    /**
3151     * Indicates we've received (an offer of) money! Just gotta dig out that payment preimage and
3152     * feed it to [`ChannelManager::claim_funds`] to get it....
3153     *
3154     * Note that if the preimage is not known, you should call
3155     * [`ChannelManager::fail_htlc_backwards`] to free up resources for this HTLC and avoid
3156     * network congestion.
3157     * If you fail to call either [`ChannelManager::claim_funds`] or
3158     * [`ChannelManager::fail_htlc_backwards`] within the HTLC's timeout, the HTLC will be
3159     * automatically failed.
3160     *
3161     * # Note
3162     * LDK will not stop an inbound payment from being paid multiple times, so multiple
3163     * `PaymentReceived` events may be generated for the same payment.
3164     *
3165     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
3166     * [`ChannelManager::fail_htlc_backwards`]: crate::ln::channelmanager::ChannelManager::fail_htlc_backwards
3167     */
3168    LDKEvent_PaymentReceived,
3169    /**
3170     * Indicates a payment has been claimed and we've received money!
3171     *
3172     * This most likely occurs when [`ChannelManager::claim_funds`] has been called in response
3173     * to an [`Event::PaymentReceived`]. However, if we previously crashed during a
3174     * [`ChannelManager::claim_funds`] call you may see this event without a corresponding
3175     * [`Event::PaymentReceived`] event.
3176     *
3177     * # Note
3178     * LDK will not stop an inbound payment from being paid multiple times, so multiple
3179     * `PaymentReceived` events may be generated for the same payment. If you then call
3180     * [`ChannelManager::claim_funds`] twice for the same [`Event::PaymentReceived`] you may get
3181     * multiple `PaymentClaimed` events.
3182     *
3183     * [`ChannelManager::claim_funds`]: crate::ln::channelmanager::ChannelManager::claim_funds
3184     */
3185    LDKEvent_PaymentClaimed,
3186    /**
3187     * Indicates an outbound payment we made succeeded (i.e. it made it all the way to its target
3188     * and we got back the payment preimage for it).
3189     *
3190     * Note for MPP payments: in rare cases, this event may be preceded by a `PaymentPathFailed`
3191     * event. In this situation, you SHOULD treat this payment as having succeeded.
3192     */
3193    LDKEvent_PaymentSent,
3194    /**
3195     * Indicates an outbound payment failed. Individual [`Event::PaymentPathFailed`] events
3196     * provide failure information for each MPP part in the payment.
3197     *
3198     * This event is provided once there are no further pending HTLCs for the payment and the
3199     * payment is no longer retryable, either due to a several-block timeout or because
3200     * [`ChannelManager::abandon_payment`] was previously called for the corresponding payment.
3201     *
3202     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3203     */
3204    LDKEvent_PaymentFailed,
3205    /**
3206     * Indicates that a path for an outbound payment was successful.
3207     *
3208     * Always generated after [`Event::PaymentSent`] and thus useful for scoring channels. See
3209     * [`Event::PaymentSent`] for obtaining the payment preimage.
3210     */
3211    LDKEvent_PaymentPathSuccessful,
3212    /**
3213     * Indicates an outbound HTLC we sent failed. Probably some intermediary node dropped
3214     * something. You may wish to retry with a different route.
3215     *
3216     * Note that this does *not* indicate that all paths for an MPP payment have failed, see
3217     * [`Event::PaymentFailed`] and [`all_paths_failed`].
3218     *
3219     * [`all_paths_failed`]: Self::PaymentPathFailed::all_paths_failed
3220     */
3221    LDKEvent_PaymentPathFailed,
3222    /**
3223     * Indicates that a probe payment we sent returned successful, i.e., only failed at the destination.
3224     */
3225    LDKEvent_ProbeSuccessful,
3226    /**
3227     * Indicates that a probe payment we sent failed at an intermediary node on the path.
3228     */
3229    LDKEvent_ProbeFailed,
3230    /**
3231     * Used to indicate that [`ChannelManager::process_pending_htlc_forwards`] should be called at
3232     * a time in the future.
3233     *
3234     * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
3235     */
3236    LDKEvent_PendingHTLCsForwardable,
3237    /**
3238     * Used to indicate that an output which you should know how to spend was confirmed on chain
3239     * and is now spendable.
3240     * Such an output will *not* ever be spent by rust-lightning, and are not at risk of your
3241     * counterparty spending them due to some kind of timeout. Thus, you need to store them
3242     * somewhere and spend them when you create on-chain transactions.
3243     */
3244    LDKEvent_SpendableOutputs,
3245    /**
3246     * This event is generated when a payment has been successfully forwarded through us and a
3247     * forwarding fee earned.
3248     */
3249    LDKEvent_PaymentForwarded,
3250    /**
3251     * Used to indicate that a previously opened channel with the given `channel_id` is in the
3252     * process of closure.
3253     */
3254    LDKEvent_ChannelClosed,
3255    /**
3256     * Used to indicate to the user that they can abandon the funding transaction and recycle the
3257     * inputs for another purpose.
3258     */
3259    LDKEvent_DiscardFunding,
3260    /**
3261     * Indicates a request to open a new channel by a peer.
3262     *
3263     * To accept the request, call [`ChannelManager::accept_inbound_channel`]. To reject the
3264     * request, call [`ChannelManager::force_close_without_broadcasting_txn`].
3265     *
3266     * The event is only triggered when a new open channel request is received and the
3267     * [`UserConfig::manually_accept_inbound_channels`] config flag is set to true.
3268     *
3269     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3270     * [`ChannelManager::force_close_without_broadcasting_txn`]: crate::ln::channelmanager::ChannelManager::force_close_without_broadcasting_txn
3271     * [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
3272     */
3273    LDKEvent_OpenChannelRequest,
3274    /**
3275     * Indicates that the HTLC was accepted, but could not be processed when or after attempting to
3276     * forward it.
3277     *
3278     * Some scenarios where this event may be sent include:
3279     * * Insufficient capacity in the outbound channel
3280     * * While waiting to forward the HTLC, the channel it is meant to be forwarded through closes
3281     * * When an unknown SCID is requested for forwarding a payment.
3282     * * Claiming an amount for an MPP payment that exceeds the HTLC total
3283     * * The HTLC has timed out
3284     *
3285     * This event, however, does not get generated if an HTLC fails to meet the forwarding
3286     * requirements (i.e. insufficient fees paid, or a CLTV that is too soon).
3287     */
3288    LDKEvent_HTLCHandlingFailed,
3289    /**
3290     * Must be last for serialization purposes
3291     */
3292    LDKEvent_Sentinel,
3293 } LDKEvent_Tag;
3294
3295 typedef struct LDKEvent_LDKFundingGenerationReady_Body {
3296    /**
3297     * The random channel_id we picked which you'll need to pass into
3298     * [`ChannelManager::funding_transaction_generated`].
3299     *
3300     * [`ChannelManager::funding_transaction_generated`]: crate::ln::channelmanager::ChannelManager::funding_transaction_generated
3301     */
3302    struct LDKThirtyTwoBytes temporary_channel_id;
3303    /**
3304     * The counterparty's node_id, which you'll need to pass back into
3305     * [`ChannelManager::funding_transaction_generated`].
3306     *
3307     * [`ChannelManager::funding_transaction_generated`]: crate::ln::channelmanager::ChannelManager::funding_transaction_generated
3308     */
3309    struct LDKPublicKey counterparty_node_id;
3310    /**
3311     * The value, in satoshis, that the output should have.
3312     */
3313    uint64_t channel_value_satoshis;
3314    /**
3315     * The script which should be used in the transaction output.
3316     */
3317    struct LDKCVec_u8Z output_script;
3318    /**
3319     * The `user_channel_id` value passed in to [`ChannelManager::create_channel`], or 0 for
3320     * an inbound channel.
3321     *
3322     * [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
3323     */
3324    uint64_t user_channel_id;
3325 } LDKEvent_LDKFundingGenerationReady_Body;
3326
3327 typedef struct LDKEvent_LDKPaymentReceived_Body {
3328    /**
3329     * The hash for which the preimage should be handed to the ChannelManager. Note that LDK will
3330     * not stop you from registering duplicate payment hashes for inbound payments.
3331     */
3332    struct LDKThirtyTwoBytes payment_hash;
3333    /**
3334     * The value, in thousandths of a satoshi, that this payment is for.
3335     */
3336    uint64_t amount_msat;
3337    /**
3338     * Information for claiming this received payment, based on whether the purpose of the
3339     * payment is to pay an invoice or to send a spontaneous payment.
3340     */
3341    struct LDKPaymentPurpose purpose;
3342 } LDKEvent_LDKPaymentReceived_Body;
3343
3344 typedef struct LDKEvent_LDKPaymentClaimed_Body {
3345    /**
3346     * The payment hash of the claimed payment. Note that LDK will not stop you from
3347     * registering duplicate payment hashes for inbound payments.
3348     */
3349    struct LDKThirtyTwoBytes payment_hash;
3350    /**
3351     * The value, in thousandths of a satoshi, that this payment is for.
3352     */
3353    uint64_t amount_msat;
3354    /**
3355     * The purpose of this claimed payment, i.e. whether the payment was for an invoice or a
3356     * spontaneous payment.
3357     */
3358    struct LDKPaymentPurpose purpose;
3359 } LDKEvent_LDKPaymentClaimed_Body;
3360
3361 typedef struct LDKEvent_LDKPaymentSent_Body {
3362    /**
3363     * The id returned by [`ChannelManager::send_payment`] and used with
3364     * [`ChannelManager::retry_payment`].
3365     *
3366     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3367     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3368     *
3369     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3370     */
3371    struct LDKThirtyTwoBytes payment_id;
3372    /**
3373     * The preimage to the hash given to ChannelManager::send_payment.
3374     * Note that this serves as a payment receipt, if you wish to have such a thing, you must
3375     * store it somehow!
3376     */
3377    struct LDKThirtyTwoBytes payment_preimage;
3378    /**
3379     * The hash that was given to [`ChannelManager::send_payment`].
3380     *
3381     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3382     */
3383    struct LDKThirtyTwoBytes payment_hash;
3384    /**
3385     * The total fee which was spent at intermediate hops in this payment, across all paths.
3386     *
3387     * Note that, like [`Route::get_total_fees`] this does *not* include any potential
3388     * overpayment to the recipient node.
3389     *
3390     * If the recipient or an intermediate node misbehaves and gives us free money, this may
3391     * overstate the amount paid, though this is unlikely.
3392     *
3393     * [`Route::get_total_fees`]: crate::routing::router::Route::get_total_fees
3394     */
3395    struct LDKCOption_u64Z fee_paid_msat;
3396 } LDKEvent_LDKPaymentSent_Body;
3397
3398 typedef struct LDKEvent_LDKPaymentFailed_Body {
3399    /**
3400     * The id returned by [`ChannelManager::send_payment`] and used with
3401     * [`ChannelManager::retry_payment`] and [`ChannelManager::abandon_payment`].
3402     *
3403     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3404     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3405     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3406     */
3407    struct LDKThirtyTwoBytes payment_id;
3408    /**
3409     * The hash that was given to [`ChannelManager::send_payment`].
3410     *
3411     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3412     */
3413    struct LDKThirtyTwoBytes payment_hash;
3414 } LDKEvent_LDKPaymentFailed_Body;
3415
3416 typedef struct LDKEvent_LDKPaymentPathSuccessful_Body {
3417    /**
3418     * The id returned by [`ChannelManager::send_payment`] and used with
3419     * [`ChannelManager::retry_payment`].
3420     *
3421     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3422     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3423     */
3424    struct LDKThirtyTwoBytes payment_id;
3425    /**
3426     * The hash that was given to [`ChannelManager::send_payment`].
3427     *
3428     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3429     *
3430     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3431     */
3432    struct LDKThirtyTwoBytes payment_hash;
3433    /**
3434     * The payment path that was successful.
3435     *
3436     * May contain a closed channel if the HTLC sent along the path was fulfilled on chain.
3437     */
3438    struct LDKCVec_RouteHopZ path;
3439 } LDKEvent_LDKPaymentPathSuccessful_Body;
3440
3441 typedef struct LDKEvent_LDKPaymentPathFailed_Body {
3442    /**
3443     * The id returned by [`ChannelManager::send_payment`] and used with
3444     * [`ChannelManager::retry_payment`] and [`ChannelManager::abandon_payment`].
3445     *
3446     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3447     * [`ChannelManager::retry_payment`]: crate::ln::channelmanager::ChannelManager::retry_payment
3448     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3449     *
3450     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3451     */
3452    struct LDKThirtyTwoBytes payment_id;
3453    /**
3454     * The hash that was given to [`ChannelManager::send_payment`].
3455     *
3456     * [`ChannelManager::send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
3457     */
3458    struct LDKThirtyTwoBytes payment_hash;
3459    /**
3460     * Indicates the payment was rejected for some reason by the recipient. This implies that
3461     * the payment has failed, not just the route in question. If this is not set, you may
3462     * retry the payment via a different route.
3463     */
3464    bool payment_failed_permanently;
3465    /**
3466     * Any failure information conveyed via the Onion return packet by a node along the failed
3467     * payment route.
3468     *
3469     * Should be applied to the [`NetworkGraph`] so that routing decisions can take into
3470     * account the update.
3471     *
3472     * [`NetworkGraph`]: crate::routing::gossip::NetworkGraph
3473     */
3474    struct LDKCOption_NetworkUpdateZ network_update;
3475    /**
3476     * For both single-path and multi-path payments, this is set if all paths of the payment have
3477     * failed. This will be set to false if (1) this is an MPP payment and (2) other parts of the
3478     * larger MPP payment were still in flight when this event was generated.
3479     *
3480     * Note that if you are retrying individual MPP parts, using this value to determine if a
3481     * payment has fully failed is race-y. Because multiple failures can happen prior to events
3482     * being processed, you may retry in response to a first failure, with a second failure
3483     * (with `all_paths_failed` set) still pending. Then, when the second failure is processed
3484     * you will see `all_paths_failed` set even though the retry of the first failure still
3485     * has an associated in-flight HTLC. See (1) for an example of such a failure.
3486     *
3487     * If you wish to retry individual MPP parts and learn when a payment has failed, you must
3488     * call [`ChannelManager::abandon_payment`] and wait for a [`Event::PaymentFailed`] event.
3489     *
3490     * (1) <https://github.com/lightningdevkit/rust-lightning/issues/1164>
3491     *
3492     * [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
3493     */
3494    bool all_paths_failed;
3495    /**
3496     * The payment path that failed.
3497     */
3498    struct LDKCVec_RouteHopZ path;
3499    /**
3500     * The channel responsible for the failed payment path.
3501     *
3502     * Note that for route hints or for the first hop in a path this may be an SCID alias and
3503     * may not refer to a channel in the public network graph. These aliases may also collide
3504     * with channels in the public network graph.
3505     *
3506     * If this is `Some`, then the corresponding channel should be avoided when the payment is
3507     * retried. May be `None` for older [`Event`] serializations.
3508     */
3509    struct LDKCOption_u64Z short_channel_id;
3510    /**
3511     * Parameters needed to compute a new [`Route`] when retrying the failed payment path.
3512     *
3513     * See [`find_route`] for details.
3514     *
3515     * [`Route`]: crate::routing::router::Route
3516     * [`find_route`]: crate::routing::router::find_route
3517     *
3518     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3519     */
3520    struct LDKRouteParameters retry;
3521 } LDKEvent_LDKPaymentPathFailed_Body;
3522
3523 typedef struct LDKEvent_LDKProbeSuccessful_Body {
3524    /**
3525     * The id returned by [`ChannelManager::send_probe`].
3526     *
3527     * [`ChannelManager::send_probe`]: crate::ln::channelmanager::ChannelManager::send_probe
3528     */
3529    struct LDKThirtyTwoBytes payment_id;
3530    /**
3531     * The hash generated by [`ChannelManager::send_probe`].
3532     *
3533     * [`ChannelManager::send_probe`]: crate::ln::channelmanager::ChannelManager::send_probe
3534     */
3535    struct LDKThirtyTwoBytes payment_hash;
3536    /**
3537     * The payment path that was successful.
3538     */
3539    struct LDKCVec_RouteHopZ path;
3540 } LDKEvent_LDKProbeSuccessful_Body;
3541
3542 typedef struct LDKEvent_LDKProbeFailed_Body {
3543    /**
3544     * The id returned by [`ChannelManager::send_probe`].
3545     *
3546     * [`ChannelManager::send_probe`]: crate::ln::channelmanager::ChannelManager::send_probe
3547     */
3548    struct LDKThirtyTwoBytes payment_id;
3549    /**
3550     * The hash generated by [`ChannelManager::send_probe`].
3551     *
3552     * [`ChannelManager::send_probe`]: crate::ln::channelmanager::ChannelManager::send_probe
3553     */
3554    struct LDKThirtyTwoBytes payment_hash;
3555    /**
3556     * The payment path that failed.
3557     */
3558    struct LDKCVec_RouteHopZ path;
3559    /**
3560     * The channel responsible for the failed probe.
3561     *
3562     * Note that for route hints or for the first hop in a path this may be an SCID alias and
3563     * may not refer to a channel in the public network graph. These aliases may also collide
3564     * with channels in the public network graph.
3565     */
3566    struct LDKCOption_u64Z short_channel_id;
3567 } LDKEvent_LDKProbeFailed_Body;
3568
3569 typedef struct LDKEvent_LDKPendingHTLCsForwardable_Body {
3570    /**
3571     * The minimum amount of time that should be waited prior to calling
3572     * process_pending_htlc_forwards. To increase the effort required to correlate payments,
3573     * you should wait a random amount of time in roughly the range (now + time_forwardable,
3574     * now + 5*time_forwardable).
3575     */
3576    uint64_t time_forwardable;
3577 } LDKEvent_LDKPendingHTLCsForwardable_Body;
3578
3579 typedef struct LDKEvent_LDKSpendableOutputs_Body {
3580    /**
3581     * The outputs which you should store as spendable by you.
3582     */
3583    struct LDKCVec_SpendableOutputDescriptorZ outputs;
3584 } LDKEvent_LDKSpendableOutputs_Body;
3585
3586 typedef struct LDKEvent_LDKPaymentForwarded_Body {
3587    /**
3588     * The incoming channel between the previous node and us. This is only `None` for events
3589     * generated or serialized by versions prior to 0.0.107.
3590     *
3591     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3592     */
3593    struct LDKThirtyTwoBytes prev_channel_id;
3594    /**
3595     * The outgoing channel between the next node and us. This is only `None` for events
3596     * generated or serialized by versions prior to 0.0.107.
3597     *
3598     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
3599     */
3600    struct LDKThirtyTwoBytes next_channel_id;
3601    /**
3602     * The fee, in milli-satoshis, which was earned as a result of the payment.
3603     *
3604     * Note that if we force-closed the channel over which we forwarded an HTLC while the HTLC
3605     * was pending, the amount the next hop claimed will have been rounded down to the nearest
3606     * whole satoshi. Thus, the fee calculated here may be higher than expected as we still
3607     * claimed the full value in millisatoshis from the source. In this case,
3608     * `claim_from_onchain_tx` will be set.
3609     *
3610     * If the channel which sent us the payment has been force-closed, we will claim the funds
3611     * via an on-chain transaction. In that case we do not yet know the on-chain transaction
3612     * fees which we will spend and will instead set this to `None`. It is possible duplicate
3613     * `PaymentForwarded` events are generated for the same payment iff `fee_earned_msat` is
3614     * `None`.
3615     */
3616    struct LDKCOption_u64Z fee_earned_msat;
3617    /**
3618     * If this is `true`, the forwarded HTLC was claimed by our counterparty via an on-chain
3619     * transaction.
3620     */
3621    bool claim_from_onchain_tx;
3622 } LDKEvent_LDKPaymentForwarded_Body;
3623
3624 typedef struct LDKEvent_LDKChannelClosed_Body {
3625    /**
3626     * The channel_id of the channel which has been closed. Note that on-chain transactions
3627     * resolving the channel are likely still awaiting confirmation.
3628     */
3629    struct LDKThirtyTwoBytes channel_id;
3630    /**
3631     * The `user_channel_id` value passed in to [`ChannelManager::create_channel`] for outbound
3632     * channels, or to [`ChannelManager::accept_inbound_channel`] for inbound channels if
3633     * [`UserConfig::manually_accept_inbound_channels`] config flag is set to true. Otherwise
3634     * `user_channel_id` will be 0 for an inbound channel.
3635     * This will always be zero for objects serialized with LDK versions prior to 0.0.102.
3636     *
3637     * [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
3638     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3639     * [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
3640     */
3641    uint64_t user_channel_id;
3642    /**
3643     * The reason the channel was closed.
3644     */
3645    struct LDKClosureReason reason;
3646 } LDKEvent_LDKChannelClosed_Body;
3647
3648 typedef struct LDKEvent_LDKDiscardFunding_Body {
3649    /**
3650     * The channel_id of the channel which has been closed.
3651     */
3652    struct LDKThirtyTwoBytes channel_id;
3653    /**
3654     * The full transaction received from the user
3655     */
3656    struct LDKTransaction transaction;
3657 } LDKEvent_LDKDiscardFunding_Body;
3658
3659 typedef struct LDKEvent_LDKOpenChannelRequest_Body {
3660    /**
3661     * The temporary channel ID of the channel requested to be opened.
3662     *
3663     * When responding to the request, the `temporary_channel_id` should be passed
3664     * back to the ChannelManager through [`ChannelManager::accept_inbound_channel`] to accept,
3665     * or through [`ChannelManager::force_close_without_broadcasting_txn`] to reject.
3666     *
3667     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3668     * [`ChannelManager::force_close_without_broadcasting_txn`]: crate::ln::channelmanager::ChannelManager::force_close_without_broadcasting_txn
3669     */
3670    struct LDKThirtyTwoBytes temporary_channel_id;
3671    /**
3672     * The node_id of the counterparty requesting to open the channel.
3673     *
3674     * When responding to the request, the `counterparty_node_id` should be passed
3675     * back to the `ChannelManager` through [`ChannelManager::accept_inbound_channel`] to
3676     * accept the request, or through [`ChannelManager::force_close_without_broadcasting_txn`] to reject the
3677     * request.
3678     *
3679     * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
3680     * [`ChannelManager::force_close_without_broadcasting_txn`]: crate::ln::channelmanager::ChannelManager::force_close_without_broadcasting_txn
3681     */
3682    struct LDKPublicKey counterparty_node_id;
3683    /**
3684     * The channel value of the requested channel.
3685     */
3686    uint64_t funding_satoshis;
3687    /**
3688     * Our starting balance in the channel if the request is accepted, in milli-satoshi.
3689     */
3690    uint64_t push_msat;
3691    /**
3692     * The features that this channel will operate with. If you reject the channel, a
3693     * well-behaved counterparty may automatically re-attempt the channel with a new set of
3694     * feature flags.
3695     *
3696     * Note that if [`ChannelTypeFeatures::supports_scid_privacy`] returns true on this type,
3697     * the resulting [`ChannelManager`] will not be readable by versions of LDK prior to
3698     * 0.0.106.
3699     *
3700     * Furthermore, note that if [`ChannelTypeFeatures::supports_zero_conf`] returns true on this type,
3701     * the resulting [`ChannelManager`] will not be readable by versions of LDK prior to
3702     * 0.0.107. Channels setting this type also need to get manually accepted via
3703     * [`crate::ln::channelmanager::ChannelManager::accept_inbound_channel_from_trusted_peer_0conf`],
3704     * or will be rejected otherwise.
3705     *
3706     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
3707     */
3708    struct LDKChannelTypeFeatures channel_type;
3709 } LDKEvent_LDKOpenChannelRequest_Body;
3710
3711 typedef struct LDKEvent_LDKHTLCHandlingFailed_Body {
3712    /**
3713     * The channel over which the HTLC was received.
3714     */
3715    struct LDKThirtyTwoBytes prev_channel_id;
3716    /**
3717     * Destination of the HTLC that failed to be processed.
3718     */
3719    struct LDKHTLCDestination failed_next_destination;
3720 } LDKEvent_LDKHTLCHandlingFailed_Body;
3721
3722 typedef struct MUST_USE_STRUCT LDKEvent {
3723    LDKEvent_Tag tag;
3724    union {
3725       LDKEvent_LDKFundingGenerationReady_Body funding_generation_ready;
3726       LDKEvent_LDKPaymentReceived_Body payment_received;
3727       LDKEvent_LDKPaymentClaimed_Body payment_claimed;
3728       LDKEvent_LDKPaymentSent_Body payment_sent;
3729       LDKEvent_LDKPaymentFailed_Body payment_failed;
3730       LDKEvent_LDKPaymentPathSuccessful_Body payment_path_successful;
3731       LDKEvent_LDKPaymentPathFailed_Body payment_path_failed;
3732       LDKEvent_LDKProbeSuccessful_Body probe_successful;
3733       LDKEvent_LDKProbeFailed_Body probe_failed;
3734       LDKEvent_LDKPendingHTLCsForwardable_Body pending_htl_cs_forwardable;
3735       LDKEvent_LDKSpendableOutputs_Body spendable_outputs;
3736       LDKEvent_LDKPaymentForwarded_Body payment_forwarded;
3737       LDKEvent_LDKChannelClosed_Body channel_closed;
3738       LDKEvent_LDKDiscardFunding_Body discard_funding;
3739       LDKEvent_LDKOpenChannelRequest_Body open_channel_request;
3740       LDKEvent_LDKHTLCHandlingFailed_Body htlc_handling_failed;
3741    };
3742 } LDKEvent;
3743
3744 /**
3745  * An enum which can either contain a crate::lightning::util::events::Event or not
3746  */
3747 typedef enum LDKCOption_EventZ_Tag {
3748    /**
3749     * When we're in this state, this COption_EventZ contains a crate::lightning::util::events::Event
3750     */
3751    LDKCOption_EventZ_Some,
3752    /**
3753     * When we're in this state, this COption_EventZ contains nothing
3754     */
3755    LDKCOption_EventZ_None,
3756    /**
3757     * Must be last for serialization purposes
3758     */
3759    LDKCOption_EventZ_Sentinel,
3760 } LDKCOption_EventZ_Tag;
3761
3762 typedef struct LDKCOption_EventZ {
3763    LDKCOption_EventZ_Tag tag;
3764    union {
3765       struct {
3766          struct LDKEvent some;
3767       };
3768    };
3769 } LDKCOption_EventZ;
3770
3771 /**
3772  * The contents of CResult_COption_EventZDecodeErrorZ
3773  */
3774 typedef union LDKCResult_COption_EventZDecodeErrorZPtr {
3775    /**
3776     * A pointer to the contents in the success state.
3777     * Reading from this pointer when `result_ok` is not set is undefined.
3778     */
3779    struct LDKCOption_EventZ *result;
3780    /**
3781     * A pointer to the contents in the error state.
3782     * Reading from this pointer when `result_ok` is set is undefined.
3783     */
3784    struct LDKDecodeError *err;
3785 } LDKCResult_COption_EventZDecodeErrorZPtr;
3786
3787 /**
3788  * A CResult_COption_EventZDecodeErrorZ represents the result of a fallible operation,
3789  * containing a crate::c_types::derived::COption_EventZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
3790  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
3791  */
3792 typedef struct LDKCResult_COption_EventZDecodeErrorZ {
3793    /**
3794     * The contents of this CResult_COption_EventZDecodeErrorZ, accessible via either
3795     * `err` or `result` depending on the state of `result_ok`.
3796     */
3797    union LDKCResult_COption_EventZDecodeErrorZPtr contents;
3798    /**
3799     * Whether this CResult_COption_EventZDecodeErrorZ represents a success state.
3800     */
3801    bool result_ok;
3802 } LDKCResult_COption_EventZDecodeErrorZ;
3803
3804
3805
3806 /**
3807  * An accept_channel message to be sent or received from a peer
3808  */
3809 typedef struct MUST_USE_STRUCT LDKAcceptChannel {
3810    /**
3811     * A pointer to the opaque Rust object.
3812     * Nearly everywhere, inner must be non-null, however in places where
3813     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3814     */
3815    LDKnativeAcceptChannel *inner;
3816    /**
3817     * Indicates that this is the only struct which contains the same pointer.
3818     * Rust functions which take ownership of an object provided via an argument require
3819     * this to be true and invalidate the object pointed to by inner.
3820     */
3821    bool is_owned;
3822 } LDKAcceptChannel;
3823
3824
3825
3826 /**
3827  * An open_channel message to be sent or received from a peer
3828  */
3829 typedef struct MUST_USE_STRUCT LDKOpenChannel {
3830    /**
3831     * A pointer to the opaque Rust object.
3832     * Nearly everywhere, inner must be non-null, however in places where
3833     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3834     */
3835    LDKnativeOpenChannel *inner;
3836    /**
3837     * Indicates that this is the only struct which contains the same pointer.
3838     * Rust functions which take ownership of an object provided via an argument require
3839     * this to be true and invalidate the object pointed to by inner.
3840     */
3841    bool is_owned;
3842 } LDKOpenChannel;
3843
3844
3845
3846 /**
3847  * A funding_created message to be sent or received from a peer
3848  */
3849 typedef struct MUST_USE_STRUCT LDKFundingCreated {
3850    /**
3851     * A pointer to the opaque Rust object.
3852     * Nearly everywhere, inner must be non-null, however in places where
3853     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3854     */
3855    LDKnativeFundingCreated *inner;
3856    /**
3857     * Indicates that this is the only struct which contains the same pointer.
3858     * Rust functions which take ownership of an object provided via an argument require
3859     * this to be true and invalidate the object pointed to by inner.
3860     */
3861    bool is_owned;
3862 } LDKFundingCreated;
3863
3864
3865
3866 /**
3867  * A funding_signed message to be sent or received from a peer
3868  */
3869 typedef struct MUST_USE_STRUCT LDKFundingSigned {
3870    /**
3871     * A pointer to the opaque Rust object.
3872     * Nearly everywhere, inner must be non-null, however in places where
3873     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3874     */
3875    LDKnativeFundingSigned *inner;
3876    /**
3877     * Indicates that this is the only struct which contains the same pointer.
3878     * Rust functions which take ownership of an object provided via an argument require
3879     * this to be true and invalidate the object pointed to by inner.
3880     */
3881    bool is_owned;
3882 } LDKFundingSigned;
3883
3884
3885
3886 /**
3887  * A channel_ready message to be sent or received from a peer
3888  */
3889 typedef struct MUST_USE_STRUCT LDKChannelReady {
3890    /**
3891     * A pointer to the opaque Rust object.
3892     * Nearly everywhere, inner must be non-null, however in places where
3893     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3894     */
3895    LDKnativeChannelReady *inner;
3896    /**
3897     * Indicates that this is the only struct which contains the same pointer.
3898     * Rust functions which take ownership of an object provided via an argument require
3899     * this to be true and invalidate the object pointed to by inner.
3900     */
3901    bool is_owned;
3902 } LDKChannelReady;
3903
3904
3905
3906 /**
3907  * An announcement_signatures message to be sent or received from a peer
3908  */
3909 typedef struct MUST_USE_STRUCT LDKAnnouncementSignatures {
3910    /**
3911     * A pointer to the opaque Rust object.
3912     * Nearly everywhere, inner must be non-null, however in places where
3913     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3914     */
3915    LDKnativeAnnouncementSignatures *inner;
3916    /**
3917     * Indicates that this is the only struct which contains the same pointer.
3918     * Rust functions which take ownership of an object provided via an argument require
3919     * this to be true and invalidate the object pointed to by inner.
3920     */
3921    bool is_owned;
3922 } LDKAnnouncementSignatures;
3923
3924
3925
3926 /**
3927  * Struct used to return values from revoke_and_ack messages, containing a bunch of commitment
3928  * transaction updates if they were pending.
3929  */
3930 typedef struct MUST_USE_STRUCT LDKCommitmentUpdate {
3931    /**
3932     * A pointer to the opaque Rust object.
3933     * Nearly everywhere, inner must be non-null, however in places where
3934     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3935     */
3936    LDKnativeCommitmentUpdate *inner;
3937    /**
3938     * Indicates that this is the only struct which contains the same pointer.
3939     * Rust functions which take ownership of an object provided via an argument require
3940     * this to be true and invalidate the object pointed to by inner.
3941     */
3942    bool is_owned;
3943 } LDKCommitmentUpdate;
3944
3945
3946
3947 /**
3948  * A revoke_and_ack message to be sent or received from a peer
3949  */
3950 typedef struct MUST_USE_STRUCT LDKRevokeAndACK {
3951    /**
3952     * A pointer to the opaque Rust object.
3953     * Nearly everywhere, inner must be non-null, however in places where
3954     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3955     */
3956    LDKnativeRevokeAndACK *inner;
3957    /**
3958     * Indicates that this is the only struct which contains the same pointer.
3959     * Rust functions which take ownership of an object provided via an argument require
3960     * this to be true and invalidate the object pointed to by inner.
3961     */
3962    bool is_owned;
3963 } LDKRevokeAndACK;
3964
3965
3966
3967 /**
3968  * A closing_signed message to be sent or received from a peer
3969  */
3970 typedef struct MUST_USE_STRUCT LDKClosingSigned {
3971    /**
3972     * A pointer to the opaque Rust object.
3973     * Nearly everywhere, inner must be non-null, however in places where
3974     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3975     */
3976    LDKnativeClosingSigned *inner;
3977    /**
3978     * Indicates that this is the only struct which contains the same pointer.
3979     * Rust functions which take ownership of an object provided via an argument require
3980     * this to be true and invalidate the object pointed to by inner.
3981     */
3982    bool is_owned;
3983 } LDKClosingSigned;
3984
3985
3986
3987 /**
3988  * A shutdown message to be sent or received from a peer
3989  */
3990 typedef struct MUST_USE_STRUCT LDKShutdown {
3991    /**
3992     * A pointer to the opaque Rust object.
3993     * Nearly everywhere, inner must be non-null, however in places where
3994     * the Rust equivalent takes an Option, it may be set to null to indicate None.
3995     */
3996    LDKnativeShutdown *inner;
3997    /**
3998     * Indicates that this is the only struct which contains the same pointer.
3999     * Rust functions which take ownership of an object provided via an argument require
4000     * this to be true and invalidate the object pointed to by inner.
4001     */
4002    bool is_owned;
4003 } LDKShutdown;
4004
4005
4006
4007 /**
4008  * A channel_reestablish message to be sent or received from a peer
4009  */
4010 typedef struct MUST_USE_STRUCT LDKChannelReestablish {
4011    /**
4012     * A pointer to the opaque Rust object.
4013     * Nearly everywhere, inner must be non-null, however in places where
4014     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4015     */
4016    LDKnativeChannelReestablish *inner;
4017    /**
4018     * Indicates that this is the only struct which contains the same pointer.
4019     * Rust functions which take ownership of an object provided via an argument require
4020     * this to be true and invalidate the object pointed to by inner.
4021     */
4022    bool is_owned;
4023 } LDKChannelReestablish;
4024
4025
4026
4027 /**
4028  * A channel_announcement message to be sent or received from a peer
4029  */
4030 typedef struct MUST_USE_STRUCT LDKChannelAnnouncement {
4031    /**
4032     * A pointer to the opaque Rust object.
4033     * Nearly everywhere, inner must be non-null, however in places where
4034     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4035     */
4036    LDKnativeChannelAnnouncement *inner;
4037    /**
4038     * Indicates that this is the only struct which contains the same pointer.
4039     * Rust functions which take ownership of an object provided via an argument require
4040     * this to be true and invalidate the object pointed to by inner.
4041     */
4042    bool is_owned;
4043 } LDKChannelAnnouncement;
4044
4045
4046
4047 /**
4048  * An error message to be sent or received from a peer
4049  */
4050 typedef struct MUST_USE_STRUCT LDKErrorMessage {
4051    /**
4052     * A pointer to the opaque Rust object.
4053     * Nearly everywhere, inner must be non-null, however in places where
4054     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4055     */
4056    LDKnativeErrorMessage *inner;
4057    /**
4058     * Indicates that this is the only struct which contains the same pointer.
4059     * Rust functions which take ownership of an object provided via an argument require
4060     * this to be true and invalidate the object pointed to by inner.
4061     */
4062    bool is_owned;
4063 } LDKErrorMessage;
4064
4065
4066
4067 /**
4068  * A warning message to be sent or received from a peer
4069  */
4070 typedef struct MUST_USE_STRUCT LDKWarningMessage {
4071    /**
4072     * A pointer to the opaque Rust object.
4073     * Nearly everywhere, inner must be non-null, however in places where
4074     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4075     */
4076    LDKnativeWarningMessage *inner;
4077    /**
4078     * Indicates that this is the only struct which contains the same pointer.
4079     * Rust functions which take ownership of an object provided via an argument require
4080     * this to be true and invalidate the object pointed to by inner.
4081     */
4082    bool is_owned;
4083 } LDKWarningMessage;
4084
4085 /**
4086  * Used to put an error message in a LightningError
4087  */
4088 typedef enum LDKErrorAction_Tag {
4089    /**
4090     * The peer took some action which made us think they were useless. Disconnect them.
4091     */
4092    LDKErrorAction_DisconnectPeer,
4093    /**
4094     * The peer did something harmless that we weren't able to process, just log and ignore
4095     */
4096    LDKErrorAction_IgnoreError,
4097    /**
4098     * The peer did something harmless that we weren't able to meaningfully process.
4099     * If the error is logged, log it at the given level.
4100     */
4101    LDKErrorAction_IgnoreAndLog,
4102    /**
4103     * The peer provided us with a gossip message which we'd already seen. In most cases this
4104     * should be ignored, but it may result in the message being forwarded if it is a duplicate of
4105     * our own channel announcements.
4106     */
4107    LDKErrorAction_IgnoreDuplicateGossip,
4108    /**
4109     * The peer did something incorrect. Tell them.
4110     */
4111    LDKErrorAction_SendErrorMessage,
4112    /**
4113     * The peer did something incorrect. Tell them without closing any channels.
4114     */
4115    LDKErrorAction_SendWarningMessage,
4116    /**
4117     * Must be last for serialization purposes
4118     */
4119    LDKErrorAction_Sentinel,
4120 } LDKErrorAction_Tag;
4121
4122 typedef struct LDKErrorAction_LDKDisconnectPeer_Body {
4123    /**
4124     * An error message which we should make an effort to send before we disconnect.
4125     *
4126     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
4127     */
4128    struct LDKErrorMessage msg;
4129 } LDKErrorAction_LDKDisconnectPeer_Body;
4130
4131 typedef struct LDKErrorAction_LDKSendErrorMessage_Body {
4132    /**
4133     * The message to send.
4134     */
4135    struct LDKErrorMessage msg;
4136 } LDKErrorAction_LDKSendErrorMessage_Body;
4137
4138 typedef struct LDKErrorAction_LDKSendWarningMessage_Body {
4139    /**
4140     * The message to send.
4141     */
4142    struct LDKWarningMessage msg;
4143    /**
4144     * The peer may have done something harmless that we weren't able to meaningfully process,
4145     * though we should still tell them about it.
4146     * If this event is logged, log it at the given level.
4147     */
4148    enum LDKLevel log_level;
4149 } LDKErrorAction_LDKSendWarningMessage_Body;
4150
4151 typedef struct MUST_USE_STRUCT LDKErrorAction {
4152    LDKErrorAction_Tag tag;
4153    union {
4154       LDKErrorAction_LDKDisconnectPeer_Body disconnect_peer;
4155       struct {
4156          enum LDKLevel ignore_and_log;
4157       };
4158       LDKErrorAction_LDKSendErrorMessage_Body send_error_message;
4159       LDKErrorAction_LDKSendWarningMessage_Body send_warning_message;
4160    };
4161 } LDKErrorAction;
4162
4163
4164
4165 /**
4166  * A query_channel_range message is used to query a peer for channel
4167  * UTXOs in a range of blocks. The recipient of a query makes a best
4168  * effort to reply to the query using one or more reply_channel_range
4169  * messages.
4170  */
4171 typedef struct MUST_USE_STRUCT LDKQueryChannelRange {
4172    /**
4173     * A pointer to the opaque Rust object.
4174     * Nearly everywhere, inner must be non-null, however in places where
4175     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4176     */
4177    LDKnativeQueryChannelRange *inner;
4178    /**
4179     * Indicates that this is the only struct which contains the same pointer.
4180     * Rust functions which take ownership of an object provided via an argument require
4181     * this to be true and invalidate the object pointed to by inner.
4182     */
4183    bool is_owned;
4184 } LDKQueryChannelRange;
4185
4186
4187
4188 /**
4189  * A query_short_channel_ids message is used to query a peer for
4190  * routing gossip messages related to one or more short_channel_ids.
4191  * The query recipient will reply with the latest, if available,
4192  * channel_announcement, channel_update and node_announcement messages
4193  * it maintains for the requested short_channel_ids followed by a
4194  * reply_short_channel_ids_end message. The short_channel_ids sent in
4195  * this query are encoded. We only support encoding_type=0 uncompressed
4196  * serialization and do not support encoding_type=1 zlib serialization.
4197  */
4198 typedef struct MUST_USE_STRUCT LDKQueryShortChannelIds {
4199    /**
4200     * A pointer to the opaque Rust object.
4201     * Nearly everywhere, inner must be non-null, however in places where
4202     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4203     */
4204    LDKnativeQueryShortChannelIds *inner;
4205    /**
4206     * Indicates that this is the only struct which contains the same pointer.
4207     * Rust functions which take ownership of an object provided via an argument require
4208     * this to be true and invalidate the object pointed to by inner.
4209     */
4210    bool is_owned;
4211 } LDKQueryShortChannelIds;
4212
4213
4214
4215 /**
4216  * A reply_channel_range message is a reply to a query_channel_range
4217  * message. Multiple reply_channel_range messages can be sent in reply
4218  * to a single query_channel_range message. The query recipient makes a
4219  * best effort to respond based on their local network view which may
4220  * not be a perfect view of the network. The short_channel_ids in the
4221  * reply are encoded. We only support encoding_type=0 uncompressed
4222  * serialization and do not support encoding_type=1 zlib serialization.
4223  */
4224 typedef struct MUST_USE_STRUCT LDKReplyChannelRange {
4225    /**
4226     * A pointer to the opaque Rust object.
4227     * Nearly everywhere, inner must be non-null, however in places where
4228     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4229     */
4230    LDKnativeReplyChannelRange *inner;
4231    /**
4232     * Indicates that this is the only struct which contains the same pointer.
4233     * Rust functions which take ownership of an object provided via an argument require
4234     * this to be true and invalidate the object pointed to by inner.
4235     */
4236    bool is_owned;
4237 } LDKReplyChannelRange;
4238
4239
4240
4241 /**
4242  * A gossip_timestamp_filter message is used by a node to request
4243  * gossip relay for messages in the requested time range when the
4244  * gossip_queries feature has been negotiated.
4245  */
4246 typedef struct MUST_USE_STRUCT LDKGossipTimestampFilter {
4247    /**
4248     * A pointer to the opaque Rust object.
4249     * Nearly everywhere, inner must be non-null, however in places where
4250     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4251     */
4252    LDKnativeGossipTimestampFilter *inner;
4253    /**
4254     * Indicates that this is the only struct which contains the same pointer.
4255     * Rust functions which take ownership of an object provided via an argument require
4256     * this to be true and invalidate the object pointed to by inner.
4257     */
4258    bool is_owned;
4259 } LDKGossipTimestampFilter;
4260
4261 /**
4262  * An event generated by ChannelManager which indicates a message should be sent to a peer (or
4263  * broadcast to most peers).
4264  * These events are handled by PeerManager::process_events if you are using a PeerManager.
4265  */
4266 typedef enum LDKMessageSendEvent_Tag {
4267    /**
4268     * Used to indicate that we've accepted a channel open and should send the accept_channel
4269     * message provided to the given peer.
4270     */
4271    LDKMessageSendEvent_SendAcceptChannel,
4272    /**
4273     * Used to indicate that we've initiated a channel open and should send the open_channel
4274     * message provided to the given peer.
4275     */
4276    LDKMessageSendEvent_SendOpenChannel,
4277    /**
4278     * Used to indicate that a funding_created message should be sent to the peer with the given node_id.
4279     */
4280    LDKMessageSendEvent_SendFundingCreated,
4281    /**
4282     * Used to indicate that a funding_signed message should be sent to the peer with the given node_id.
4283     */
4284    LDKMessageSendEvent_SendFundingSigned,
4285    /**
4286     * Used to indicate that a channel_ready message should be sent to the peer with the given node_id.
4287     */
4288    LDKMessageSendEvent_SendChannelReady,
4289    /**
4290     * Used to indicate that an announcement_signatures message should be sent to the peer with the given node_id.
4291     */
4292    LDKMessageSendEvent_SendAnnouncementSignatures,
4293    /**
4294     * Used to indicate that a series of HTLC update messages, as well as a commitment_signed
4295     * message should be sent to the peer with the given node_id.
4296     */
4297    LDKMessageSendEvent_UpdateHTLCs,
4298    /**
4299     * Used to indicate that a revoke_and_ack message should be sent to the peer with the given node_id.
4300     */
4301    LDKMessageSendEvent_SendRevokeAndACK,
4302    /**
4303     * Used to indicate that a closing_signed message should be sent to the peer with the given node_id.
4304     */
4305    LDKMessageSendEvent_SendClosingSigned,
4306    /**
4307     * Used to indicate that a shutdown message should be sent to the peer with the given node_id.
4308     */
4309    LDKMessageSendEvent_SendShutdown,
4310    /**
4311     * Used to indicate that a channel_reestablish message should be sent to the peer with the given node_id.
4312     */
4313    LDKMessageSendEvent_SendChannelReestablish,
4314    /**
4315     * Used to send a channel_announcement and channel_update to a specific peer, likely on
4316     * initial connection to ensure our peers know about our channels.
4317     */
4318    LDKMessageSendEvent_SendChannelAnnouncement,
4319    /**
4320     * Used to indicate that a channel_announcement and channel_update should be broadcast to all
4321     * peers (except the peer with node_id either msg.contents.node_id_1 or msg.contents.node_id_2).
4322     *
4323     * Note that after doing so, you very likely (unless you did so very recently) want to
4324     * broadcast a node_announcement (e.g. via [`PeerManager::broadcast_node_announcement`]). This
4325     * ensures that any nodes which see our channel_announcement also have a relevant
4326     * node_announcement, including relevant feature flags which may be important for routing
4327     * through or to us.
4328     *
4329     * [`PeerManager::broadcast_node_announcement`]: crate::ln::peer_handler::PeerManager::broadcast_node_announcement
4330     */
4331    LDKMessageSendEvent_BroadcastChannelAnnouncement,
4332    /**
4333     * Used to indicate that a channel_update should be broadcast to all peers.
4334     */
4335    LDKMessageSendEvent_BroadcastChannelUpdate,
4336    /**
4337     * Used to indicate that a channel_update should be sent to a single peer.
4338     * In contrast to [`Self::BroadcastChannelUpdate`], this is used when the channel is a
4339     * private channel and we shouldn't be informing all of our peers of channel parameters.
4340     */
4341    LDKMessageSendEvent_SendChannelUpdate,
4342    /**
4343     * Broadcast an error downstream to be handled
4344     */
4345    LDKMessageSendEvent_HandleError,
4346    /**
4347     * Query a peer for channels with funding transaction UTXOs in a block range.
4348     */
4349    LDKMessageSendEvent_SendChannelRangeQuery,
4350    /**
4351     * Request routing gossip messages from a peer for a list of channels identified by
4352     * their short_channel_ids.
4353     */
4354    LDKMessageSendEvent_SendShortIdsQuery,
4355    /**
4356     * Sends a reply to a channel range query. This may be one of several SendReplyChannelRange events
4357     * emitted during processing of the query.
4358     */
4359    LDKMessageSendEvent_SendReplyChannelRange,
4360    /**
4361     * Sends a timestamp filter for inbound gossip. This should be sent on each new connection to
4362     * enable receiving gossip messages from the peer.
4363     */
4364    LDKMessageSendEvent_SendGossipTimestampFilter,
4365    /**
4366     * Must be last for serialization purposes
4367     */
4368    LDKMessageSendEvent_Sentinel,
4369 } LDKMessageSendEvent_Tag;
4370
4371 typedef struct LDKMessageSendEvent_LDKSendAcceptChannel_Body {
4372    /**
4373     * The node_id of the node which should receive this message
4374     */
4375    struct LDKPublicKey node_id;
4376    /**
4377     * The message which should be sent.
4378     */
4379    struct LDKAcceptChannel msg;
4380 } LDKMessageSendEvent_LDKSendAcceptChannel_Body;
4381
4382 typedef struct LDKMessageSendEvent_LDKSendOpenChannel_Body {
4383    /**
4384     * The node_id of the node which should receive this message
4385     */
4386    struct LDKPublicKey node_id;
4387    /**
4388     * The message which should be sent.
4389     */
4390    struct LDKOpenChannel msg;
4391 } LDKMessageSendEvent_LDKSendOpenChannel_Body;
4392
4393 typedef struct LDKMessageSendEvent_LDKSendFundingCreated_Body {
4394    /**
4395     * The node_id of the node which should receive this message
4396     */
4397    struct LDKPublicKey node_id;
4398    /**
4399     * The message which should be sent.
4400     */
4401    struct LDKFundingCreated msg;
4402 } LDKMessageSendEvent_LDKSendFundingCreated_Body;
4403
4404 typedef struct LDKMessageSendEvent_LDKSendFundingSigned_Body {
4405    /**
4406     * The node_id of the node which should receive this message
4407     */
4408    struct LDKPublicKey node_id;
4409    /**
4410     * The message which should be sent.
4411     */
4412    struct LDKFundingSigned msg;
4413 } LDKMessageSendEvent_LDKSendFundingSigned_Body;
4414
4415 typedef struct LDKMessageSendEvent_LDKSendChannelReady_Body {
4416    /**
4417     * The node_id of the node which should receive these message(s)
4418     */
4419    struct LDKPublicKey node_id;
4420    /**
4421     * The channel_ready message which should be sent.
4422     */
4423    struct LDKChannelReady msg;
4424 } LDKMessageSendEvent_LDKSendChannelReady_Body;
4425
4426 typedef struct LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body {
4427    /**
4428     * The node_id of the node which should receive these message(s)
4429     */
4430    struct LDKPublicKey node_id;
4431    /**
4432     * The announcement_signatures message which should be sent.
4433     */
4434    struct LDKAnnouncementSignatures msg;
4435 } LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body;
4436
4437 typedef struct LDKMessageSendEvent_LDKUpdateHTLCs_Body {
4438    /**
4439     * The node_id of the node which should receive these message(s)
4440     */
4441    struct LDKPublicKey node_id;
4442    /**
4443     * The update messages which should be sent. ALL messages in the struct should be sent!
4444     */
4445    struct LDKCommitmentUpdate updates;
4446 } LDKMessageSendEvent_LDKUpdateHTLCs_Body;
4447
4448 typedef struct LDKMessageSendEvent_LDKSendRevokeAndACK_Body {
4449    /**
4450     * The node_id of the node which should receive this message
4451     */
4452    struct LDKPublicKey node_id;
4453    /**
4454     * The message which should be sent.
4455     */
4456    struct LDKRevokeAndACK msg;
4457 } LDKMessageSendEvent_LDKSendRevokeAndACK_Body;
4458
4459 typedef struct LDKMessageSendEvent_LDKSendClosingSigned_Body {
4460    /**
4461     * The node_id of the node which should receive this message
4462     */
4463    struct LDKPublicKey node_id;
4464    /**
4465     * The message which should be sent.
4466     */
4467    struct LDKClosingSigned msg;
4468 } LDKMessageSendEvent_LDKSendClosingSigned_Body;
4469
4470 typedef struct LDKMessageSendEvent_LDKSendShutdown_Body {
4471    /**
4472     * The node_id of the node which should receive this message
4473     */
4474    struct LDKPublicKey node_id;
4475    /**
4476     * The message which should be sent.
4477     */
4478    struct LDKShutdown msg;
4479 } LDKMessageSendEvent_LDKSendShutdown_Body;
4480
4481 typedef struct LDKMessageSendEvent_LDKSendChannelReestablish_Body {
4482    /**
4483     * The node_id of the node which should receive this message
4484     */
4485    struct LDKPublicKey node_id;
4486    /**
4487     * The message which should be sent.
4488     */
4489    struct LDKChannelReestablish msg;
4490 } LDKMessageSendEvent_LDKSendChannelReestablish_Body;
4491
4492 typedef struct LDKMessageSendEvent_LDKSendChannelAnnouncement_Body {
4493    /**
4494     * The node_id of the node which should receive this message
4495     */
4496    struct LDKPublicKey node_id;
4497    /**
4498     * The channel_announcement which should be sent.
4499     */
4500    struct LDKChannelAnnouncement msg;
4501    /**
4502     * The followup channel_update which should be sent.
4503     */
4504    struct LDKChannelUpdate update_msg;
4505 } LDKMessageSendEvent_LDKSendChannelAnnouncement_Body;
4506
4507 typedef struct LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body {
4508    /**
4509     * The channel_announcement which should be sent.
4510     */
4511    struct LDKChannelAnnouncement msg;
4512    /**
4513     * The followup channel_update which should be sent.
4514     */
4515    struct LDKChannelUpdate update_msg;
4516 } LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body;
4517
4518 typedef struct LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body {
4519    /**
4520     * The channel_update which should be sent.
4521     */
4522    struct LDKChannelUpdate msg;
4523 } LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body;
4524
4525 typedef struct LDKMessageSendEvent_LDKSendChannelUpdate_Body {
4526    /**
4527     * The node_id of the node which should receive this message
4528     */
4529    struct LDKPublicKey node_id;
4530    /**
4531     * The channel_update which should be sent.
4532     */
4533    struct LDKChannelUpdate msg;
4534 } LDKMessageSendEvent_LDKSendChannelUpdate_Body;
4535
4536 typedef struct LDKMessageSendEvent_LDKHandleError_Body {
4537    /**
4538     * The node_id of the node which should receive this message
4539     */
4540    struct LDKPublicKey node_id;
4541    /**
4542     * The action which should be taken.
4543     */
4544    struct LDKErrorAction action;
4545 } LDKMessageSendEvent_LDKHandleError_Body;
4546
4547 typedef struct LDKMessageSendEvent_LDKSendChannelRangeQuery_Body {
4548    /**
4549     * The node_id of this message recipient
4550     */
4551    struct LDKPublicKey node_id;
4552    /**
4553     * The query_channel_range which should be sent.
4554     */
4555    struct LDKQueryChannelRange msg;
4556 } LDKMessageSendEvent_LDKSendChannelRangeQuery_Body;
4557
4558 typedef struct LDKMessageSendEvent_LDKSendShortIdsQuery_Body {
4559    /**
4560     * The node_id of this message recipient
4561     */
4562    struct LDKPublicKey node_id;
4563    /**
4564     * The query_short_channel_ids which should be sent.
4565     */
4566    struct LDKQueryShortChannelIds msg;
4567 } LDKMessageSendEvent_LDKSendShortIdsQuery_Body;
4568
4569 typedef struct LDKMessageSendEvent_LDKSendReplyChannelRange_Body {
4570    /**
4571     * The node_id of this message recipient
4572     */
4573    struct LDKPublicKey node_id;
4574    /**
4575     * The reply_channel_range which should be sent.
4576     */
4577    struct LDKReplyChannelRange msg;
4578 } LDKMessageSendEvent_LDKSendReplyChannelRange_Body;
4579
4580 typedef struct LDKMessageSendEvent_LDKSendGossipTimestampFilter_Body {
4581    /**
4582     * The node_id of this message recipient
4583     */
4584    struct LDKPublicKey node_id;
4585    /**
4586     * The gossip_timestamp_filter which should be sent.
4587     */
4588    struct LDKGossipTimestampFilter msg;
4589 } LDKMessageSendEvent_LDKSendGossipTimestampFilter_Body;
4590
4591 typedef struct MUST_USE_STRUCT LDKMessageSendEvent {
4592    LDKMessageSendEvent_Tag tag;
4593    union {
4594       LDKMessageSendEvent_LDKSendAcceptChannel_Body send_accept_channel;
4595       LDKMessageSendEvent_LDKSendOpenChannel_Body send_open_channel;
4596       LDKMessageSendEvent_LDKSendFundingCreated_Body send_funding_created;
4597       LDKMessageSendEvent_LDKSendFundingSigned_Body send_funding_signed;
4598       LDKMessageSendEvent_LDKSendChannelReady_Body send_channel_ready;
4599       LDKMessageSendEvent_LDKSendAnnouncementSignatures_Body send_announcement_signatures;
4600       LDKMessageSendEvent_LDKUpdateHTLCs_Body update_htl_cs;
4601       LDKMessageSendEvent_LDKSendRevokeAndACK_Body send_revoke_and_ack;
4602       LDKMessageSendEvent_LDKSendClosingSigned_Body send_closing_signed;
4603       LDKMessageSendEvent_LDKSendShutdown_Body send_shutdown;
4604       LDKMessageSendEvent_LDKSendChannelReestablish_Body send_channel_reestablish;
4605       LDKMessageSendEvent_LDKSendChannelAnnouncement_Body send_channel_announcement;
4606       LDKMessageSendEvent_LDKBroadcastChannelAnnouncement_Body broadcast_channel_announcement;
4607       LDKMessageSendEvent_LDKBroadcastChannelUpdate_Body broadcast_channel_update;
4608       LDKMessageSendEvent_LDKSendChannelUpdate_Body send_channel_update;
4609       LDKMessageSendEvent_LDKHandleError_Body handle_error;
4610       LDKMessageSendEvent_LDKSendChannelRangeQuery_Body send_channel_range_query;
4611       LDKMessageSendEvent_LDKSendShortIdsQuery_Body send_short_ids_query;
4612       LDKMessageSendEvent_LDKSendReplyChannelRange_Body send_reply_channel_range;
4613       LDKMessageSendEvent_LDKSendGossipTimestampFilter_Body send_gossip_timestamp_filter;
4614    };
4615 } LDKMessageSendEvent;
4616
4617 /**
4618  * A dynamically-allocated array of crate::lightning::util::events::MessageSendEvents of arbitrary size.
4619  * This corresponds to std::vector in C++
4620  */
4621 typedef struct LDKCVec_MessageSendEventZ {
4622    /**
4623     * The elements in the array.
4624     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4625     */
4626    struct LDKMessageSendEvent *data;
4627    /**
4628     * The number of elements pointed to by `data`.
4629     */
4630    uintptr_t datalen;
4631 } LDKCVec_MessageSendEventZ;
4632
4633 /**
4634  * The contents of CResult_TxOutAccessErrorZ
4635  */
4636 typedef union LDKCResult_TxOutAccessErrorZPtr {
4637    /**
4638     * A pointer to the contents in the success state.
4639     * Reading from this pointer when `result_ok` is not set is undefined.
4640     */
4641    struct LDKTxOut *result;
4642    /**
4643     * A pointer to the contents in the error state.
4644     * Reading from this pointer when `result_ok` is set is undefined.
4645     */
4646    enum LDKAccessError *err;
4647 } LDKCResult_TxOutAccessErrorZPtr;
4648
4649 /**
4650  * A CResult_TxOutAccessErrorZ represents the result of a fallible operation,
4651  * containing a crate::c_types::TxOut on success and a crate::lightning::chain::AccessError on failure.
4652  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4653  */
4654 typedef struct LDKCResult_TxOutAccessErrorZ {
4655    /**
4656     * The contents of this CResult_TxOutAccessErrorZ, accessible via either
4657     * `err` or `result` depending on the state of `result_ok`.
4658     */
4659    union LDKCResult_TxOutAccessErrorZPtr contents;
4660    /**
4661     * Whether this CResult_TxOutAccessErrorZ represents a success state.
4662     */
4663    bool result_ok;
4664 } LDKCResult_TxOutAccessErrorZ;
4665
4666 /**
4667  * A tuple of 2 elements. See the individual fields for the types contained.
4668  */
4669 typedef struct LDKC2Tuple_usizeTransactionZ {
4670    /**
4671     * The element at position 0
4672     */
4673    uintptr_t a;
4674    /**
4675     * The element at position 1
4676     */
4677    struct LDKTransaction b;
4678 } LDKC2Tuple_usizeTransactionZ;
4679
4680 /**
4681  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_usizeTransactionZs of arbitrary size.
4682  * This corresponds to std::vector in C++
4683  */
4684 typedef struct LDKCVec_C2Tuple_usizeTransactionZZ {
4685    /**
4686     * The elements in the array.
4687     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4688     */
4689    struct LDKC2Tuple_usizeTransactionZ *data;
4690    /**
4691     * The number of elements pointed to by `data`.
4692     */
4693    uintptr_t datalen;
4694 } LDKCVec_C2Tuple_usizeTransactionZZ;
4695
4696 /**
4697  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
4698  * This corresponds to std::vector in C++
4699  */
4700 typedef struct LDKCVec_TxidZ {
4701    /**
4702     * The elements in the array.
4703     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4704     */
4705    struct LDKThirtyTwoBytes *data;
4706    /**
4707     * The number of elements pointed to by `data`.
4708     */
4709    uintptr_t datalen;
4710 } LDKCVec_TxidZ;
4711
4712 /**
4713  * The contents of CResult_NoneChannelMonitorUpdateErrZ
4714  */
4715 typedef union LDKCResult_NoneChannelMonitorUpdateErrZPtr {
4716    /**
4717     * Note that this value is always NULL, as there are no contents in the OK variant
4718     */
4719    void *result;
4720    /**
4721     * A pointer to the contents in the error state.
4722     * Reading from this pointer when `result_ok` is set is undefined.
4723     */
4724    enum LDKChannelMonitorUpdateErr *err;
4725 } LDKCResult_NoneChannelMonitorUpdateErrZPtr;
4726
4727 /**
4728  * A CResult_NoneChannelMonitorUpdateErrZ represents the result of a fallible operation,
4729  * containing a () on success and a crate::lightning::chain::ChannelMonitorUpdateErr on failure.
4730  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4731  */
4732 typedef struct LDKCResult_NoneChannelMonitorUpdateErrZ {
4733    /**
4734     * The contents of this CResult_NoneChannelMonitorUpdateErrZ, accessible via either
4735     * `err` or `result` depending on the state of `result_ok`.
4736     */
4737    union LDKCResult_NoneChannelMonitorUpdateErrZPtr contents;
4738    /**
4739     * Whether this CResult_NoneChannelMonitorUpdateErrZ represents a success state.
4740     */
4741    bool result_ok;
4742 } LDKCResult_NoneChannelMonitorUpdateErrZ;
4743
4744
4745
4746 /**
4747  * Simple structure sent back by `chain::Watch` when an HTLC from a forward channel is detected on
4748  * chain. Used to update the corresponding HTLC in the backward channel. Failing to pass the
4749  * preimage claim backward will lead to loss of funds.
4750  */
4751 typedef struct MUST_USE_STRUCT LDKHTLCUpdate {
4752    /**
4753     * A pointer to the opaque Rust object.
4754     * Nearly everywhere, inner must be non-null, however in places where
4755     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4756     */
4757    LDKnativeHTLCUpdate *inner;
4758    /**
4759     * Indicates that this is the only struct which contains the same pointer.
4760     * Rust functions which take ownership of an object provided via an argument require
4761     * this to be true and invalidate the object pointed to by inner.
4762     */
4763    bool is_owned;
4764 } LDKHTLCUpdate;
4765
4766 /**
4767  * An event to be processed by the ChannelManager.
4768  */
4769 typedef enum LDKMonitorEvent_Tag {
4770    /**
4771     * A monitor event containing an HTLCUpdate.
4772     */
4773    LDKMonitorEvent_HTLCEvent,
4774    /**
4775     * A monitor event that the Channel's commitment transaction was confirmed.
4776     */
4777    LDKMonitorEvent_CommitmentTxConfirmed,
4778    /**
4779     * Indicates a [`ChannelMonitor`] update has completed. See
4780     * [`ChannelMonitorUpdateErr::TemporaryFailure`] for more information on how this is used.
4781     *
4782     * [`ChannelMonitorUpdateErr::TemporaryFailure`]: super::ChannelMonitorUpdateErr::TemporaryFailure
4783     */
4784    LDKMonitorEvent_UpdateCompleted,
4785    /**
4786     * Indicates a [`ChannelMonitor`] update has failed. See
4787     * [`ChannelMonitorUpdateErr::PermanentFailure`] for more information on how this is used.
4788     *
4789     * [`ChannelMonitorUpdateErr::PermanentFailure`]: super::ChannelMonitorUpdateErr::PermanentFailure
4790     */
4791    LDKMonitorEvent_UpdateFailed,
4792    /**
4793     * Must be last for serialization purposes
4794     */
4795    LDKMonitorEvent_Sentinel,
4796 } LDKMonitorEvent_Tag;
4797
4798 typedef struct LDKMonitorEvent_LDKUpdateCompleted_Body {
4799    /**
4800     * The funding outpoint of the [`ChannelMonitor`] that was updated
4801     */
4802    struct LDKOutPoint funding_txo;
4803    /**
4804     * The Update ID from [`ChannelMonitorUpdate::update_id`] which was applied or
4805     * [`ChannelMonitor::get_latest_update_id`].
4806     *
4807     * Note that this should only be set to a given update's ID if all previous updates for the
4808     * same [`ChannelMonitor`] have been applied and persisted.
4809     */
4810    uint64_t monitor_update_id;
4811 } LDKMonitorEvent_LDKUpdateCompleted_Body;
4812
4813 typedef struct MUST_USE_STRUCT LDKMonitorEvent {
4814    LDKMonitorEvent_Tag tag;
4815    union {
4816       struct {
4817          struct LDKHTLCUpdate htlc_event;
4818       };
4819       struct {
4820          struct LDKOutPoint commitment_tx_confirmed;
4821       };
4822       LDKMonitorEvent_LDKUpdateCompleted_Body update_completed;
4823       struct {
4824          struct LDKOutPoint update_failed;
4825       };
4826    };
4827 } LDKMonitorEvent;
4828
4829 /**
4830  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::MonitorEvents of arbitrary size.
4831  * This corresponds to std::vector in C++
4832  */
4833 typedef struct LDKCVec_MonitorEventZ {
4834    /**
4835     * The elements in the array.
4836     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4837     */
4838    struct LDKMonitorEvent *data;
4839    /**
4840     * The number of elements pointed to by `data`.
4841     */
4842    uintptr_t datalen;
4843 } LDKCVec_MonitorEventZ;
4844
4845 /**
4846  * A tuple of 3 elements. See the individual fields for the types contained.
4847  */
4848 typedef struct LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ {
4849    /**
4850     * The element at position 0
4851     */
4852    struct LDKOutPoint a;
4853    /**
4854     * The element at position 1
4855     */
4856    struct LDKCVec_MonitorEventZ b;
4857    /**
4858     * The element at position 2
4859     */
4860    struct LDKPublicKey c;
4861 } LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ;
4862
4863 /**
4864  * A dynamically-allocated array of crate::c_types::derived::C3Tuple_OutPointCVec_MonitorEventZPublicKeyZs of arbitrary size.
4865  * This corresponds to std::vector in C++
4866  */
4867 typedef struct LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ {
4868    /**
4869     * The elements in the array.
4870     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4871     */
4872    struct LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ *data;
4873    /**
4874     * The number of elements pointed to by `data`.
4875     */
4876    uintptr_t datalen;
4877 } LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ;
4878
4879
4880
4881 /**
4882  * [`Score`] implementation that uses a fixed penalty.
4883  */
4884 typedef struct MUST_USE_STRUCT LDKFixedPenaltyScorer {
4885    /**
4886     * A pointer to the opaque Rust object.
4887     * Nearly everywhere, inner must be non-null, however in places where
4888     * the Rust equivalent takes an Option, it may be set to null to indicate None.
4889     */
4890    LDKnativeFixedPenaltyScorer *inner;
4891    /**
4892     * Indicates that this is the only struct which contains the same pointer.
4893     * Rust functions which take ownership of an object provided via an argument require
4894     * this to be true and invalidate the object pointed to by inner.
4895     */
4896    bool is_owned;
4897 } LDKFixedPenaltyScorer;
4898
4899 /**
4900  * The contents of CResult_FixedPenaltyScorerDecodeErrorZ
4901  */
4902 typedef union LDKCResult_FixedPenaltyScorerDecodeErrorZPtr {
4903    /**
4904     * A pointer to the contents in the success state.
4905     * Reading from this pointer when `result_ok` is not set is undefined.
4906     */
4907    struct LDKFixedPenaltyScorer *result;
4908    /**
4909     * A pointer to the contents in the error state.
4910     * Reading from this pointer when `result_ok` is set is undefined.
4911     */
4912    struct LDKDecodeError *err;
4913 } LDKCResult_FixedPenaltyScorerDecodeErrorZPtr;
4914
4915 /**
4916  * A CResult_FixedPenaltyScorerDecodeErrorZ represents the result of a fallible operation,
4917  * containing a crate::lightning::routing::scoring::FixedPenaltyScorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
4918  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
4919  */
4920 typedef struct LDKCResult_FixedPenaltyScorerDecodeErrorZ {
4921    /**
4922     * The contents of this CResult_FixedPenaltyScorerDecodeErrorZ, accessible via either
4923     * `err` or `result` depending on the state of `result_ok`.
4924     */
4925    union LDKCResult_FixedPenaltyScorerDecodeErrorZPtr contents;
4926    /**
4927     * Whether this CResult_FixedPenaltyScorerDecodeErrorZ represents a success state.
4928     */
4929    bool result_ok;
4930 } LDKCResult_FixedPenaltyScorerDecodeErrorZ;
4931
4932 /**
4933  * A tuple of 2 elements. See the individual fields for the types contained.
4934  */
4935 typedef struct LDKC2Tuple_u64u64Z {
4936    /**
4937     * The element at position 0
4938     */
4939    uint64_t a;
4940    /**
4941     * The element at position 1
4942     */
4943    uint64_t b;
4944 } LDKC2Tuple_u64u64Z;
4945
4946 /**
4947  * An enum which can either contain a crate::c_types::derived::C2Tuple_u64u64Z or not
4948  */
4949 typedef enum LDKCOption_C2Tuple_u64u64ZZ_Tag {
4950    /**
4951     * When we're in this state, this COption_C2Tuple_u64u64ZZ contains a crate::c_types::derived::C2Tuple_u64u64Z
4952     */
4953    LDKCOption_C2Tuple_u64u64ZZ_Some,
4954    /**
4955     * When we're in this state, this COption_C2Tuple_u64u64ZZ contains nothing
4956     */
4957    LDKCOption_C2Tuple_u64u64ZZ_None,
4958    /**
4959     * Must be last for serialization purposes
4960     */
4961    LDKCOption_C2Tuple_u64u64ZZ_Sentinel,
4962 } LDKCOption_C2Tuple_u64u64ZZ_Tag;
4963
4964 typedef struct LDKCOption_C2Tuple_u64u64ZZ {
4965    LDKCOption_C2Tuple_u64u64ZZ_Tag tag;
4966    union {
4967       struct {
4968          struct LDKC2Tuple_u64u64Z some;
4969       };
4970    };
4971 } LDKCOption_C2Tuple_u64u64ZZ;
4972
4973 /**
4974  * A dynamically-allocated array of crate::lightning::routing::gossip::NodeIds of arbitrary size.
4975  * This corresponds to std::vector in C++
4976  */
4977 typedef struct LDKCVec_NodeIdZ {
4978    /**
4979     * The elements in the array.
4980     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
4981     */
4982    struct LDKNodeId *data;
4983    /**
4984     * The number of elements pointed to by `data`.
4985     */
4986    uintptr_t datalen;
4987 } LDKCVec_NodeIdZ;
4988
4989
4990
4991 /**
4992  * A Record, unit of logging output with Metadata to enable filtering
4993  * Module_path, file, line to inform on log's source
4994  */
4995 typedef struct MUST_USE_STRUCT LDKRecord {
4996    /**
4997     * A pointer to the opaque Rust object.
4998     * Nearly everywhere, inner must be non-null, however in places where
4999     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5000     */
5001    LDKnativeRecord *inner;
5002    /**
5003     * Indicates that this is the only struct which contains the same pointer.
5004     * Rust functions which take ownership of an object provided via an argument require
5005     * this to be true and invalidate the object pointed to by inner.
5006     */
5007    bool is_owned;
5008 } LDKRecord;
5009
5010 /**
5011  * A trait encapsulating the operations required of a logger
5012  */
5013 typedef struct LDKLogger {
5014    /**
5015     * An opaque pointer which is passed to your function implementations as an argument.
5016     * This has no meaning in the LDK, and can be NULL or any other value.
5017     */
5018    void *this_arg;
5019    /**
5020     * Logs the `Record`
5021     */
5022    void (*log)(const void *this_arg, const struct LDKRecord *NONNULL_PTR record);
5023    /**
5024     * Frees any resources associated with this object given its this_arg pointer.
5025     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
5026     */
5027    void (*free)(void *this_arg);
5028 } LDKLogger;
5029
5030
5031
5032 /**
5033  * Represents the network as nodes and channels between them
5034  */
5035 typedef struct MUST_USE_STRUCT LDKNetworkGraph {
5036    /**
5037     * A pointer to the opaque Rust object.
5038     * Nearly everywhere, inner must be non-null, however in places where
5039     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5040     */
5041    LDKnativeNetworkGraph *inner;
5042    /**
5043     * Indicates that this is the only struct which contains the same pointer.
5044     * Rust functions which take ownership of an object provided via an argument require
5045     * this to be true and invalidate the object pointed to by inner.
5046     */
5047    bool is_owned;
5048 } LDKNetworkGraph;
5049
5050
5051
5052 /**
5053  * [`Score`] implementation using channel success probability distributions.
5054  *
5055  * Based on *Optimally Reliable & Cheap Payment Flows on the Lightning Network* by Rene Pickhardt
5056  * and Stefan Richter [[1]]. Given the uncertainty of channel liquidity balances, probability
5057  * distributions are defined based on knowledge learned from successful and unsuccessful attempts.
5058  * Then the negative `log10` of the success probability is used to determine the cost of routing a
5059  * specific HTLC amount through a channel.
5060  *
5061  * Knowledge about channel liquidity balances takes the form of upper and lower bounds on the
5062  * possible liquidity. Certainty of the bounds is decreased over time using a decay function. See
5063  * [`ProbabilisticScoringParameters`] for details.
5064  *
5065  * Since the scorer aims to learn the current channel liquidity balances, it works best for nodes
5066  * with high payment volume or that actively probe the [`NetworkGraph`]. Nodes with low payment
5067  * volume are more likely to experience failed payment paths, which would need to be retried.
5068  *
5069  * # Note
5070  *
5071  * Mixing the `no-std` feature between serialization and deserialization results in undefined
5072  * behavior.
5073  *
5074  * [1]: https://arxiv.org/abs/2107.05322
5075  */
5076 typedef struct MUST_USE_STRUCT LDKProbabilisticScorer {
5077    /**
5078     * A pointer to the opaque Rust object.
5079     * Nearly everywhere, inner must be non-null, however in places where
5080     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5081     */
5082    LDKnativeProbabilisticScorer *inner;
5083    /**
5084     * Indicates that this is the only struct which contains the same pointer.
5085     * Rust functions which take ownership of an object provided via an argument require
5086     * this to be true and invalidate the object pointed to by inner.
5087     */
5088    bool is_owned;
5089 } LDKProbabilisticScorer;
5090
5091 /**
5092  * The contents of CResult_ProbabilisticScorerDecodeErrorZ
5093  */
5094 typedef union LDKCResult_ProbabilisticScorerDecodeErrorZPtr {
5095    /**
5096     * A pointer to the contents in the success state.
5097     * Reading from this pointer when `result_ok` is not set is undefined.
5098     */
5099    struct LDKProbabilisticScorer *result;
5100    /**
5101     * A pointer to the contents in the error state.
5102     * Reading from this pointer when `result_ok` is set is undefined.
5103     */
5104    struct LDKDecodeError *err;
5105 } LDKCResult_ProbabilisticScorerDecodeErrorZPtr;
5106
5107 /**
5108  * A CResult_ProbabilisticScorerDecodeErrorZ represents the result of a fallible operation,
5109  * containing a crate::lightning::routing::scoring::ProbabilisticScorer on success and a crate::lightning::ln::msgs::DecodeError on failure.
5110  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5111  */
5112 typedef struct LDKCResult_ProbabilisticScorerDecodeErrorZ {
5113    /**
5114     * The contents of this CResult_ProbabilisticScorerDecodeErrorZ, accessible via either
5115     * `err` or `result` depending on the state of `result_ok`.
5116     */
5117    union LDKCResult_ProbabilisticScorerDecodeErrorZPtr contents;
5118    /**
5119     * Whether this CResult_ProbabilisticScorerDecodeErrorZ represents a success state.
5120     */
5121    bool result_ok;
5122 } LDKCResult_ProbabilisticScorerDecodeErrorZ;
5123
5124
5125
5126 /**
5127  * Features used within an `init` message.
5128  */
5129 typedef struct MUST_USE_STRUCT LDKInitFeatures {
5130    /**
5131     * A pointer to the opaque Rust object.
5132     * Nearly everywhere, inner must be non-null, however in places where
5133     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5134     */
5135    LDKnativeInitFeatures *inner;
5136    /**
5137     * Indicates that this is the only struct which contains the same pointer.
5138     * Rust functions which take ownership of an object provided via an argument require
5139     * this to be true and invalidate the object pointed to by inner.
5140     */
5141    bool is_owned;
5142 } LDKInitFeatures;
5143
5144 /**
5145  * The contents of CResult_InitFeaturesDecodeErrorZ
5146  */
5147 typedef union LDKCResult_InitFeaturesDecodeErrorZPtr {
5148    /**
5149     * A pointer to the contents in the success state.
5150     * Reading from this pointer when `result_ok` is not set is undefined.
5151     */
5152    struct LDKInitFeatures *result;
5153    /**
5154     * A pointer to the contents in the error state.
5155     * Reading from this pointer when `result_ok` is set is undefined.
5156     */
5157    struct LDKDecodeError *err;
5158 } LDKCResult_InitFeaturesDecodeErrorZPtr;
5159
5160 /**
5161  * A CResult_InitFeaturesDecodeErrorZ represents the result of a fallible operation,
5162  * containing a crate::lightning::ln::features::InitFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
5163  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5164  */
5165 typedef struct LDKCResult_InitFeaturesDecodeErrorZ {
5166    /**
5167     * The contents of this CResult_InitFeaturesDecodeErrorZ, accessible via either
5168     * `err` or `result` depending on the state of `result_ok`.
5169     */
5170    union LDKCResult_InitFeaturesDecodeErrorZPtr contents;
5171    /**
5172     * Whether this CResult_InitFeaturesDecodeErrorZ represents a success state.
5173     */
5174    bool result_ok;
5175 } LDKCResult_InitFeaturesDecodeErrorZ;
5176
5177
5178
5179 /**
5180  * Features used within a `channel_announcement` message.
5181  */
5182 typedef struct MUST_USE_STRUCT LDKChannelFeatures {
5183    /**
5184     * A pointer to the opaque Rust object.
5185     * Nearly everywhere, inner must be non-null, however in places where
5186     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5187     */
5188    LDKnativeChannelFeatures *inner;
5189    /**
5190     * Indicates that this is the only struct which contains the same pointer.
5191     * Rust functions which take ownership of an object provided via an argument require
5192     * this to be true and invalidate the object pointed to by inner.
5193     */
5194    bool is_owned;
5195 } LDKChannelFeatures;
5196
5197 /**
5198  * The contents of CResult_ChannelFeaturesDecodeErrorZ
5199  */
5200 typedef union LDKCResult_ChannelFeaturesDecodeErrorZPtr {
5201    /**
5202     * A pointer to the contents in the success state.
5203     * Reading from this pointer when `result_ok` is not set is undefined.
5204     */
5205    struct LDKChannelFeatures *result;
5206    /**
5207     * A pointer to the contents in the error state.
5208     * Reading from this pointer when `result_ok` is set is undefined.
5209     */
5210    struct LDKDecodeError *err;
5211 } LDKCResult_ChannelFeaturesDecodeErrorZPtr;
5212
5213 /**
5214  * A CResult_ChannelFeaturesDecodeErrorZ represents the result of a fallible operation,
5215  * containing a crate::lightning::ln::features::ChannelFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
5216  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5217  */
5218 typedef struct LDKCResult_ChannelFeaturesDecodeErrorZ {
5219    /**
5220     * The contents of this CResult_ChannelFeaturesDecodeErrorZ, accessible via either
5221     * `err` or `result` depending on the state of `result_ok`.
5222     */
5223    union LDKCResult_ChannelFeaturesDecodeErrorZPtr contents;
5224    /**
5225     * Whether this CResult_ChannelFeaturesDecodeErrorZ represents a success state.
5226     */
5227    bool result_ok;
5228 } LDKCResult_ChannelFeaturesDecodeErrorZ;
5229
5230
5231
5232 /**
5233  * Features used within a `node_announcement` message.
5234  */
5235 typedef struct MUST_USE_STRUCT LDKNodeFeatures {
5236    /**
5237     * A pointer to the opaque Rust object.
5238     * Nearly everywhere, inner must be non-null, however in places where
5239     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5240     */
5241    LDKnativeNodeFeatures *inner;
5242    /**
5243     * Indicates that this is the only struct which contains the same pointer.
5244     * Rust functions which take ownership of an object provided via an argument require
5245     * this to be true and invalidate the object pointed to by inner.
5246     */
5247    bool is_owned;
5248 } LDKNodeFeatures;
5249
5250 /**
5251  * The contents of CResult_NodeFeaturesDecodeErrorZ
5252  */
5253 typedef union LDKCResult_NodeFeaturesDecodeErrorZPtr {
5254    /**
5255     * A pointer to the contents in the success state.
5256     * Reading from this pointer when `result_ok` is not set is undefined.
5257     */
5258    struct LDKNodeFeatures *result;
5259    /**
5260     * A pointer to the contents in the error state.
5261     * Reading from this pointer when `result_ok` is set is undefined.
5262     */
5263    struct LDKDecodeError *err;
5264 } LDKCResult_NodeFeaturesDecodeErrorZPtr;
5265
5266 /**
5267  * A CResult_NodeFeaturesDecodeErrorZ represents the result of a fallible operation,
5268  * containing a crate::lightning::ln::features::NodeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
5269  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5270  */
5271 typedef struct LDKCResult_NodeFeaturesDecodeErrorZ {
5272    /**
5273     * The contents of this CResult_NodeFeaturesDecodeErrorZ, accessible via either
5274     * `err` or `result` depending on the state of `result_ok`.
5275     */
5276    union LDKCResult_NodeFeaturesDecodeErrorZPtr contents;
5277    /**
5278     * Whether this CResult_NodeFeaturesDecodeErrorZ represents a success state.
5279     */
5280    bool result_ok;
5281 } LDKCResult_NodeFeaturesDecodeErrorZ;
5282
5283
5284
5285 /**
5286  * Features used within an invoice.
5287  */
5288 typedef struct MUST_USE_STRUCT LDKInvoiceFeatures {
5289    /**
5290     * A pointer to the opaque Rust object.
5291     * Nearly everywhere, inner must be non-null, however in places where
5292     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5293     */
5294    LDKnativeInvoiceFeatures *inner;
5295    /**
5296     * Indicates that this is the only struct which contains the same pointer.
5297     * Rust functions which take ownership of an object provided via an argument require
5298     * this to be true and invalidate the object pointed to by inner.
5299     */
5300    bool is_owned;
5301 } LDKInvoiceFeatures;
5302
5303 /**
5304  * The contents of CResult_InvoiceFeaturesDecodeErrorZ
5305  */
5306 typedef union LDKCResult_InvoiceFeaturesDecodeErrorZPtr {
5307    /**
5308     * A pointer to the contents in the success state.
5309     * Reading from this pointer when `result_ok` is not set is undefined.
5310     */
5311    struct LDKInvoiceFeatures *result;
5312    /**
5313     * A pointer to the contents in the error state.
5314     * Reading from this pointer when `result_ok` is set is undefined.
5315     */
5316    struct LDKDecodeError *err;
5317 } LDKCResult_InvoiceFeaturesDecodeErrorZPtr;
5318
5319 /**
5320  * A CResult_InvoiceFeaturesDecodeErrorZ represents the result of a fallible operation,
5321  * containing a crate::lightning::ln::features::InvoiceFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
5322  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5323  */
5324 typedef struct LDKCResult_InvoiceFeaturesDecodeErrorZ {
5325    /**
5326     * The contents of this CResult_InvoiceFeaturesDecodeErrorZ, accessible via either
5327     * `err` or `result` depending on the state of `result_ok`.
5328     */
5329    union LDKCResult_InvoiceFeaturesDecodeErrorZPtr contents;
5330    /**
5331     * Whether this CResult_InvoiceFeaturesDecodeErrorZ represents a success state.
5332     */
5333    bool result_ok;
5334 } LDKCResult_InvoiceFeaturesDecodeErrorZ;
5335
5336 /**
5337  * The contents of CResult_ChannelTypeFeaturesDecodeErrorZ
5338  */
5339 typedef union LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr {
5340    /**
5341     * A pointer to the contents in the success state.
5342     * Reading from this pointer when `result_ok` is not set is undefined.
5343     */
5344    struct LDKChannelTypeFeatures *result;
5345    /**
5346     * A pointer to the contents in the error state.
5347     * Reading from this pointer when `result_ok` is set is undefined.
5348     */
5349    struct LDKDecodeError *err;
5350 } LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr;
5351
5352 /**
5353  * A CResult_ChannelTypeFeaturesDecodeErrorZ represents the result of a fallible operation,
5354  * containing a crate::lightning::ln::features::ChannelTypeFeatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
5355  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5356  */
5357 typedef struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ {
5358    /**
5359     * The contents of this CResult_ChannelTypeFeaturesDecodeErrorZ, accessible via either
5360     * `err` or `result` depending on the state of `result_ok`.
5361     */
5362    union LDKCResult_ChannelTypeFeaturesDecodeErrorZPtr contents;
5363    /**
5364     * Whether this CResult_ChannelTypeFeaturesDecodeErrorZ represents a success state.
5365     */
5366    bool result_ok;
5367 } LDKCResult_ChannelTypeFeaturesDecodeErrorZ;
5368
5369 /**
5370  * The contents of CResult_NodeIdDecodeErrorZ
5371  */
5372 typedef union LDKCResult_NodeIdDecodeErrorZPtr {
5373    /**
5374     * A pointer to the contents in the success state.
5375     * Reading from this pointer when `result_ok` is not set is undefined.
5376     */
5377    struct LDKNodeId *result;
5378    /**
5379     * A pointer to the contents in the error state.
5380     * Reading from this pointer when `result_ok` is set is undefined.
5381     */
5382    struct LDKDecodeError *err;
5383 } LDKCResult_NodeIdDecodeErrorZPtr;
5384
5385 /**
5386  * A CResult_NodeIdDecodeErrorZ represents the result of a fallible operation,
5387  * containing a crate::lightning::routing::gossip::NodeId on success and a crate::lightning::ln::msgs::DecodeError on failure.
5388  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5389  */
5390 typedef struct LDKCResult_NodeIdDecodeErrorZ {
5391    /**
5392     * The contents of this CResult_NodeIdDecodeErrorZ, accessible via either
5393     * `err` or `result` depending on the state of `result_ok`.
5394     */
5395    union LDKCResult_NodeIdDecodeErrorZPtr contents;
5396    /**
5397     * Whether this CResult_NodeIdDecodeErrorZ represents a success state.
5398     */
5399    bool result_ok;
5400 } LDKCResult_NodeIdDecodeErrorZ;
5401
5402 /**
5403  * The contents of CResult_COption_NetworkUpdateZDecodeErrorZ
5404  */
5405 typedef union LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr {
5406    /**
5407     * A pointer to the contents in the success state.
5408     * Reading from this pointer when `result_ok` is not set is undefined.
5409     */
5410    struct LDKCOption_NetworkUpdateZ *result;
5411    /**
5412     * A pointer to the contents in the error state.
5413     * Reading from this pointer when `result_ok` is set is undefined.
5414     */
5415    struct LDKDecodeError *err;
5416 } LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr;
5417
5418 /**
5419  * A CResult_COption_NetworkUpdateZDecodeErrorZ represents the result of a fallible operation,
5420  * containing a crate::c_types::derived::COption_NetworkUpdateZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
5421  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5422  */
5423 typedef struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ {
5424    /**
5425     * The contents of this CResult_COption_NetworkUpdateZDecodeErrorZ, accessible via either
5426     * `err` or `result` depending on the state of `result_ok`.
5427     */
5428    union LDKCResult_COption_NetworkUpdateZDecodeErrorZPtr contents;
5429    /**
5430     * Whether this CResult_COption_NetworkUpdateZDecodeErrorZ represents a success state.
5431     */
5432    bool result_ok;
5433 } LDKCResult_COption_NetworkUpdateZDecodeErrorZ;
5434
5435 /**
5436  * The `Access` trait defines behavior for accessing chain data and state, such as blocks and
5437  * UTXOs.
5438  */
5439 typedef struct LDKAccess {
5440    /**
5441     * An opaque pointer which is passed to your function implementations as an argument.
5442     * This has no meaning in the LDK, and can be NULL or any other value.
5443     */
5444    void *this_arg;
5445    /**
5446     * Returns the transaction output of a funding transaction encoded by [`short_channel_id`].
5447     * Returns an error if `genesis_hash` is for a different chain or if such a transaction output
5448     * is unknown.
5449     *
5450     * [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id
5451     */
5452    struct LDKCResult_TxOutAccessErrorZ (*get_utxo)(const void *this_arg, const uint8_t (*genesis_hash)[32], uint64_t short_channel_id);
5453    /**
5454     * Frees any resources associated with this object given its this_arg pointer.
5455     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
5456     */
5457    void (*free)(void *this_arg);
5458 } LDKAccess;
5459
5460 /**
5461  * An enum which can either contain a crate::lightning::chain::Access or not
5462  */
5463 typedef enum LDKCOption_AccessZ_Tag {
5464    /**
5465     * When we're in this state, this COption_AccessZ contains a crate::lightning::chain::Access
5466     */
5467    LDKCOption_AccessZ_Some,
5468    /**
5469     * When we're in this state, this COption_AccessZ contains nothing
5470     */
5471    LDKCOption_AccessZ_None,
5472    /**
5473     * Must be last for serialization purposes
5474     */
5475    LDKCOption_AccessZ_Sentinel,
5476 } LDKCOption_AccessZ_Tag;
5477
5478 typedef struct LDKCOption_AccessZ {
5479    LDKCOption_AccessZ_Tag tag;
5480    union {
5481       struct {
5482          struct LDKAccess some;
5483       };
5484    };
5485 } LDKCOption_AccessZ;
5486
5487 /**
5488  * The contents of CResult_boolLightningErrorZ
5489  */
5490 typedef union LDKCResult_boolLightningErrorZPtr {
5491    /**
5492     * A pointer to the contents in the success state.
5493     * Reading from this pointer when `result_ok` is not set is undefined.
5494     */
5495    bool *result;
5496    /**
5497     * A pointer to the contents in the error state.
5498     * Reading from this pointer when `result_ok` is set is undefined.
5499     */
5500    struct LDKLightningError *err;
5501 } LDKCResult_boolLightningErrorZPtr;
5502
5503 /**
5504  * A CResult_boolLightningErrorZ represents the result of a fallible operation,
5505  * containing a bool on success and a crate::lightning::ln::msgs::LightningError on failure.
5506  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5507  */
5508 typedef struct LDKCResult_boolLightningErrorZ {
5509    /**
5510     * The contents of this CResult_boolLightningErrorZ, accessible via either
5511     * `err` or `result` depending on the state of `result_ok`.
5512     */
5513    union LDKCResult_boolLightningErrorZPtr contents;
5514    /**
5515     * Whether this CResult_boolLightningErrorZ represents a success state.
5516     */
5517    bool result_ok;
5518 } LDKCResult_boolLightningErrorZ;
5519
5520 /**
5521  * A tuple of 3 elements. See the individual fields for the types contained.
5522  */
5523 typedef struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ {
5524    /**
5525     * The element at position 0
5526     */
5527    struct LDKChannelAnnouncement a;
5528    /**
5529     * The element at position 1
5530     */
5531    struct LDKChannelUpdate b;
5532    /**
5533     * The element at position 2
5534     */
5535    struct LDKChannelUpdate c;
5536 } LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ;
5537
5538 /**
5539  * An enum which can either contain a crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ or not
5540  */
5541 typedef enum LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_Tag {
5542    /**
5543     * When we're in this state, this COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ contains a crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ
5544     */
5545    LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_Some,
5546    /**
5547     * When we're in this state, this COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ contains nothing
5548     */
5549    LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_None,
5550    /**
5551     * Must be last for serialization purposes
5552     */
5553    LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_Sentinel,
5554 } LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_Tag;
5555
5556 typedef struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ {
5557    LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_Tag tag;
5558    union {
5559       struct {
5560          struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ some;
5561       };
5562    };
5563 } LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ;
5564
5565 /**
5566  * The contents of CResult_NoneLightningErrorZ
5567  */
5568 typedef union LDKCResult_NoneLightningErrorZPtr {
5569    /**
5570     * Note that this value is always NULL, as there are no contents in the OK variant
5571     */
5572    void *result;
5573    /**
5574     * A pointer to the contents in the error state.
5575     * Reading from this pointer when `result_ok` is set is undefined.
5576     */
5577    struct LDKLightningError *err;
5578 } LDKCResult_NoneLightningErrorZPtr;
5579
5580 /**
5581  * A CResult_NoneLightningErrorZ represents the result of a fallible operation,
5582  * containing a () on success and a crate::lightning::ln::msgs::LightningError on failure.
5583  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5584  */
5585 typedef struct LDKCResult_NoneLightningErrorZ {
5586    /**
5587     * The contents of this CResult_NoneLightningErrorZ, accessible via either
5588     * `err` or `result` depending on the state of `result_ok`.
5589     */
5590    union LDKCResult_NoneLightningErrorZPtr contents;
5591    /**
5592     * Whether this CResult_NoneLightningErrorZ represents a success state.
5593     */
5594    bool result_ok;
5595 } LDKCResult_NoneLightningErrorZ;
5596
5597
5598
5599 /**
5600  * Details about one direction of a channel as received within a [`ChannelUpdate`].
5601  */
5602 typedef struct MUST_USE_STRUCT LDKChannelUpdateInfo {
5603    /**
5604     * A pointer to the opaque Rust object.
5605     * Nearly everywhere, inner must be non-null, however in places where
5606     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5607     */
5608    LDKnativeChannelUpdateInfo *inner;
5609    /**
5610     * Indicates that this is the only struct which contains the same pointer.
5611     * Rust functions which take ownership of an object provided via an argument require
5612     * this to be true and invalidate the object pointed to by inner.
5613     */
5614    bool is_owned;
5615 } LDKChannelUpdateInfo;
5616
5617 /**
5618  * The contents of CResult_ChannelUpdateInfoDecodeErrorZ
5619  */
5620 typedef union LDKCResult_ChannelUpdateInfoDecodeErrorZPtr {
5621    /**
5622     * A pointer to the contents in the success state.
5623     * Reading from this pointer when `result_ok` is not set is undefined.
5624     */
5625    struct LDKChannelUpdateInfo *result;
5626    /**
5627     * A pointer to the contents in the error state.
5628     * Reading from this pointer when `result_ok` is set is undefined.
5629     */
5630    struct LDKDecodeError *err;
5631 } LDKCResult_ChannelUpdateInfoDecodeErrorZPtr;
5632
5633 /**
5634  * A CResult_ChannelUpdateInfoDecodeErrorZ represents the result of a fallible operation,
5635  * containing a crate::lightning::routing::gossip::ChannelUpdateInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
5636  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5637  */
5638 typedef struct LDKCResult_ChannelUpdateInfoDecodeErrorZ {
5639    /**
5640     * The contents of this CResult_ChannelUpdateInfoDecodeErrorZ, accessible via either
5641     * `err` or `result` depending on the state of `result_ok`.
5642     */
5643    union LDKCResult_ChannelUpdateInfoDecodeErrorZPtr contents;
5644    /**
5645     * Whether this CResult_ChannelUpdateInfoDecodeErrorZ represents a success state.
5646     */
5647    bool result_ok;
5648 } LDKCResult_ChannelUpdateInfoDecodeErrorZ;
5649
5650
5651
5652 /**
5653  * Details about a channel (both directions).
5654  * Received within a channel announcement.
5655  */
5656 typedef struct MUST_USE_STRUCT LDKChannelInfo {
5657    /**
5658     * A pointer to the opaque Rust object.
5659     * Nearly everywhere, inner must be non-null, however in places where
5660     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5661     */
5662    LDKnativeChannelInfo *inner;
5663    /**
5664     * Indicates that this is the only struct which contains the same pointer.
5665     * Rust functions which take ownership of an object provided via an argument require
5666     * this to be true and invalidate the object pointed to by inner.
5667     */
5668    bool is_owned;
5669 } LDKChannelInfo;
5670
5671 /**
5672  * The contents of CResult_ChannelInfoDecodeErrorZ
5673  */
5674 typedef union LDKCResult_ChannelInfoDecodeErrorZPtr {
5675    /**
5676     * A pointer to the contents in the success state.
5677     * Reading from this pointer when `result_ok` is not set is undefined.
5678     */
5679    struct LDKChannelInfo *result;
5680    /**
5681     * A pointer to the contents in the error state.
5682     * Reading from this pointer when `result_ok` is set is undefined.
5683     */
5684    struct LDKDecodeError *err;
5685 } LDKCResult_ChannelInfoDecodeErrorZPtr;
5686
5687 /**
5688  * A CResult_ChannelInfoDecodeErrorZ represents the result of a fallible operation,
5689  * containing a crate::lightning::routing::gossip::ChannelInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
5690  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5691  */
5692 typedef struct LDKCResult_ChannelInfoDecodeErrorZ {
5693    /**
5694     * The contents of this CResult_ChannelInfoDecodeErrorZ, accessible via either
5695     * `err` or `result` depending on the state of `result_ok`.
5696     */
5697    union LDKCResult_ChannelInfoDecodeErrorZPtr contents;
5698    /**
5699     * Whether this CResult_ChannelInfoDecodeErrorZ represents a success state.
5700     */
5701    bool result_ok;
5702 } LDKCResult_ChannelInfoDecodeErrorZ;
5703
5704
5705
5706 /**
5707  * Fees for routing via a given channel or a node
5708  */
5709 typedef struct MUST_USE_STRUCT LDKRoutingFees {
5710    /**
5711     * A pointer to the opaque Rust object.
5712     * Nearly everywhere, inner must be non-null, however in places where
5713     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5714     */
5715    LDKnativeRoutingFees *inner;
5716    /**
5717     * Indicates that this is the only struct which contains the same pointer.
5718     * Rust functions which take ownership of an object provided via an argument require
5719     * this to be true and invalidate the object pointed to by inner.
5720     */
5721    bool is_owned;
5722 } LDKRoutingFees;
5723
5724 /**
5725  * The contents of CResult_RoutingFeesDecodeErrorZ
5726  */
5727 typedef union LDKCResult_RoutingFeesDecodeErrorZPtr {
5728    /**
5729     * A pointer to the contents in the success state.
5730     * Reading from this pointer when `result_ok` is not set is undefined.
5731     */
5732    struct LDKRoutingFees *result;
5733    /**
5734     * A pointer to the contents in the error state.
5735     * Reading from this pointer when `result_ok` is set is undefined.
5736     */
5737    struct LDKDecodeError *err;
5738 } LDKCResult_RoutingFeesDecodeErrorZPtr;
5739
5740 /**
5741  * A CResult_RoutingFeesDecodeErrorZ represents the result of a fallible operation,
5742  * containing a crate::lightning::routing::gossip::RoutingFees on success and a crate::lightning::ln::msgs::DecodeError on failure.
5743  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5744  */
5745 typedef struct LDKCResult_RoutingFeesDecodeErrorZ {
5746    /**
5747     * The contents of this CResult_RoutingFeesDecodeErrorZ, accessible via either
5748     * `err` or `result` depending on the state of `result_ok`.
5749     */
5750    union LDKCResult_RoutingFeesDecodeErrorZPtr contents;
5751    /**
5752     * Whether this CResult_RoutingFeesDecodeErrorZ represents a success state.
5753     */
5754    bool result_ok;
5755 } LDKCResult_RoutingFeesDecodeErrorZ;
5756
5757 /**
5758  * A 4-byte byte array.
5759  */
5760 typedef struct LDKFourBytes {
5761    /**
5762     * The four bytes
5763     */
5764    uint8_t data[4];
5765 } LDKFourBytes;
5766
5767 /**
5768  * A 16-byte byte array.
5769  */
5770 typedef struct LDKSixteenBytes {
5771    /**
5772     * The sixteen bytes
5773     */
5774    uint8_t data[16];
5775 } LDKSixteenBytes;
5776
5777 /**
5778  * A 12-byte byte array.
5779  */
5780 typedef struct LDKTwelveBytes {
5781    /**
5782     * The twelve bytes
5783     */
5784    uint8_t data[12];
5785 } LDKTwelveBytes;
5786
5787
5788
5789 /**
5790  * Represents a hostname for serialization purposes.
5791  * Only the character set and length will be validated.
5792  * The character set consists of ASCII alphanumeric characters, hyphens, and periods.
5793  * Its length is guaranteed to be representable by a single byte.
5794  * This serialization is used by BOLT 7 hostnames.
5795  */
5796 typedef struct MUST_USE_STRUCT LDKHostname {
5797    /**
5798     * A pointer to the opaque Rust object.
5799     * Nearly everywhere, inner must be non-null, however in places where
5800     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5801     */
5802    LDKnativeHostname *inner;
5803    /**
5804     * Indicates that this is the only struct which contains the same pointer.
5805     * Rust functions which take ownership of an object provided via an argument require
5806     * this to be true and invalidate the object pointed to by inner.
5807     */
5808    bool is_owned;
5809 } LDKHostname;
5810
5811 /**
5812  * An address which can be used to connect to a remote peer
5813  */
5814 typedef enum LDKNetAddress_Tag {
5815    /**
5816     * An IPv4 address/port on which the peer is listening.
5817     */
5818    LDKNetAddress_IPv4,
5819    /**
5820     * An IPv6 address/port on which the peer is listening.
5821     */
5822    LDKNetAddress_IPv6,
5823    /**
5824     * An old-style Tor onion address/port on which the peer is listening.
5825     *
5826     * This field is deprecated and the Tor network generally no longer supports V2 Onion
5827     * addresses. Thus, the details are not parsed here.
5828     */
5829    LDKNetAddress_OnionV2,
5830    /**
5831     * A new-style Tor onion address/port on which the peer is listening.
5832     * To create the human-readable \"hostname\", concatenate ed25519_pubkey, checksum, and version,
5833     * wrap as base32 and append \".onion\".
5834     */
5835    LDKNetAddress_OnionV3,
5836    /**
5837     * A hostname/port on which the peer is listening.
5838     */
5839    LDKNetAddress_Hostname,
5840    /**
5841     * Must be last for serialization purposes
5842     */
5843    LDKNetAddress_Sentinel,
5844 } LDKNetAddress_Tag;
5845
5846 typedef struct LDKNetAddress_LDKIPv4_Body {
5847    /**
5848     * The 4-byte IPv4 address
5849     */
5850    struct LDKFourBytes addr;
5851    /**
5852     * The port on which the node is listening
5853     */
5854    uint16_t port;
5855 } LDKNetAddress_LDKIPv4_Body;
5856
5857 typedef struct LDKNetAddress_LDKIPv6_Body {
5858    /**
5859     * The 16-byte IPv6 address
5860     */
5861    struct LDKSixteenBytes addr;
5862    /**
5863     * The port on which the node is listening
5864     */
5865    uint16_t port;
5866 } LDKNetAddress_LDKIPv6_Body;
5867
5868 typedef struct LDKNetAddress_LDKOnionV3_Body {
5869    /**
5870     * The ed25519 long-term public key of the peer
5871     */
5872    struct LDKThirtyTwoBytes ed25519_pubkey;
5873    /**
5874     * The checksum of the pubkey and version, as included in the onion address
5875     */
5876    uint16_t checksum;
5877    /**
5878     * The version byte, as defined by the Tor Onion v3 spec.
5879     */
5880    uint8_t version;
5881    /**
5882     * The port on which the node is listening
5883     */
5884    uint16_t port;
5885 } LDKNetAddress_LDKOnionV3_Body;
5886
5887 typedef struct LDKNetAddress_LDKHostname_Body {
5888    /**
5889     * The hostname on which the node is listening.
5890     */
5891    struct LDKHostname hostname;
5892    /**
5893     * The port on which the node is listening.
5894     */
5895    uint16_t port;
5896 } LDKNetAddress_LDKHostname_Body;
5897
5898 typedef struct MUST_USE_STRUCT LDKNetAddress {
5899    LDKNetAddress_Tag tag;
5900    union {
5901       LDKNetAddress_LDKIPv4_Body i_pv4;
5902       LDKNetAddress_LDKIPv6_Body i_pv6;
5903       struct {
5904          struct LDKTwelveBytes onion_v2;
5905       };
5906       LDKNetAddress_LDKOnionV3_Body onion_v3;
5907       LDKNetAddress_LDKHostname_Body hostname;
5908    };
5909 } LDKNetAddress;
5910
5911 /**
5912  * A dynamically-allocated array of crate::lightning::ln::msgs::NetAddresss of arbitrary size.
5913  * This corresponds to std::vector in C++
5914  */
5915 typedef struct LDKCVec_NetAddressZ {
5916    /**
5917     * The elements in the array.
5918     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
5919     */
5920    struct LDKNetAddress *data;
5921    /**
5922     * The number of elements pointed to by `data`.
5923     */
5924    uintptr_t datalen;
5925 } LDKCVec_NetAddressZ;
5926
5927
5928
5929 /**
5930  * Information received in the latest node_announcement from this node.
5931  */
5932 typedef struct MUST_USE_STRUCT LDKNodeAnnouncementInfo {
5933    /**
5934     * A pointer to the opaque Rust object.
5935     * Nearly everywhere, inner must be non-null, however in places where
5936     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5937     */
5938    LDKnativeNodeAnnouncementInfo *inner;
5939    /**
5940     * Indicates that this is the only struct which contains the same pointer.
5941     * Rust functions which take ownership of an object provided via an argument require
5942     * this to be true and invalidate the object pointed to by inner.
5943     */
5944    bool is_owned;
5945 } LDKNodeAnnouncementInfo;
5946
5947 /**
5948  * The contents of CResult_NodeAnnouncementInfoDecodeErrorZ
5949  */
5950 typedef union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr {
5951    /**
5952     * A pointer to the contents in the success state.
5953     * Reading from this pointer when `result_ok` is not set is undefined.
5954     */
5955    struct LDKNodeAnnouncementInfo *result;
5956    /**
5957     * A pointer to the contents in the error state.
5958     * Reading from this pointer when `result_ok` is set is undefined.
5959     */
5960    struct LDKDecodeError *err;
5961 } LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr;
5962
5963 /**
5964  * A CResult_NodeAnnouncementInfoDecodeErrorZ represents the result of a fallible operation,
5965  * containing a crate::lightning::routing::gossip::NodeAnnouncementInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
5966  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
5967  */
5968 typedef struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ {
5969    /**
5970     * The contents of this CResult_NodeAnnouncementInfoDecodeErrorZ, accessible via either
5971     * `err` or `result` depending on the state of `result_ok`.
5972     */
5973    union LDKCResult_NodeAnnouncementInfoDecodeErrorZPtr contents;
5974    /**
5975     * Whether this CResult_NodeAnnouncementInfoDecodeErrorZ represents a success state.
5976     */
5977    bool result_ok;
5978 } LDKCResult_NodeAnnouncementInfoDecodeErrorZ;
5979
5980
5981
5982 /**
5983  * A user-defined name for a node, which may be used when displaying the node in a graph.
5984  *
5985  * Since node aliases are provided by third parties, they are a potential avenue for injection
5986  * attacks. Care must be taken when processing.
5987  */
5988 typedef struct MUST_USE_STRUCT LDKNodeAlias {
5989    /**
5990     * A pointer to the opaque Rust object.
5991     * Nearly everywhere, inner must be non-null, however in places where
5992     * the Rust equivalent takes an Option, it may be set to null to indicate None.
5993     */
5994    LDKnativeNodeAlias *inner;
5995    /**
5996     * Indicates that this is the only struct which contains the same pointer.
5997     * Rust functions which take ownership of an object provided via an argument require
5998     * this to be true and invalidate the object pointed to by inner.
5999     */
6000    bool is_owned;
6001 } LDKNodeAlias;
6002
6003 /**
6004  * The contents of CResult_NodeAliasDecodeErrorZ
6005  */
6006 typedef union LDKCResult_NodeAliasDecodeErrorZPtr {
6007    /**
6008     * A pointer to the contents in the success state.
6009     * Reading from this pointer when `result_ok` is not set is undefined.
6010     */
6011    struct LDKNodeAlias *result;
6012    /**
6013     * A pointer to the contents in the error state.
6014     * Reading from this pointer when `result_ok` is set is undefined.
6015     */
6016    struct LDKDecodeError *err;
6017 } LDKCResult_NodeAliasDecodeErrorZPtr;
6018
6019 /**
6020  * A CResult_NodeAliasDecodeErrorZ represents the result of a fallible operation,
6021  * containing a crate::lightning::routing::gossip::NodeAlias on success and a crate::lightning::ln::msgs::DecodeError on failure.
6022  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6023  */
6024 typedef struct LDKCResult_NodeAliasDecodeErrorZ {
6025    /**
6026     * The contents of this CResult_NodeAliasDecodeErrorZ, accessible via either
6027     * `err` or `result` depending on the state of `result_ok`.
6028     */
6029    union LDKCResult_NodeAliasDecodeErrorZPtr contents;
6030    /**
6031     * Whether this CResult_NodeAliasDecodeErrorZ represents a success state.
6032     */
6033    bool result_ok;
6034 } LDKCResult_NodeAliasDecodeErrorZ;
6035
6036
6037
6038 /**
6039  * Details about a node in the network, known from the network announcement.
6040  */
6041 typedef struct MUST_USE_STRUCT LDKNodeInfo {
6042    /**
6043     * A pointer to the opaque Rust object.
6044     * Nearly everywhere, inner must be non-null, however in places where
6045     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6046     */
6047    LDKnativeNodeInfo *inner;
6048    /**
6049     * Indicates that this is the only struct which contains the same pointer.
6050     * Rust functions which take ownership of an object provided via an argument require
6051     * this to be true and invalidate the object pointed to by inner.
6052     */
6053    bool is_owned;
6054 } LDKNodeInfo;
6055
6056 /**
6057  * The contents of CResult_NodeInfoDecodeErrorZ
6058  */
6059 typedef union LDKCResult_NodeInfoDecodeErrorZPtr {
6060    /**
6061     * A pointer to the contents in the success state.
6062     * Reading from this pointer when `result_ok` is not set is undefined.
6063     */
6064    struct LDKNodeInfo *result;
6065    /**
6066     * A pointer to the contents in the error state.
6067     * Reading from this pointer when `result_ok` is set is undefined.
6068     */
6069    struct LDKDecodeError *err;
6070 } LDKCResult_NodeInfoDecodeErrorZPtr;
6071
6072 /**
6073  * A CResult_NodeInfoDecodeErrorZ represents the result of a fallible operation,
6074  * containing a crate::lightning::routing::gossip::NodeInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
6075  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6076  */
6077 typedef struct LDKCResult_NodeInfoDecodeErrorZ {
6078    /**
6079     * The contents of this CResult_NodeInfoDecodeErrorZ, accessible via either
6080     * `err` or `result` depending on the state of `result_ok`.
6081     */
6082    union LDKCResult_NodeInfoDecodeErrorZPtr contents;
6083    /**
6084     * Whether this CResult_NodeInfoDecodeErrorZ represents a success state.
6085     */
6086    bool result_ok;
6087 } LDKCResult_NodeInfoDecodeErrorZ;
6088
6089 /**
6090  * The contents of CResult_NetworkGraphDecodeErrorZ
6091  */
6092 typedef union LDKCResult_NetworkGraphDecodeErrorZPtr {
6093    /**
6094     * A pointer to the contents in the success state.
6095     * Reading from this pointer when `result_ok` is not set is undefined.
6096     */
6097    struct LDKNetworkGraph *result;
6098    /**
6099     * A pointer to the contents in the error state.
6100     * Reading from this pointer when `result_ok` is set is undefined.
6101     */
6102    struct LDKDecodeError *err;
6103 } LDKCResult_NetworkGraphDecodeErrorZPtr;
6104
6105 /**
6106  * A CResult_NetworkGraphDecodeErrorZ represents the result of a fallible operation,
6107  * containing a crate::lightning::routing::gossip::NetworkGraph on success and a crate::lightning::ln::msgs::DecodeError on failure.
6108  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6109  */
6110 typedef struct LDKCResult_NetworkGraphDecodeErrorZ {
6111    /**
6112     * The contents of this CResult_NetworkGraphDecodeErrorZ, accessible via either
6113     * `err` or `result` depending on the state of `result_ok`.
6114     */
6115    union LDKCResult_NetworkGraphDecodeErrorZPtr contents;
6116    /**
6117     * Whether this CResult_NetworkGraphDecodeErrorZ represents a success state.
6118     */
6119    bool result_ok;
6120 } LDKCResult_NetworkGraphDecodeErrorZ;
6121
6122 /**
6123  * An enum which can either contain a crate::c_types::derived::CVec_NetAddressZ or not
6124  */
6125 typedef enum LDKCOption_CVec_NetAddressZZ_Tag {
6126    /**
6127     * When we're in this state, this COption_CVec_NetAddressZZ contains a crate::c_types::derived::CVec_NetAddressZ
6128     */
6129    LDKCOption_CVec_NetAddressZZ_Some,
6130    /**
6131     * When we're in this state, this COption_CVec_NetAddressZZ contains nothing
6132     */
6133    LDKCOption_CVec_NetAddressZZ_None,
6134    /**
6135     * Must be last for serialization purposes
6136     */
6137    LDKCOption_CVec_NetAddressZZ_Sentinel,
6138 } LDKCOption_CVec_NetAddressZZ_Tag;
6139
6140 typedef struct LDKCOption_CVec_NetAddressZZ {
6141    LDKCOption_CVec_NetAddressZZ_Tag tag;
6142    union {
6143       struct {
6144          struct LDKCVec_NetAddressZ some;
6145       };
6146    };
6147 } LDKCOption_CVec_NetAddressZZ;
6148
6149 /**
6150  * The contents of CResult_DelayedPaymentOutputDescriptorDecodeErrorZ
6151  */
6152 typedef union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr {
6153    /**
6154     * A pointer to the contents in the success state.
6155     * Reading from this pointer when `result_ok` is not set is undefined.
6156     */
6157    struct LDKDelayedPaymentOutputDescriptor *result;
6158    /**
6159     * A pointer to the contents in the error state.
6160     * Reading from this pointer when `result_ok` is set is undefined.
6161     */
6162    struct LDKDecodeError *err;
6163 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr;
6164
6165 /**
6166  * A CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
6167  * containing a crate::lightning::chain::keysinterface::DelayedPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
6168  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6169  */
6170 typedef struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ {
6171    /**
6172     * The contents of this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ, accessible via either
6173     * `err` or `result` depending on the state of `result_ok`.
6174     */
6175    union LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZPtr contents;
6176    /**
6177     * Whether this CResult_DelayedPaymentOutputDescriptorDecodeErrorZ represents a success state.
6178     */
6179    bool result_ok;
6180 } LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ;
6181
6182 /**
6183  * The contents of CResult_StaticPaymentOutputDescriptorDecodeErrorZ
6184  */
6185 typedef union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr {
6186    /**
6187     * A pointer to the contents in the success state.
6188     * Reading from this pointer when `result_ok` is not set is undefined.
6189     */
6190    struct LDKStaticPaymentOutputDescriptor *result;
6191    /**
6192     * A pointer to the contents in the error state.
6193     * Reading from this pointer when `result_ok` is set is undefined.
6194     */
6195    struct LDKDecodeError *err;
6196 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr;
6197
6198 /**
6199  * A CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
6200  * containing a crate::lightning::chain::keysinterface::StaticPaymentOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
6201  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6202  */
6203 typedef struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ {
6204    /**
6205     * The contents of this CResult_StaticPaymentOutputDescriptorDecodeErrorZ, accessible via either
6206     * `err` or `result` depending on the state of `result_ok`.
6207     */
6208    union LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZPtr contents;
6209    /**
6210     * Whether this CResult_StaticPaymentOutputDescriptorDecodeErrorZ represents a success state.
6211     */
6212    bool result_ok;
6213 } LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ;
6214
6215 /**
6216  * The contents of CResult_SpendableOutputDescriptorDecodeErrorZ
6217  */
6218 typedef union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr {
6219    /**
6220     * A pointer to the contents in the success state.
6221     * Reading from this pointer when `result_ok` is not set is undefined.
6222     */
6223    struct LDKSpendableOutputDescriptor *result;
6224    /**
6225     * A pointer to the contents in the error state.
6226     * Reading from this pointer when `result_ok` is set is undefined.
6227     */
6228    struct LDKDecodeError *err;
6229 } LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr;
6230
6231 /**
6232  * A CResult_SpendableOutputDescriptorDecodeErrorZ represents the result of a fallible operation,
6233  * containing a crate::lightning::chain::keysinterface::SpendableOutputDescriptor on success and a crate::lightning::ln::msgs::DecodeError on failure.
6234  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6235  */
6236 typedef struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ {
6237    /**
6238     * The contents of this CResult_SpendableOutputDescriptorDecodeErrorZ, accessible via either
6239     * `err` or `result` depending on the state of `result_ok`.
6240     */
6241    union LDKCResult_SpendableOutputDescriptorDecodeErrorZPtr contents;
6242    /**
6243     * Whether this CResult_SpendableOutputDescriptorDecodeErrorZ represents a success state.
6244     */
6245    bool result_ok;
6246 } LDKCResult_SpendableOutputDescriptorDecodeErrorZ;
6247
6248 /**
6249  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
6250  * This corresponds to std::vector in C++
6251  */
6252 typedef struct LDKCVec_PaymentPreimageZ {
6253    /**
6254     * The elements in the array.
6255     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6256     */
6257    struct LDKThirtyTwoBytes *data;
6258    /**
6259     * The number of elements pointed to by `data`.
6260     */
6261    uintptr_t datalen;
6262 } LDKCVec_PaymentPreimageZ;
6263
6264 /**
6265  * A tuple of 2 elements. See the individual fields for the types contained.
6266  */
6267 typedef struct LDKC2Tuple_SignatureCVec_SignatureZZ {
6268    /**
6269     * The element at position 0
6270     */
6271    struct LDKSignature a;
6272    /**
6273     * The element at position 1
6274     */
6275    struct LDKCVec_SignatureZ b;
6276 } LDKC2Tuple_SignatureCVec_SignatureZZ;
6277
6278 /**
6279  * The contents of CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ
6280  */
6281 typedef union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr {
6282    /**
6283     * A pointer to the contents in the success state.
6284     * Reading from this pointer when `result_ok` is not set is undefined.
6285     */
6286    struct LDKC2Tuple_SignatureCVec_SignatureZZ *result;
6287    /**
6288     * Note that this value is always NULL, as there are no contents in the Err variant
6289     */
6290    void *err;
6291 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr;
6292
6293 /**
6294  * A CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents the result of a fallible operation,
6295  * containing a crate::c_types::derived::C2Tuple_SignatureCVec_SignatureZZ on success and a () on failure.
6296  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6297  */
6298 typedef struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ {
6299    /**
6300     * The contents of this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ, accessible via either
6301     * `err` or `result` depending on the state of `result_ok`.
6302     */
6303    union LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZPtr contents;
6304    /**
6305     * Whether this CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ represents a success state.
6306     */
6307    bool result_ok;
6308 } LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ;
6309
6310 /**
6311  * The contents of CResult_SignatureNoneZ
6312  */
6313 typedef union LDKCResult_SignatureNoneZPtr {
6314    /**
6315     * A pointer to the contents in the success state.
6316     * Reading from this pointer when `result_ok` is not set is undefined.
6317     */
6318    struct LDKSignature *result;
6319    /**
6320     * Note that this value is always NULL, as there are no contents in the Err variant
6321     */
6322    void *err;
6323 } LDKCResult_SignatureNoneZPtr;
6324
6325 /**
6326  * A CResult_SignatureNoneZ represents the result of a fallible operation,
6327  * containing a crate::c_types::Signature on success and a () on failure.
6328  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6329  */
6330 typedef struct LDKCResult_SignatureNoneZ {
6331    /**
6332     * The contents of this CResult_SignatureNoneZ, accessible via either
6333     * `err` or `result` depending on the state of `result_ok`.
6334     */
6335    union LDKCResult_SignatureNoneZPtr contents;
6336    /**
6337     * Whether this CResult_SignatureNoneZ represents a success state.
6338     */
6339    bool result_ok;
6340 } LDKCResult_SignatureNoneZ;
6341
6342 /**
6343  * A tuple of 2 elements. See the individual fields for the types contained.
6344  */
6345 typedef struct LDKC2Tuple_SignatureSignatureZ {
6346    /**
6347     * The element at position 0
6348     */
6349    struct LDKSignature a;
6350    /**
6351     * The element at position 1
6352     */
6353    struct LDKSignature b;
6354 } LDKC2Tuple_SignatureSignatureZ;
6355
6356 /**
6357  * The contents of CResult_C2Tuple_SignatureSignatureZNoneZ
6358  */
6359 typedef union LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr {
6360    /**
6361     * A pointer to the contents in the success state.
6362     * Reading from this pointer when `result_ok` is not set is undefined.
6363     */
6364    struct LDKC2Tuple_SignatureSignatureZ *result;
6365    /**
6366     * Note that this value is always NULL, as there are no contents in the Err variant
6367     */
6368    void *err;
6369 } LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr;
6370
6371 /**
6372  * A CResult_C2Tuple_SignatureSignatureZNoneZ represents the result of a fallible operation,
6373  * containing a crate::c_types::derived::C2Tuple_SignatureSignatureZ on success and a () on failure.
6374  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6375  */
6376 typedef struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ {
6377    /**
6378     * The contents of this CResult_C2Tuple_SignatureSignatureZNoneZ, accessible via either
6379     * `err` or `result` depending on the state of `result_ok`.
6380     */
6381    union LDKCResult_C2Tuple_SignatureSignatureZNoneZPtr contents;
6382    /**
6383     * Whether this CResult_C2Tuple_SignatureSignatureZNoneZ represents a success state.
6384     */
6385    bool result_ok;
6386 } LDKCResult_C2Tuple_SignatureSignatureZNoneZ;
6387
6388 /**
6389  * The contents of CResult_SecretKeyNoneZ
6390  */
6391 typedef union LDKCResult_SecretKeyNoneZPtr {
6392    /**
6393     * A pointer to the contents in the success state.
6394     * Reading from this pointer when `result_ok` is not set is undefined.
6395     */
6396    struct LDKSecretKey *result;
6397    /**
6398     * Note that this value is always NULL, as there are no contents in the Err variant
6399     */
6400    void *err;
6401 } LDKCResult_SecretKeyNoneZPtr;
6402
6403 /**
6404  * A CResult_SecretKeyNoneZ represents the result of a fallible operation,
6405  * containing a crate::c_types::SecretKey on success and a () on failure.
6406  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6407  */
6408 typedef struct LDKCResult_SecretKeyNoneZ {
6409    /**
6410     * The contents of this CResult_SecretKeyNoneZ, accessible via either
6411     * `err` or `result` depending on the state of `result_ok`.
6412     */
6413    union LDKCResult_SecretKeyNoneZPtr contents;
6414    /**
6415     * Whether this CResult_SecretKeyNoneZ represents a success state.
6416     */
6417    bool result_ok;
6418 } LDKCResult_SecretKeyNoneZ;
6419
6420 /**
6421  * An enum which can either contain a crate::c_types::BigEndianScalar or not
6422  */
6423 typedef enum LDKCOption_ScalarZ_Tag {
6424    /**
6425     * When we're in this state, this COption_ScalarZ contains a crate::c_types::BigEndianScalar
6426     */
6427    LDKCOption_ScalarZ_Some,
6428    /**
6429     * When we're in this state, this COption_ScalarZ contains nothing
6430     */
6431    LDKCOption_ScalarZ_None,
6432    /**
6433     * Must be last for serialization purposes
6434     */
6435    LDKCOption_ScalarZ_Sentinel,
6436 } LDKCOption_ScalarZ_Tag;
6437
6438 typedef struct LDKCOption_ScalarZ {
6439    LDKCOption_ScalarZ_Tag tag;
6440    union {
6441       struct {
6442          struct LDKBigEndianScalar some;
6443       };
6444    };
6445 } LDKCOption_ScalarZ;
6446
6447 /**
6448  * The contents of CResult_SharedSecretNoneZ
6449  */
6450 typedef union LDKCResult_SharedSecretNoneZPtr {
6451    /**
6452     * A pointer to the contents in the success state.
6453     * Reading from this pointer when `result_ok` is not set is undefined.
6454     */
6455    struct LDKThirtyTwoBytes *result;
6456    /**
6457     * Note that this value is always NULL, as there are no contents in the Err variant
6458     */
6459    void *err;
6460 } LDKCResult_SharedSecretNoneZPtr;
6461
6462 /**
6463  * A CResult_SharedSecretNoneZ represents the result of a fallible operation,
6464  * containing a crate::c_types::ThirtyTwoBytes on success and a () on failure.
6465  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6466  */
6467 typedef struct LDKCResult_SharedSecretNoneZ {
6468    /**
6469     * The contents of this CResult_SharedSecretNoneZ, accessible via either
6470     * `err` or `result` depending on the state of `result_ok`.
6471     */
6472    union LDKCResult_SharedSecretNoneZPtr contents;
6473    /**
6474     * Whether this CResult_SharedSecretNoneZ represents a success state.
6475     */
6476    bool result_ok;
6477 } LDKCResult_SharedSecretNoneZ;
6478
6479
6480
6481 /**
6482  * This class tracks the per-transaction information needed to build a closing transaction and will
6483  * actually build it and sign.
6484  *
6485  * This class can be used inside a signer implementation to generate a signature given the relevant
6486  * secret key.
6487  */
6488 typedef struct MUST_USE_STRUCT LDKClosingTransaction {
6489    /**
6490     * A pointer to the opaque Rust object.
6491     * Nearly everywhere, inner must be non-null, however in places where
6492     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6493     */
6494    LDKnativeClosingTransaction *inner;
6495    /**
6496     * Indicates that this is the only struct which contains the same pointer.
6497     * Rust functions which take ownership of an object provided via an argument require
6498     * this to be true and invalidate the object pointed to by inner.
6499     */
6500    bool is_owned;
6501 } LDKClosingTransaction;
6502
6503
6504
6505 /**
6506  * The unsigned part of a channel_announcement
6507  */
6508 typedef struct MUST_USE_STRUCT LDKUnsignedChannelAnnouncement {
6509    /**
6510     * A pointer to the opaque Rust object.
6511     * Nearly everywhere, inner must be non-null, however in places where
6512     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6513     */
6514    LDKnativeUnsignedChannelAnnouncement *inner;
6515    /**
6516     * Indicates that this is the only struct which contains the same pointer.
6517     * Rust functions which take ownership of an object provided via an argument require
6518     * this to be true and invalidate the object pointed to by inner.
6519     */
6520    bool is_owned;
6521 } LDKUnsignedChannelAnnouncement;
6522
6523 /**
6524  * A trait to sign lightning channel transactions as described in BOLT 3.
6525  *
6526  * Signing services could be implemented on a hardware wallet. In this case,
6527  * the current Sign would be a front-end on top of a communication
6528  * channel connected to your secure device and lightning key material wouldn't
6529  * reside on a hot server. Nevertheless, a this deployment would still need
6530  * to trust the ChannelManager to avoid loss of funds as this latest component
6531  * could ask to sign commitment transaction with HTLCs paying to attacker pubkeys.
6532  *
6533  * A more secure iteration would be to use hashlock (or payment points) to pair
6534  * invoice/incoming HTLCs with outgoing HTLCs to implement a no-trust-ChannelManager
6535  * at the price of more state and computation on the hardware wallet side. In the future,
6536  * we are looking forward to design such interface.
6537  *
6538  * In any case, ChannelMonitor or fallback watchtowers are always going to be trusted
6539  * to act, as liveness and breach reply correctness are always going to be hard requirements
6540  * of LN security model, orthogonal of key management issues.
6541  */
6542 typedef struct LDKBaseSign {
6543    /**
6544     * An opaque pointer which is passed to your function implementations as an argument.
6545     * This has no meaning in the LDK, and can be NULL or any other value.
6546     */
6547    void *this_arg;
6548    /**
6549     * Gets the per-commitment point for a specific commitment number
6550     *
6551     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
6552     */
6553    struct LDKPublicKey (*get_per_commitment_point)(const void *this_arg, uint64_t idx);
6554    /**
6555     * Gets the commitment secret for a specific commitment number as part of the revocation process
6556     *
6557     * An external signer implementation should error here if the commitment was already signed
6558     * and should refuse to sign it in the future.
6559     *
6560     * May be called more than once for the same index.
6561     *
6562     * Note that the commitment number starts at (1 << 48) - 1 and counts backwards.
6563     */
6564    struct LDKThirtyTwoBytes (*release_commitment_secret)(const void *this_arg, uint64_t idx);
6565    /**
6566     * Validate the counterparty's signatures on the holder commitment transaction and HTLCs.
6567     *
6568     * This is required in order for the signer to make sure that releasing a commitment
6569     * secret won't leave us without a broadcastable holder transaction.
6570     * Policy checks should be implemented in this function, including checking the amount
6571     * sent to us and checking the HTLCs.
6572     *
6573     * The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
6574     * A validating signer should ensure that an HTLC output is removed only when the matching
6575     * preimage is provided, or when the value to holder is restored.
6576     *
6577     * NOTE: all the relevant preimages will be provided, but there may also be additional
6578     * irrelevant or duplicate preimages.
6579     */
6580    struct LDKCResult_NoneNoneZ (*validate_holder_commitment)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR holder_tx, struct LDKCVec_PaymentPreimageZ preimages);
6581    /**
6582     * Gets the holder's channel public keys and basepoints
6583     */
6584    struct LDKChannelPublicKeys pubkeys;
6585    /**
6586     * Fill in the pubkeys field as a reference to it will be given to Rust after this returns
6587     * Note that this takes a pointer to this object, not the this_ptr like other methods do
6588     * This function pointer may be NULL if pubkeys is filled in when this object is created and never needs updating.
6589     */
6590    void (*set_pubkeys)(const struct LDKBaseSign*NONNULL_PTR );
6591    /**
6592     * Gets an arbitrary identifier describing the set of keys which are provided back to you in
6593     * some SpendableOutputDescriptor types. This should be sufficient to identify this
6594     * Sign object uniquely and lookup or re-derive its keys.
6595     */
6596    struct LDKThirtyTwoBytes (*channel_keys_id)(const void *this_arg);
6597    /**
6598     * Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
6599     *
6600     * Note that if signing fails or is rejected, the channel will be force-closed.
6601     *
6602     * Policy checks should be implemented in this function, including checking the amount
6603     * sent to us and checking the HTLCs.
6604     *
6605     * The preimages of outgoing HTLCs that were fulfilled since the last commitment are provided.
6606     * A validating signer should ensure that an HTLC output is removed only when the matching
6607     * preimage is provided, or when the value to holder is restored.
6608     *
6609     * NOTE: all the relevant preimages will be provided, but there may also be additional
6610     * irrelevant or duplicate preimages.
6611     */
6612    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_counterparty_commitment)(const void *this_arg, const struct LDKCommitmentTransaction *NONNULL_PTR commitment_tx, struct LDKCVec_PaymentPreimageZ preimages);
6613    /**
6614     * Validate the counterparty's revocation.
6615     *
6616     * This is required in order for the signer to make sure that the state has moved
6617     * forward and it is safe to sign the next counterparty commitment.
6618     */
6619    struct LDKCResult_NoneNoneZ (*validate_counterparty_revocation)(const void *this_arg, uint64_t idx, const uint8_t (*secret)[32]);
6620    /**
6621     * Create a signatures for a holder's commitment transaction and its claiming HTLC transactions.
6622     * This will only ever be called with a non-revoked commitment_tx.  This will be called with the
6623     * latest commitment_tx when we initiate a force-close.
6624     * This will be called with the previous latest, just to get claiming HTLC signatures, if we are
6625     * reacting to a ChannelMonitor replica that decided to broadcast before it had been updated to
6626     * the latest.
6627     * This may be called multiple times for the same transaction.
6628     *
6629     * An external signer implementation should check that the commitment has not been revoked.
6630     *
6631     * May return Err if key derivation fails.  Callers, such as ChannelMonitor, will panic in such a case.
6632     */
6633    struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ (*sign_holder_commitment_and_htlcs)(const void *this_arg, const struct LDKHolderCommitmentTransaction *NONNULL_PTR commitment_tx);
6634    /**
6635     * Create a signature for the given input in a transaction spending an HTLC transaction output
6636     * or a commitment transaction `to_local` output when our counterparty broadcasts an old state.
6637     *
6638     * A justice transaction may claim multiple outputs at the same time if timelocks are
6639     * similar, but only a signature for the input at index `input` should be signed for here.
6640     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
6641     * to an upcoming timelock expiration.
6642     *
6643     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
6644     *
6645     * per_commitment_key is revocation secret which was provided by our counterparty when they
6646     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
6647     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
6648     * so).
6649     */
6650    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]);
6651    /**
6652     * Create a signature for the given input in a transaction spending a commitment transaction
6653     * HTLC output when our counterparty broadcasts an old state.
6654     *
6655     * A justice transaction may claim multiple outputs at the same time if timelocks are
6656     * similar, but only a signature for the input at index `input` should be signed for here.
6657     * It may be called multiple times for same output(s) if a fee-bump is needed with regards
6658     * to an upcoming timelock expiration.
6659     *
6660     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
6661     *
6662     * per_commitment_key is revocation secret which was provided by our counterparty when they
6663     * revoked the state which they eventually broadcast. It's not a _holder_ secret key and does
6664     * not allow the spending of any funds by itself (you need our holder revocation_secret to do
6665     * so).
6666     *
6667     * htlc holds HTLC elements (hash, timelock), thus changing the format of the witness script
6668     * (which is committed to in the BIP 143 signatures).
6669     */
6670    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);
6671    /**
6672     * Create a signature for a claiming transaction for a HTLC output on a counterparty's commitment
6673     * transaction, either offered or received.
6674     *
6675     * Such a transaction may claim multiples offered outputs at same time if we know the
6676     * preimage for each when we create it, but only the input at index `input` should be
6677     * signed for here. It may be called multiple times for same output(s) if a fee-bump is
6678     * needed with regards to an upcoming timelock expiration.
6679     *
6680     * Witness_script is either a offered or received script as defined in BOLT3 for HTLC
6681     * outputs.
6682     *
6683     * Amount is value of the output spent by this input, committed to in the BIP 143 signature.
6684     *
6685     * Per_commitment_point is the dynamic point corresponding to the channel state
6686     * detected onchain. It has been generated by our counterparty and is used to derive
6687     * channel state keys, which are then included in the witness script and committed to in the
6688     * BIP 143 signature.
6689     */
6690    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);
6691    /**
6692     * Create a signature for a (proposed) closing transaction.
6693     *
6694     * Note that, due to rounding, there may be one \"missing\" satoshi, and either party may have
6695     * chosen to forgo their output as dust.
6696     */
6697    struct LDKCResult_SignatureNoneZ (*sign_closing_transaction)(const void *this_arg, const struct LDKClosingTransaction *NONNULL_PTR closing_tx);
6698    /**
6699     * Signs a channel announcement message with our funding key and our node secret key (aka
6700     * node_id or network_key), proving it comes from one of the channel participants.
6701     *
6702     * The first returned signature should be from our node secret key, the second from our
6703     * funding key.
6704     *
6705     * Note that if this fails or is rejected, the channel will not be publicly announced and
6706     * our counterparty may (though likely will not) close the channel on us for violating the
6707     * protocol.
6708     */
6709    struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ (*sign_channel_announcement)(const void *this_arg, const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR msg);
6710    /**
6711     * Set the counterparty static channel data, including basepoints,
6712     * counterparty_selected/holder_selected_contest_delay and funding outpoint.
6713     * This is done as soon as the funding outpoint is known.  Since these are static channel data,
6714     * they MUST NOT be allowed to change to different values once set.
6715     *
6716     * channel_parameters.is_populated() MUST be true.
6717     *
6718     * We bind holder_selected_contest_delay late here for API convenience.
6719     *
6720     * Will be called before any signatures are applied.
6721     */
6722    void (*ready_channel)(void *this_arg, const struct LDKChannelTransactionParameters *NONNULL_PTR channel_parameters);
6723    /**
6724     * Frees any resources associated with this object given its this_arg pointer.
6725     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6726     */
6727    void (*free)(void *this_arg);
6728 } LDKBaseSign;
6729
6730 /**
6731  * A cloneable signer.
6732  *
6733  * Although we require signers to be cloneable, it may be useful for developers to be able to use
6734  * signers in an un-sized way, for example as `dyn BaseSign`. Therefore we separate the Clone trait,
6735  * which implies Sized, into this derived trait.
6736  */
6737 typedef struct LDKSign {
6738    /**
6739     * An opaque pointer which is passed to your function implementations as an argument.
6740     * This has no meaning in the LDK, and can be NULL or any other value.
6741     */
6742    void *this_arg;
6743    /**
6744     * Implementation of BaseSign for this object.
6745     */
6746    struct LDKBaseSign BaseSign;
6747    /**
6748     * Serialize the object into a byte array
6749     */
6750    struct LDKCVec_u8Z (*write)(const void *this_arg);
6751    /**
6752     * Called, if set, after this Sign has been cloned into a duplicate object.
6753     * The new Sign is provided, and should be mutated as needed to perform a
6754     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
6755     */
6756    void (*cloned)(struct LDKSign *NONNULL_PTR new_Sign);
6757    /**
6758     * Frees any resources associated with this object given its this_arg pointer.
6759     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
6760     */
6761    void (*free)(void *this_arg);
6762 } LDKSign;
6763
6764 /**
6765  * The contents of CResult_SignDecodeErrorZ
6766  */
6767 typedef union LDKCResult_SignDecodeErrorZPtr {
6768    /**
6769     * A pointer to the contents in the success state.
6770     * Reading from this pointer when `result_ok` is not set is undefined.
6771     */
6772    struct LDKSign *result;
6773    /**
6774     * A pointer to the contents in the error state.
6775     * Reading from this pointer when `result_ok` is set is undefined.
6776     */
6777    struct LDKDecodeError *err;
6778 } LDKCResult_SignDecodeErrorZPtr;
6779
6780 /**
6781  * A CResult_SignDecodeErrorZ represents the result of a fallible operation,
6782  * containing a crate::lightning::chain::keysinterface::Sign on success and a crate::lightning::ln::msgs::DecodeError on failure.
6783  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6784  */
6785 typedef struct LDKCResult_SignDecodeErrorZ {
6786    /**
6787     * The contents of this CResult_SignDecodeErrorZ, accessible via either
6788     * `err` or `result` depending on the state of `result_ok`.
6789     */
6790    union LDKCResult_SignDecodeErrorZPtr contents;
6791    /**
6792     * Whether this CResult_SignDecodeErrorZ represents a success state.
6793     */
6794    bool result_ok;
6795 } LDKCResult_SignDecodeErrorZ;
6796
6797 /**
6798  * Integer in the range `0..32`
6799  */
6800 typedef struct LDKu5 {
6801    uint8_t _0;
6802 } LDKu5;
6803
6804 /**
6805  * A dynamically-allocated array of crate::c_types::u5s of arbitrary size.
6806  * This corresponds to std::vector in C++
6807  */
6808 typedef struct LDKCVec_u5Z {
6809    /**
6810     * The elements in the array.
6811     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6812     */
6813    struct LDKu5 *data;
6814    /**
6815     * The number of elements pointed to by `data`.
6816     */
6817    uintptr_t datalen;
6818 } LDKCVec_u5Z;
6819
6820 /**
6821  * Represents a secp256k1 signature serialized as two 32-byte numbers as well as a tag which
6822  * allows recovering the exact public key which created the signature given the message.
6823  */
6824 typedef struct LDKRecoverableSignature {
6825    /**
6826     * The bytes of the signature in "compact" form plus a "Recovery ID" which allows for
6827     * recovery.
6828     */
6829    uint8_t serialized_form[68];
6830 } LDKRecoverableSignature;
6831
6832 /**
6833  * The contents of CResult_RecoverableSignatureNoneZ
6834  */
6835 typedef union LDKCResult_RecoverableSignatureNoneZPtr {
6836    /**
6837     * A pointer to the contents in the success state.
6838     * Reading from this pointer when `result_ok` is not set is undefined.
6839     */
6840    struct LDKRecoverableSignature *result;
6841    /**
6842     * Note that this value is always NULL, as there are no contents in the Err variant
6843     */
6844    void *err;
6845 } LDKCResult_RecoverableSignatureNoneZPtr;
6846
6847 /**
6848  * A CResult_RecoverableSignatureNoneZ represents the result of a fallible operation,
6849  * containing a crate::c_types::RecoverableSignature on success and a () on failure.
6850  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6851  */
6852 typedef struct LDKCResult_RecoverableSignatureNoneZ {
6853    /**
6854     * The contents of this CResult_RecoverableSignatureNoneZ, accessible via either
6855     * `err` or `result` depending on the state of `result_ok`.
6856     */
6857    union LDKCResult_RecoverableSignatureNoneZPtr contents;
6858    /**
6859     * Whether this CResult_RecoverableSignatureNoneZ represents a success state.
6860     */
6861    bool result_ok;
6862 } LDKCResult_RecoverableSignatureNoneZ;
6863
6864 /**
6865  * A dynamically-allocated array of crate::c_types::derived::CVec_u8Zs of arbitrary size.
6866  * This corresponds to std::vector in C++
6867  */
6868 typedef struct LDKCVec_CVec_u8ZZ {
6869    /**
6870     * The elements in the array.
6871     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6872     */
6873    struct LDKCVec_u8Z *data;
6874    /**
6875     * The number of elements pointed to by `data`.
6876     */
6877    uintptr_t datalen;
6878 } LDKCVec_CVec_u8ZZ;
6879
6880 /**
6881  * The contents of CResult_CVec_CVec_u8ZZNoneZ
6882  */
6883 typedef union LDKCResult_CVec_CVec_u8ZZNoneZPtr {
6884    /**
6885     * A pointer to the contents in the success state.
6886     * Reading from this pointer when `result_ok` is not set is undefined.
6887     */
6888    struct LDKCVec_CVec_u8ZZ *result;
6889    /**
6890     * Note that this value is always NULL, as there are no contents in the Err variant
6891     */
6892    void *err;
6893 } LDKCResult_CVec_CVec_u8ZZNoneZPtr;
6894
6895 /**
6896  * A CResult_CVec_CVec_u8ZZNoneZ represents the result of a fallible operation,
6897  * containing a crate::c_types::derived::CVec_CVec_u8ZZ on success and a () on failure.
6898  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6899  */
6900 typedef struct LDKCResult_CVec_CVec_u8ZZNoneZ {
6901    /**
6902     * The contents of this CResult_CVec_CVec_u8ZZNoneZ, accessible via either
6903     * `err` or `result` depending on the state of `result_ok`.
6904     */
6905    union LDKCResult_CVec_CVec_u8ZZNoneZPtr contents;
6906    /**
6907     * Whether this CResult_CVec_CVec_u8ZZNoneZ represents a success state.
6908     */
6909    bool result_ok;
6910 } LDKCResult_CVec_CVec_u8ZZNoneZ;
6911
6912
6913
6914 /**
6915  * A simple implementation of Sign that just keeps the private keys in memory.
6916  *
6917  * This implementation performs no policy checks and is insufficient by itself as
6918  * a secure external signer.
6919  */
6920 typedef struct MUST_USE_STRUCT LDKInMemorySigner {
6921    /**
6922     * A pointer to the opaque Rust object.
6923     * Nearly everywhere, inner must be non-null, however in places where
6924     * the Rust equivalent takes an Option, it may be set to null to indicate None.
6925     */
6926    LDKnativeInMemorySigner *inner;
6927    /**
6928     * Indicates that this is the only struct which contains the same pointer.
6929     * Rust functions which take ownership of an object provided via an argument require
6930     * this to be true and invalidate the object pointed to by inner.
6931     */
6932    bool is_owned;
6933 } LDKInMemorySigner;
6934
6935 /**
6936  * The contents of CResult_InMemorySignerDecodeErrorZ
6937  */
6938 typedef union LDKCResult_InMemorySignerDecodeErrorZPtr {
6939    /**
6940     * A pointer to the contents in the success state.
6941     * Reading from this pointer when `result_ok` is not set is undefined.
6942     */
6943    struct LDKInMemorySigner *result;
6944    /**
6945     * A pointer to the contents in the error state.
6946     * Reading from this pointer when `result_ok` is set is undefined.
6947     */
6948    struct LDKDecodeError *err;
6949 } LDKCResult_InMemorySignerDecodeErrorZPtr;
6950
6951 /**
6952  * A CResult_InMemorySignerDecodeErrorZ represents the result of a fallible operation,
6953  * containing a crate::lightning::chain::keysinterface::InMemorySigner on success and a crate::lightning::ln::msgs::DecodeError on failure.
6954  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
6955  */
6956 typedef struct LDKCResult_InMemorySignerDecodeErrorZ {
6957    /**
6958     * The contents of this CResult_InMemorySignerDecodeErrorZ, accessible via either
6959     * `err` or `result` depending on the state of `result_ok`.
6960     */
6961    union LDKCResult_InMemorySignerDecodeErrorZPtr contents;
6962    /**
6963     * Whether this CResult_InMemorySignerDecodeErrorZ represents a success state.
6964     */
6965    bool result_ok;
6966 } LDKCResult_InMemorySignerDecodeErrorZ;
6967
6968 /**
6969  * A dynamically-allocated array of crate::c_types::TxOuts of arbitrary size.
6970  * This corresponds to std::vector in C++
6971  */
6972 typedef struct LDKCVec_TxOutZ {
6973    /**
6974     * The elements in the array.
6975     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
6976     */
6977    struct LDKTxOut *data;
6978    /**
6979     * The number of elements pointed to by `data`.
6980     */
6981    uintptr_t datalen;
6982 } LDKCVec_TxOutZ;
6983
6984 /**
6985  * The contents of CResult_TransactionNoneZ
6986  */
6987 typedef union LDKCResult_TransactionNoneZPtr {
6988    /**
6989     * A pointer to the contents in the success state.
6990     * Reading from this pointer when `result_ok` is not set is undefined.
6991     */
6992    struct LDKTransaction *result;
6993    /**
6994     * Note that this value is always NULL, as there are no contents in the Err variant
6995     */
6996    void *err;
6997 } LDKCResult_TransactionNoneZPtr;
6998
6999 /**
7000  * A CResult_TransactionNoneZ represents the result of a fallible operation,
7001  * containing a crate::c_types::Transaction on success and a () on failure.
7002  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7003  */
7004 typedef struct LDKCResult_TransactionNoneZ {
7005    /**
7006     * The contents of this CResult_TransactionNoneZ, accessible via either
7007     * `err` or `result` depending on the state of `result_ok`.
7008     */
7009    union LDKCResult_TransactionNoneZPtr contents;
7010    /**
7011     * Whether this CResult_TransactionNoneZ represents a success state.
7012     */
7013    bool result_ok;
7014 } LDKCResult_TransactionNoneZ;
7015
7016
7017
7018 /**
7019  * A ChannelMonitor handles chain events (blocks connected and disconnected) and generates
7020  * on-chain transactions to ensure no loss of funds occurs.
7021  *
7022  * You MUST ensure that no ChannelMonitors for a given channel anywhere contain out-of-date
7023  * information and are actively monitoring the chain.
7024  *
7025  * Pending Events or updated HTLCs which have not yet been read out by
7026  * get_and_clear_pending_monitor_events or get_and_clear_pending_events are serialized to disk and
7027  * reloaded at deserialize-time. Thus, you must ensure that, when handling events, all events
7028  * gotten are fully handled before re-serializing the new state.
7029  *
7030  * Note that the deserializer is only implemented for (BlockHash, ChannelMonitor), which
7031  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
7032  * the \"reorg path\" (ie disconnecting blocks until you find a common ancestor from both the
7033  * returned block hash and the the current chain and then reconnecting blocks to get to the
7034  * best chain) upon deserializing the object!
7035  */
7036 typedef struct MUST_USE_STRUCT LDKChannelMonitor {
7037    /**
7038     * A pointer to the opaque Rust object.
7039     * Nearly everywhere, inner must be non-null, however in places where
7040     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7041     */
7042    LDKnativeChannelMonitor *inner;
7043    /**
7044     * Indicates that this is the only struct which contains the same pointer.
7045     * Rust functions which take ownership of an object provided via an argument require
7046     * this to be true and invalidate the object pointed to by inner.
7047     */
7048    bool is_owned;
7049 } LDKChannelMonitor;
7050
7051 /**
7052  * A tuple of 2 elements. See the individual fields for the types contained.
7053  */
7054 typedef struct LDKC2Tuple_BlockHashChannelMonitorZ {
7055    /**
7056     * The element at position 0
7057     */
7058    struct LDKThirtyTwoBytes a;
7059    /**
7060     * The element at position 1
7061     */
7062    struct LDKChannelMonitor b;
7063 } LDKC2Tuple_BlockHashChannelMonitorZ;
7064
7065 /**
7066  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZs of arbitrary size.
7067  * This corresponds to std::vector in C++
7068  */
7069 typedef struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ {
7070    /**
7071     * The elements in the array.
7072     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7073     */
7074    struct LDKC2Tuple_BlockHashChannelMonitorZ *data;
7075    /**
7076     * The number of elements pointed to by `data`.
7077     */
7078    uintptr_t datalen;
7079 } LDKCVec_C2Tuple_BlockHashChannelMonitorZZ;
7080
7081 /**
7082  * The contents of CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ
7083  */
7084 typedef union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr {
7085    /**
7086     * A pointer to the contents in the success state.
7087     * Reading from this pointer when `result_ok` is not set is undefined.
7088     */
7089    struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ *result;
7090    /**
7091     * A pointer to the contents in the error state.
7092     * Reading from this pointer when `result_ok` is set is undefined.
7093     */
7094    enum LDKIOError *err;
7095 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr;
7096
7097 /**
7098  * A CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents the result of a fallible operation,
7099  * containing a crate::c_types::derived::CVec_C2Tuple_BlockHashChannelMonitorZZ on success and a crate::c_types::IOError on failure.
7100  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7101  */
7102 typedef struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ {
7103    /**
7104     * The contents of this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ, accessible via either
7105     * `err` or `result` depending on the state of `result_ok`.
7106     */
7107    union LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZPtr contents;
7108    /**
7109     * Whether this CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ represents a success state.
7110     */
7111    bool result_ok;
7112 } LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ;
7113
7114 /**
7115  * An enum which can either contain a u16 or not
7116  */
7117 typedef enum LDKCOption_u16Z_Tag {
7118    /**
7119     * When we're in this state, this COption_u16Z contains a u16
7120     */
7121    LDKCOption_u16Z_Some,
7122    /**
7123     * When we're in this state, this COption_u16Z contains nothing
7124     */
7125    LDKCOption_u16Z_None,
7126    /**
7127     * Must be last for serialization purposes
7128     */
7129    LDKCOption_u16Z_Sentinel,
7130 } LDKCOption_u16Z_Tag;
7131
7132 typedef struct LDKCOption_u16Z {
7133    LDKCOption_u16Z_Tag tag;
7134    union {
7135       struct {
7136          uint16_t some;
7137       };
7138    };
7139 } LDKCOption_u16Z;
7140
7141 /**
7142  * Indicates an error on the client's part (usually some variant of attempting to use too-low or
7143  * too-high values)
7144  */
7145 typedef enum LDKAPIError_Tag {
7146    /**
7147     * Indicates the API was wholly misused (see err for more). Cases where these can be returned
7148     * are documented, but generally indicates some precondition of a function was violated.
7149     */
7150    LDKAPIError_APIMisuseError,
7151    /**
7152     * Due to a high feerate, we were unable to complete the request.
7153     * For example, this may be returned if the feerate implies we cannot open a channel at the
7154     * requested value, but opening a larger channel would succeed.
7155     */
7156    LDKAPIError_FeeRateTooHigh,
7157    /**
7158     * A malformed Route was provided (eg overflowed value, node id mismatch, overly-looped route,
7159     * too-many-hops, etc).
7160     */
7161    LDKAPIError_RouteError,
7162    /**
7163     * We were unable to complete the request as the Channel required to do so is unable to
7164     * complete the request (or was not found). This can take many forms, including disconnected
7165     * peer, channel at capacity, channel shutting down, etc.
7166     */
7167    LDKAPIError_ChannelUnavailable,
7168    /**
7169     * An attempt to call watch/update_channel returned an Err (ie you did this!), causing the
7170     * attempted action to fail.
7171     */
7172    LDKAPIError_MonitorUpdateFailed,
7173    /**
7174     * [`KeysInterface::get_shutdown_scriptpubkey`] returned a shutdown scriptpubkey incompatible
7175     * with the channel counterparty as negotiated in [`InitFeatures`].
7176     *
7177     * Using a SegWit v0 script should resolve this issue. If you cannot, you won't be able to open
7178     * a channel or cooperatively close one with this peer (and will have to force-close instead).
7179     *
7180     * [`KeysInterface::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::KeysInterface::get_shutdown_scriptpubkey
7181     * [`InitFeatures`]: crate::ln::features::InitFeatures
7182     */
7183    LDKAPIError_IncompatibleShutdownScript,
7184    /**
7185     * Must be last for serialization purposes
7186     */
7187    LDKAPIError_Sentinel,
7188 } LDKAPIError_Tag;
7189
7190 typedef struct LDKAPIError_LDKAPIMisuseError_Body {
7191    /**
7192     * A human-readable error message
7193     */
7194    struct LDKStr err;
7195 } LDKAPIError_LDKAPIMisuseError_Body;
7196
7197 typedef struct LDKAPIError_LDKFeeRateTooHigh_Body {
7198    /**
7199     * A human-readable error message
7200     */
7201    struct LDKStr err;
7202    /**
7203     * The feerate which was too high.
7204     */
7205    uint32_t feerate;
7206 } LDKAPIError_LDKFeeRateTooHigh_Body;
7207
7208 typedef struct LDKAPIError_LDKRouteError_Body {
7209    /**
7210     * A human-readable error message
7211     */
7212    struct LDKStr err;
7213 } LDKAPIError_LDKRouteError_Body;
7214
7215 typedef struct LDKAPIError_LDKChannelUnavailable_Body {
7216    /**
7217     * A human-readable error message
7218     */
7219    struct LDKStr err;
7220 } LDKAPIError_LDKChannelUnavailable_Body;
7221
7222 typedef struct LDKAPIError_LDKIncompatibleShutdownScript_Body {
7223    /**
7224     * The incompatible shutdown script.
7225     */
7226    struct LDKShutdownScript script;
7227 } LDKAPIError_LDKIncompatibleShutdownScript_Body;
7228
7229 typedef struct MUST_USE_STRUCT LDKAPIError {
7230    LDKAPIError_Tag tag;
7231    union {
7232       LDKAPIError_LDKAPIMisuseError_Body api_misuse_error;
7233       LDKAPIError_LDKFeeRateTooHigh_Body fee_rate_too_high;
7234       LDKAPIError_LDKRouteError_Body route_error;
7235       LDKAPIError_LDKChannelUnavailable_Body channel_unavailable;
7236       LDKAPIError_LDKIncompatibleShutdownScript_Body incompatible_shutdown_script;
7237    };
7238 } LDKAPIError;
7239
7240 /**
7241  * The contents of CResult_NoneAPIErrorZ
7242  */
7243 typedef union LDKCResult_NoneAPIErrorZPtr {
7244    /**
7245     * Note that this value is always NULL, as there are no contents in the OK variant
7246     */
7247    void *result;
7248    /**
7249     * A pointer to the contents in the error state.
7250     * Reading from this pointer when `result_ok` is set is undefined.
7251     */
7252    struct LDKAPIError *err;
7253 } LDKCResult_NoneAPIErrorZPtr;
7254
7255 /**
7256  * A CResult_NoneAPIErrorZ represents the result of a fallible operation,
7257  * containing a () on success and a crate::lightning::util::errors::APIError on failure.
7258  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7259  */
7260 typedef struct LDKCResult_NoneAPIErrorZ {
7261    /**
7262     * The contents of this CResult_NoneAPIErrorZ, accessible via either
7263     * `err` or `result` depending on the state of `result_ok`.
7264     */
7265    union LDKCResult_NoneAPIErrorZPtr contents;
7266    /**
7267     * Whether this CResult_NoneAPIErrorZ represents a success state.
7268     */
7269    bool result_ok;
7270 } LDKCResult_NoneAPIErrorZ;
7271
7272 /**
7273  * A dynamically-allocated array of crate::c_types::derived::CResult_NoneAPIErrorZs of arbitrary size.
7274  * This corresponds to std::vector in C++
7275  */
7276 typedef struct LDKCVec_CResult_NoneAPIErrorZZ {
7277    /**
7278     * The elements in the array.
7279     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7280     */
7281    struct LDKCResult_NoneAPIErrorZ *data;
7282    /**
7283     * The number of elements pointed to by `data`.
7284     */
7285    uintptr_t datalen;
7286 } LDKCVec_CResult_NoneAPIErrorZZ;
7287
7288 /**
7289  * A dynamically-allocated array of crate::lightning::util::errors::APIErrors of arbitrary size.
7290  * This corresponds to std::vector in C++
7291  */
7292 typedef struct LDKCVec_APIErrorZ {
7293    /**
7294     * The elements in the array.
7295     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7296     */
7297    struct LDKAPIError *data;
7298    /**
7299     * The number of elements pointed to by `data`.
7300     */
7301    uintptr_t datalen;
7302 } LDKCVec_APIErrorZ;
7303
7304 /**
7305  * The contents of CResult__u832APIErrorZ
7306  */
7307 typedef union LDKCResult__u832APIErrorZPtr {
7308    /**
7309     * A pointer to the contents in the success state.
7310     * Reading from this pointer when `result_ok` is not set is undefined.
7311     */
7312    struct LDKThirtyTwoBytes *result;
7313    /**
7314     * A pointer to the contents in the error state.
7315     * Reading from this pointer when `result_ok` is set is undefined.
7316     */
7317    struct LDKAPIError *err;
7318 } LDKCResult__u832APIErrorZPtr;
7319
7320 /**
7321  * A CResult__u832APIErrorZ represents the result of a fallible operation,
7322  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
7323  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7324  */
7325 typedef struct LDKCResult__u832APIErrorZ {
7326    /**
7327     * The contents of this CResult__u832APIErrorZ, accessible via either
7328     * `err` or `result` depending on the state of `result_ok`.
7329     */
7330    union LDKCResult__u832APIErrorZPtr contents;
7331    /**
7332     * Whether this CResult__u832APIErrorZ represents a success state.
7333     */
7334    bool result_ok;
7335 } LDKCResult__u832APIErrorZ;
7336
7337 /**
7338  * If a payment fails to send, it can be in one of several states. This enum is returned as the
7339  * Err() type describing which state the payment is in, see the description of individual enum
7340  * states for more.
7341  */
7342 typedef enum LDKPaymentSendFailure_Tag {
7343    /**
7344     * A parameter which was passed to send_payment was invalid, preventing us from attempting to
7345     * send the payment at all. No channel state has been changed or messages sent to peers, and
7346     * once you've changed the parameter at error, you can freely retry the payment in full.
7347     */
7348    LDKPaymentSendFailure_ParameterError,
7349    /**
7350     * A parameter in a single path which was passed to send_payment was invalid, preventing us
7351     * from attempting to send the payment at all. No channel state has been changed or messages
7352     * sent to peers, and once you've changed the parameter at error, you can freely retry the
7353     * payment in full.
7354     *
7355     * The results here are ordered the same as the paths in the route object which was passed to
7356     * send_payment.
7357     */
7358    LDKPaymentSendFailure_PathParameterError,
7359    /**
7360     * All paths which were attempted failed to send, with no channel state change taking place.
7361     * You can freely retry the payment in full (though you probably want to do so over different
7362     * paths than the ones selected).
7363     */
7364    LDKPaymentSendFailure_AllFailedRetrySafe,
7365    /**
7366     * Some paths which were attempted failed to send, though possibly not all. At least some
7367     * paths have irrevocably committed to the HTLC and retrying the payment in full would result
7368     * in over-/re-payment.
7369     *
7370     * The results here are ordered the same as the paths in the route object which was passed to
7371     * send_payment, and any Errs which are not APIError::MonitorUpdateFailed can be safely
7372     * retried (though there is currently no API with which to do so).
7373     *
7374     * Any entries which contain Err(APIError::MonitorUpdateFailed) or Ok(()) MUST NOT be retried
7375     * as they will result in over-/re-payment. These HTLCs all either successfully sent (in the
7376     * case of Ok(())) or will send once channel_monitor_updated is called on the next-hop channel
7377     * with the latest update_id.
7378     */
7379    LDKPaymentSendFailure_PartialFailure,
7380    /**
7381     * Must be last for serialization purposes
7382     */
7383    LDKPaymentSendFailure_Sentinel,
7384 } LDKPaymentSendFailure_Tag;
7385
7386 typedef struct LDKPaymentSendFailure_LDKPartialFailure_Body {
7387    /**
7388     * The errors themselves, in the same order as the route hops.
7389     */
7390    struct LDKCVec_CResult_NoneAPIErrorZZ results;
7391    /**
7392     * If some paths failed without irrevocably committing to the new HTLC(s), this will
7393     * contain a [`RouteParameters`] object which can be used to calculate a new route that
7394     * will pay all remaining unpaid balance.
7395     *
7396     * Note that this (or a relevant inner pointer) may be NULL or all-0s to represent None
7397     */
7398    struct LDKRouteParameters failed_paths_retry;
7399    /**
7400     * The payment id for the payment, which is now at least partially pending.
7401     */
7402    struct LDKThirtyTwoBytes payment_id;
7403 } LDKPaymentSendFailure_LDKPartialFailure_Body;
7404
7405 typedef struct MUST_USE_STRUCT LDKPaymentSendFailure {
7406    LDKPaymentSendFailure_Tag tag;
7407    union {
7408       struct {
7409          struct LDKAPIError parameter_error;
7410       };
7411       struct {
7412          struct LDKCVec_CResult_NoneAPIErrorZZ path_parameter_error;
7413       };
7414       struct {
7415          struct LDKCVec_APIErrorZ all_failed_retry_safe;
7416       };
7417       LDKPaymentSendFailure_LDKPartialFailure_Body partial_failure;
7418    };
7419 } LDKPaymentSendFailure;
7420
7421 /**
7422  * The contents of CResult_PaymentIdPaymentSendFailureZ
7423  */
7424 typedef union LDKCResult_PaymentIdPaymentSendFailureZPtr {
7425    /**
7426     * A pointer to the contents in the success state.
7427     * Reading from this pointer when `result_ok` is not set is undefined.
7428     */
7429    struct LDKThirtyTwoBytes *result;
7430    /**
7431     * A pointer to the contents in the error state.
7432     * Reading from this pointer when `result_ok` is set is undefined.
7433     */
7434    struct LDKPaymentSendFailure *err;
7435 } LDKCResult_PaymentIdPaymentSendFailureZPtr;
7436
7437 /**
7438  * A CResult_PaymentIdPaymentSendFailureZ represents the result of a fallible operation,
7439  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
7440  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7441  */
7442 typedef struct LDKCResult_PaymentIdPaymentSendFailureZ {
7443    /**
7444     * The contents of this CResult_PaymentIdPaymentSendFailureZ, accessible via either
7445     * `err` or `result` depending on the state of `result_ok`.
7446     */
7447    union LDKCResult_PaymentIdPaymentSendFailureZPtr contents;
7448    /**
7449     * Whether this CResult_PaymentIdPaymentSendFailureZ represents a success state.
7450     */
7451    bool result_ok;
7452 } LDKCResult_PaymentIdPaymentSendFailureZ;
7453
7454 /**
7455  * The contents of CResult_NonePaymentSendFailureZ
7456  */
7457 typedef union LDKCResult_NonePaymentSendFailureZPtr {
7458    /**
7459     * Note that this value is always NULL, as there are no contents in the OK variant
7460     */
7461    void *result;
7462    /**
7463     * A pointer to the contents in the error state.
7464     * Reading from this pointer when `result_ok` is set is undefined.
7465     */
7466    struct LDKPaymentSendFailure *err;
7467 } LDKCResult_NonePaymentSendFailureZPtr;
7468
7469 /**
7470  * A CResult_NonePaymentSendFailureZ represents the result of a fallible operation,
7471  * containing a () on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
7472  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7473  */
7474 typedef struct LDKCResult_NonePaymentSendFailureZ {
7475    /**
7476     * The contents of this CResult_NonePaymentSendFailureZ, accessible via either
7477     * `err` or `result` depending on the state of `result_ok`.
7478     */
7479    union LDKCResult_NonePaymentSendFailureZPtr contents;
7480    /**
7481     * Whether this CResult_NonePaymentSendFailureZ represents a success state.
7482     */
7483    bool result_ok;
7484 } LDKCResult_NonePaymentSendFailureZ;
7485
7486 /**
7487  * A tuple of 2 elements. See the individual fields for the types contained.
7488  */
7489 typedef struct LDKC2Tuple_PaymentHashPaymentIdZ {
7490    /**
7491     * The element at position 0
7492     */
7493    struct LDKThirtyTwoBytes a;
7494    /**
7495     * The element at position 1
7496     */
7497    struct LDKThirtyTwoBytes b;
7498 } LDKC2Tuple_PaymentHashPaymentIdZ;
7499
7500 /**
7501  * The contents of CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ
7502  */
7503 typedef union LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr {
7504    /**
7505     * A pointer to the contents in the success state.
7506     * Reading from this pointer when `result_ok` is not set is undefined.
7507     */
7508    struct LDKC2Tuple_PaymentHashPaymentIdZ *result;
7509    /**
7510     * A pointer to the contents in the error state.
7511     * Reading from this pointer when `result_ok` is set is undefined.
7512     */
7513    struct LDKPaymentSendFailure *err;
7514 } LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr;
7515
7516 /**
7517  * A CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ represents the result of a fallible operation,
7518  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentIdZ on success and a crate::lightning::ln::channelmanager::PaymentSendFailure on failure.
7519  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7520  */
7521 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ {
7522    /**
7523     * The contents of this CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ, accessible via either
7524     * `err` or `result` depending on the state of `result_ok`.
7525     */
7526    union LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZPtr contents;
7527    /**
7528     * Whether this CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ represents a success state.
7529     */
7530    bool result_ok;
7531 } LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ;
7532
7533 /**
7534  * A dynamically-allocated array of crate::c_types::ThirtyTwoBytess of arbitrary size.
7535  * This corresponds to std::vector in C++
7536  */
7537 typedef struct LDKCVec_ThirtyTwoBytesZ {
7538    /**
7539     * The elements in the array.
7540     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7541     */
7542    struct LDKThirtyTwoBytes *data;
7543    /**
7544     * The number of elements pointed to by `data`.
7545     */
7546    uintptr_t datalen;
7547 } LDKCVec_ThirtyTwoBytesZ;
7548
7549 /**
7550  * A tuple of 2 elements. See the individual fields for the types contained.
7551  */
7552 typedef struct LDKC2Tuple_PaymentHashPaymentSecretZ {
7553    /**
7554     * The element at position 0
7555     */
7556    struct LDKThirtyTwoBytes a;
7557    /**
7558     * The element at position 1
7559     */
7560    struct LDKThirtyTwoBytes b;
7561 } LDKC2Tuple_PaymentHashPaymentSecretZ;
7562
7563 /**
7564  * The contents of CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ
7565  */
7566 typedef union LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr {
7567    /**
7568     * A pointer to the contents in the success state.
7569     * Reading from this pointer when `result_ok` is not set is undefined.
7570     */
7571    struct LDKC2Tuple_PaymentHashPaymentSecretZ *result;
7572    /**
7573     * Note that this value is always NULL, as there are no contents in the Err variant
7574     */
7575    void *err;
7576 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr;
7577
7578 /**
7579  * A CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ represents the result of a fallible operation,
7580  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentSecretZ on success and a () on failure.
7581  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7582  */
7583 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ {
7584    /**
7585     * The contents of this CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ, accessible via either
7586     * `err` or `result` depending on the state of `result_ok`.
7587     */
7588    union LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZPtr contents;
7589    /**
7590     * Whether this CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ represents a success state.
7591     */
7592    bool result_ok;
7593 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ;
7594
7595 /**
7596  * The contents of CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ
7597  */
7598 typedef union LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr {
7599    /**
7600     * A pointer to the contents in the success state.
7601     * Reading from this pointer when `result_ok` is not set is undefined.
7602     */
7603    struct LDKC2Tuple_PaymentHashPaymentSecretZ *result;
7604    /**
7605     * A pointer to the contents in the error state.
7606     * Reading from this pointer when `result_ok` is set is undefined.
7607     */
7608    struct LDKAPIError *err;
7609 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr;
7610
7611 /**
7612  * A CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ represents the result of a fallible operation,
7613  * containing a crate::c_types::derived::C2Tuple_PaymentHashPaymentSecretZ on success and a crate::lightning::util::errors::APIError on failure.
7614  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7615  */
7616 typedef struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ {
7617    /**
7618     * The contents of this CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ, accessible via either
7619     * `err` or `result` depending on the state of `result_ok`.
7620     */
7621    union LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZPtr contents;
7622    /**
7623     * Whether this CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ represents a success state.
7624     */
7625    bool result_ok;
7626 } LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ;
7627
7628 /**
7629  * The contents of CResult_PaymentSecretNoneZ
7630  */
7631 typedef union LDKCResult_PaymentSecretNoneZPtr {
7632    /**
7633     * A pointer to the contents in the success state.
7634     * Reading from this pointer when `result_ok` is not set is undefined.
7635     */
7636    struct LDKThirtyTwoBytes *result;
7637    /**
7638     * Note that this value is always NULL, as there are no contents in the Err variant
7639     */
7640    void *err;
7641 } LDKCResult_PaymentSecretNoneZPtr;
7642
7643 /**
7644  * A CResult_PaymentSecretNoneZ represents the result of a fallible operation,
7645  * containing a crate::c_types::ThirtyTwoBytes on success and a () on failure.
7646  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7647  */
7648 typedef struct LDKCResult_PaymentSecretNoneZ {
7649    /**
7650     * The contents of this CResult_PaymentSecretNoneZ, accessible via either
7651     * `err` or `result` depending on the state of `result_ok`.
7652     */
7653    union LDKCResult_PaymentSecretNoneZPtr contents;
7654    /**
7655     * Whether this CResult_PaymentSecretNoneZ represents a success state.
7656     */
7657    bool result_ok;
7658 } LDKCResult_PaymentSecretNoneZ;
7659
7660 /**
7661  * The contents of CResult_PaymentSecretAPIErrorZ
7662  */
7663 typedef union LDKCResult_PaymentSecretAPIErrorZPtr {
7664    /**
7665     * A pointer to the contents in the success state.
7666     * Reading from this pointer when `result_ok` is not set is undefined.
7667     */
7668    struct LDKThirtyTwoBytes *result;
7669    /**
7670     * A pointer to the contents in the error state.
7671     * Reading from this pointer when `result_ok` is set is undefined.
7672     */
7673    struct LDKAPIError *err;
7674 } LDKCResult_PaymentSecretAPIErrorZPtr;
7675
7676 /**
7677  * A CResult_PaymentSecretAPIErrorZ represents the result of a fallible operation,
7678  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
7679  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7680  */
7681 typedef struct LDKCResult_PaymentSecretAPIErrorZ {
7682    /**
7683     * The contents of this CResult_PaymentSecretAPIErrorZ, accessible via either
7684     * `err` or `result` depending on the state of `result_ok`.
7685     */
7686    union LDKCResult_PaymentSecretAPIErrorZPtr contents;
7687    /**
7688     * Whether this CResult_PaymentSecretAPIErrorZ represents a success state.
7689     */
7690    bool result_ok;
7691 } LDKCResult_PaymentSecretAPIErrorZ;
7692
7693 /**
7694  * The contents of CResult_PaymentPreimageAPIErrorZ
7695  */
7696 typedef union LDKCResult_PaymentPreimageAPIErrorZPtr {
7697    /**
7698     * A pointer to the contents in the success state.
7699     * Reading from this pointer when `result_ok` is not set is undefined.
7700     */
7701    struct LDKThirtyTwoBytes *result;
7702    /**
7703     * A pointer to the contents in the error state.
7704     * Reading from this pointer when `result_ok` is set is undefined.
7705     */
7706    struct LDKAPIError *err;
7707 } LDKCResult_PaymentPreimageAPIErrorZPtr;
7708
7709 /**
7710  * A CResult_PaymentPreimageAPIErrorZ represents the result of a fallible operation,
7711  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning::util::errors::APIError on failure.
7712  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7713  */
7714 typedef struct LDKCResult_PaymentPreimageAPIErrorZ {
7715    /**
7716     * The contents of this CResult_PaymentPreimageAPIErrorZ, accessible via either
7717     * `err` or `result` depending on the state of `result_ok`.
7718     */
7719    union LDKCResult_PaymentPreimageAPIErrorZPtr contents;
7720    /**
7721     * Whether this CResult_PaymentPreimageAPIErrorZ represents a success state.
7722     */
7723    bool result_ok;
7724 } LDKCResult_PaymentPreimageAPIErrorZ;
7725
7726
7727
7728 /**
7729  * Information needed for constructing an invoice route hint for this channel.
7730  */
7731 typedef struct MUST_USE_STRUCT LDKCounterpartyForwardingInfo {
7732    /**
7733     * A pointer to the opaque Rust object.
7734     * Nearly everywhere, inner must be non-null, however in places where
7735     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7736     */
7737    LDKnativeCounterpartyForwardingInfo *inner;
7738    /**
7739     * Indicates that this is the only struct which contains the same pointer.
7740     * Rust functions which take ownership of an object provided via an argument require
7741     * this to be true and invalidate the object pointed to by inner.
7742     */
7743    bool is_owned;
7744 } LDKCounterpartyForwardingInfo;
7745
7746 /**
7747  * The contents of CResult_CounterpartyForwardingInfoDecodeErrorZ
7748  */
7749 typedef union LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr {
7750    /**
7751     * A pointer to the contents in the success state.
7752     * Reading from this pointer when `result_ok` is not set is undefined.
7753     */
7754    struct LDKCounterpartyForwardingInfo *result;
7755    /**
7756     * A pointer to the contents in the error state.
7757     * Reading from this pointer when `result_ok` is set is undefined.
7758     */
7759    struct LDKDecodeError *err;
7760 } LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr;
7761
7762 /**
7763  * A CResult_CounterpartyForwardingInfoDecodeErrorZ represents the result of a fallible operation,
7764  * containing a crate::lightning::ln::channelmanager::CounterpartyForwardingInfo on success and a crate::lightning::ln::msgs::DecodeError on failure.
7765  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7766  */
7767 typedef struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ {
7768    /**
7769     * The contents of this CResult_CounterpartyForwardingInfoDecodeErrorZ, accessible via either
7770     * `err` or `result` depending on the state of `result_ok`.
7771     */
7772    union LDKCResult_CounterpartyForwardingInfoDecodeErrorZPtr contents;
7773    /**
7774     * Whether this CResult_CounterpartyForwardingInfoDecodeErrorZ represents a success state.
7775     */
7776    bool result_ok;
7777 } LDKCResult_CounterpartyForwardingInfoDecodeErrorZ;
7778
7779
7780
7781 /**
7782  * Channel parameters which apply to our counterparty. These are split out from [`ChannelDetails`]
7783  * to better separate parameters.
7784  */
7785 typedef struct MUST_USE_STRUCT LDKChannelCounterparty {
7786    /**
7787     * A pointer to the opaque Rust object.
7788     * Nearly everywhere, inner must be non-null, however in places where
7789     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7790     */
7791    LDKnativeChannelCounterparty *inner;
7792    /**
7793     * Indicates that this is the only struct which contains the same pointer.
7794     * Rust functions which take ownership of an object provided via an argument require
7795     * this to be true and invalidate the object pointed to by inner.
7796     */
7797    bool is_owned;
7798 } LDKChannelCounterparty;
7799
7800 /**
7801  * The contents of CResult_ChannelCounterpartyDecodeErrorZ
7802  */
7803 typedef union LDKCResult_ChannelCounterpartyDecodeErrorZPtr {
7804    /**
7805     * A pointer to the contents in the success state.
7806     * Reading from this pointer when `result_ok` is not set is undefined.
7807     */
7808    struct LDKChannelCounterparty *result;
7809    /**
7810     * A pointer to the contents in the error state.
7811     * Reading from this pointer when `result_ok` is set is undefined.
7812     */
7813    struct LDKDecodeError *err;
7814 } LDKCResult_ChannelCounterpartyDecodeErrorZPtr;
7815
7816 /**
7817  * A CResult_ChannelCounterpartyDecodeErrorZ represents the result of a fallible operation,
7818  * containing a crate::lightning::ln::channelmanager::ChannelCounterparty on success and a crate::lightning::ln::msgs::DecodeError on failure.
7819  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7820  */
7821 typedef struct LDKCResult_ChannelCounterpartyDecodeErrorZ {
7822    /**
7823     * The contents of this CResult_ChannelCounterpartyDecodeErrorZ, accessible via either
7824     * `err` or `result` depending on the state of `result_ok`.
7825     */
7826    union LDKCResult_ChannelCounterpartyDecodeErrorZPtr contents;
7827    /**
7828     * Whether this CResult_ChannelCounterpartyDecodeErrorZ represents a success state.
7829     */
7830    bool result_ok;
7831 } LDKCResult_ChannelCounterpartyDecodeErrorZ;
7832
7833 /**
7834  * The contents of CResult_ChannelDetailsDecodeErrorZ
7835  */
7836 typedef union LDKCResult_ChannelDetailsDecodeErrorZPtr {
7837    /**
7838     * A pointer to the contents in the success state.
7839     * Reading from this pointer when `result_ok` is not set is undefined.
7840     */
7841    struct LDKChannelDetails *result;
7842    /**
7843     * A pointer to the contents in the error state.
7844     * Reading from this pointer when `result_ok` is set is undefined.
7845     */
7846    struct LDKDecodeError *err;
7847 } LDKCResult_ChannelDetailsDecodeErrorZPtr;
7848
7849 /**
7850  * A CResult_ChannelDetailsDecodeErrorZ represents the result of a fallible operation,
7851  * containing a crate::lightning::ln::channelmanager::ChannelDetails on success and a crate::lightning::ln::msgs::DecodeError on failure.
7852  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7853  */
7854 typedef struct LDKCResult_ChannelDetailsDecodeErrorZ {
7855    /**
7856     * The contents of this CResult_ChannelDetailsDecodeErrorZ, accessible via either
7857     * `err` or `result` depending on the state of `result_ok`.
7858     */
7859    union LDKCResult_ChannelDetailsDecodeErrorZPtr contents;
7860    /**
7861     * Whether this CResult_ChannelDetailsDecodeErrorZ represents a success state.
7862     */
7863    bool result_ok;
7864 } LDKCResult_ChannelDetailsDecodeErrorZ;
7865
7866
7867
7868 /**
7869  * Route hints used in constructing invoices for [phantom node payents].
7870  *
7871  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
7872  */
7873 typedef struct MUST_USE_STRUCT LDKPhantomRouteHints {
7874    /**
7875     * A pointer to the opaque Rust object.
7876     * Nearly everywhere, inner must be non-null, however in places where
7877     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7878     */
7879    LDKnativePhantomRouteHints *inner;
7880    /**
7881     * Indicates that this is the only struct which contains the same pointer.
7882     * Rust functions which take ownership of an object provided via an argument require
7883     * this to be true and invalidate the object pointed to by inner.
7884     */
7885    bool is_owned;
7886 } LDKPhantomRouteHints;
7887
7888 /**
7889  * The contents of CResult_PhantomRouteHintsDecodeErrorZ
7890  */
7891 typedef union LDKCResult_PhantomRouteHintsDecodeErrorZPtr {
7892    /**
7893     * A pointer to the contents in the success state.
7894     * Reading from this pointer when `result_ok` is not set is undefined.
7895     */
7896    struct LDKPhantomRouteHints *result;
7897    /**
7898     * A pointer to the contents in the error state.
7899     * Reading from this pointer when `result_ok` is set is undefined.
7900     */
7901    struct LDKDecodeError *err;
7902 } LDKCResult_PhantomRouteHintsDecodeErrorZPtr;
7903
7904 /**
7905  * A CResult_PhantomRouteHintsDecodeErrorZ represents the result of a fallible operation,
7906  * containing a crate::lightning::ln::channelmanager::PhantomRouteHints on success and a crate::lightning::ln::msgs::DecodeError on failure.
7907  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
7908  */
7909 typedef struct LDKCResult_PhantomRouteHintsDecodeErrorZ {
7910    /**
7911     * The contents of this CResult_PhantomRouteHintsDecodeErrorZ, accessible via either
7912     * `err` or `result` depending on the state of `result_ok`.
7913     */
7914    union LDKCResult_PhantomRouteHintsDecodeErrorZPtr contents;
7915    /**
7916     * Whether this CResult_PhantomRouteHintsDecodeErrorZ represents a success state.
7917     */
7918    bool result_ok;
7919 } LDKCResult_PhantomRouteHintsDecodeErrorZ;
7920
7921 /**
7922  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::ChannelMonitors of arbitrary size.
7923  * This corresponds to std::vector in C++
7924  */
7925 typedef struct LDKCVec_ChannelMonitorZ {
7926    /**
7927     * The elements in the array.
7928     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
7929     */
7930    struct LDKChannelMonitor *data;
7931    /**
7932     * The number of elements pointed to by `data`.
7933     */
7934    uintptr_t datalen;
7935 } LDKCVec_ChannelMonitorZ;
7936
7937
7938
7939 /**
7940  * An update generated by the underlying channel itself which contains some new information the
7941  * [`ChannelMonitor`] should be made aware of.
7942  *
7943  * Because this represents only a small number of updates to the underlying state, it is generally
7944  * much smaller than a full [`ChannelMonitor`]. However, for large single commitment transaction
7945  * updates (e.g. ones during which there are hundreds of HTLCs pending on the commitment
7946  * transaction), a single update may reach upwards of 1 MiB in serialized size.
7947  */
7948 typedef struct MUST_USE_STRUCT LDKChannelMonitorUpdate {
7949    /**
7950     * A pointer to the opaque Rust object.
7951     * Nearly everywhere, inner must be non-null, however in places where
7952     * the Rust equivalent takes an Option, it may be set to null to indicate None.
7953     */
7954    LDKnativeChannelMonitorUpdate *inner;
7955    /**
7956     * Indicates that this is the only struct which contains the same pointer.
7957     * Rust functions which take ownership of an object provided via an argument require
7958     * this to be true and invalidate the object pointed to by inner.
7959     */
7960    bool is_owned;
7961 } LDKChannelMonitorUpdate;
7962
7963 /**
7964  * The `Watch` trait defines behavior for watching on-chain activity pertaining to channels as
7965  * blocks are connected and disconnected.
7966  *
7967  * Each channel is associated with a [`ChannelMonitor`]. Implementations of this trait are
7968  * responsible for maintaining a set of monitors such that they can be updated accordingly as
7969  * channel state changes and HTLCs are resolved. See method documentation for specific
7970  * requirements.
7971  *
7972  * Implementations **must** ensure that updates are successfully applied and persisted upon method
7973  * completion. If an update fails with a [`PermanentFailure`], then it must immediately shut down
7974  * without taking any further action such as persisting the current state.
7975  *
7976  * If an implementation maintains multiple instances of a channel's monitor (e.g., by storing
7977  * backup copies), then it must ensure that updates are applied across all instances. Otherwise, it
7978  * could result in a revoked transaction being broadcast, allowing the counterparty to claim all
7979  * funds in the channel. See [`ChannelMonitorUpdateErr`] for more details about how to handle
7980  * multiple instances.
7981  *
7982  * [`PermanentFailure`]: ChannelMonitorUpdateErr::PermanentFailure
7983  */
7984 typedef struct LDKWatch {
7985    /**
7986     * An opaque pointer which is passed to your function implementations as an argument.
7987     * This has no meaning in the LDK, and can be NULL or any other value.
7988     */
7989    void *this_arg;
7990    /**
7991     * Watches a channel identified by `funding_txo` using `monitor`.
7992     *
7993     * Implementations are responsible for watching the chain for the funding transaction along
7994     * with any spends of outputs returned by [`get_outputs_to_watch`]. In practice, this means
7995     * calling [`block_connected`] and [`block_disconnected`] on the monitor.
7996     *
7997     * Note: this interface MUST error with `ChannelMonitorUpdateErr::PermanentFailure` if
7998     * the given `funding_txo` has previously been registered via `watch_channel`.
7999     *
8000     * [`get_outputs_to_watch`]: channelmonitor::ChannelMonitor::get_outputs_to_watch
8001     * [`block_connected`]: channelmonitor::ChannelMonitor::block_connected
8002     * [`block_disconnected`]: channelmonitor::ChannelMonitor::block_disconnected
8003     */
8004    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*watch_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitor monitor);
8005    /**
8006     * Updates a channel identified by `funding_txo` by applying `update` to its monitor.
8007     *
8008     * Implementations must call [`update_monitor`] with the given update. See
8009     * [`ChannelMonitorUpdateErr`] for invariants around returning an error.
8010     *
8011     * [`update_monitor`]: channelmonitor::ChannelMonitor::update_monitor
8012     */
8013    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*update_channel)(const void *this_arg, struct LDKOutPoint funding_txo, struct LDKChannelMonitorUpdate update);
8014    /**
8015     * Returns any monitor events since the last call. Subsequent calls must only return new
8016     * events.
8017     *
8018     * Note that after any block- or transaction-connection calls to a [`ChannelMonitor`], no
8019     * further events may be returned here until the [`ChannelMonitor`] has been fully persisted
8020     * to disk.
8021     *
8022     * For details on asynchronous [`ChannelMonitor`] updating and returning
8023     * [`MonitorEvent::UpdateCompleted`] here, see [`ChannelMonitorUpdateErr::TemporaryFailure`].
8024     */
8025    struct LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ (*release_pending_monitor_events)(const void *this_arg);
8026    /**
8027     * Frees any resources associated with this object given its this_arg pointer.
8028     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8029     */
8030    void (*free)(void *this_arg);
8031 } LDKWatch;
8032
8033 /**
8034  * An interface to send a transaction to the Bitcoin network.
8035  */
8036 typedef struct LDKBroadcasterInterface {
8037    /**
8038     * An opaque pointer which is passed to your function implementations as an argument.
8039     * This has no meaning in the LDK, and can be NULL or any other value.
8040     */
8041    void *this_arg;
8042    /**
8043     * Sends a transaction out to (hopefully) be mined.
8044     */
8045    void (*broadcast_transaction)(const void *this_arg, struct LDKTransaction tx);
8046    /**
8047     * Frees any resources associated with this object given its this_arg pointer.
8048     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8049     */
8050    void (*free)(void *this_arg);
8051 } LDKBroadcasterInterface;
8052
8053 /**
8054  * A "slice" referencing some byte array. This is simply a length-tagged pointer which does not
8055  * own the memory pointed to by data.
8056  */
8057 typedef struct LDKu8slice {
8058    /**
8059     * A pointer to the byte buffer
8060     */
8061    const uint8_t *data;
8062    /**
8063     * The number of bytes pointed to by `data`.
8064     */
8065    uintptr_t datalen;
8066 } LDKu8slice;
8067
8068 /**
8069  * A trait to describe an object which can get user secrets and key material.
8070  */
8071 typedef struct LDKKeysInterface {
8072    /**
8073     * An opaque pointer which is passed to your function implementations as an argument.
8074     * This has no meaning in the LDK, and can be NULL or any other value.
8075     */
8076    void *this_arg;
8077    /**
8078     * Get node secret key based on the provided [`Recipient`].
8079     *
8080     * The node_id/network_key is the public key that corresponds to this secret key.
8081     *
8082     * This method must return the same value each time it is called with a given `Recipient`
8083     * parameter.
8084     */
8085    struct LDKCResult_SecretKeyNoneZ (*get_node_secret)(const void *this_arg, enum LDKRecipient recipient);
8086    /**
8087     * Gets the ECDH shared secret of our [`node secret`] and `other_key`, multiplying by `tweak` if
8088     * one is provided. Note that this tweak can be applied to `other_key` instead of our node
8089     * secret, though this is less efficient.
8090     *
8091     * [`node secret`]: Self::get_node_secret
8092     */
8093    struct LDKCResult_SharedSecretNoneZ (*ecdh)(const void *this_arg, enum LDKRecipient recipient, struct LDKPublicKey other_key, struct LDKCOption_ScalarZ tweak);
8094    /**
8095     * Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
8096     *
8097     * This method should return a different value each time it is called, to avoid linking
8098     * on-chain funds across channels as controlled to the same user.
8099     */
8100    struct LDKCVec_u8Z (*get_destination_script)(const void *this_arg);
8101    /**
8102     * Get a script pubkey which we will send funds to when closing a channel.
8103     *
8104     * This method should return a different value each time it is called, to avoid linking
8105     * on-chain funds across channels as controlled to the same user.
8106     */
8107    struct LDKShutdownScript (*get_shutdown_scriptpubkey)(const void *this_arg);
8108    /**
8109     * Get a new set of Sign for per-channel secrets. These MUST be unique even if you
8110     * restarted with some stale data!
8111     *
8112     * This method must return a different value each time it is called.
8113     */
8114    struct LDKSign (*get_channel_signer)(const void *this_arg, bool inbound, uint64_t channel_value_satoshis);
8115    /**
8116     * Gets a unique, cryptographically-secure, random 32 byte value. This is used for encrypting
8117     * onion packets and for temporary channel IDs. There is no requirement that these be
8118     * persisted anywhere, though they must be unique across restarts.
8119     *
8120     * This method must return a different value each time it is called.
8121     */
8122    struct LDKThirtyTwoBytes (*get_secure_random_bytes)(const void *this_arg);
8123    /**
8124     * Reads a `Signer` for this `KeysInterface` from the given input stream.
8125     * This is only called during deserialization of other objects which contain
8126     * `Sign`-implementing objects (ie `ChannelMonitor`s and `ChannelManager`s).
8127     * The bytes are exactly those which `<Self::Signer as Writeable>::write()` writes, and
8128     * contain no versioning scheme. You may wish to include your own version prefix and ensure
8129     * you've read all of the provided bytes to ensure no corruption occurred.
8130     */
8131    struct LDKCResult_SignDecodeErrorZ (*read_chan_signer)(const void *this_arg, struct LDKu8slice reader);
8132    /**
8133     * Sign an invoice.
8134     * By parameterizing by the raw invoice bytes instead of the hash, we allow implementors of
8135     * this trait to parse the invoice and make sure they're signing what they expect, rather than
8136     * blindly signing the hash.
8137     * The hrp is ascii bytes, while the invoice data is base32.
8138     *
8139     * The secret key used to sign the invoice is dependent on the [`Recipient`].
8140     */
8141    struct LDKCResult_RecoverableSignatureNoneZ (*sign_invoice)(const void *this_arg, struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z invoice_data, enum LDKRecipient receipient);
8142    /**
8143     * Get secret key material as bytes for use in encrypting and decrypting inbound payment data.
8144     *
8145     * If the implementor of this trait supports [phantom node payments], then every node that is
8146     * intended to be included in the phantom invoice route hints must return the same value from
8147     * this method.
8148     *
8149     * This method must return the same value each time it is called.
8150     *
8151     * [phantom node payments]: PhantomKeysManager
8152     */
8153    struct LDKThirtyTwoBytes (*get_inbound_payment_key_material)(const void *this_arg);
8154    /**
8155     * Frees any resources associated with this object given its this_arg pointer.
8156     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8157     */
8158    void (*free)(void *this_arg);
8159 } LDKKeysInterface;
8160
8161 /**
8162  * A trait which should be implemented to provide feerate information on a number of time
8163  * horizons.
8164  *
8165  * Note that all of the functions implemented here *must* be reentrant-safe (obviously - they're
8166  * called from inside the library in response to chain events, P2P events, or timer events).
8167  */
8168 typedef struct LDKFeeEstimator {
8169    /**
8170     * An opaque pointer which is passed to your function implementations as an argument.
8171     * This has no meaning in the LDK, and can be NULL or any other value.
8172     */
8173    void *this_arg;
8174    /**
8175     * Gets estimated satoshis of fee required per 1000 Weight-Units.
8176     *
8177     * LDK will wrap this method and ensure that the value returned is no smaller than 253
8178     * (ie 1 satoshi-per-byte rounded up to ensure later round-downs don't put us below 1 satoshi-per-byte).
8179     *
8180     * The following unit conversions can be used to convert to sats/KW:
8181     *  * satoshis-per-byte * 250
8182     *  * satoshis-per-kbyte / 4
8183     */
8184    uint32_t (*get_est_sat_per_1000_weight)(const void *this_arg, enum LDKConfirmationTarget confirmation_target);
8185    /**
8186     * Frees any resources associated with this object given its this_arg pointer.
8187     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8188     */
8189    void (*free)(void *this_arg);
8190 } LDKFeeEstimator;
8191
8192
8193
8194 /**
8195  * Manager which keeps track of a number of channels and sends messages to the appropriate
8196  * channel, also tracking HTLC preimages and forwarding onion packets appropriately.
8197  *
8198  * Implements ChannelMessageHandler, handling the multi-channel parts and passing things through
8199  * to individual Channels.
8200  *
8201  * Implements Writeable to write out all channel state to disk. Implies peer_disconnected() for
8202  * all peers during write/read (though does not modify this instance, only the instance being
8203  * serialized). This will result in any channels which have not yet exchanged funding_created (ie
8204  * called funding_transaction_generated for outbound channels).
8205  *
8206  * Note that you can be a bit lazier about writing out ChannelManager than you can be with
8207  * ChannelMonitors. With ChannelMonitors you MUST write each monitor update out to disk before
8208  * returning from chain::Watch::watch_/update_channel, with ChannelManagers, writing updates
8209  * happens out-of-band (and will prevent any other ChannelManager operations from occurring during
8210  * the serialization process). If the deserialized version is out-of-date compared to the
8211  * ChannelMonitors passed by reference to read(), those channels will be force-closed based on the
8212  * ChannelMonitor state and no funds will be lost (mod on-chain transaction fees).
8213  *
8214  * Note that the deserializer is only implemented for (BlockHash, ChannelManager), which
8215  * tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
8216  * the \"reorg path\" (ie call block_disconnected() until you get to a common block and then call
8217  * block_connected() to step towards your best block) upon deserialization before using the
8218  * object!
8219  *
8220  * Note that ChannelManager is responsible for tracking liveness of its channels and generating
8221  * ChannelUpdate messages informing peers that the channel is temporarily disabled. To avoid
8222  * spam due to quick disconnection/reconnection, updates are not sent until the channel has been
8223  * offline for a full minute. In order to track this, you must call
8224  * timer_tick_occurred roughly once per minute, though it doesn't have to be perfect.
8225  *
8226  * Rather than using a plain ChannelManager, it is preferable to use either a SimpleArcChannelManager
8227  * a SimpleRefChannelManager, for conciseness. See their documentation for more details, but
8228  * essentially you should default to using a SimpleRefChannelManager, and use a
8229  * SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
8230  * you're using lightning-net-tokio.
8231  */
8232 typedef struct MUST_USE_STRUCT LDKChannelManager {
8233    /**
8234     * A pointer to the opaque Rust object.
8235     * Nearly everywhere, inner must be non-null, however in places where
8236     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8237     */
8238    LDKnativeChannelManager *inner;
8239    /**
8240     * Indicates that this is the only struct which contains the same pointer.
8241     * Rust functions which take ownership of an object provided via an argument require
8242     * this to be true and invalidate the object pointed to by inner.
8243     */
8244    bool is_owned;
8245 } LDKChannelManager;
8246
8247 /**
8248  * A tuple of 2 elements. See the individual fields for the types contained.
8249  */
8250 typedef struct LDKC2Tuple_BlockHashChannelManagerZ {
8251    /**
8252     * The element at position 0
8253     */
8254    struct LDKThirtyTwoBytes a;
8255    /**
8256     * The element at position 1
8257     */
8258    struct LDKChannelManager b;
8259 } LDKC2Tuple_BlockHashChannelManagerZ;
8260
8261 /**
8262  * The contents of CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ
8263  */
8264 typedef union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr {
8265    /**
8266     * A pointer to the contents in the success state.
8267     * Reading from this pointer when `result_ok` is not set is undefined.
8268     */
8269    struct LDKC2Tuple_BlockHashChannelManagerZ *result;
8270    /**
8271     * A pointer to the contents in the error state.
8272     * Reading from this pointer when `result_ok` is set is undefined.
8273     */
8274    struct LDKDecodeError *err;
8275 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr;
8276
8277 /**
8278  * A CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents the result of a fallible operation,
8279  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelManagerZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
8280  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8281  */
8282 typedef struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ {
8283    /**
8284     * The contents of this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ, accessible via either
8285     * `err` or `result` depending on the state of `result_ok`.
8286     */
8287    union LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZPtr contents;
8288    /**
8289     * Whether this CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ represents a success state.
8290     */
8291    bool result_ok;
8292 } LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ;
8293
8294
8295
8296 /**
8297  * Options which apply on a per-channel basis and may change at runtime or based on negotiation
8298  * with our counterparty.
8299  */
8300 typedef struct MUST_USE_STRUCT LDKChannelConfig {
8301    /**
8302     * A pointer to the opaque Rust object.
8303     * Nearly everywhere, inner must be non-null, however in places where
8304     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8305     */
8306    LDKnativeChannelConfig *inner;
8307    /**
8308     * Indicates that this is the only struct which contains the same pointer.
8309     * Rust functions which take ownership of an object provided via an argument require
8310     * this to be true and invalidate the object pointed to by inner.
8311     */
8312    bool is_owned;
8313 } LDKChannelConfig;
8314
8315 /**
8316  * The contents of CResult_ChannelConfigDecodeErrorZ
8317  */
8318 typedef union LDKCResult_ChannelConfigDecodeErrorZPtr {
8319    /**
8320     * A pointer to the contents in the success state.
8321     * Reading from this pointer when `result_ok` is not set is undefined.
8322     */
8323    struct LDKChannelConfig *result;
8324    /**
8325     * A pointer to the contents in the error state.
8326     * Reading from this pointer when `result_ok` is set is undefined.
8327     */
8328    struct LDKDecodeError *err;
8329 } LDKCResult_ChannelConfigDecodeErrorZPtr;
8330
8331 /**
8332  * A CResult_ChannelConfigDecodeErrorZ represents the result of a fallible operation,
8333  * containing a crate::lightning::util::config::ChannelConfig on success and a crate::lightning::ln::msgs::DecodeError on failure.
8334  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8335  */
8336 typedef struct LDKCResult_ChannelConfigDecodeErrorZ {
8337    /**
8338     * The contents of this CResult_ChannelConfigDecodeErrorZ, accessible via either
8339     * `err` or `result` depending on the state of `result_ok`.
8340     */
8341    union LDKCResult_ChannelConfigDecodeErrorZPtr contents;
8342    /**
8343     * Whether this CResult_ChannelConfigDecodeErrorZ represents a success state.
8344     */
8345    bool result_ok;
8346 } LDKCResult_ChannelConfigDecodeErrorZ;
8347
8348 /**
8349  * The contents of CResult_OutPointDecodeErrorZ
8350  */
8351 typedef union LDKCResult_OutPointDecodeErrorZPtr {
8352    /**
8353     * A pointer to the contents in the success state.
8354     * Reading from this pointer when `result_ok` is not set is undefined.
8355     */
8356    struct LDKOutPoint *result;
8357    /**
8358     * A pointer to the contents in the error state.
8359     * Reading from this pointer when `result_ok` is set is undefined.
8360     */
8361    struct LDKDecodeError *err;
8362 } LDKCResult_OutPointDecodeErrorZPtr;
8363
8364 /**
8365  * A CResult_OutPointDecodeErrorZ represents the result of a fallible operation,
8366  * containing a crate::lightning::chain::transaction::OutPoint on success and a crate::lightning::ln::msgs::DecodeError on failure.
8367  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8368  */
8369 typedef struct LDKCResult_OutPointDecodeErrorZ {
8370    /**
8371     * The contents of this CResult_OutPointDecodeErrorZ, accessible via either
8372     * `err` or `result` depending on the state of `result_ok`.
8373     */
8374    union LDKCResult_OutPointDecodeErrorZPtr contents;
8375    /**
8376     * Whether this CResult_OutPointDecodeErrorZ represents a success state.
8377     */
8378    bool result_ok;
8379 } LDKCResult_OutPointDecodeErrorZ;
8380
8381 /**
8382  * Defines a type identifier for sending messages over the wire.
8383  *
8384  * Messages implementing this trait specify a type and must be [`Writeable`].
8385  */
8386 typedef struct LDKType {
8387    /**
8388     * An opaque pointer which is passed to your function implementations as an argument.
8389     * This has no meaning in the LDK, and can be NULL or any other value.
8390     */
8391    void *this_arg;
8392    /**
8393     * Returns the type identifying the message payload.
8394     */
8395    uint16_t (*type_id)(const void *this_arg);
8396    /**
8397     * Return a human-readable "debug" string describing this object
8398     */
8399    struct LDKStr (*debug_str)(const void *this_arg);
8400    /**
8401     * Serialize the object into a byte array
8402     */
8403    struct LDKCVec_u8Z (*write)(const void *this_arg);
8404    /**
8405     * Frees any resources associated with this object given its this_arg pointer.
8406     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
8407     */
8408    void (*free)(void *this_arg);
8409 } LDKType;
8410
8411 /**
8412  * An enum which can either contain a crate::lightning::ln::wire::Type or not
8413  */
8414 typedef enum LDKCOption_TypeZ_Tag {
8415    /**
8416     * When we're in this state, this COption_TypeZ contains a crate::lightning::ln::wire::Type
8417     */
8418    LDKCOption_TypeZ_Some,
8419    /**
8420     * When we're in this state, this COption_TypeZ contains nothing
8421     */
8422    LDKCOption_TypeZ_None,
8423    /**
8424     * Must be last for serialization purposes
8425     */
8426    LDKCOption_TypeZ_Sentinel,
8427 } LDKCOption_TypeZ_Tag;
8428
8429 typedef struct LDKCOption_TypeZ {
8430    LDKCOption_TypeZ_Tag tag;
8431    union {
8432       struct {
8433          struct LDKType some;
8434       };
8435    };
8436 } LDKCOption_TypeZ;
8437
8438 /**
8439  * The contents of CResult_COption_TypeZDecodeErrorZ
8440  */
8441 typedef union LDKCResult_COption_TypeZDecodeErrorZPtr {
8442    /**
8443     * A pointer to the contents in the success state.
8444     * Reading from this pointer when `result_ok` is not set is undefined.
8445     */
8446    struct LDKCOption_TypeZ *result;
8447    /**
8448     * A pointer to the contents in the error state.
8449     * Reading from this pointer when `result_ok` is set is undefined.
8450     */
8451    struct LDKDecodeError *err;
8452 } LDKCResult_COption_TypeZDecodeErrorZPtr;
8453
8454 /**
8455  * A CResult_COption_TypeZDecodeErrorZ represents the result of a fallible operation,
8456  * containing a crate::c_types::derived::COption_TypeZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
8457  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8458  */
8459 typedef struct LDKCResult_COption_TypeZDecodeErrorZ {
8460    /**
8461     * The contents of this CResult_COption_TypeZDecodeErrorZ, accessible via either
8462     * `err` or `result` depending on the state of `result_ok`.
8463     */
8464    union LDKCResult_COption_TypeZDecodeErrorZPtr contents;
8465    /**
8466     * Whether this CResult_COption_TypeZDecodeErrorZ represents a success state.
8467     */
8468    bool result_ok;
8469 } LDKCResult_COption_TypeZDecodeErrorZ;
8470
8471 /**
8472  * An error that may occur when making a payment.
8473  */
8474 typedef enum LDKPaymentError_Tag {
8475    /**
8476     * An error resulting from the provided [`Invoice`] or payment hash.
8477     */
8478    LDKPaymentError_Invoice,
8479    /**
8480     * An error occurring when finding a route.
8481     */
8482    LDKPaymentError_Routing,
8483    /**
8484     * An error occurring when sending a payment.
8485     */
8486    LDKPaymentError_Sending,
8487    /**
8488     * Must be last for serialization purposes
8489     */
8490    LDKPaymentError_Sentinel,
8491 } LDKPaymentError_Tag;
8492
8493 typedef struct MUST_USE_STRUCT LDKPaymentError {
8494    LDKPaymentError_Tag tag;
8495    union {
8496       struct {
8497          struct LDKStr invoice;
8498       };
8499       struct {
8500          struct LDKLightningError routing;
8501       };
8502       struct {
8503          struct LDKPaymentSendFailure sending;
8504       };
8505    };
8506 } LDKPaymentError;
8507
8508 /**
8509  * The contents of CResult_PaymentIdPaymentErrorZ
8510  */
8511 typedef union LDKCResult_PaymentIdPaymentErrorZPtr {
8512    /**
8513     * A pointer to the contents in the success state.
8514     * Reading from this pointer when `result_ok` is not set is undefined.
8515     */
8516    struct LDKThirtyTwoBytes *result;
8517    /**
8518     * A pointer to the contents in the error state.
8519     * Reading from this pointer when `result_ok` is set is undefined.
8520     */
8521    struct LDKPaymentError *err;
8522 } LDKCResult_PaymentIdPaymentErrorZPtr;
8523
8524 /**
8525  * A CResult_PaymentIdPaymentErrorZ represents the result of a fallible operation,
8526  * containing a crate::c_types::ThirtyTwoBytes on success and a crate::lightning_invoice::payment::PaymentError on failure.
8527  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8528  */
8529 typedef struct LDKCResult_PaymentIdPaymentErrorZ {
8530    /**
8531     * The contents of this CResult_PaymentIdPaymentErrorZ, accessible via either
8532     * `err` or `result` depending on the state of `result_ok`.
8533     */
8534    union LDKCResult_PaymentIdPaymentErrorZPtr contents;
8535    /**
8536     * Whether this CResult_PaymentIdPaymentErrorZ represents a success state.
8537     */
8538    bool result_ok;
8539 } LDKCResult_PaymentIdPaymentErrorZ;
8540
8541
8542
8543 /**
8544  * A map with liquidity value (in msat) keyed by a short channel id and the direction the HTLC
8545  * is traveling in. The direction boolean is determined by checking if the HTLC source's public
8546  * key is less than its destination. See [`InFlightHtlcs::used_liquidity_msat`] for more
8547  * details.
8548  */
8549 typedef struct MUST_USE_STRUCT LDKInFlightHtlcs {
8550    /**
8551     * A pointer to the opaque Rust object.
8552     * Nearly everywhere, inner must be non-null, however in places where
8553     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8554     */
8555    LDKnativeInFlightHtlcs *inner;
8556    /**
8557     * Indicates that this is the only struct which contains the same pointer.
8558     * Rust functions which take ownership of an object provided via an argument require
8559     * this to be true and invalidate the object pointed to by inner.
8560     */
8561    bool is_owned;
8562 } LDKInFlightHtlcs;
8563
8564 /**
8565  * The contents of CResult_InFlightHtlcsDecodeErrorZ
8566  */
8567 typedef union LDKCResult_InFlightHtlcsDecodeErrorZPtr {
8568    /**
8569     * A pointer to the contents in the success state.
8570     * Reading from this pointer when `result_ok` is not set is undefined.
8571     */
8572    struct LDKInFlightHtlcs *result;
8573    /**
8574     * A pointer to the contents in the error state.
8575     * Reading from this pointer when `result_ok` is set is undefined.
8576     */
8577    struct LDKDecodeError *err;
8578 } LDKCResult_InFlightHtlcsDecodeErrorZPtr;
8579
8580 /**
8581  * A CResult_InFlightHtlcsDecodeErrorZ represents the result of a fallible operation,
8582  * containing a crate::lightning_invoice::payment::InFlightHtlcs on success and a crate::lightning::ln::msgs::DecodeError on failure.
8583  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8584  */
8585 typedef struct LDKCResult_InFlightHtlcsDecodeErrorZ {
8586    /**
8587     * The contents of this CResult_InFlightHtlcsDecodeErrorZ, accessible via either
8588     * `err` or `result` depending on the state of `result_ok`.
8589     */
8590    union LDKCResult_InFlightHtlcsDecodeErrorZPtr contents;
8591    /**
8592     * Whether this CResult_InFlightHtlcsDecodeErrorZ represents a success state.
8593     */
8594    bool result_ok;
8595 } LDKCResult_InFlightHtlcsDecodeErrorZ;
8596
8597 /**
8598  * Sub-errors which don't have specific information in them use this type.
8599  */
8600 typedef struct LDKError {
8601    /**
8602     * Zero-Sized_types aren't consistent across Rust/C/C++, so we add some size here
8603     */
8604    uint8_t _dummy;
8605 } LDKError;
8606
8607 /**
8608  * Errors that indicate what is wrong with the invoice. They have some granularity for debug
8609  * reasons, but should generally result in an \"invalid BOLT11 invoice\" message for the user.
8610  */
8611 typedef enum LDKParseError_Tag {
8612    LDKParseError_Bech32Error,
8613    LDKParseError_ParseAmountError,
8614    LDKParseError_MalformedSignature,
8615    LDKParseError_BadPrefix,
8616    LDKParseError_UnknownCurrency,
8617    LDKParseError_UnknownSiPrefix,
8618    LDKParseError_MalformedHRP,
8619    LDKParseError_TooShortDataPart,
8620    LDKParseError_UnexpectedEndOfTaggedFields,
8621    LDKParseError_DescriptionDecodeError,
8622    LDKParseError_PaddingError,
8623    LDKParseError_IntegerOverflowError,
8624    LDKParseError_InvalidSegWitProgramLength,
8625    LDKParseError_InvalidPubKeyHashLength,
8626    LDKParseError_InvalidScriptHashLength,
8627    LDKParseError_InvalidRecoveryId,
8628    LDKParseError_InvalidSliceLength,
8629    /**
8630     * Not an error, but used internally to signal that a part of the invoice should be ignored
8631     * according to BOLT11
8632     */
8633    LDKParseError_Skip,
8634    /**
8635     * Must be last for serialization purposes
8636     */
8637    LDKParseError_Sentinel,
8638 } LDKParseError_Tag;
8639
8640 typedef struct MUST_USE_STRUCT LDKParseError {
8641    LDKParseError_Tag tag;
8642    union {
8643       struct {
8644          struct LDKBech32Error bech32_error;
8645       };
8646       struct {
8647          struct LDKError parse_amount_error;
8648       };
8649       struct {
8650          enum LDKSecp256k1Error malformed_signature;
8651       };
8652       struct {
8653          struct LDKError description_decode_error;
8654       };
8655       struct {
8656          struct LDKStr invalid_slice_length;
8657       };
8658    };
8659 } LDKParseError;
8660
8661 /**
8662  * The contents of CResult_SiPrefixParseErrorZ
8663  */
8664 typedef union LDKCResult_SiPrefixParseErrorZPtr {
8665    /**
8666     * A pointer to the contents in the success state.
8667     * Reading from this pointer when `result_ok` is not set is undefined.
8668     */
8669    enum LDKSiPrefix *result;
8670    /**
8671     * A pointer to the contents in the error state.
8672     * Reading from this pointer when `result_ok` is set is undefined.
8673     */
8674    struct LDKParseError *err;
8675 } LDKCResult_SiPrefixParseErrorZPtr;
8676
8677 /**
8678  * A CResult_SiPrefixParseErrorZ represents the result of a fallible operation,
8679  * containing a crate::lightning_invoice::SiPrefix on success and a crate::lightning_invoice::ParseError on failure.
8680  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8681  */
8682 typedef struct LDKCResult_SiPrefixParseErrorZ {
8683    /**
8684     * The contents of this CResult_SiPrefixParseErrorZ, accessible via either
8685     * `err` or `result` depending on the state of `result_ok`.
8686     */
8687    union LDKCResult_SiPrefixParseErrorZPtr contents;
8688    /**
8689     * Whether this CResult_SiPrefixParseErrorZ represents a success state.
8690     */
8691    bool result_ok;
8692 } LDKCResult_SiPrefixParseErrorZ;
8693
8694
8695
8696 /**
8697  * Represents a syntactically and semantically correct lightning BOLT11 invoice.
8698  *
8699  * There are three ways to construct an `Invoice`:
8700  *  1. using `InvoiceBuilder`
8701  *  2. using `Invoice::from_signed(SignedRawInvoice)`
8702  *  3. using `str::parse::<Invoice>(&str)`
8703  */
8704 typedef struct MUST_USE_STRUCT LDKInvoice {
8705    /**
8706     * A pointer to the opaque Rust object.
8707     * Nearly everywhere, inner must be non-null, however in places where
8708     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8709     */
8710    LDKnativeInvoice *inner;
8711    /**
8712     * Indicates that this is the only struct which contains the same pointer.
8713     * Rust functions which take ownership of an object provided via an argument require
8714     * this to be true and invalidate the object pointed to by inner.
8715     */
8716    bool is_owned;
8717 } LDKInvoice;
8718
8719 /**
8720  * Indicates that something went wrong while parsing or validating the invoice. Parsing errors
8721  * should be mostly seen as opaque and are only there for debugging reasons. Semantic errors
8722  * like wrong signatures, missing fields etc. could mean that someone tampered with the invoice.
8723  */
8724 typedef enum LDKParseOrSemanticError_Tag {
8725    /**
8726     * The invoice couldn't be decoded
8727     */
8728    LDKParseOrSemanticError_ParseError,
8729    /**
8730     * The invoice could be decoded but violates the BOLT11 standard
8731     */
8732    LDKParseOrSemanticError_SemanticError,
8733    /**
8734     * Must be last for serialization purposes
8735     */
8736    LDKParseOrSemanticError_Sentinel,
8737 } LDKParseOrSemanticError_Tag;
8738
8739 typedef struct MUST_USE_STRUCT LDKParseOrSemanticError {
8740    LDKParseOrSemanticError_Tag tag;
8741    union {
8742       struct {
8743          struct LDKParseError parse_error;
8744       };
8745       struct {
8746          enum LDKSemanticError semantic_error;
8747       };
8748    };
8749 } LDKParseOrSemanticError;
8750
8751 /**
8752  * The contents of CResult_InvoiceParseOrSemanticErrorZ
8753  */
8754 typedef union LDKCResult_InvoiceParseOrSemanticErrorZPtr {
8755    /**
8756     * A pointer to the contents in the success state.
8757     * Reading from this pointer when `result_ok` is not set is undefined.
8758     */
8759    struct LDKInvoice *result;
8760    /**
8761     * A pointer to the contents in the error state.
8762     * Reading from this pointer when `result_ok` is set is undefined.
8763     */
8764    struct LDKParseOrSemanticError *err;
8765 } LDKCResult_InvoiceParseOrSemanticErrorZPtr;
8766
8767 /**
8768  * A CResult_InvoiceParseOrSemanticErrorZ represents the result of a fallible operation,
8769  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::ParseOrSemanticError on failure.
8770  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8771  */
8772 typedef struct LDKCResult_InvoiceParseOrSemanticErrorZ {
8773    /**
8774     * The contents of this CResult_InvoiceParseOrSemanticErrorZ, accessible via either
8775     * `err` or `result` depending on the state of `result_ok`.
8776     */
8777    union LDKCResult_InvoiceParseOrSemanticErrorZPtr contents;
8778    /**
8779     * Whether this CResult_InvoiceParseOrSemanticErrorZ represents a success state.
8780     */
8781    bool result_ok;
8782 } LDKCResult_InvoiceParseOrSemanticErrorZ;
8783
8784
8785
8786 /**
8787  * Represents a signed `RawInvoice` with cached hash. The signature is not checked and may be
8788  * invalid.
8789  *
8790  * # Invariants
8791  * The hash has to be either from the deserialized invoice or from the serialized `raw_invoice`.
8792  */
8793 typedef struct MUST_USE_STRUCT LDKSignedRawInvoice {
8794    /**
8795     * A pointer to the opaque Rust object.
8796     * Nearly everywhere, inner must be non-null, however in places where
8797     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8798     */
8799    LDKnativeSignedRawInvoice *inner;
8800    /**
8801     * Indicates that this is the only struct which contains the same pointer.
8802     * Rust functions which take ownership of an object provided via an argument require
8803     * this to be true and invalidate the object pointed to by inner.
8804     */
8805    bool is_owned;
8806 } LDKSignedRawInvoice;
8807
8808 /**
8809  * The contents of CResult_SignedRawInvoiceParseErrorZ
8810  */
8811 typedef union LDKCResult_SignedRawInvoiceParseErrorZPtr {
8812    /**
8813     * A pointer to the contents in the success state.
8814     * Reading from this pointer when `result_ok` is not set is undefined.
8815     */
8816    struct LDKSignedRawInvoice *result;
8817    /**
8818     * A pointer to the contents in the error state.
8819     * Reading from this pointer when `result_ok` is set is undefined.
8820     */
8821    struct LDKParseError *err;
8822 } LDKCResult_SignedRawInvoiceParseErrorZPtr;
8823
8824 /**
8825  * A CResult_SignedRawInvoiceParseErrorZ represents the result of a fallible operation,
8826  * containing a crate::lightning_invoice::SignedRawInvoice on success and a crate::lightning_invoice::ParseError on failure.
8827  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8828  */
8829 typedef struct LDKCResult_SignedRawInvoiceParseErrorZ {
8830    /**
8831     * The contents of this CResult_SignedRawInvoiceParseErrorZ, accessible via either
8832     * `err` or `result` depending on the state of `result_ok`.
8833     */
8834    union LDKCResult_SignedRawInvoiceParseErrorZPtr contents;
8835    /**
8836     * Whether this CResult_SignedRawInvoiceParseErrorZ represents a success state.
8837     */
8838    bool result_ok;
8839 } LDKCResult_SignedRawInvoiceParseErrorZ;
8840
8841
8842
8843 /**
8844  * Represents an syntactically correct Invoice for a payment on the lightning network,
8845  * but without the signature information.
8846  * De- and encoding should not lead to information loss but may lead to different hashes.
8847  *
8848  * For methods without docs see the corresponding methods in `Invoice`.
8849  */
8850 typedef struct MUST_USE_STRUCT LDKRawInvoice {
8851    /**
8852     * A pointer to the opaque Rust object.
8853     * Nearly everywhere, inner must be non-null, however in places where
8854     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8855     */
8856    LDKnativeRawInvoice *inner;
8857    /**
8858     * Indicates that this is the only struct which contains the same pointer.
8859     * Rust functions which take ownership of an object provided via an argument require
8860     * this to be true and invalidate the object pointed to by inner.
8861     */
8862    bool is_owned;
8863 } LDKRawInvoice;
8864
8865
8866
8867 /**
8868  * Recoverable signature
8869  */
8870 typedef struct MUST_USE_STRUCT LDKInvoiceSignature {
8871    /**
8872     * A pointer to the opaque Rust object.
8873     * Nearly everywhere, inner must be non-null, however in places where
8874     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8875     */
8876    LDKnativeInvoiceSignature *inner;
8877    /**
8878     * Indicates that this is the only struct which contains the same pointer.
8879     * Rust functions which take ownership of an object provided via an argument require
8880     * this to be true and invalidate the object pointed to by inner.
8881     */
8882    bool is_owned;
8883 } LDKInvoiceSignature;
8884
8885 /**
8886  * A tuple of 3 elements. See the individual fields for the types contained.
8887  */
8888 typedef struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ {
8889    /**
8890     * The element at position 0
8891     */
8892    struct LDKRawInvoice a;
8893    /**
8894     * The element at position 1
8895     */
8896    struct LDKThirtyTwoBytes b;
8897    /**
8898     * The element at position 2
8899     */
8900    struct LDKInvoiceSignature c;
8901 } LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ;
8902
8903
8904
8905 /**
8906  * Payee public key
8907  */
8908 typedef struct MUST_USE_STRUCT LDKPayeePubKey {
8909    /**
8910     * A pointer to the opaque Rust object.
8911     * Nearly everywhere, inner must be non-null, however in places where
8912     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8913     */
8914    LDKnativePayeePubKey *inner;
8915    /**
8916     * Indicates that this is the only struct which contains the same pointer.
8917     * Rust functions which take ownership of an object provided via an argument require
8918     * this to be true and invalidate the object pointed to by inner.
8919     */
8920    bool is_owned;
8921 } LDKPayeePubKey;
8922
8923 /**
8924  * The contents of CResult_PayeePubKeyErrorZ
8925  */
8926 typedef union LDKCResult_PayeePubKeyErrorZPtr {
8927    /**
8928     * A pointer to the contents in the success state.
8929     * Reading from this pointer when `result_ok` is not set is undefined.
8930     */
8931    struct LDKPayeePubKey *result;
8932    /**
8933     * A pointer to the contents in the error state.
8934     * Reading from this pointer when `result_ok` is set is undefined.
8935     */
8936    enum LDKSecp256k1Error *err;
8937 } LDKCResult_PayeePubKeyErrorZPtr;
8938
8939 /**
8940  * A CResult_PayeePubKeyErrorZ represents the result of a fallible operation,
8941  * containing a crate::lightning_invoice::PayeePubKey on success and a crate::c_types::Secp256k1Error on failure.
8942  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
8943  */
8944 typedef struct LDKCResult_PayeePubKeyErrorZ {
8945    /**
8946     * The contents of this CResult_PayeePubKeyErrorZ, accessible via either
8947     * `err` or `result` depending on the state of `result_ok`.
8948     */
8949    union LDKCResult_PayeePubKeyErrorZPtr contents;
8950    /**
8951     * Whether this CResult_PayeePubKeyErrorZ represents a success state.
8952     */
8953    bool result_ok;
8954 } LDKCResult_PayeePubKeyErrorZ;
8955
8956
8957
8958 /**
8959  * Private routing information
8960  *
8961  * # Invariants
8962  * The encoded route has to be <1024 5bit characters long (<=639 bytes or <=12 hops)
8963  *
8964  */
8965 typedef struct MUST_USE_STRUCT LDKPrivateRoute {
8966    /**
8967     * A pointer to the opaque Rust object.
8968     * Nearly everywhere, inner must be non-null, however in places where
8969     * the Rust equivalent takes an Option, it may be set to null to indicate None.
8970     */
8971    LDKnativePrivateRoute *inner;
8972    /**
8973     * Indicates that this is the only struct which contains the same pointer.
8974     * Rust functions which take ownership of an object provided via an argument require
8975     * this to be true and invalidate the object pointed to by inner.
8976     */
8977    bool is_owned;
8978 } LDKPrivateRoute;
8979
8980 /**
8981  * A dynamically-allocated array of crate::lightning_invoice::PrivateRoutes of arbitrary size.
8982  * This corresponds to std::vector in C++
8983  */
8984 typedef struct LDKCVec_PrivateRouteZ {
8985    /**
8986     * The elements in the array.
8987     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
8988     */
8989    struct LDKPrivateRoute *data;
8990    /**
8991     * The number of elements pointed to by `data`.
8992     */
8993    uintptr_t datalen;
8994 } LDKCVec_PrivateRouteZ;
8995
8996
8997
8998 /**
8999  * A timestamp that refers to a date after 1 January 1970.
9000  *
9001  * # Invariants
9002  *
9003  * The Unix timestamp representing the stored time has to be positive and no greater than
9004  * [`MAX_TIMESTAMP`].
9005  */
9006 typedef struct MUST_USE_STRUCT LDKPositiveTimestamp {
9007    /**
9008     * A pointer to the opaque Rust object.
9009     * Nearly everywhere, inner must be non-null, however in places where
9010     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9011     */
9012    LDKnativePositiveTimestamp *inner;
9013    /**
9014     * Indicates that this is the only struct which contains the same pointer.
9015     * Rust functions which take ownership of an object provided via an argument require
9016     * this to be true and invalidate the object pointed to by inner.
9017     */
9018    bool is_owned;
9019 } LDKPositiveTimestamp;
9020
9021 /**
9022  * The contents of CResult_PositiveTimestampCreationErrorZ
9023  */
9024 typedef union LDKCResult_PositiveTimestampCreationErrorZPtr {
9025    /**
9026     * A pointer to the contents in the success state.
9027     * Reading from this pointer when `result_ok` is not set is undefined.
9028     */
9029    struct LDKPositiveTimestamp *result;
9030    /**
9031     * A pointer to the contents in the error state.
9032     * Reading from this pointer when `result_ok` is set is undefined.
9033     */
9034    enum LDKCreationError *err;
9035 } LDKCResult_PositiveTimestampCreationErrorZPtr;
9036
9037 /**
9038  * A CResult_PositiveTimestampCreationErrorZ represents the result of a fallible operation,
9039  * containing a crate::lightning_invoice::PositiveTimestamp on success and a crate::lightning_invoice::CreationError on failure.
9040  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9041  */
9042 typedef struct LDKCResult_PositiveTimestampCreationErrorZ {
9043    /**
9044     * The contents of this CResult_PositiveTimestampCreationErrorZ, accessible via either
9045     * `err` or `result` depending on the state of `result_ok`.
9046     */
9047    union LDKCResult_PositiveTimestampCreationErrorZPtr contents;
9048    /**
9049     * Whether this CResult_PositiveTimestampCreationErrorZ represents a success state.
9050     */
9051    bool result_ok;
9052 } LDKCResult_PositiveTimestampCreationErrorZ;
9053
9054 /**
9055  * The contents of CResult_NoneSemanticErrorZ
9056  */
9057 typedef union LDKCResult_NoneSemanticErrorZPtr {
9058    /**
9059     * Note that this value is always NULL, as there are no contents in the OK variant
9060     */
9061    void *result;
9062    /**
9063     * A pointer to the contents in the error state.
9064     * Reading from this pointer when `result_ok` is set is undefined.
9065     */
9066    enum LDKSemanticError *err;
9067 } LDKCResult_NoneSemanticErrorZPtr;
9068
9069 /**
9070  * A CResult_NoneSemanticErrorZ represents the result of a fallible operation,
9071  * containing a () on success and a crate::lightning_invoice::SemanticError on failure.
9072  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9073  */
9074 typedef struct LDKCResult_NoneSemanticErrorZ {
9075    /**
9076     * The contents of this CResult_NoneSemanticErrorZ, accessible via either
9077     * `err` or `result` depending on the state of `result_ok`.
9078     */
9079    union LDKCResult_NoneSemanticErrorZPtr contents;
9080    /**
9081     * Whether this CResult_NoneSemanticErrorZ represents a success state.
9082     */
9083    bool result_ok;
9084 } LDKCResult_NoneSemanticErrorZ;
9085
9086 /**
9087  * The contents of CResult_InvoiceSemanticErrorZ
9088  */
9089 typedef union LDKCResult_InvoiceSemanticErrorZPtr {
9090    /**
9091     * A pointer to the contents in the success state.
9092     * Reading from this pointer when `result_ok` is not set is undefined.
9093     */
9094    struct LDKInvoice *result;
9095    /**
9096     * A pointer to the contents in the error state.
9097     * Reading from this pointer when `result_ok` is set is undefined.
9098     */
9099    enum LDKSemanticError *err;
9100 } LDKCResult_InvoiceSemanticErrorZPtr;
9101
9102 /**
9103  * A CResult_InvoiceSemanticErrorZ represents the result of a fallible operation,
9104  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SemanticError on failure.
9105  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9106  */
9107 typedef struct LDKCResult_InvoiceSemanticErrorZ {
9108    /**
9109     * The contents of this CResult_InvoiceSemanticErrorZ, accessible via either
9110     * `err` or `result` depending on the state of `result_ok`.
9111     */
9112    union LDKCResult_InvoiceSemanticErrorZPtr contents;
9113    /**
9114     * Whether this CResult_InvoiceSemanticErrorZ represents a success state.
9115     */
9116    bool result_ok;
9117 } LDKCResult_InvoiceSemanticErrorZ;
9118
9119
9120
9121 /**
9122  * Description string
9123  *
9124  * # Invariants
9125  * The description can be at most 639 __bytes__ long
9126  */
9127 typedef struct MUST_USE_STRUCT LDKDescription {
9128    /**
9129     * A pointer to the opaque Rust object.
9130     * Nearly everywhere, inner must be non-null, however in places where
9131     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9132     */
9133    LDKnativeDescription *inner;
9134    /**
9135     * Indicates that this is the only struct which contains the same pointer.
9136     * Rust functions which take ownership of an object provided via an argument require
9137     * this to be true and invalidate the object pointed to by inner.
9138     */
9139    bool is_owned;
9140 } LDKDescription;
9141
9142 /**
9143  * The contents of CResult_DescriptionCreationErrorZ
9144  */
9145 typedef union LDKCResult_DescriptionCreationErrorZPtr {
9146    /**
9147     * A pointer to the contents in the success state.
9148     * Reading from this pointer when `result_ok` is not set is undefined.
9149     */
9150    struct LDKDescription *result;
9151    /**
9152     * A pointer to the contents in the error state.
9153     * Reading from this pointer when `result_ok` is set is undefined.
9154     */
9155    enum LDKCreationError *err;
9156 } LDKCResult_DescriptionCreationErrorZPtr;
9157
9158 /**
9159  * A CResult_DescriptionCreationErrorZ represents the result of a fallible operation,
9160  * containing a crate::lightning_invoice::Description on success and a crate::lightning_invoice::CreationError on failure.
9161  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9162  */
9163 typedef struct LDKCResult_DescriptionCreationErrorZ {
9164    /**
9165     * The contents of this CResult_DescriptionCreationErrorZ, accessible via either
9166     * `err` or `result` depending on the state of `result_ok`.
9167     */
9168    union LDKCResult_DescriptionCreationErrorZPtr contents;
9169    /**
9170     * Whether this CResult_DescriptionCreationErrorZ represents a success state.
9171     */
9172    bool result_ok;
9173 } LDKCResult_DescriptionCreationErrorZ;
9174
9175 /**
9176  * The contents of CResult_PrivateRouteCreationErrorZ
9177  */
9178 typedef union LDKCResult_PrivateRouteCreationErrorZPtr {
9179    /**
9180     * A pointer to the contents in the success state.
9181     * Reading from this pointer when `result_ok` is not set is undefined.
9182     */
9183    struct LDKPrivateRoute *result;
9184    /**
9185     * A pointer to the contents in the error state.
9186     * Reading from this pointer when `result_ok` is set is undefined.
9187     */
9188    enum LDKCreationError *err;
9189 } LDKCResult_PrivateRouteCreationErrorZPtr;
9190
9191 /**
9192  * A CResult_PrivateRouteCreationErrorZ represents the result of a fallible operation,
9193  * containing a crate::lightning_invoice::PrivateRoute on success and a crate::lightning_invoice::CreationError on failure.
9194  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9195  */
9196 typedef struct LDKCResult_PrivateRouteCreationErrorZ {
9197    /**
9198     * The contents of this CResult_PrivateRouteCreationErrorZ, accessible via either
9199     * `err` or `result` depending on the state of `result_ok`.
9200     */
9201    union LDKCResult_PrivateRouteCreationErrorZPtr contents;
9202    /**
9203     * Whether this CResult_PrivateRouteCreationErrorZ represents a success state.
9204     */
9205    bool result_ok;
9206 } LDKCResult_PrivateRouteCreationErrorZ;
9207
9208 /**
9209  * The contents of CResult_StringErrorZ
9210  */
9211 typedef union LDKCResult_StringErrorZPtr {
9212    /**
9213     * A pointer to the contents in the success state.
9214     * Reading from this pointer when `result_ok` is not set is undefined.
9215     */
9216    struct LDKStr *result;
9217    /**
9218     * A pointer to the contents in the error state.
9219     * Reading from this pointer when `result_ok` is set is undefined.
9220     */
9221    enum LDKSecp256k1Error *err;
9222 } LDKCResult_StringErrorZPtr;
9223
9224 /**
9225  * A CResult_StringErrorZ represents the result of a fallible operation,
9226  * containing a crate::c_types::Str on success and a crate::c_types::Secp256k1Error on failure.
9227  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9228  */
9229 typedef struct LDKCResult_StringErrorZ {
9230    /**
9231     * The contents of this CResult_StringErrorZ, accessible via either
9232     * `err` or `result` depending on the state of `result_ok`.
9233     */
9234    union LDKCResult_StringErrorZPtr contents;
9235    /**
9236     * Whether this CResult_StringErrorZ represents a success state.
9237     */
9238    bool result_ok;
9239 } LDKCResult_StringErrorZ;
9240
9241 /**
9242  * The contents of CResult_ChannelMonitorUpdateDecodeErrorZ
9243  */
9244 typedef union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr {
9245    /**
9246     * A pointer to the contents in the success state.
9247     * Reading from this pointer when `result_ok` is not set is undefined.
9248     */
9249    struct LDKChannelMonitorUpdate *result;
9250    /**
9251     * A pointer to the contents in the error state.
9252     * Reading from this pointer when `result_ok` is set is undefined.
9253     */
9254    struct LDKDecodeError *err;
9255 } LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr;
9256
9257 /**
9258  * A CResult_ChannelMonitorUpdateDecodeErrorZ represents the result of a fallible operation,
9259  * containing a crate::lightning::chain::channelmonitor::ChannelMonitorUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
9260  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9261  */
9262 typedef struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ {
9263    /**
9264     * The contents of this CResult_ChannelMonitorUpdateDecodeErrorZ, accessible via either
9265     * `err` or `result` depending on the state of `result_ok`.
9266     */
9267    union LDKCResult_ChannelMonitorUpdateDecodeErrorZPtr contents;
9268    /**
9269     * Whether this CResult_ChannelMonitorUpdateDecodeErrorZ represents a success state.
9270     */
9271    bool result_ok;
9272 } LDKCResult_ChannelMonitorUpdateDecodeErrorZ;
9273
9274 /**
9275  * An enum which can either contain a crate::lightning::chain::channelmonitor::MonitorEvent or not
9276  */
9277 typedef enum LDKCOption_MonitorEventZ_Tag {
9278    /**
9279     * When we're in this state, this COption_MonitorEventZ contains a crate::lightning::chain::channelmonitor::MonitorEvent
9280     */
9281    LDKCOption_MonitorEventZ_Some,
9282    /**
9283     * When we're in this state, this COption_MonitorEventZ contains nothing
9284     */
9285    LDKCOption_MonitorEventZ_None,
9286    /**
9287     * Must be last for serialization purposes
9288     */
9289    LDKCOption_MonitorEventZ_Sentinel,
9290 } LDKCOption_MonitorEventZ_Tag;
9291
9292 typedef struct LDKCOption_MonitorEventZ {
9293    LDKCOption_MonitorEventZ_Tag tag;
9294    union {
9295       struct {
9296          struct LDKMonitorEvent some;
9297       };
9298    };
9299 } LDKCOption_MonitorEventZ;
9300
9301 /**
9302  * The contents of CResult_COption_MonitorEventZDecodeErrorZ
9303  */
9304 typedef union LDKCResult_COption_MonitorEventZDecodeErrorZPtr {
9305    /**
9306     * A pointer to the contents in the success state.
9307     * Reading from this pointer when `result_ok` is not set is undefined.
9308     */
9309    struct LDKCOption_MonitorEventZ *result;
9310    /**
9311     * A pointer to the contents in the error state.
9312     * Reading from this pointer when `result_ok` is set is undefined.
9313     */
9314    struct LDKDecodeError *err;
9315 } LDKCResult_COption_MonitorEventZDecodeErrorZPtr;
9316
9317 /**
9318  * A CResult_COption_MonitorEventZDecodeErrorZ represents the result of a fallible operation,
9319  * containing a crate::c_types::derived::COption_MonitorEventZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
9320  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9321  */
9322 typedef struct LDKCResult_COption_MonitorEventZDecodeErrorZ {
9323    /**
9324     * The contents of this CResult_COption_MonitorEventZDecodeErrorZ, accessible via either
9325     * `err` or `result` depending on the state of `result_ok`.
9326     */
9327    union LDKCResult_COption_MonitorEventZDecodeErrorZPtr contents;
9328    /**
9329     * Whether this CResult_COption_MonitorEventZDecodeErrorZ represents a success state.
9330     */
9331    bool result_ok;
9332 } LDKCResult_COption_MonitorEventZDecodeErrorZ;
9333
9334 /**
9335  * The contents of CResult_HTLCUpdateDecodeErrorZ
9336  */
9337 typedef union LDKCResult_HTLCUpdateDecodeErrorZPtr {
9338    /**
9339     * A pointer to the contents in the success state.
9340     * Reading from this pointer when `result_ok` is not set is undefined.
9341     */
9342    struct LDKHTLCUpdate *result;
9343    /**
9344     * A pointer to the contents in the error state.
9345     * Reading from this pointer when `result_ok` is set is undefined.
9346     */
9347    struct LDKDecodeError *err;
9348 } LDKCResult_HTLCUpdateDecodeErrorZPtr;
9349
9350 /**
9351  * A CResult_HTLCUpdateDecodeErrorZ represents the result of a fallible operation,
9352  * containing a crate::lightning::chain::channelmonitor::HTLCUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
9353  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9354  */
9355 typedef struct LDKCResult_HTLCUpdateDecodeErrorZ {
9356    /**
9357     * The contents of this CResult_HTLCUpdateDecodeErrorZ, accessible via either
9358     * `err` or `result` depending on the state of `result_ok`.
9359     */
9360    union LDKCResult_HTLCUpdateDecodeErrorZPtr contents;
9361    /**
9362     * Whether this CResult_HTLCUpdateDecodeErrorZ represents a success state.
9363     */
9364    bool result_ok;
9365 } LDKCResult_HTLCUpdateDecodeErrorZ;
9366
9367 /**
9368  * A tuple of 2 elements. See the individual fields for the types contained.
9369  */
9370 typedef struct LDKC2Tuple_OutPointScriptZ {
9371    /**
9372     * The element at position 0
9373     */
9374    struct LDKOutPoint a;
9375    /**
9376     * The element at position 1
9377     */
9378    struct LDKCVec_u8Z b;
9379 } LDKC2Tuple_OutPointScriptZ;
9380
9381 /**
9382  * A tuple of 2 elements. See the individual fields for the types contained.
9383  */
9384 typedef struct LDKC2Tuple_u32ScriptZ {
9385    /**
9386     * The element at position 0
9387     */
9388    uint32_t a;
9389    /**
9390     * The element at position 1
9391     */
9392    struct LDKCVec_u8Z b;
9393 } LDKC2Tuple_u32ScriptZ;
9394
9395 /**
9396  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32ScriptZs of arbitrary size.
9397  * This corresponds to std::vector in C++
9398  */
9399 typedef struct LDKCVec_C2Tuple_u32ScriptZZ {
9400    /**
9401     * The elements in the array.
9402     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9403     */
9404    struct LDKC2Tuple_u32ScriptZ *data;
9405    /**
9406     * The number of elements pointed to by `data`.
9407     */
9408    uintptr_t datalen;
9409 } LDKCVec_C2Tuple_u32ScriptZZ;
9410
9411 /**
9412  * A tuple of 2 elements. See the individual fields for the types contained.
9413  */
9414 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ {
9415    /**
9416     * The element at position 0
9417     */
9418    struct LDKThirtyTwoBytes a;
9419    /**
9420     * The element at position 1
9421     */
9422    struct LDKCVec_C2Tuple_u32ScriptZZ b;
9423 } LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ;
9424
9425 /**
9426  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZs of arbitrary size.
9427  * This corresponds to std::vector in C++
9428  */
9429 typedef struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ {
9430    /**
9431     * The elements in the array.
9432     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9433     */
9434    struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *data;
9435    /**
9436     * The number of elements pointed to by `data`.
9437     */
9438    uintptr_t datalen;
9439 } LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ;
9440
9441 /**
9442  * A dynamically-allocated array of crate::lightning::util::events::Events of arbitrary size.
9443  * This corresponds to std::vector in C++
9444  */
9445 typedef struct LDKCVec_EventZ {
9446    /**
9447     * The elements in the array.
9448     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9449     */
9450    struct LDKEvent *data;
9451    /**
9452     * The number of elements pointed to by `data`.
9453     */
9454    uintptr_t datalen;
9455 } LDKCVec_EventZ;
9456
9457 /**
9458  * A dynamically-allocated array of crate::c_types::Transactions of arbitrary size.
9459  * This corresponds to std::vector in C++
9460  */
9461 typedef struct LDKCVec_TransactionZ {
9462    /**
9463     * The elements in the array.
9464     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9465     */
9466    struct LDKTransaction *data;
9467    /**
9468     * The number of elements pointed to by `data`.
9469     */
9470    uintptr_t datalen;
9471 } LDKCVec_TransactionZ;
9472
9473 /**
9474  * A tuple of 2 elements. See the individual fields for the types contained.
9475  */
9476 typedef struct LDKC2Tuple_u32TxOutZ {
9477    /**
9478     * The element at position 0
9479     */
9480    uint32_t a;
9481    /**
9482     * The element at position 1
9483     */
9484    struct LDKTxOut b;
9485 } LDKC2Tuple_u32TxOutZ;
9486
9487 /**
9488  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_u32TxOutZs of arbitrary size.
9489  * This corresponds to std::vector in C++
9490  */
9491 typedef struct LDKCVec_C2Tuple_u32TxOutZZ {
9492    /**
9493     * The elements in the array.
9494     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9495     */
9496    struct LDKC2Tuple_u32TxOutZ *data;
9497    /**
9498     * The number of elements pointed to by `data`.
9499     */
9500    uintptr_t datalen;
9501 } LDKCVec_C2Tuple_u32TxOutZZ;
9502
9503 /**
9504  * A tuple of 2 elements. See the individual fields for the types contained.
9505  */
9506 typedef struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ {
9507    /**
9508     * The element at position 0
9509     */
9510    struct LDKThirtyTwoBytes a;
9511    /**
9512     * The element at position 1
9513     */
9514    struct LDKCVec_C2Tuple_u32TxOutZZ b;
9515 } LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ;
9516
9517 /**
9518  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZs of arbitrary size.
9519  * This corresponds to std::vector in C++
9520  */
9521 typedef struct LDKCVec_TransactionOutputsZ {
9522    /**
9523     * The elements in the array.
9524     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9525     */
9526    struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *data;
9527    /**
9528     * The number of elements pointed to by `data`.
9529     */
9530    uintptr_t datalen;
9531 } LDKCVec_TransactionOutputsZ;
9532
9533 /**
9534  * Details about the balance(s) available for spending once the channel appears on chain.
9535  *
9536  * See [`ChannelMonitor::get_claimable_balances`] for more details on when these will or will not
9537  * be provided.
9538  */
9539 typedef enum LDKBalance_Tag {
9540    /**
9541     * The channel is not yet closed (or the commitment or closing transaction has not yet
9542     * appeared in a block). The given balance is claimable (less on-chain fees) if the channel is
9543     * force-closed now.
9544     */
9545    LDKBalance_ClaimableOnChannelClose,
9546    /**
9547     * The channel has been closed, and the given balance is ours but awaiting confirmations until
9548     * we consider it spendable.
9549     */
9550    LDKBalance_ClaimableAwaitingConfirmations,
9551    /**
9552     * The channel has been closed, and the given balance should be ours but awaiting spending
9553     * transaction confirmation. If the spending transaction does not confirm in time, it is
9554     * possible our counterparty can take the funds by broadcasting an HTLC timeout on-chain.
9555     *
9556     * Once the spending transaction confirms, before it has reached enough confirmations to be
9557     * considered safe from chain reorganizations, the balance will instead be provided via
9558     * [`Balance::ClaimableAwaitingConfirmations`].
9559     */
9560    LDKBalance_ContentiousClaimable,
9561    /**
9562     * HTLCs which we sent to our counterparty which are claimable after a timeout (less on-chain
9563     * fees) if the counterparty does not know the preimage for the HTLCs. These are somewhat
9564     * likely to be claimed by our counterparty before we do.
9565     */
9566    LDKBalance_MaybeTimeoutClaimableHTLC,
9567    /**
9568     * HTLCs which we received from our counterparty which are claimable with a preimage which we
9569     * do not currently have. This will only be claimable if we receive the preimage from the node
9570     * to which we forwarded this HTLC before the timeout.
9571     */
9572    LDKBalance_MaybePreimageClaimableHTLC,
9573    /**
9574     * The channel has been closed, and our counterparty broadcasted a revoked commitment
9575     * transaction.
9576     *
9577     * Thus, we're able to claim all outputs in the commitment transaction, one of which has the
9578     * following amount.
9579     */
9580    LDKBalance_CounterpartyRevokedOutputClaimable,
9581    /**
9582     * Must be last for serialization purposes
9583     */
9584    LDKBalance_Sentinel,
9585 } LDKBalance_Tag;
9586
9587 typedef struct LDKBalance_LDKClaimableOnChannelClose_Body {
9588    /**
9589     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
9590     * required to do so.
9591     */
9592    uint64_t claimable_amount_satoshis;
9593 } LDKBalance_LDKClaimableOnChannelClose_Body;
9594
9595 typedef struct LDKBalance_LDKClaimableAwaitingConfirmations_Body {
9596    /**
9597     * The amount available to claim, in satoshis, possibly excluding the on-chain fees which
9598     * were spent in broadcasting the transaction.
9599     */
9600    uint64_t claimable_amount_satoshis;
9601    /**
9602     * The height at which an [`Event::SpendableOutputs`] event will be generated for this
9603     * amount.
9604     */
9605    uint32_t confirmation_height;
9606 } LDKBalance_LDKClaimableAwaitingConfirmations_Body;
9607
9608 typedef struct LDKBalance_LDKContentiousClaimable_Body {
9609    /**
9610     * The amount available to claim, in satoshis, excluding the on-chain fees which will be
9611     * required to do so.
9612     */
9613    uint64_t claimable_amount_satoshis;
9614    /**
9615     * The height at which the counterparty may be able to claim the balance if we have not
9616     * done so.
9617     */
9618    uint32_t timeout_height;
9619 } LDKBalance_LDKContentiousClaimable_Body;
9620
9621 typedef struct LDKBalance_LDKMaybeTimeoutClaimableHTLC_Body {
9622    /**
9623     * The amount potentially available to claim, in satoshis, excluding the on-chain fees
9624     * which will be required to do so.
9625     */
9626    uint64_t claimable_amount_satoshis;
9627    /**
9628     * The height at which we will be able to claim the balance if our counterparty has not
9629     * done so.
9630     */
9631    uint32_t claimable_height;
9632 } LDKBalance_LDKMaybeTimeoutClaimableHTLC_Body;
9633
9634 typedef struct LDKBalance_LDKMaybePreimageClaimableHTLC_Body {
9635    /**
9636     * The amount potentially available to claim, in satoshis, excluding the on-chain fees
9637     * which will be required to do so.
9638     */
9639    uint64_t claimable_amount_satoshis;
9640    /**
9641     * The height at which our counterparty will be able to claim the balance if we have not
9642     * yet received the preimage and claimed it ourselves.
9643     */
9644    uint32_t expiry_height;
9645 } LDKBalance_LDKMaybePreimageClaimableHTLC_Body;
9646
9647 typedef struct LDKBalance_LDKCounterpartyRevokedOutputClaimable_Body {
9648    /**
9649     * The amount, in satoshis, of the output which we can claim.
9650     *
9651     * Note that for outputs from HTLC balances this may be excluding some on-chain fees that
9652     * were already spent.
9653     */
9654    uint64_t claimable_amount_satoshis;
9655 } LDKBalance_LDKCounterpartyRevokedOutputClaimable_Body;
9656
9657 typedef struct MUST_USE_STRUCT LDKBalance {
9658    LDKBalance_Tag tag;
9659    union {
9660       LDKBalance_LDKClaimableOnChannelClose_Body claimable_on_channel_close;
9661       LDKBalance_LDKClaimableAwaitingConfirmations_Body claimable_awaiting_confirmations;
9662       LDKBalance_LDKContentiousClaimable_Body contentious_claimable;
9663       LDKBalance_LDKMaybeTimeoutClaimableHTLC_Body maybe_timeout_claimable_htlc;
9664       LDKBalance_LDKMaybePreimageClaimableHTLC_Body maybe_preimage_claimable_htlc;
9665       LDKBalance_LDKCounterpartyRevokedOutputClaimable_Body counterparty_revoked_output_claimable;
9666    };
9667 } LDKBalance;
9668
9669 /**
9670  * A dynamically-allocated array of crate::lightning::chain::channelmonitor::Balances of arbitrary size.
9671  * This corresponds to std::vector in C++
9672  */
9673 typedef struct LDKCVec_BalanceZ {
9674    /**
9675     * The elements in the array.
9676     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9677     */
9678    struct LDKBalance *data;
9679    /**
9680     * The number of elements pointed to by `data`.
9681     */
9682    uintptr_t datalen;
9683 } LDKCVec_BalanceZ;
9684
9685 /**
9686  * The contents of CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ
9687  */
9688 typedef union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr {
9689    /**
9690     * A pointer to the contents in the success state.
9691     * Reading from this pointer when `result_ok` is not set is undefined.
9692     */
9693    struct LDKC2Tuple_BlockHashChannelMonitorZ *result;
9694    /**
9695     * A pointer to the contents in the error state.
9696     * Reading from this pointer when `result_ok` is set is undefined.
9697     */
9698    struct LDKDecodeError *err;
9699 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr;
9700
9701 /**
9702  * A CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents the result of a fallible operation,
9703  * containing a crate::c_types::derived::C2Tuple_BlockHashChannelMonitorZ on success and a crate::lightning::ln::msgs::DecodeError on failure.
9704  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9705  */
9706 typedef struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ {
9707    /**
9708     * The contents of this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ, accessible via either
9709     * `err` or `result` depending on the state of `result_ok`.
9710     */
9711    union LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZPtr contents;
9712    /**
9713     * Whether this CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ represents a success state.
9714     */
9715    bool result_ok;
9716 } LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ;
9717
9718 /**
9719  * A tuple of 2 elements. See the individual fields for the types contained.
9720  */
9721 typedef struct LDKC2Tuple_PublicKeyTypeZ {
9722    /**
9723     * The element at position 0
9724     */
9725    struct LDKPublicKey a;
9726    /**
9727     * The element at position 1
9728     */
9729    struct LDKType b;
9730 } LDKC2Tuple_PublicKeyTypeZ;
9731
9732 /**
9733  * A dynamically-allocated array of crate::c_types::derived::C2Tuple_PublicKeyTypeZs of arbitrary size.
9734  * This corresponds to std::vector in C++
9735  */
9736 typedef struct LDKCVec_C2Tuple_PublicKeyTypeZZ {
9737    /**
9738     * The elements in the array.
9739     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
9740     */
9741    struct LDKC2Tuple_PublicKeyTypeZ *data;
9742    /**
9743     * The number of elements pointed to by `data`.
9744     */
9745    uintptr_t datalen;
9746 } LDKCVec_C2Tuple_PublicKeyTypeZZ;
9747
9748 /**
9749  * An enum which can either contain a crate::lightning::ln::msgs::NetAddress or not
9750  */
9751 typedef enum LDKCOption_NetAddressZ_Tag {
9752    /**
9753     * When we're in this state, this COption_NetAddressZ contains a crate::lightning::ln::msgs::NetAddress
9754     */
9755    LDKCOption_NetAddressZ_Some,
9756    /**
9757     * When we're in this state, this COption_NetAddressZ contains nothing
9758     */
9759    LDKCOption_NetAddressZ_None,
9760    /**
9761     * Must be last for serialization purposes
9762     */
9763    LDKCOption_NetAddressZ_Sentinel,
9764 } LDKCOption_NetAddressZ_Tag;
9765
9766 typedef struct LDKCOption_NetAddressZ {
9767    LDKCOption_NetAddressZ_Tag tag;
9768    union {
9769       struct {
9770          struct LDKNetAddress some;
9771       };
9772    };
9773 } LDKCOption_NetAddressZ;
9774
9775
9776
9777 /**
9778  * Error for PeerManager errors. If you get one of these, you must disconnect the socket and
9779  * generate no further read_event/write_buffer_space_avail/socket_disconnected calls for the
9780  * descriptor.
9781  */
9782 typedef struct MUST_USE_STRUCT LDKPeerHandleError {
9783    /**
9784     * A pointer to the opaque Rust object.
9785     * Nearly everywhere, inner must be non-null, however in places where
9786     * the Rust equivalent takes an Option, it may be set to null to indicate None.
9787     */
9788    LDKnativePeerHandleError *inner;
9789    /**
9790     * Indicates that this is the only struct which contains the same pointer.
9791     * Rust functions which take ownership of an object provided via an argument require
9792     * this to be true and invalidate the object pointed to by inner.
9793     */
9794    bool is_owned;
9795 } LDKPeerHandleError;
9796
9797 /**
9798  * The contents of CResult_CVec_u8ZPeerHandleErrorZ
9799  */
9800 typedef union LDKCResult_CVec_u8ZPeerHandleErrorZPtr {
9801    /**
9802     * A pointer to the contents in the success state.
9803     * Reading from this pointer when `result_ok` is not set is undefined.
9804     */
9805    struct LDKCVec_u8Z *result;
9806    /**
9807     * A pointer to the contents in the error state.
9808     * Reading from this pointer when `result_ok` is set is undefined.
9809     */
9810    struct LDKPeerHandleError *err;
9811 } LDKCResult_CVec_u8ZPeerHandleErrorZPtr;
9812
9813 /**
9814  * A CResult_CVec_u8ZPeerHandleErrorZ represents the result of a fallible operation,
9815  * containing a crate::c_types::derived::CVec_u8Z on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
9816  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9817  */
9818 typedef struct LDKCResult_CVec_u8ZPeerHandleErrorZ {
9819    /**
9820     * The contents of this CResult_CVec_u8ZPeerHandleErrorZ, accessible via either
9821     * `err` or `result` depending on the state of `result_ok`.
9822     */
9823    union LDKCResult_CVec_u8ZPeerHandleErrorZPtr contents;
9824    /**
9825     * Whether this CResult_CVec_u8ZPeerHandleErrorZ represents a success state.
9826     */
9827    bool result_ok;
9828 } LDKCResult_CVec_u8ZPeerHandleErrorZ;
9829
9830 /**
9831  * The contents of CResult_NonePeerHandleErrorZ
9832  */
9833 typedef union LDKCResult_NonePeerHandleErrorZPtr {
9834    /**
9835     * Note that this value is always NULL, as there are no contents in the OK variant
9836     */
9837    void *result;
9838    /**
9839     * A pointer to the contents in the error state.
9840     * Reading from this pointer when `result_ok` is set is undefined.
9841     */
9842    struct LDKPeerHandleError *err;
9843 } LDKCResult_NonePeerHandleErrorZPtr;
9844
9845 /**
9846  * A CResult_NonePeerHandleErrorZ represents the result of a fallible operation,
9847  * containing a () on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
9848  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9849  */
9850 typedef struct LDKCResult_NonePeerHandleErrorZ {
9851    /**
9852     * The contents of this CResult_NonePeerHandleErrorZ, accessible via either
9853     * `err` or `result` depending on the state of `result_ok`.
9854     */
9855    union LDKCResult_NonePeerHandleErrorZPtr contents;
9856    /**
9857     * Whether this CResult_NonePeerHandleErrorZ represents a success state.
9858     */
9859    bool result_ok;
9860 } LDKCResult_NonePeerHandleErrorZ;
9861
9862 /**
9863  * The contents of CResult_boolPeerHandleErrorZ
9864  */
9865 typedef union LDKCResult_boolPeerHandleErrorZPtr {
9866    /**
9867     * A pointer to the contents in the success state.
9868     * Reading from this pointer when `result_ok` is not set is undefined.
9869     */
9870    bool *result;
9871    /**
9872     * A pointer to the contents in the error state.
9873     * Reading from this pointer when `result_ok` is set is undefined.
9874     */
9875    struct LDKPeerHandleError *err;
9876 } LDKCResult_boolPeerHandleErrorZPtr;
9877
9878 /**
9879  * A CResult_boolPeerHandleErrorZ represents the result of a fallible operation,
9880  * containing a bool on success and a crate::lightning::ln::peer_handler::PeerHandleError on failure.
9881  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9882  */
9883 typedef struct LDKCResult_boolPeerHandleErrorZ {
9884    /**
9885     * The contents of this CResult_boolPeerHandleErrorZ, accessible via either
9886     * `err` or `result` depending on the state of `result_ok`.
9887     */
9888    union LDKCResult_boolPeerHandleErrorZPtr contents;
9889    /**
9890     * Whether this CResult_boolPeerHandleErrorZ represents a success state.
9891     */
9892    bool result_ok;
9893 } LDKCResult_boolPeerHandleErrorZ;
9894
9895 /**
9896  * Errors that may occur when [sending an onion message].
9897  *
9898  * [sending an onion message]: OnionMessenger::send_onion_message
9899  */
9900 typedef enum LDKSendError_Tag {
9901    /**
9902     * Errored computing onion message packet keys.
9903     */
9904    LDKSendError_Secp256k1,
9905    /**
9906     * Because implementations such as Eclair will drop onion messages where the message packet
9907     * exceeds 32834 bytes, we refuse to send messages where the packet exceeds this size.
9908     */
9909    LDKSendError_TooBigPacket,
9910    /**
9911     * The provided [`Destination`] was an invalid [`BlindedRoute`], due to having fewer than two
9912     * blinded hops.
9913     */
9914    LDKSendError_TooFewBlindedHops,
9915    /**
9916     * Our next-hop peer was offline or does not support onion message forwarding.
9917     */
9918    LDKSendError_InvalidFirstHop,
9919    /**
9920     * Our next-hop peer's buffer was full or our total outbound buffer was full.
9921     */
9922    LDKSendError_BufferFull,
9923    /**
9924     * Must be last for serialization purposes
9925     */
9926    LDKSendError_Sentinel,
9927 } LDKSendError_Tag;
9928
9929 typedef struct MUST_USE_STRUCT LDKSendError {
9930    LDKSendError_Tag tag;
9931    union {
9932       struct {
9933          enum LDKSecp256k1Error secp256k1;
9934       };
9935    };
9936 } LDKSendError;
9937
9938 /**
9939  * The contents of CResult_NoneSendErrorZ
9940  */
9941 typedef union LDKCResult_NoneSendErrorZPtr {
9942    /**
9943     * Note that this value is always NULL, as there are no contents in the OK variant
9944     */
9945    void *result;
9946    /**
9947     * A pointer to the contents in the error state.
9948     * Reading from this pointer when `result_ok` is set is undefined.
9949     */
9950    struct LDKSendError *err;
9951 } LDKCResult_NoneSendErrorZPtr;
9952
9953 /**
9954  * A CResult_NoneSendErrorZ represents the result of a fallible operation,
9955  * containing a () on success and a crate::lightning::onion_message::messenger::SendError on failure.
9956  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
9957  */
9958 typedef struct LDKCResult_NoneSendErrorZ {
9959    /**
9960     * The contents of this CResult_NoneSendErrorZ, accessible via either
9961     * `err` or `result` depending on the state of `result_ok`.
9962     */
9963    union LDKCResult_NoneSendErrorZPtr contents;
9964    /**
9965     * Whether this CResult_NoneSendErrorZ represents a success state.
9966     */
9967    bool result_ok;
9968 } LDKCResult_NoneSendErrorZ;
9969
9970 /**
9971  * All-encompassing standard error type that processing can return
9972  */
9973 typedef enum LDKGraphSyncError_Tag {
9974    /**
9975     * Error trying to read the update data, typically due to an erroneous data length indication
9976     * that is greater than the actual amount of data provided
9977     */
9978    LDKGraphSyncError_DecodeError,
9979    /**
9980     * Error applying the patch to the network graph, usually the result of updates that are too
9981     * old or missing prerequisite data to the application of updates out of order
9982     */
9983    LDKGraphSyncError_LightningError,
9984    /**
9985     * Must be last for serialization purposes
9986     */
9987    LDKGraphSyncError_Sentinel,
9988 } LDKGraphSyncError_Tag;
9989
9990 typedef struct MUST_USE_STRUCT LDKGraphSyncError {
9991    LDKGraphSyncError_Tag tag;
9992    union {
9993       struct {
9994          struct LDKDecodeError decode_error;
9995       };
9996       struct {
9997          struct LDKLightningError lightning_error;
9998       };
9999    };
10000 } LDKGraphSyncError;
10001
10002 /**
10003  * The contents of CResult_u32GraphSyncErrorZ
10004  */
10005 typedef union LDKCResult_u32GraphSyncErrorZPtr {
10006    /**
10007     * A pointer to the contents in the success state.
10008     * Reading from this pointer when `result_ok` is not set is undefined.
10009     */
10010    uint32_t *result;
10011    /**
10012     * A pointer to the contents in the error state.
10013     * Reading from this pointer when `result_ok` is set is undefined.
10014     */
10015    struct LDKGraphSyncError *err;
10016 } LDKCResult_u32GraphSyncErrorZPtr;
10017
10018 /**
10019  * A CResult_u32GraphSyncErrorZ represents the result of a fallible operation,
10020  * containing a u32 on success and a crate::lightning_rapid_gossip_sync::error::GraphSyncError on failure.
10021  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10022  */
10023 typedef struct LDKCResult_u32GraphSyncErrorZ {
10024    /**
10025     * The contents of this CResult_u32GraphSyncErrorZ, accessible via either
10026     * `err` or `result` depending on the state of `result_ok`.
10027     */
10028    union LDKCResult_u32GraphSyncErrorZPtr contents;
10029    /**
10030     * Whether this CResult_u32GraphSyncErrorZ represents a success state.
10031     */
10032    bool result_ok;
10033 } LDKCResult_u32GraphSyncErrorZ;
10034
10035 /**
10036  * The contents of CResult_NetAddressDecodeErrorZ
10037  */
10038 typedef union LDKCResult_NetAddressDecodeErrorZPtr {
10039    /**
10040     * A pointer to the contents in the success state.
10041     * Reading from this pointer when `result_ok` is not set is undefined.
10042     */
10043    struct LDKNetAddress *result;
10044    /**
10045     * A pointer to the contents in the error state.
10046     * Reading from this pointer when `result_ok` is set is undefined.
10047     */
10048    struct LDKDecodeError *err;
10049 } LDKCResult_NetAddressDecodeErrorZPtr;
10050
10051 /**
10052  * A CResult_NetAddressDecodeErrorZ represents the result of a fallible operation,
10053  * containing a crate::lightning::ln::msgs::NetAddress on success and a crate::lightning::ln::msgs::DecodeError on failure.
10054  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10055  */
10056 typedef struct LDKCResult_NetAddressDecodeErrorZ {
10057    /**
10058     * The contents of this CResult_NetAddressDecodeErrorZ, accessible via either
10059     * `err` or `result` depending on the state of `result_ok`.
10060     */
10061    union LDKCResult_NetAddressDecodeErrorZPtr contents;
10062    /**
10063     * Whether this CResult_NetAddressDecodeErrorZ represents a success state.
10064     */
10065    bool result_ok;
10066 } LDKCResult_NetAddressDecodeErrorZ;
10067
10068
10069
10070 /**
10071  * An update_add_htlc message to be sent or received from a peer
10072  */
10073 typedef struct MUST_USE_STRUCT LDKUpdateAddHTLC {
10074    /**
10075     * A pointer to the opaque Rust object.
10076     * Nearly everywhere, inner must be non-null, however in places where
10077     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10078     */
10079    LDKnativeUpdateAddHTLC *inner;
10080    /**
10081     * Indicates that this is the only struct which contains the same pointer.
10082     * Rust functions which take ownership of an object provided via an argument require
10083     * this to be true and invalidate the object pointed to by inner.
10084     */
10085    bool is_owned;
10086 } LDKUpdateAddHTLC;
10087
10088 /**
10089  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateAddHTLCs of arbitrary size.
10090  * This corresponds to std::vector in C++
10091  */
10092 typedef struct LDKCVec_UpdateAddHTLCZ {
10093    /**
10094     * The elements in the array.
10095     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10096     */
10097    struct LDKUpdateAddHTLC *data;
10098    /**
10099     * The number of elements pointed to by `data`.
10100     */
10101    uintptr_t datalen;
10102 } LDKCVec_UpdateAddHTLCZ;
10103
10104
10105
10106 /**
10107  * An update_fulfill_htlc message to be sent or received from a peer
10108  */
10109 typedef struct MUST_USE_STRUCT LDKUpdateFulfillHTLC {
10110    /**
10111     * A pointer to the opaque Rust object.
10112     * Nearly everywhere, inner must be non-null, however in places where
10113     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10114     */
10115    LDKnativeUpdateFulfillHTLC *inner;
10116    /**
10117     * Indicates that this is the only struct which contains the same pointer.
10118     * Rust functions which take ownership of an object provided via an argument require
10119     * this to be true and invalidate the object pointed to by inner.
10120     */
10121    bool is_owned;
10122 } LDKUpdateFulfillHTLC;
10123
10124 /**
10125  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFulfillHTLCs of arbitrary size.
10126  * This corresponds to std::vector in C++
10127  */
10128 typedef struct LDKCVec_UpdateFulfillHTLCZ {
10129    /**
10130     * The elements in the array.
10131     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10132     */
10133    struct LDKUpdateFulfillHTLC *data;
10134    /**
10135     * The number of elements pointed to by `data`.
10136     */
10137    uintptr_t datalen;
10138 } LDKCVec_UpdateFulfillHTLCZ;
10139
10140
10141
10142 /**
10143  * An update_fail_htlc message to be sent or received from a peer
10144  */
10145 typedef struct MUST_USE_STRUCT LDKUpdateFailHTLC {
10146    /**
10147     * A pointer to the opaque Rust object.
10148     * Nearly everywhere, inner must be non-null, however in places where
10149     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10150     */
10151    LDKnativeUpdateFailHTLC *inner;
10152    /**
10153     * Indicates that this is the only struct which contains the same pointer.
10154     * Rust functions which take ownership of an object provided via an argument require
10155     * this to be true and invalidate the object pointed to by inner.
10156     */
10157    bool is_owned;
10158 } LDKUpdateFailHTLC;
10159
10160 /**
10161  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailHTLCs of arbitrary size.
10162  * This corresponds to std::vector in C++
10163  */
10164 typedef struct LDKCVec_UpdateFailHTLCZ {
10165    /**
10166     * The elements in the array.
10167     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10168     */
10169    struct LDKUpdateFailHTLC *data;
10170    /**
10171     * The number of elements pointed to by `data`.
10172     */
10173    uintptr_t datalen;
10174 } LDKCVec_UpdateFailHTLCZ;
10175
10176
10177
10178 /**
10179  * An update_fail_malformed_htlc message to be sent or received from a peer
10180  */
10181 typedef struct MUST_USE_STRUCT LDKUpdateFailMalformedHTLC {
10182    /**
10183     * A pointer to the opaque Rust object.
10184     * Nearly everywhere, inner must be non-null, however in places where
10185     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10186     */
10187    LDKnativeUpdateFailMalformedHTLC *inner;
10188    /**
10189     * Indicates that this is the only struct which contains the same pointer.
10190     * Rust functions which take ownership of an object provided via an argument require
10191     * this to be true and invalidate the object pointed to by inner.
10192     */
10193    bool is_owned;
10194 } LDKUpdateFailMalformedHTLC;
10195
10196 /**
10197  * A dynamically-allocated array of crate::lightning::ln::msgs::UpdateFailMalformedHTLCs of arbitrary size.
10198  * This corresponds to std::vector in C++
10199  */
10200 typedef struct LDKCVec_UpdateFailMalformedHTLCZ {
10201    /**
10202     * The elements in the array.
10203     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
10204     */
10205    struct LDKUpdateFailMalformedHTLC *data;
10206    /**
10207     * The number of elements pointed to by `data`.
10208     */
10209    uintptr_t datalen;
10210 } LDKCVec_UpdateFailMalformedHTLCZ;
10211
10212 /**
10213  * The contents of CResult_AcceptChannelDecodeErrorZ
10214  */
10215 typedef union LDKCResult_AcceptChannelDecodeErrorZPtr {
10216    /**
10217     * A pointer to the contents in the success state.
10218     * Reading from this pointer when `result_ok` is not set is undefined.
10219     */
10220    struct LDKAcceptChannel *result;
10221    /**
10222     * A pointer to the contents in the error state.
10223     * Reading from this pointer when `result_ok` is set is undefined.
10224     */
10225    struct LDKDecodeError *err;
10226 } LDKCResult_AcceptChannelDecodeErrorZPtr;
10227
10228 /**
10229  * A CResult_AcceptChannelDecodeErrorZ represents the result of a fallible operation,
10230  * containing a crate::lightning::ln::msgs::AcceptChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
10231  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10232  */
10233 typedef struct LDKCResult_AcceptChannelDecodeErrorZ {
10234    /**
10235     * The contents of this CResult_AcceptChannelDecodeErrorZ, accessible via either
10236     * `err` or `result` depending on the state of `result_ok`.
10237     */
10238    union LDKCResult_AcceptChannelDecodeErrorZPtr contents;
10239    /**
10240     * Whether this CResult_AcceptChannelDecodeErrorZ represents a success state.
10241     */
10242    bool result_ok;
10243 } LDKCResult_AcceptChannelDecodeErrorZ;
10244
10245 /**
10246  * The contents of CResult_AnnouncementSignaturesDecodeErrorZ
10247  */
10248 typedef union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr {
10249    /**
10250     * A pointer to the contents in the success state.
10251     * Reading from this pointer when `result_ok` is not set is undefined.
10252     */
10253    struct LDKAnnouncementSignatures *result;
10254    /**
10255     * A pointer to the contents in the error state.
10256     * Reading from this pointer when `result_ok` is set is undefined.
10257     */
10258    struct LDKDecodeError *err;
10259 } LDKCResult_AnnouncementSignaturesDecodeErrorZPtr;
10260
10261 /**
10262  * A CResult_AnnouncementSignaturesDecodeErrorZ represents the result of a fallible operation,
10263  * containing a crate::lightning::ln::msgs::AnnouncementSignatures on success and a crate::lightning::ln::msgs::DecodeError on failure.
10264  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10265  */
10266 typedef struct LDKCResult_AnnouncementSignaturesDecodeErrorZ {
10267    /**
10268     * The contents of this CResult_AnnouncementSignaturesDecodeErrorZ, accessible via either
10269     * `err` or `result` depending on the state of `result_ok`.
10270     */
10271    union LDKCResult_AnnouncementSignaturesDecodeErrorZPtr contents;
10272    /**
10273     * Whether this CResult_AnnouncementSignaturesDecodeErrorZ represents a success state.
10274     */
10275    bool result_ok;
10276 } LDKCResult_AnnouncementSignaturesDecodeErrorZ;
10277
10278 /**
10279  * The contents of CResult_ChannelReestablishDecodeErrorZ
10280  */
10281 typedef union LDKCResult_ChannelReestablishDecodeErrorZPtr {
10282    /**
10283     * A pointer to the contents in the success state.
10284     * Reading from this pointer when `result_ok` is not set is undefined.
10285     */
10286    struct LDKChannelReestablish *result;
10287    /**
10288     * A pointer to the contents in the error state.
10289     * Reading from this pointer when `result_ok` is set is undefined.
10290     */
10291    struct LDKDecodeError *err;
10292 } LDKCResult_ChannelReestablishDecodeErrorZPtr;
10293
10294 /**
10295  * A CResult_ChannelReestablishDecodeErrorZ represents the result of a fallible operation,
10296  * containing a crate::lightning::ln::msgs::ChannelReestablish on success and a crate::lightning::ln::msgs::DecodeError on failure.
10297  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10298  */
10299 typedef struct LDKCResult_ChannelReestablishDecodeErrorZ {
10300    /**
10301     * The contents of this CResult_ChannelReestablishDecodeErrorZ, accessible via either
10302     * `err` or `result` depending on the state of `result_ok`.
10303     */
10304    union LDKCResult_ChannelReestablishDecodeErrorZPtr contents;
10305    /**
10306     * Whether this CResult_ChannelReestablishDecodeErrorZ represents a success state.
10307     */
10308    bool result_ok;
10309 } LDKCResult_ChannelReestablishDecodeErrorZ;
10310
10311 /**
10312  * The contents of CResult_ClosingSignedDecodeErrorZ
10313  */
10314 typedef union LDKCResult_ClosingSignedDecodeErrorZPtr {
10315    /**
10316     * A pointer to the contents in the success state.
10317     * Reading from this pointer when `result_ok` is not set is undefined.
10318     */
10319    struct LDKClosingSigned *result;
10320    /**
10321     * A pointer to the contents in the error state.
10322     * Reading from this pointer when `result_ok` is set is undefined.
10323     */
10324    struct LDKDecodeError *err;
10325 } LDKCResult_ClosingSignedDecodeErrorZPtr;
10326
10327 /**
10328  * A CResult_ClosingSignedDecodeErrorZ represents the result of a fallible operation,
10329  * containing a crate::lightning::ln::msgs::ClosingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
10330  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10331  */
10332 typedef struct LDKCResult_ClosingSignedDecodeErrorZ {
10333    /**
10334     * The contents of this CResult_ClosingSignedDecodeErrorZ, accessible via either
10335     * `err` or `result` depending on the state of `result_ok`.
10336     */
10337    union LDKCResult_ClosingSignedDecodeErrorZPtr contents;
10338    /**
10339     * Whether this CResult_ClosingSignedDecodeErrorZ represents a success state.
10340     */
10341    bool result_ok;
10342 } LDKCResult_ClosingSignedDecodeErrorZ;
10343
10344
10345
10346 /**
10347  * The minimum and maximum fees which the sender is willing to place on the closing transaction.
10348  * This is provided in [`ClosingSigned`] by both sides to indicate the fee range they are willing
10349  * to use.
10350  */
10351 typedef struct MUST_USE_STRUCT LDKClosingSignedFeeRange {
10352    /**
10353     * A pointer to the opaque Rust object.
10354     * Nearly everywhere, inner must be non-null, however in places where
10355     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10356     */
10357    LDKnativeClosingSignedFeeRange *inner;
10358    /**
10359     * Indicates that this is the only struct which contains the same pointer.
10360     * Rust functions which take ownership of an object provided via an argument require
10361     * this to be true and invalidate the object pointed to by inner.
10362     */
10363    bool is_owned;
10364 } LDKClosingSignedFeeRange;
10365
10366 /**
10367  * The contents of CResult_ClosingSignedFeeRangeDecodeErrorZ
10368  */
10369 typedef union LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr {
10370    /**
10371     * A pointer to the contents in the success state.
10372     * Reading from this pointer when `result_ok` is not set is undefined.
10373     */
10374    struct LDKClosingSignedFeeRange *result;
10375    /**
10376     * A pointer to the contents in the error state.
10377     * Reading from this pointer when `result_ok` is set is undefined.
10378     */
10379    struct LDKDecodeError *err;
10380 } LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr;
10381
10382 /**
10383  * A CResult_ClosingSignedFeeRangeDecodeErrorZ represents the result of a fallible operation,
10384  * containing a crate::lightning::ln::msgs::ClosingSignedFeeRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
10385  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10386  */
10387 typedef struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ {
10388    /**
10389     * The contents of this CResult_ClosingSignedFeeRangeDecodeErrorZ, accessible via either
10390     * `err` or `result` depending on the state of `result_ok`.
10391     */
10392    union LDKCResult_ClosingSignedFeeRangeDecodeErrorZPtr contents;
10393    /**
10394     * Whether this CResult_ClosingSignedFeeRangeDecodeErrorZ represents a success state.
10395     */
10396    bool result_ok;
10397 } LDKCResult_ClosingSignedFeeRangeDecodeErrorZ;
10398
10399
10400
10401 /**
10402  * A commitment_signed message to be sent or received from a peer
10403  */
10404 typedef struct MUST_USE_STRUCT LDKCommitmentSigned {
10405    /**
10406     * A pointer to the opaque Rust object.
10407     * Nearly everywhere, inner must be non-null, however in places where
10408     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10409     */
10410    LDKnativeCommitmentSigned *inner;
10411    /**
10412     * Indicates that this is the only struct which contains the same pointer.
10413     * Rust functions which take ownership of an object provided via an argument require
10414     * this to be true and invalidate the object pointed to by inner.
10415     */
10416    bool is_owned;
10417 } LDKCommitmentSigned;
10418
10419 /**
10420  * The contents of CResult_CommitmentSignedDecodeErrorZ
10421  */
10422 typedef union LDKCResult_CommitmentSignedDecodeErrorZPtr {
10423    /**
10424     * A pointer to the contents in the success state.
10425     * Reading from this pointer when `result_ok` is not set is undefined.
10426     */
10427    struct LDKCommitmentSigned *result;
10428    /**
10429     * A pointer to the contents in the error state.
10430     * Reading from this pointer when `result_ok` is set is undefined.
10431     */
10432    struct LDKDecodeError *err;
10433 } LDKCResult_CommitmentSignedDecodeErrorZPtr;
10434
10435 /**
10436  * A CResult_CommitmentSignedDecodeErrorZ represents the result of a fallible operation,
10437  * containing a crate::lightning::ln::msgs::CommitmentSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
10438  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10439  */
10440 typedef struct LDKCResult_CommitmentSignedDecodeErrorZ {
10441    /**
10442     * The contents of this CResult_CommitmentSignedDecodeErrorZ, accessible via either
10443     * `err` or `result` depending on the state of `result_ok`.
10444     */
10445    union LDKCResult_CommitmentSignedDecodeErrorZPtr contents;
10446    /**
10447     * Whether this CResult_CommitmentSignedDecodeErrorZ represents a success state.
10448     */
10449    bool result_ok;
10450 } LDKCResult_CommitmentSignedDecodeErrorZ;
10451
10452 /**
10453  * The contents of CResult_FundingCreatedDecodeErrorZ
10454  */
10455 typedef union LDKCResult_FundingCreatedDecodeErrorZPtr {
10456    /**
10457     * A pointer to the contents in the success state.
10458     * Reading from this pointer when `result_ok` is not set is undefined.
10459     */
10460    struct LDKFundingCreated *result;
10461    /**
10462     * A pointer to the contents in the error state.
10463     * Reading from this pointer when `result_ok` is set is undefined.
10464     */
10465    struct LDKDecodeError *err;
10466 } LDKCResult_FundingCreatedDecodeErrorZPtr;
10467
10468 /**
10469  * A CResult_FundingCreatedDecodeErrorZ represents the result of a fallible operation,
10470  * containing a crate::lightning::ln::msgs::FundingCreated on success and a crate::lightning::ln::msgs::DecodeError on failure.
10471  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10472  */
10473 typedef struct LDKCResult_FundingCreatedDecodeErrorZ {
10474    /**
10475     * The contents of this CResult_FundingCreatedDecodeErrorZ, accessible via either
10476     * `err` or `result` depending on the state of `result_ok`.
10477     */
10478    union LDKCResult_FundingCreatedDecodeErrorZPtr contents;
10479    /**
10480     * Whether this CResult_FundingCreatedDecodeErrorZ represents a success state.
10481     */
10482    bool result_ok;
10483 } LDKCResult_FundingCreatedDecodeErrorZ;
10484
10485 /**
10486  * The contents of CResult_FundingSignedDecodeErrorZ
10487  */
10488 typedef union LDKCResult_FundingSignedDecodeErrorZPtr {
10489    /**
10490     * A pointer to the contents in the success state.
10491     * Reading from this pointer when `result_ok` is not set is undefined.
10492     */
10493    struct LDKFundingSigned *result;
10494    /**
10495     * A pointer to the contents in the error state.
10496     * Reading from this pointer when `result_ok` is set is undefined.
10497     */
10498    struct LDKDecodeError *err;
10499 } LDKCResult_FundingSignedDecodeErrorZPtr;
10500
10501 /**
10502  * A CResult_FundingSignedDecodeErrorZ represents the result of a fallible operation,
10503  * containing a crate::lightning::ln::msgs::FundingSigned on success and a crate::lightning::ln::msgs::DecodeError on failure.
10504  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10505  */
10506 typedef struct LDKCResult_FundingSignedDecodeErrorZ {
10507    /**
10508     * The contents of this CResult_FundingSignedDecodeErrorZ, accessible via either
10509     * `err` or `result` depending on the state of `result_ok`.
10510     */
10511    union LDKCResult_FundingSignedDecodeErrorZPtr contents;
10512    /**
10513     * Whether this CResult_FundingSignedDecodeErrorZ represents a success state.
10514     */
10515    bool result_ok;
10516 } LDKCResult_FundingSignedDecodeErrorZ;
10517
10518 /**
10519  * The contents of CResult_ChannelReadyDecodeErrorZ
10520  */
10521 typedef union LDKCResult_ChannelReadyDecodeErrorZPtr {
10522    /**
10523     * A pointer to the contents in the success state.
10524     * Reading from this pointer when `result_ok` is not set is undefined.
10525     */
10526    struct LDKChannelReady *result;
10527    /**
10528     * A pointer to the contents in the error state.
10529     * Reading from this pointer when `result_ok` is set is undefined.
10530     */
10531    struct LDKDecodeError *err;
10532 } LDKCResult_ChannelReadyDecodeErrorZPtr;
10533
10534 /**
10535  * A CResult_ChannelReadyDecodeErrorZ represents the result of a fallible operation,
10536  * containing a crate::lightning::ln::msgs::ChannelReady on success and a crate::lightning::ln::msgs::DecodeError on failure.
10537  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10538  */
10539 typedef struct LDKCResult_ChannelReadyDecodeErrorZ {
10540    /**
10541     * The contents of this CResult_ChannelReadyDecodeErrorZ, accessible via either
10542     * `err` or `result` depending on the state of `result_ok`.
10543     */
10544    union LDKCResult_ChannelReadyDecodeErrorZPtr contents;
10545    /**
10546     * Whether this CResult_ChannelReadyDecodeErrorZ represents a success state.
10547     */
10548    bool result_ok;
10549 } LDKCResult_ChannelReadyDecodeErrorZ;
10550
10551
10552
10553 /**
10554  * An init message to be sent or received from a peer
10555  */
10556 typedef struct MUST_USE_STRUCT LDKInit {
10557    /**
10558     * A pointer to the opaque Rust object.
10559     * Nearly everywhere, inner must be non-null, however in places where
10560     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10561     */
10562    LDKnativeInit *inner;
10563    /**
10564     * Indicates that this is the only struct which contains the same pointer.
10565     * Rust functions which take ownership of an object provided via an argument require
10566     * this to be true and invalidate the object pointed to by inner.
10567     */
10568    bool is_owned;
10569 } LDKInit;
10570
10571 /**
10572  * The contents of CResult_InitDecodeErrorZ
10573  */
10574 typedef union LDKCResult_InitDecodeErrorZPtr {
10575    /**
10576     * A pointer to the contents in the success state.
10577     * Reading from this pointer when `result_ok` is not set is undefined.
10578     */
10579    struct LDKInit *result;
10580    /**
10581     * A pointer to the contents in the error state.
10582     * Reading from this pointer when `result_ok` is set is undefined.
10583     */
10584    struct LDKDecodeError *err;
10585 } LDKCResult_InitDecodeErrorZPtr;
10586
10587 /**
10588  * A CResult_InitDecodeErrorZ represents the result of a fallible operation,
10589  * containing a crate::lightning::ln::msgs::Init on success and a crate::lightning::ln::msgs::DecodeError on failure.
10590  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10591  */
10592 typedef struct LDKCResult_InitDecodeErrorZ {
10593    /**
10594     * The contents of this CResult_InitDecodeErrorZ, accessible via either
10595     * `err` or `result` depending on the state of `result_ok`.
10596     */
10597    union LDKCResult_InitDecodeErrorZPtr contents;
10598    /**
10599     * Whether this CResult_InitDecodeErrorZ represents a success state.
10600     */
10601    bool result_ok;
10602 } LDKCResult_InitDecodeErrorZ;
10603
10604 /**
10605  * The contents of CResult_OpenChannelDecodeErrorZ
10606  */
10607 typedef union LDKCResult_OpenChannelDecodeErrorZPtr {
10608    /**
10609     * A pointer to the contents in the success state.
10610     * Reading from this pointer when `result_ok` is not set is undefined.
10611     */
10612    struct LDKOpenChannel *result;
10613    /**
10614     * A pointer to the contents in the error state.
10615     * Reading from this pointer when `result_ok` is set is undefined.
10616     */
10617    struct LDKDecodeError *err;
10618 } LDKCResult_OpenChannelDecodeErrorZPtr;
10619
10620 /**
10621  * A CResult_OpenChannelDecodeErrorZ represents the result of a fallible operation,
10622  * containing a crate::lightning::ln::msgs::OpenChannel on success and a crate::lightning::ln::msgs::DecodeError on failure.
10623  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10624  */
10625 typedef struct LDKCResult_OpenChannelDecodeErrorZ {
10626    /**
10627     * The contents of this CResult_OpenChannelDecodeErrorZ, accessible via either
10628     * `err` or `result` depending on the state of `result_ok`.
10629     */
10630    union LDKCResult_OpenChannelDecodeErrorZPtr contents;
10631    /**
10632     * Whether this CResult_OpenChannelDecodeErrorZ represents a success state.
10633     */
10634    bool result_ok;
10635 } LDKCResult_OpenChannelDecodeErrorZ;
10636
10637 /**
10638  * The contents of CResult_RevokeAndACKDecodeErrorZ
10639  */
10640 typedef union LDKCResult_RevokeAndACKDecodeErrorZPtr {
10641    /**
10642     * A pointer to the contents in the success state.
10643     * Reading from this pointer when `result_ok` is not set is undefined.
10644     */
10645    struct LDKRevokeAndACK *result;
10646    /**
10647     * A pointer to the contents in the error state.
10648     * Reading from this pointer when `result_ok` is set is undefined.
10649     */
10650    struct LDKDecodeError *err;
10651 } LDKCResult_RevokeAndACKDecodeErrorZPtr;
10652
10653 /**
10654  * A CResult_RevokeAndACKDecodeErrorZ represents the result of a fallible operation,
10655  * containing a crate::lightning::ln::msgs::RevokeAndACK on success and a crate::lightning::ln::msgs::DecodeError on failure.
10656  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10657  */
10658 typedef struct LDKCResult_RevokeAndACKDecodeErrorZ {
10659    /**
10660     * The contents of this CResult_RevokeAndACKDecodeErrorZ, accessible via either
10661     * `err` or `result` depending on the state of `result_ok`.
10662     */
10663    union LDKCResult_RevokeAndACKDecodeErrorZPtr contents;
10664    /**
10665     * Whether this CResult_RevokeAndACKDecodeErrorZ represents a success state.
10666     */
10667    bool result_ok;
10668 } LDKCResult_RevokeAndACKDecodeErrorZ;
10669
10670 /**
10671  * The contents of CResult_ShutdownDecodeErrorZ
10672  */
10673 typedef union LDKCResult_ShutdownDecodeErrorZPtr {
10674    /**
10675     * A pointer to the contents in the success state.
10676     * Reading from this pointer when `result_ok` is not set is undefined.
10677     */
10678    struct LDKShutdown *result;
10679    /**
10680     * A pointer to the contents in the error state.
10681     * Reading from this pointer when `result_ok` is set is undefined.
10682     */
10683    struct LDKDecodeError *err;
10684 } LDKCResult_ShutdownDecodeErrorZPtr;
10685
10686 /**
10687  * A CResult_ShutdownDecodeErrorZ represents the result of a fallible operation,
10688  * containing a crate::lightning::ln::msgs::Shutdown on success and a crate::lightning::ln::msgs::DecodeError on failure.
10689  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10690  */
10691 typedef struct LDKCResult_ShutdownDecodeErrorZ {
10692    /**
10693     * The contents of this CResult_ShutdownDecodeErrorZ, accessible via either
10694     * `err` or `result` depending on the state of `result_ok`.
10695     */
10696    union LDKCResult_ShutdownDecodeErrorZPtr contents;
10697    /**
10698     * Whether this CResult_ShutdownDecodeErrorZ represents a success state.
10699     */
10700    bool result_ok;
10701 } LDKCResult_ShutdownDecodeErrorZ;
10702
10703 /**
10704  * The contents of CResult_UpdateFailHTLCDecodeErrorZ
10705  */
10706 typedef union LDKCResult_UpdateFailHTLCDecodeErrorZPtr {
10707    /**
10708     * A pointer to the contents in the success state.
10709     * Reading from this pointer when `result_ok` is not set is undefined.
10710     */
10711    struct LDKUpdateFailHTLC *result;
10712    /**
10713     * A pointer to the contents in the error state.
10714     * Reading from this pointer when `result_ok` is set is undefined.
10715     */
10716    struct LDKDecodeError *err;
10717 } LDKCResult_UpdateFailHTLCDecodeErrorZPtr;
10718
10719 /**
10720  * A CResult_UpdateFailHTLCDecodeErrorZ represents the result of a fallible operation,
10721  * containing a crate::lightning::ln::msgs::UpdateFailHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
10722  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10723  */
10724 typedef struct LDKCResult_UpdateFailHTLCDecodeErrorZ {
10725    /**
10726     * The contents of this CResult_UpdateFailHTLCDecodeErrorZ, accessible via either
10727     * `err` or `result` depending on the state of `result_ok`.
10728     */
10729    union LDKCResult_UpdateFailHTLCDecodeErrorZPtr contents;
10730    /**
10731     * Whether this CResult_UpdateFailHTLCDecodeErrorZ represents a success state.
10732     */
10733    bool result_ok;
10734 } LDKCResult_UpdateFailHTLCDecodeErrorZ;
10735
10736 /**
10737  * The contents of CResult_UpdateFailMalformedHTLCDecodeErrorZ
10738  */
10739 typedef union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr {
10740    /**
10741     * A pointer to the contents in the success state.
10742     * Reading from this pointer when `result_ok` is not set is undefined.
10743     */
10744    struct LDKUpdateFailMalformedHTLC *result;
10745    /**
10746     * A pointer to the contents in the error state.
10747     * Reading from this pointer when `result_ok` is set is undefined.
10748     */
10749    struct LDKDecodeError *err;
10750 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr;
10751
10752 /**
10753  * A CResult_UpdateFailMalformedHTLCDecodeErrorZ represents the result of a fallible operation,
10754  * containing a crate::lightning::ln::msgs::UpdateFailMalformedHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
10755  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10756  */
10757 typedef struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ {
10758    /**
10759     * The contents of this CResult_UpdateFailMalformedHTLCDecodeErrorZ, accessible via either
10760     * `err` or `result` depending on the state of `result_ok`.
10761     */
10762    union LDKCResult_UpdateFailMalformedHTLCDecodeErrorZPtr contents;
10763    /**
10764     * Whether this CResult_UpdateFailMalformedHTLCDecodeErrorZ represents a success state.
10765     */
10766    bool result_ok;
10767 } LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ;
10768
10769
10770
10771 /**
10772  * An update_fee message to be sent or received from a peer
10773  */
10774 typedef struct MUST_USE_STRUCT LDKUpdateFee {
10775    /**
10776     * A pointer to the opaque Rust object.
10777     * Nearly everywhere, inner must be non-null, however in places where
10778     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10779     */
10780    LDKnativeUpdateFee *inner;
10781    /**
10782     * Indicates that this is the only struct which contains the same pointer.
10783     * Rust functions which take ownership of an object provided via an argument require
10784     * this to be true and invalidate the object pointed to by inner.
10785     */
10786    bool is_owned;
10787 } LDKUpdateFee;
10788
10789 /**
10790  * The contents of CResult_UpdateFeeDecodeErrorZ
10791  */
10792 typedef union LDKCResult_UpdateFeeDecodeErrorZPtr {
10793    /**
10794     * A pointer to the contents in the success state.
10795     * Reading from this pointer when `result_ok` is not set is undefined.
10796     */
10797    struct LDKUpdateFee *result;
10798    /**
10799     * A pointer to the contents in the error state.
10800     * Reading from this pointer when `result_ok` is set is undefined.
10801     */
10802    struct LDKDecodeError *err;
10803 } LDKCResult_UpdateFeeDecodeErrorZPtr;
10804
10805 /**
10806  * A CResult_UpdateFeeDecodeErrorZ represents the result of a fallible operation,
10807  * containing a crate::lightning::ln::msgs::UpdateFee on success and a crate::lightning::ln::msgs::DecodeError on failure.
10808  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10809  */
10810 typedef struct LDKCResult_UpdateFeeDecodeErrorZ {
10811    /**
10812     * The contents of this CResult_UpdateFeeDecodeErrorZ, accessible via either
10813     * `err` or `result` depending on the state of `result_ok`.
10814     */
10815    union LDKCResult_UpdateFeeDecodeErrorZPtr contents;
10816    /**
10817     * Whether this CResult_UpdateFeeDecodeErrorZ represents a success state.
10818     */
10819    bool result_ok;
10820 } LDKCResult_UpdateFeeDecodeErrorZ;
10821
10822 /**
10823  * The contents of CResult_UpdateFulfillHTLCDecodeErrorZ
10824  */
10825 typedef union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr {
10826    /**
10827     * A pointer to the contents in the success state.
10828     * Reading from this pointer when `result_ok` is not set is undefined.
10829     */
10830    struct LDKUpdateFulfillHTLC *result;
10831    /**
10832     * A pointer to the contents in the error state.
10833     * Reading from this pointer when `result_ok` is set is undefined.
10834     */
10835    struct LDKDecodeError *err;
10836 } LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr;
10837
10838 /**
10839  * A CResult_UpdateFulfillHTLCDecodeErrorZ represents the result of a fallible operation,
10840  * containing a crate::lightning::ln::msgs::UpdateFulfillHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
10841  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10842  */
10843 typedef struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ {
10844    /**
10845     * The contents of this CResult_UpdateFulfillHTLCDecodeErrorZ, accessible via either
10846     * `err` or `result` depending on the state of `result_ok`.
10847     */
10848    union LDKCResult_UpdateFulfillHTLCDecodeErrorZPtr contents;
10849    /**
10850     * Whether this CResult_UpdateFulfillHTLCDecodeErrorZ represents a success state.
10851     */
10852    bool result_ok;
10853 } LDKCResult_UpdateFulfillHTLCDecodeErrorZ;
10854
10855 /**
10856  * The contents of CResult_UpdateAddHTLCDecodeErrorZ
10857  */
10858 typedef union LDKCResult_UpdateAddHTLCDecodeErrorZPtr {
10859    /**
10860     * A pointer to the contents in the success state.
10861     * Reading from this pointer when `result_ok` is not set is undefined.
10862     */
10863    struct LDKUpdateAddHTLC *result;
10864    /**
10865     * A pointer to the contents in the error state.
10866     * Reading from this pointer when `result_ok` is set is undefined.
10867     */
10868    struct LDKDecodeError *err;
10869 } LDKCResult_UpdateAddHTLCDecodeErrorZPtr;
10870
10871 /**
10872  * A CResult_UpdateAddHTLCDecodeErrorZ represents the result of a fallible operation,
10873  * containing a crate::lightning::ln::msgs::UpdateAddHTLC on success and a crate::lightning::ln::msgs::DecodeError on failure.
10874  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10875  */
10876 typedef struct LDKCResult_UpdateAddHTLCDecodeErrorZ {
10877    /**
10878     * The contents of this CResult_UpdateAddHTLCDecodeErrorZ, accessible via either
10879     * `err` or `result` depending on the state of `result_ok`.
10880     */
10881    union LDKCResult_UpdateAddHTLCDecodeErrorZPtr contents;
10882    /**
10883     * Whether this CResult_UpdateAddHTLCDecodeErrorZ represents a success state.
10884     */
10885    bool result_ok;
10886 } LDKCResult_UpdateAddHTLCDecodeErrorZ;
10887
10888
10889
10890 /**
10891  * An onion message to be sent or received from a peer
10892  */
10893 typedef struct MUST_USE_STRUCT LDKOnionMessage {
10894    /**
10895     * A pointer to the opaque Rust object.
10896     * Nearly everywhere, inner must be non-null, however in places where
10897     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10898     */
10899    LDKnativeOnionMessage *inner;
10900    /**
10901     * Indicates that this is the only struct which contains the same pointer.
10902     * Rust functions which take ownership of an object provided via an argument require
10903     * this to be true and invalidate the object pointed to by inner.
10904     */
10905    bool is_owned;
10906 } LDKOnionMessage;
10907
10908 /**
10909  * The contents of CResult_OnionMessageDecodeErrorZ
10910  */
10911 typedef union LDKCResult_OnionMessageDecodeErrorZPtr {
10912    /**
10913     * A pointer to the contents in the success state.
10914     * Reading from this pointer when `result_ok` is not set is undefined.
10915     */
10916    struct LDKOnionMessage *result;
10917    /**
10918     * A pointer to the contents in the error state.
10919     * Reading from this pointer when `result_ok` is set is undefined.
10920     */
10921    struct LDKDecodeError *err;
10922 } LDKCResult_OnionMessageDecodeErrorZPtr;
10923
10924 /**
10925  * A CResult_OnionMessageDecodeErrorZ represents the result of a fallible operation,
10926  * containing a crate::lightning::ln::msgs::OnionMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
10927  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10928  */
10929 typedef struct LDKCResult_OnionMessageDecodeErrorZ {
10930    /**
10931     * The contents of this CResult_OnionMessageDecodeErrorZ, accessible via either
10932     * `err` or `result` depending on the state of `result_ok`.
10933     */
10934    union LDKCResult_OnionMessageDecodeErrorZPtr contents;
10935    /**
10936     * Whether this CResult_OnionMessageDecodeErrorZ represents a success state.
10937     */
10938    bool result_ok;
10939 } LDKCResult_OnionMessageDecodeErrorZ;
10940
10941
10942
10943 /**
10944  * A ping message to be sent or received from a peer
10945  */
10946 typedef struct MUST_USE_STRUCT LDKPing {
10947    /**
10948     * A pointer to the opaque Rust object.
10949     * Nearly everywhere, inner must be non-null, however in places where
10950     * the Rust equivalent takes an Option, it may be set to null to indicate None.
10951     */
10952    LDKnativePing *inner;
10953    /**
10954     * Indicates that this is the only struct which contains the same pointer.
10955     * Rust functions which take ownership of an object provided via an argument require
10956     * this to be true and invalidate the object pointed to by inner.
10957     */
10958    bool is_owned;
10959 } LDKPing;
10960
10961 /**
10962  * The contents of CResult_PingDecodeErrorZ
10963  */
10964 typedef union LDKCResult_PingDecodeErrorZPtr {
10965    /**
10966     * A pointer to the contents in the success state.
10967     * Reading from this pointer when `result_ok` is not set is undefined.
10968     */
10969    struct LDKPing *result;
10970    /**
10971     * A pointer to the contents in the error state.
10972     * Reading from this pointer when `result_ok` is set is undefined.
10973     */
10974    struct LDKDecodeError *err;
10975 } LDKCResult_PingDecodeErrorZPtr;
10976
10977 /**
10978  * A CResult_PingDecodeErrorZ represents the result of a fallible operation,
10979  * containing a crate::lightning::ln::msgs::Ping on success and a crate::lightning::ln::msgs::DecodeError on failure.
10980  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
10981  */
10982 typedef struct LDKCResult_PingDecodeErrorZ {
10983    /**
10984     * The contents of this CResult_PingDecodeErrorZ, accessible via either
10985     * `err` or `result` depending on the state of `result_ok`.
10986     */
10987    union LDKCResult_PingDecodeErrorZPtr contents;
10988    /**
10989     * Whether this CResult_PingDecodeErrorZ represents a success state.
10990     */
10991    bool result_ok;
10992 } LDKCResult_PingDecodeErrorZ;
10993
10994
10995
10996 /**
10997  * A pong message to be sent or received from a peer
10998  */
10999 typedef struct MUST_USE_STRUCT LDKPong {
11000    /**
11001     * A pointer to the opaque Rust object.
11002     * Nearly everywhere, inner must be non-null, however in places where
11003     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11004     */
11005    LDKnativePong *inner;
11006    /**
11007     * Indicates that this is the only struct which contains the same pointer.
11008     * Rust functions which take ownership of an object provided via an argument require
11009     * this to be true and invalidate the object pointed to by inner.
11010     */
11011    bool is_owned;
11012 } LDKPong;
11013
11014 /**
11015  * The contents of CResult_PongDecodeErrorZ
11016  */
11017 typedef union LDKCResult_PongDecodeErrorZPtr {
11018    /**
11019     * A pointer to the contents in the success state.
11020     * Reading from this pointer when `result_ok` is not set is undefined.
11021     */
11022    struct LDKPong *result;
11023    /**
11024     * A pointer to the contents in the error state.
11025     * Reading from this pointer when `result_ok` is set is undefined.
11026     */
11027    struct LDKDecodeError *err;
11028 } LDKCResult_PongDecodeErrorZPtr;
11029
11030 /**
11031  * A CResult_PongDecodeErrorZ represents the result of a fallible operation,
11032  * containing a crate::lightning::ln::msgs::Pong on success and a crate::lightning::ln::msgs::DecodeError on failure.
11033  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11034  */
11035 typedef struct LDKCResult_PongDecodeErrorZ {
11036    /**
11037     * The contents of this CResult_PongDecodeErrorZ, accessible via either
11038     * `err` or `result` depending on the state of `result_ok`.
11039     */
11040    union LDKCResult_PongDecodeErrorZPtr contents;
11041    /**
11042     * Whether this CResult_PongDecodeErrorZ represents a success state.
11043     */
11044    bool result_ok;
11045 } LDKCResult_PongDecodeErrorZ;
11046
11047 /**
11048  * The contents of CResult_UnsignedChannelAnnouncementDecodeErrorZ
11049  */
11050 typedef union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr {
11051    /**
11052     * A pointer to the contents in the success state.
11053     * Reading from this pointer when `result_ok` is not set is undefined.
11054     */
11055    struct LDKUnsignedChannelAnnouncement *result;
11056    /**
11057     * A pointer to the contents in the error state.
11058     * Reading from this pointer when `result_ok` is set is undefined.
11059     */
11060    struct LDKDecodeError *err;
11061 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr;
11062
11063 /**
11064  * A CResult_UnsignedChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
11065  * containing a crate::lightning::ln::msgs::UnsignedChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
11066  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11067  */
11068 typedef struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ {
11069    /**
11070     * The contents of this CResult_UnsignedChannelAnnouncementDecodeErrorZ, accessible via either
11071     * `err` or `result` depending on the state of `result_ok`.
11072     */
11073    union LDKCResult_UnsignedChannelAnnouncementDecodeErrorZPtr contents;
11074    /**
11075     * Whether this CResult_UnsignedChannelAnnouncementDecodeErrorZ represents a success state.
11076     */
11077    bool result_ok;
11078 } LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ;
11079
11080 /**
11081  * The contents of CResult_ChannelAnnouncementDecodeErrorZ
11082  */
11083 typedef union LDKCResult_ChannelAnnouncementDecodeErrorZPtr {
11084    /**
11085     * A pointer to the contents in the success state.
11086     * Reading from this pointer when `result_ok` is not set is undefined.
11087     */
11088    struct LDKChannelAnnouncement *result;
11089    /**
11090     * A pointer to the contents in the error state.
11091     * Reading from this pointer when `result_ok` is set is undefined.
11092     */
11093    struct LDKDecodeError *err;
11094 } LDKCResult_ChannelAnnouncementDecodeErrorZPtr;
11095
11096 /**
11097  * A CResult_ChannelAnnouncementDecodeErrorZ represents the result of a fallible operation,
11098  * containing a crate::lightning::ln::msgs::ChannelAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
11099  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11100  */
11101 typedef struct LDKCResult_ChannelAnnouncementDecodeErrorZ {
11102    /**
11103     * The contents of this CResult_ChannelAnnouncementDecodeErrorZ, accessible via either
11104     * `err` or `result` depending on the state of `result_ok`.
11105     */
11106    union LDKCResult_ChannelAnnouncementDecodeErrorZPtr contents;
11107    /**
11108     * Whether this CResult_ChannelAnnouncementDecodeErrorZ represents a success state.
11109     */
11110    bool result_ok;
11111 } LDKCResult_ChannelAnnouncementDecodeErrorZ;
11112
11113
11114
11115 /**
11116  * The unsigned part of a channel_update
11117  */
11118 typedef struct MUST_USE_STRUCT LDKUnsignedChannelUpdate {
11119    /**
11120     * A pointer to the opaque Rust object.
11121     * Nearly everywhere, inner must be non-null, however in places where
11122     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11123     */
11124    LDKnativeUnsignedChannelUpdate *inner;
11125    /**
11126     * Indicates that this is the only struct which contains the same pointer.
11127     * Rust functions which take ownership of an object provided via an argument require
11128     * this to be true and invalidate the object pointed to by inner.
11129     */
11130    bool is_owned;
11131 } LDKUnsignedChannelUpdate;
11132
11133 /**
11134  * The contents of CResult_UnsignedChannelUpdateDecodeErrorZ
11135  */
11136 typedef union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr {
11137    /**
11138     * A pointer to the contents in the success state.
11139     * Reading from this pointer when `result_ok` is not set is undefined.
11140     */
11141    struct LDKUnsignedChannelUpdate *result;
11142    /**
11143     * A pointer to the contents in the error state.
11144     * Reading from this pointer when `result_ok` is set is undefined.
11145     */
11146    struct LDKDecodeError *err;
11147 } LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr;
11148
11149 /**
11150  * A CResult_UnsignedChannelUpdateDecodeErrorZ represents the result of a fallible operation,
11151  * containing a crate::lightning::ln::msgs::UnsignedChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
11152  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11153  */
11154 typedef struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ {
11155    /**
11156     * The contents of this CResult_UnsignedChannelUpdateDecodeErrorZ, accessible via either
11157     * `err` or `result` depending on the state of `result_ok`.
11158     */
11159    union LDKCResult_UnsignedChannelUpdateDecodeErrorZPtr contents;
11160    /**
11161     * Whether this CResult_UnsignedChannelUpdateDecodeErrorZ represents a success state.
11162     */
11163    bool result_ok;
11164 } LDKCResult_UnsignedChannelUpdateDecodeErrorZ;
11165
11166 /**
11167  * The contents of CResult_ChannelUpdateDecodeErrorZ
11168  */
11169 typedef union LDKCResult_ChannelUpdateDecodeErrorZPtr {
11170    /**
11171     * A pointer to the contents in the success state.
11172     * Reading from this pointer when `result_ok` is not set is undefined.
11173     */
11174    struct LDKChannelUpdate *result;
11175    /**
11176     * A pointer to the contents in the error state.
11177     * Reading from this pointer when `result_ok` is set is undefined.
11178     */
11179    struct LDKDecodeError *err;
11180 } LDKCResult_ChannelUpdateDecodeErrorZPtr;
11181
11182 /**
11183  * A CResult_ChannelUpdateDecodeErrorZ represents the result of a fallible operation,
11184  * containing a crate::lightning::ln::msgs::ChannelUpdate on success and a crate::lightning::ln::msgs::DecodeError on failure.
11185  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11186  */
11187 typedef struct LDKCResult_ChannelUpdateDecodeErrorZ {
11188    /**
11189     * The contents of this CResult_ChannelUpdateDecodeErrorZ, accessible via either
11190     * `err` or `result` depending on the state of `result_ok`.
11191     */
11192    union LDKCResult_ChannelUpdateDecodeErrorZPtr contents;
11193    /**
11194     * Whether this CResult_ChannelUpdateDecodeErrorZ represents a success state.
11195     */
11196    bool result_ok;
11197 } LDKCResult_ChannelUpdateDecodeErrorZ;
11198
11199 /**
11200  * The contents of CResult_ErrorMessageDecodeErrorZ
11201  */
11202 typedef union LDKCResult_ErrorMessageDecodeErrorZPtr {
11203    /**
11204     * A pointer to the contents in the success state.
11205     * Reading from this pointer when `result_ok` is not set is undefined.
11206     */
11207    struct LDKErrorMessage *result;
11208    /**
11209     * A pointer to the contents in the error state.
11210     * Reading from this pointer when `result_ok` is set is undefined.
11211     */
11212    struct LDKDecodeError *err;
11213 } LDKCResult_ErrorMessageDecodeErrorZPtr;
11214
11215 /**
11216  * A CResult_ErrorMessageDecodeErrorZ represents the result of a fallible operation,
11217  * containing a crate::lightning::ln::msgs::ErrorMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
11218  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11219  */
11220 typedef struct LDKCResult_ErrorMessageDecodeErrorZ {
11221    /**
11222     * The contents of this CResult_ErrorMessageDecodeErrorZ, accessible via either
11223     * `err` or `result` depending on the state of `result_ok`.
11224     */
11225    union LDKCResult_ErrorMessageDecodeErrorZPtr contents;
11226    /**
11227     * Whether this CResult_ErrorMessageDecodeErrorZ represents a success state.
11228     */
11229    bool result_ok;
11230 } LDKCResult_ErrorMessageDecodeErrorZ;
11231
11232 /**
11233  * The contents of CResult_WarningMessageDecodeErrorZ
11234  */
11235 typedef union LDKCResult_WarningMessageDecodeErrorZPtr {
11236    /**
11237     * A pointer to the contents in the success state.
11238     * Reading from this pointer when `result_ok` is not set is undefined.
11239     */
11240    struct LDKWarningMessage *result;
11241    /**
11242     * A pointer to the contents in the error state.
11243     * Reading from this pointer when `result_ok` is set is undefined.
11244     */
11245    struct LDKDecodeError *err;
11246 } LDKCResult_WarningMessageDecodeErrorZPtr;
11247
11248 /**
11249  * A CResult_WarningMessageDecodeErrorZ represents the result of a fallible operation,
11250  * containing a crate::lightning::ln::msgs::WarningMessage on success and a crate::lightning::ln::msgs::DecodeError on failure.
11251  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11252  */
11253 typedef struct LDKCResult_WarningMessageDecodeErrorZ {
11254    /**
11255     * The contents of this CResult_WarningMessageDecodeErrorZ, accessible via either
11256     * `err` or `result` depending on the state of `result_ok`.
11257     */
11258    union LDKCResult_WarningMessageDecodeErrorZPtr contents;
11259    /**
11260     * Whether this CResult_WarningMessageDecodeErrorZ represents a success state.
11261     */
11262    bool result_ok;
11263 } LDKCResult_WarningMessageDecodeErrorZ;
11264
11265
11266
11267 /**
11268  * The unsigned part of a node_announcement
11269  */
11270 typedef struct MUST_USE_STRUCT LDKUnsignedNodeAnnouncement {
11271    /**
11272     * A pointer to the opaque Rust object.
11273     * Nearly everywhere, inner must be non-null, however in places where
11274     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11275     */
11276    LDKnativeUnsignedNodeAnnouncement *inner;
11277    /**
11278     * Indicates that this is the only struct which contains the same pointer.
11279     * Rust functions which take ownership of an object provided via an argument require
11280     * this to be true and invalidate the object pointed to by inner.
11281     */
11282    bool is_owned;
11283 } LDKUnsignedNodeAnnouncement;
11284
11285 /**
11286  * The contents of CResult_UnsignedNodeAnnouncementDecodeErrorZ
11287  */
11288 typedef union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr {
11289    /**
11290     * A pointer to the contents in the success state.
11291     * Reading from this pointer when `result_ok` is not set is undefined.
11292     */
11293    struct LDKUnsignedNodeAnnouncement *result;
11294    /**
11295     * A pointer to the contents in the error state.
11296     * Reading from this pointer when `result_ok` is set is undefined.
11297     */
11298    struct LDKDecodeError *err;
11299 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr;
11300
11301 /**
11302  * A CResult_UnsignedNodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
11303  * containing a crate::lightning::ln::msgs::UnsignedNodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
11304  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11305  */
11306 typedef struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ {
11307    /**
11308     * The contents of this CResult_UnsignedNodeAnnouncementDecodeErrorZ, accessible via either
11309     * `err` or `result` depending on the state of `result_ok`.
11310     */
11311    union LDKCResult_UnsignedNodeAnnouncementDecodeErrorZPtr contents;
11312    /**
11313     * Whether this CResult_UnsignedNodeAnnouncementDecodeErrorZ represents a success state.
11314     */
11315    bool result_ok;
11316 } LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ;
11317
11318
11319
11320 /**
11321  * A node_announcement message to be sent or received from a peer
11322  */
11323 typedef struct MUST_USE_STRUCT LDKNodeAnnouncement {
11324    /**
11325     * A pointer to the opaque Rust object.
11326     * Nearly everywhere, inner must be non-null, however in places where
11327     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11328     */
11329    LDKnativeNodeAnnouncement *inner;
11330    /**
11331     * Indicates that this is the only struct which contains the same pointer.
11332     * Rust functions which take ownership of an object provided via an argument require
11333     * this to be true and invalidate the object pointed to by inner.
11334     */
11335    bool is_owned;
11336 } LDKNodeAnnouncement;
11337
11338 /**
11339  * The contents of CResult_NodeAnnouncementDecodeErrorZ
11340  */
11341 typedef union LDKCResult_NodeAnnouncementDecodeErrorZPtr {
11342    /**
11343     * A pointer to the contents in the success state.
11344     * Reading from this pointer when `result_ok` is not set is undefined.
11345     */
11346    struct LDKNodeAnnouncement *result;
11347    /**
11348     * A pointer to the contents in the error state.
11349     * Reading from this pointer when `result_ok` is set is undefined.
11350     */
11351    struct LDKDecodeError *err;
11352 } LDKCResult_NodeAnnouncementDecodeErrorZPtr;
11353
11354 /**
11355  * A CResult_NodeAnnouncementDecodeErrorZ represents the result of a fallible operation,
11356  * containing a crate::lightning::ln::msgs::NodeAnnouncement on success and a crate::lightning::ln::msgs::DecodeError on failure.
11357  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11358  */
11359 typedef struct LDKCResult_NodeAnnouncementDecodeErrorZ {
11360    /**
11361     * The contents of this CResult_NodeAnnouncementDecodeErrorZ, accessible via either
11362     * `err` or `result` depending on the state of `result_ok`.
11363     */
11364    union LDKCResult_NodeAnnouncementDecodeErrorZPtr contents;
11365    /**
11366     * Whether this CResult_NodeAnnouncementDecodeErrorZ represents a success state.
11367     */
11368    bool result_ok;
11369 } LDKCResult_NodeAnnouncementDecodeErrorZ;
11370
11371 /**
11372  * The contents of CResult_QueryShortChannelIdsDecodeErrorZ
11373  */
11374 typedef union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr {
11375    /**
11376     * A pointer to the contents in the success state.
11377     * Reading from this pointer when `result_ok` is not set is undefined.
11378     */
11379    struct LDKQueryShortChannelIds *result;
11380    /**
11381     * A pointer to the contents in the error state.
11382     * Reading from this pointer when `result_ok` is set is undefined.
11383     */
11384    struct LDKDecodeError *err;
11385 } LDKCResult_QueryShortChannelIdsDecodeErrorZPtr;
11386
11387 /**
11388  * A CResult_QueryShortChannelIdsDecodeErrorZ represents the result of a fallible operation,
11389  * containing a crate::lightning::ln::msgs::QueryShortChannelIds on success and a crate::lightning::ln::msgs::DecodeError on failure.
11390  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11391  */
11392 typedef struct LDKCResult_QueryShortChannelIdsDecodeErrorZ {
11393    /**
11394     * The contents of this CResult_QueryShortChannelIdsDecodeErrorZ, accessible via either
11395     * `err` or `result` depending on the state of `result_ok`.
11396     */
11397    union LDKCResult_QueryShortChannelIdsDecodeErrorZPtr contents;
11398    /**
11399     * Whether this CResult_QueryShortChannelIdsDecodeErrorZ represents a success state.
11400     */
11401    bool result_ok;
11402 } LDKCResult_QueryShortChannelIdsDecodeErrorZ;
11403
11404
11405
11406 /**
11407  * A reply_short_channel_ids_end message is sent as a reply to a
11408  * query_short_channel_ids message. The query recipient makes a best
11409  * effort to respond based on their local network view which may not be
11410  * a perfect view of the network.
11411  */
11412 typedef struct MUST_USE_STRUCT LDKReplyShortChannelIdsEnd {
11413    /**
11414     * A pointer to the opaque Rust object.
11415     * Nearly everywhere, inner must be non-null, however in places where
11416     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11417     */
11418    LDKnativeReplyShortChannelIdsEnd *inner;
11419    /**
11420     * Indicates that this is the only struct which contains the same pointer.
11421     * Rust functions which take ownership of an object provided via an argument require
11422     * this to be true and invalidate the object pointed to by inner.
11423     */
11424    bool is_owned;
11425 } LDKReplyShortChannelIdsEnd;
11426
11427 /**
11428  * The contents of CResult_ReplyShortChannelIdsEndDecodeErrorZ
11429  */
11430 typedef union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr {
11431    /**
11432     * A pointer to the contents in the success state.
11433     * Reading from this pointer when `result_ok` is not set is undefined.
11434     */
11435    struct LDKReplyShortChannelIdsEnd *result;
11436    /**
11437     * A pointer to the contents in the error state.
11438     * Reading from this pointer when `result_ok` is set is undefined.
11439     */
11440    struct LDKDecodeError *err;
11441 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr;
11442
11443 /**
11444  * A CResult_ReplyShortChannelIdsEndDecodeErrorZ represents the result of a fallible operation,
11445  * containing a crate::lightning::ln::msgs::ReplyShortChannelIdsEnd on success and a crate::lightning::ln::msgs::DecodeError on failure.
11446  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11447  */
11448 typedef struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ {
11449    /**
11450     * The contents of this CResult_ReplyShortChannelIdsEndDecodeErrorZ, accessible via either
11451     * `err` or `result` depending on the state of `result_ok`.
11452     */
11453    union LDKCResult_ReplyShortChannelIdsEndDecodeErrorZPtr contents;
11454    /**
11455     * Whether this CResult_ReplyShortChannelIdsEndDecodeErrorZ represents a success state.
11456     */
11457    bool result_ok;
11458 } LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ;
11459
11460 /**
11461  * The contents of CResult_QueryChannelRangeDecodeErrorZ
11462  */
11463 typedef union LDKCResult_QueryChannelRangeDecodeErrorZPtr {
11464    /**
11465     * A pointer to the contents in the success state.
11466     * Reading from this pointer when `result_ok` is not set is undefined.
11467     */
11468    struct LDKQueryChannelRange *result;
11469    /**
11470     * A pointer to the contents in the error state.
11471     * Reading from this pointer when `result_ok` is set is undefined.
11472     */
11473    struct LDKDecodeError *err;
11474 } LDKCResult_QueryChannelRangeDecodeErrorZPtr;
11475
11476 /**
11477  * A CResult_QueryChannelRangeDecodeErrorZ represents the result of a fallible operation,
11478  * containing a crate::lightning::ln::msgs::QueryChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
11479  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11480  */
11481 typedef struct LDKCResult_QueryChannelRangeDecodeErrorZ {
11482    /**
11483     * The contents of this CResult_QueryChannelRangeDecodeErrorZ, accessible via either
11484     * `err` or `result` depending on the state of `result_ok`.
11485     */
11486    union LDKCResult_QueryChannelRangeDecodeErrorZPtr contents;
11487    /**
11488     * Whether this CResult_QueryChannelRangeDecodeErrorZ represents a success state.
11489     */
11490    bool result_ok;
11491 } LDKCResult_QueryChannelRangeDecodeErrorZ;
11492
11493 /**
11494  * The contents of CResult_ReplyChannelRangeDecodeErrorZ
11495  */
11496 typedef union LDKCResult_ReplyChannelRangeDecodeErrorZPtr {
11497    /**
11498     * A pointer to the contents in the success state.
11499     * Reading from this pointer when `result_ok` is not set is undefined.
11500     */
11501    struct LDKReplyChannelRange *result;
11502    /**
11503     * A pointer to the contents in the error state.
11504     * Reading from this pointer when `result_ok` is set is undefined.
11505     */
11506    struct LDKDecodeError *err;
11507 } LDKCResult_ReplyChannelRangeDecodeErrorZPtr;
11508
11509 /**
11510  * A CResult_ReplyChannelRangeDecodeErrorZ represents the result of a fallible operation,
11511  * containing a crate::lightning::ln::msgs::ReplyChannelRange on success and a crate::lightning::ln::msgs::DecodeError on failure.
11512  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11513  */
11514 typedef struct LDKCResult_ReplyChannelRangeDecodeErrorZ {
11515    /**
11516     * The contents of this CResult_ReplyChannelRangeDecodeErrorZ, accessible via either
11517     * `err` or `result` depending on the state of `result_ok`.
11518     */
11519    union LDKCResult_ReplyChannelRangeDecodeErrorZPtr contents;
11520    /**
11521     * Whether this CResult_ReplyChannelRangeDecodeErrorZ represents a success state.
11522     */
11523    bool result_ok;
11524 } LDKCResult_ReplyChannelRangeDecodeErrorZ;
11525
11526 /**
11527  * The contents of CResult_GossipTimestampFilterDecodeErrorZ
11528  */
11529 typedef union LDKCResult_GossipTimestampFilterDecodeErrorZPtr {
11530    /**
11531     * A pointer to the contents in the success state.
11532     * Reading from this pointer when `result_ok` is not set is undefined.
11533     */
11534    struct LDKGossipTimestampFilter *result;
11535    /**
11536     * A pointer to the contents in the error state.
11537     * Reading from this pointer when `result_ok` is set is undefined.
11538     */
11539    struct LDKDecodeError *err;
11540 } LDKCResult_GossipTimestampFilterDecodeErrorZPtr;
11541
11542 /**
11543  * A CResult_GossipTimestampFilterDecodeErrorZ represents the result of a fallible operation,
11544  * containing a crate::lightning::ln::msgs::GossipTimestampFilter on success and a crate::lightning::ln::msgs::DecodeError on failure.
11545  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11546  */
11547 typedef struct LDKCResult_GossipTimestampFilterDecodeErrorZ {
11548    /**
11549     * The contents of this CResult_GossipTimestampFilterDecodeErrorZ, accessible via either
11550     * `err` or `result` depending on the state of `result_ok`.
11551     */
11552    union LDKCResult_GossipTimestampFilterDecodeErrorZPtr contents;
11553    /**
11554     * Whether this CResult_GossipTimestampFilterDecodeErrorZ represents a success state.
11555     */
11556    bool result_ok;
11557 } LDKCResult_GossipTimestampFilterDecodeErrorZ;
11558
11559 /**
11560  * A dynamically-allocated array of crate::lightning::ln::channelmanager::PhantomRouteHintss of arbitrary size.
11561  * This corresponds to std::vector in C++
11562  */
11563 typedef struct LDKCVec_PhantomRouteHintsZ {
11564    /**
11565     * The elements in the array.
11566     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
11567     */
11568    struct LDKPhantomRouteHints *data;
11569    /**
11570     * The number of elements pointed to by `data`.
11571     */
11572    uintptr_t datalen;
11573 } LDKCVec_PhantomRouteHintsZ;
11574
11575 /**
11576  * When signing using a fallible method either an user-supplied `SignError` or a `CreationError`
11577  * may occur.
11578  */
11579 typedef enum LDKSignOrCreationError_Tag {
11580    /**
11581     * An error occurred during signing
11582     */
11583    LDKSignOrCreationError_SignError,
11584    /**
11585     * An error occurred while building the transaction
11586     */
11587    LDKSignOrCreationError_CreationError,
11588    /**
11589     * Must be last for serialization purposes
11590     */
11591    LDKSignOrCreationError_Sentinel,
11592 } LDKSignOrCreationError_Tag;
11593
11594 typedef struct MUST_USE_STRUCT LDKSignOrCreationError {
11595    LDKSignOrCreationError_Tag tag;
11596    union {
11597       struct {
11598          enum LDKCreationError creation_error;
11599       };
11600    };
11601 } LDKSignOrCreationError;
11602
11603 /**
11604  * The contents of CResult_InvoiceSignOrCreationErrorZ
11605  */
11606 typedef union LDKCResult_InvoiceSignOrCreationErrorZPtr {
11607    /**
11608     * A pointer to the contents in the success state.
11609     * Reading from this pointer when `result_ok` is not set is undefined.
11610     */
11611    struct LDKInvoice *result;
11612    /**
11613     * A pointer to the contents in the error state.
11614     * Reading from this pointer when `result_ok` is set is undefined.
11615     */
11616    struct LDKSignOrCreationError *err;
11617 } LDKCResult_InvoiceSignOrCreationErrorZPtr;
11618
11619 /**
11620  * A CResult_InvoiceSignOrCreationErrorZ represents the result of a fallible operation,
11621  * containing a crate::lightning_invoice::Invoice on success and a crate::lightning_invoice::SignOrCreationError on failure.
11622  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11623  */
11624 typedef struct LDKCResult_InvoiceSignOrCreationErrorZ {
11625    /**
11626     * The contents of this CResult_InvoiceSignOrCreationErrorZ, accessible via either
11627     * `err` or `result` depending on the state of `result_ok`.
11628     */
11629    union LDKCResult_InvoiceSignOrCreationErrorZPtr contents;
11630    /**
11631     * Whether this CResult_InvoiceSignOrCreationErrorZ represents a success state.
11632     */
11633    bool result_ok;
11634 } LDKCResult_InvoiceSignOrCreationErrorZ;
11635
11636
11637
11638 /**
11639  * A transaction output watched by a [`ChannelMonitor`] for spends on-chain.
11640  *
11641  * Used to convey to a [`Filter`] such an output with a given spending condition. Any transaction
11642  * spending the output must be given to [`ChannelMonitor::block_connected`] either directly or via
11643  * [`Confirm::transactions_confirmed`].
11644  *
11645  * If `block_hash` is `Some`, this indicates the output was created in the corresponding block and
11646  * may have been spent there. See [`Filter::register_output`] for details.
11647  *
11648  * [`ChannelMonitor`]: channelmonitor::ChannelMonitor
11649  * [`ChannelMonitor::block_connected`]: channelmonitor::ChannelMonitor::block_connected
11650  */
11651 typedef struct MUST_USE_STRUCT LDKWatchedOutput {
11652    /**
11653     * A pointer to the opaque Rust object.
11654     * Nearly everywhere, inner must be non-null, however in places where
11655     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11656     */
11657    LDKnativeWatchedOutput *inner;
11658    /**
11659     * Indicates that this is the only struct which contains the same pointer.
11660     * Rust functions which take ownership of an object provided via an argument require
11661     * this to be true and invalidate the object pointed to by inner.
11662     */
11663    bool is_owned;
11664 } LDKWatchedOutput;
11665
11666 /**
11667  * The `Filter` trait defines behavior for indicating chain activity of interest pertaining to
11668  * channels.
11669  *
11670  * This is useful in order to have a [`Watch`] implementation convey to a chain source which
11671  * transactions to be notified of. Notification may take the form of pre-filtering blocks or, in
11672  * the case of [BIP 157]/[BIP 158], only fetching a block if the compact filter matches. If
11673  * receiving full blocks from a chain source, any further filtering is unnecessary.
11674  *
11675  * After an output has been registered, subsequent block retrievals from the chain source must not
11676  * exclude any transactions matching the new criteria nor any in-block descendants of such
11677  * transactions.
11678  *
11679  * Note that use as part of a [`Watch`] implementation involves reentrancy. Therefore, the `Filter`
11680  * should not block on I/O. Implementations should instead queue the newly monitored data to be
11681  * processed later. Then, in order to block until the data has been processed, any [`Watch`]
11682  * invocation that has called the `Filter` must return [`TemporaryFailure`].
11683  *
11684  * [`TemporaryFailure`]: ChannelMonitorUpdateErr::TemporaryFailure
11685  * [BIP 157]: https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki
11686  * [BIP 158]: https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki
11687  */
11688 typedef struct LDKFilter {
11689    /**
11690     * An opaque pointer which is passed to your function implementations as an argument.
11691     * This has no meaning in the LDK, and can be NULL or any other value.
11692     */
11693    void *this_arg;
11694    /**
11695     * Registers interest in a transaction with `txid` and having an output with `script_pubkey` as
11696     * a spending condition.
11697     */
11698    void (*register_tx)(const void *this_arg, const uint8_t (*txid)[32], struct LDKu8slice script_pubkey);
11699    /**
11700     * Registers interest in spends of a transaction output.
11701     *
11702     * Note that this method might be called during processing of a new block. You therefore need
11703     * to ensure that also dependent output spents within an already connected block are correctly
11704     * handled, e.g., by re-scanning the block in question whenever new outputs have been
11705     * registered mid-processing.
11706     */
11707    void (*register_output)(const void *this_arg, struct LDKWatchedOutput output);
11708    /**
11709     * Frees any resources associated with this object given its this_arg pointer.
11710     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11711     */
11712    void (*free)(void *this_arg);
11713 } LDKFilter;
11714
11715 /**
11716  * An enum which can either contain a crate::lightning::chain::Filter or not
11717  */
11718 typedef enum LDKCOption_FilterZ_Tag {
11719    /**
11720     * When we're in this state, this COption_FilterZ contains a crate::lightning::chain::Filter
11721     */
11722    LDKCOption_FilterZ_Some,
11723    /**
11724     * When we're in this state, this COption_FilterZ contains nothing
11725     */
11726    LDKCOption_FilterZ_None,
11727    /**
11728     * Must be last for serialization purposes
11729     */
11730    LDKCOption_FilterZ_Sentinel,
11731 } LDKCOption_FilterZ_Tag;
11732
11733 typedef struct LDKCOption_FilterZ {
11734    LDKCOption_FilterZ_Tag tag;
11735    union {
11736       struct {
11737          struct LDKFilter some;
11738       };
11739    };
11740 } LDKCOption_FilterZ;
11741
11742
11743
11744 /**
11745  * A read-only reference to a current ChannelMonitor.
11746  *
11747  * Note that this holds a mutex in [`ChainMonitor`] and may block other events until it is
11748  * released.
11749  */
11750 typedef struct MUST_USE_STRUCT LDKLockedChannelMonitor {
11751    /**
11752     * A pointer to the opaque Rust object.
11753     * Nearly everywhere, inner must be non-null, however in places where
11754     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11755     */
11756    LDKnativeLockedChannelMonitor *inner;
11757    /**
11758     * Indicates that this is the only struct which contains the same pointer.
11759     * Rust functions which take ownership of an object provided via an argument require
11760     * this to be true and invalidate the object pointed to by inner.
11761     */
11762    bool is_owned;
11763 } LDKLockedChannelMonitor;
11764
11765 /**
11766  * The contents of CResult_LockedChannelMonitorNoneZ
11767  */
11768 typedef union LDKCResult_LockedChannelMonitorNoneZPtr {
11769    /**
11770     * A pointer to the contents in the success state.
11771     * Reading from this pointer when `result_ok` is not set is undefined.
11772     */
11773    struct LDKLockedChannelMonitor *result;
11774    /**
11775     * Note that this value is always NULL, as there are no contents in the Err variant
11776     */
11777    void *err;
11778 } LDKCResult_LockedChannelMonitorNoneZPtr;
11779
11780 /**
11781  * A CResult_LockedChannelMonitorNoneZ represents the result of a fallible operation,
11782  * containing a crate::lightning::chain::chainmonitor::LockedChannelMonitor on success and a () on failure.
11783  * `result_ok` indicates the overall state, and the contents are provided via `contents`.
11784  */
11785 typedef struct LDKCResult_LockedChannelMonitorNoneZ {
11786    /**
11787     * The contents of this CResult_LockedChannelMonitorNoneZ, accessible via either
11788     * `err` or `result` depending on the state of `result_ok`.
11789     */
11790    union LDKCResult_LockedChannelMonitorNoneZPtr contents;
11791    /**
11792     * Whether this CResult_LockedChannelMonitorNoneZ represents a success state.
11793     */
11794    bool result_ok;
11795 } LDKCResult_LockedChannelMonitorNoneZ;
11796
11797 /**
11798  * A dynamically-allocated array of crate::lightning::chain::transaction::OutPoints of arbitrary size.
11799  * This corresponds to std::vector in C++
11800  */
11801 typedef struct LDKCVec_OutPointZ {
11802    /**
11803     * The elements in the array.
11804     * If datalen is non-0 this must be a valid, non-NULL pointer allocated by malloc().
11805     */
11806    struct LDKOutPoint *data;
11807    /**
11808     * The number of elements pointed to by `data`.
11809     */
11810    uintptr_t datalen;
11811 } LDKCVec_OutPointZ;
11812
11813 /**
11814  * A trait indicating an object may generate message send events
11815  */
11816 typedef struct LDKMessageSendEventsProvider {
11817    /**
11818     * An opaque pointer which is passed to your function implementations as an argument.
11819     * This has no meaning in the LDK, and can be NULL or any other value.
11820     */
11821    void *this_arg;
11822    /**
11823     * Gets the list of pending events which were generated by previous actions, clearing the list
11824     * in the process.
11825     */
11826    struct LDKCVec_MessageSendEventZ (*get_and_clear_pending_msg_events)(const void *this_arg);
11827    /**
11828     * Frees any resources associated with this object given its this_arg pointer.
11829     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11830     */
11831    void (*free)(void *this_arg);
11832 } LDKMessageSendEventsProvider;
11833
11834 /**
11835  * A trait indicating an object may generate onion messages to send
11836  */
11837 typedef struct LDKOnionMessageProvider {
11838    /**
11839     * An opaque pointer which is passed to your function implementations as an argument.
11840     * This has no meaning in the LDK, and can be NULL or any other value.
11841     */
11842    void *this_arg;
11843    /**
11844     * Gets the next pending onion message for the peer with the given node id.
11845     *
11846     * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
11847     */
11848    struct LDKOnionMessage (*next_onion_message_for_peer)(const void *this_arg, struct LDKPublicKey peer_node_id);
11849    /**
11850     * Frees any resources associated with this object given its this_arg pointer.
11851     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11852     */
11853    void (*free)(void *this_arg);
11854 } LDKOnionMessageProvider;
11855
11856 /**
11857  * A trait implemented for objects handling events from [`EventsProvider`].
11858  */
11859 typedef struct LDKEventHandler {
11860    /**
11861     * An opaque pointer which is passed to your function implementations as an argument.
11862     * This has no meaning in the LDK, and can be NULL or any other value.
11863     */
11864    void *this_arg;
11865    /**
11866     * Handles the given [`Event`].
11867     *
11868     * See [`EventsProvider`] for details that must be considered when implementing this method.
11869     */
11870    void (*handle_event)(const void *this_arg, const struct LDKEvent *NONNULL_PTR event);
11871    /**
11872     * Frees any resources associated with this object given its this_arg pointer.
11873     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11874     */
11875    void (*free)(void *this_arg);
11876 } LDKEventHandler;
11877
11878 /**
11879  * A trait indicating an object may generate events.
11880  *
11881  * Events are processed by passing an [`EventHandler`] to [`process_pending_events`].
11882  *
11883  * # Requirements
11884  *
11885  * When using this trait, [`process_pending_events`] will call [`handle_event`] for each pending
11886  * event since the last invocation.
11887  *
11888  * In order to ensure no [`Event`]s are lost, implementors of this trait will persist [`Event`]s
11889  * and replay any unhandled events on startup. An [`Event`] is considered handled when
11890  * [`process_pending_events`] returns, thus handlers MUST fully handle [`Event`]s and persist any
11891  * relevant changes to disk *before* returning.
11892  *
11893  * Further, because an application may crash between an [`Event`] being handled and the
11894  * implementor of this trait being re-serialized, [`Event`] handling must be idempotent - in
11895  * effect, [`Event`]s may be replayed.
11896  *
11897  * Note, handlers may call back into the provider and thus deadlocking must be avoided. Be sure to
11898  * consult the provider's documentation on the implication of processing events and how a handler
11899  * may safely use the provider (e.g., see [`ChannelManager::process_pending_events`] and
11900  * [`ChainMonitor::process_pending_events`]).
11901  *
11902  * (C-not implementable) As there is likely no reason for a user to implement this trait on their
11903  * own type(s).
11904  *
11905  * [`process_pending_events`]: Self::process_pending_events
11906  * [`handle_event`]: EventHandler::handle_event
11907  * [`ChannelManager::process_pending_events`]: crate::ln::channelmanager::ChannelManager#method.process_pending_events
11908  * [`ChainMonitor::process_pending_events`]: crate::chain::chainmonitor::ChainMonitor#method.process_pending_events
11909  */
11910 typedef struct LDKEventsProvider {
11911    /**
11912     * An opaque pointer which is passed to your function implementations as an argument.
11913     * This has no meaning in the LDK, and can be NULL or any other value.
11914     */
11915    void *this_arg;
11916    /**
11917     * Processes any events generated since the last call using the given event handler.
11918     *
11919     * See the trait-level documentation for requirements.
11920     */
11921    void (*process_pending_events)(const void *this_arg, struct LDKEventHandler handler);
11922    /**
11923     * Frees any resources associated with this object given its this_arg pointer.
11924     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11925     */
11926    void (*free)(void *this_arg);
11927 } LDKEventsProvider;
11928
11929
11930
11931 /**
11932  * Lightning TLV uses a custom variable-length integer called BigSize. It is similar to Bitcoin's
11933  * variable-length integers except that it is serialized in big-endian instead of little-endian.
11934  *
11935  * Like Bitcoin's variable-length integer, it exhibits ambiguity in that certain values can be
11936  * encoded in several different ways, which we must check for at deserialization-time. Thus, if
11937  * you're looking for an example of a variable-length integer to use for your own project, move
11938  * along, this is a rather poor design.
11939  */
11940 typedef struct MUST_USE_STRUCT LDKBigSize {
11941    /**
11942     * A pointer to the opaque Rust object.
11943     * Nearly everywhere, inner must be non-null, however in places where
11944     * the Rust equivalent takes an Option, it may be set to null to indicate None.
11945     */
11946    LDKnativeBigSize *inner;
11947    /**
11948     * Indicates that this is the only struct which contains the same pointer.
11949     * Rust functions which take ownership of an object provided via an argument require
11950     * this to be true and invalidate the object pointed to by inner.
11951     */
11952    bool is_owned;
11953 } LDKBigSize;
11954
11955 /**
11956  * Trait that handles persisting a [`ChannelManager`], [`NetworkGraph`], and [`WriteableScore`] to disk.
11957  */
11958 typedef struct LDKPersister {
11959    /**
11960     * An opaque pointer which is passed to your function implementations as an argument.
11961     * This has no meaning in the LDK, and can be NULL or any other value.
11962     */
11963    void *this_arg;
11964    /**
11965     * Persist the given ['ChannelManager'] to disk, returning an error if persistence failed.
11966     */
11967    struct LDKCResult_NoneErrorZ (*persist_manager)(const void *this_arg, const struct LDKChannelManager *NONNULL_PTR channel_manager);
11968    /**
11969     * Persist the given [`NetworkGraph`] to disk, returning an error if persistence failed.
11970     */
11971    struct LDKCResult_NoneErrorZ (*persist_graph)(const void *this_arg, const struct LDKNetworkGraph *NONNULL_PTR network_graph);
11972    /**
11973     * Persist the given [`WriteableScore`] to disk, returning an error if persistence failed.
11974     */
11975    struct LDKCResult_NoneErrorZ (*persist_scorer)(const void *this_arg, const struct LDKWriteableScore *NONNULL_PTR scorer);
11976    /**
11977     * Frees any resources associated with this object given its this_arg pointer.
11978     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
11979     */
11980    void (*free)(void *this_arg);
11981 } LDKPersister;
11982
11983 /**
11984  * A callback which is called when a [`Future`] completes.
11985  *
11986  * Note that this MUST NOT call back into LDK directly, it must instead schedule actions to be
11987  * taken later. Rust users should use the [`std::future::Future`] implementation for [`Future`]
11988  * instead.
11989  *
11990  * Note that the [`std::future::Future`] implementation may only work for runtimes which schedule
11991  * futures when they receive a wake, rather than immediately executing them.
11992  */
11993 typedef struct LDKFutureCallback {
11994    /**
11995     * An opaque pointer which is passed to your function implementations as an argument.
11996     * This has no meaning in the LDK, and can be NULL or any other value.
11997     */
11998    void *this_arg;
11999    /**
12000     * The method which is called.
12001     */
12002    void (*call)(const void *this_arg);
12003    /**
12004     * Frees any resources associated with this object given its this_arg pointer.
12005     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12006     */
12007    void (*free)(void *this_arg);
12008 } LDKFutureCallback;
12009
12010
12011
12012 /**
12013  * A simple future which can complete once, and calls some callback(s) when it does so.
12014  */
12015 typedef struct MUST_USE_STRUCT LDKFuture {
12016    /**
12017     * A pointer to the opaque Rust object.
12018     * Nearly everywhere, inner must be non-null, however in places where
12019     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12020     */
12021    LDKnativeFuture *inner;
12022    /**
12023     * Indicates that this is the only struct which contains the same pointer.
12024     * Rust functions which take ownership of an object provided via an argument require
12025     * this to be true and invalidate the object pointed to by inner.
12026     */
12027    bool is_owned;
12028 } LDKFuture;
12029
12030
12031
12032 /**
12033  * Configuration we set when applicable.
12034  *
12035  * Default::default() provides sane defaults.
12036  */
12037 typedef struct MUST_USE_STRUCT LDKChannelHandshakeConfig {
12038    /**
12039     * A pointer to the opaque Rust object.
12040     * Nearly everywhere, inner must be non-null, however in places where
12041     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12042     */
12043    LDKnativeChannelHandshakeConfig *inner;
12044    /**
12045     * Indicates that this is the only struct which contains the same pointer.
12046     * Rust functions which take ownership of an object provided via an argument require
12047     * this to be true and invalidate the object pointed to by inner.
12048     */
12049    bool is_owned;
12050 } LDKChannelHandshakeConfig;
12051
12052
12053
12054 /**
12055  * Optional channel limits which are applied during channel creation.
12056  *
12057  * These limits are only applied to our counterparty's limits, not our own.
12058  *
12059  * Use 0/<type>::max_value() as appropriate to skip checking.
12060  *
12061  * Provides sane defaults for most configurations.
12062  *
12063  * Most additional limits are disabled except those with which specify a default in individual
12064  * field documentation. Note that this may result in barely-usable channels, but since they
12065  * are applied mostly only to incoming channels that's not much of a problem.
12066  */
12067 typedef struct MUST_USE_STRUCT LDKChannelHandshakeLimits {
12068    /**
12069     * A pointer to the opaque Rust object.
12070     * Nearly everywhere, inner must be non-null, however in places where
12071     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12072     */
12073    LDKnativeChannelHandshakeLimits *inner;
12074    /**
12075     * Indicates that this is the only struct which contains the same pointer.
12076     * Rust functions which take ownership of an object provided via an argument require
12077     * this to be true and invalidate the object pointed to by inner.
12078     */
12079    bool is_owned;
12080 } LDKChannelHandshakeLimits;
12081
12082
12083
12084 /**
12085  * Top-level config which holds ChannelHandshakeLimits and ChannelConfig.
12086  *
12087  * Default::default() provides sane defaults for most configurations
12088  * (but currently with 0 relay fees!)
12089  */
12090 typedef struct MUST_USE_STRUCT LDKUserConfig {
12091    /**
12092     * A pointer to the opaque Rust object.
12093     * Nearly everywhere, inner must be non-null, however in places where
12094     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12095     */
12096    LDKnativeUserConfig *inner;
12097    /**
12098     * Indicates that this is the only struct which contains the same pointer.
12099     * Rust functions which take ownership of an object provided via an argument require
12100     * this to be true and invalidate the object pointed to by inner.
12101     */
12102    bool is_owned;
12103 } LDKUserConfig;
12104
12105
12106
12107 /**
12108  * The best known block as identified by its hash and height.
12109  */
12110 typedef struct MUST_USE_STRUCT LDKBestBlock {
12111    /**
12112     * A pointer to the opaque Rust object.
12113     * Nearly everywhere, inner must be non-null, however in places where
12114     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12115     */
12116    LDKnativeBestBlock *inner;
12117    /**
12118     * Indicates that this is the only struct which contains the same pointer.
12119     * Rust functions which take ownership of an object provided via an argument require
12120     * this to be true and invalidate the object pointed to by inner.
12121     */
12122    bool is_owned;
12123 } LDKBestBlock;
12124
12125 /**
12126  * The `Listen` trait is used to notify when blocks have been connected or disconnected from the
12127  * chain.
12128  *
12129  * Useful when needing to replay chain data upon startup or as new chain events occur. Clients
12130  * sourcing chain data using a block-oriented API should prefer this interface over [`Confirm`].
12131  * Such clients fetch the entire header chain whereas clients using [`Confirm`] only fetch headers
12132  * when needed.
12133  *
12134  * By using [`Listen::filtered_block_connected`] this interface supports clients fetching the
12135  * entire header chain and only blocks with matching transaction data using BIP 157 filters or
12136  * other similar filtering.
12137  */
12138 typedef struct LDKListen {
12139    /**
12140     * An opaque pointer which is passed to your function implementations as an argument.
12141     * This has no meaning in the LDK, and can be NULL or any other value.
12142     */
12143    void *this_arg;
12144    /**
12145     * Notifies the listener that a block was added at the given height, with the transaction data
12146     * possibly filtered.
12147     */
12148    void (*filtered_block_connected)(const void *this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
12149    /**
12150     * Notifies the listener that a block was added at the given height.
12151     */
12152    void (*block_connected)(const void *this_arg, struct LDKu8slice block, uint32_t height);
12153    /**
12154     * Notifies the listener that a block was removed at the given height.
12155     */
12156    void (*block_disconnected)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
12157    /**
12158     * Frees any resources associated with this object given its this_arg pointer.
12159     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12160     */
12161    void (*free)(void *this_arg);
12162 } LDKListen;
12163
12164 /**
12165  * The `Confirm` trait is used to notify when transactions have been confirmed on chain or
12166  * unconfirmed during a chain reorganization.
12167  *
12168  * Clients sourcing chain data using a transaction-oriented API should prefer this interface over
12169  * [`Listen`]. For instance, an Electrum client may implement [`Filter`] by subscribing to activity
12170  * related to registered transactions and outputs. Upon notification, it would pass along the
12171  * matching transactions using this interface.
12172  *
12173  * # Use
12174  *
12175  * The intended use is as follows:
12176  * - Call [`transactions_confirmed`] to process any on-chain activity of interest.
12177  * - Call [`transaction_unconfirmed`] to process any transaction returned by [`get_relevant_txids`]
12178  *   that has been reorganized out of the chain.
12179  * - Call [`best_block_updated`] whenever a new chain tip becomes available.
12180  *
12181  * # Order
12182  *
12183  * Clients must call these methods in chain order. Specifically:
12184  * - Transactions confirmed in a block must be given before transactions confirmed in a later
12185  *   block.
12186  * - Dependent transactions within the same block must be given in topological order, possibly in
12187  *   separate calls.
12188  * - Unconfirmed transactions must be given after the original confirmations and before any
12189  *   reconfirmation.
12190  *
12191  * See individual method documentation for further details.
12192  *
12193  * [`transactions_confirmed`]: Self::transactions_confirmed
12194  * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
12195  * [`best_block_updated`]: Self::best_block_updated
12196  * [`get_relevant_txids`]: Self::get_relevant_txids
12197  */
12198 typedef struct LDKConfirm {
12199    /**
12200     * An opaque pointer which is passed to your function implementations as an argument.
12201     * This has no meaning in the LDK, and can be NULL or any other value.
12202     */
12203    void *this_arg;
12204    /**
12205     * Processes transactions confirmed in a block with a given header and height.
12206     *
12207     * Should be called for any transactions registered by [`Filter::register_tx`] or any
12208     * transactions spending an output registered by [`Filter::register_output`]. Such transactions
12209     * appearing in the same block do not need to be included in the same call; instead, multiple
12210     * calls with additional transactions may be made so long as they are made in [chain order].
12211     *
12212     * May be called before or after [`best_block_updated`] for the corresponding block. However,
12213     * in the event of a chain reorganization, it must not be called with a `header` that is no
12214     * longer in the chain as of the last call to [`best_block_updated`].
12215     *
12216     * [chain order]: Confirm#order
12217     * [`best_block_updated`]: Self::best_block_updated
12218     */
12219    void (*transactions_confirmed)(const void *this_arg, const uint8_t (*header)[80], struct LDKCVec_C2Tuple_usizeTransactionZZ txdata, uint32_t height);
12220    /**
12221     * Processes a transaction that is no longer confirmed as result of a chain reorganization.
12222     *
12223     * Should be called for any transaction returned by [`get_relevant_txids`] if it has been
12224     * reorganized out of the best chain. Once called, the given transaction will not be returned
12225     * by [`get_relevant_txids`], unless it has been reconfirmed via [`transactions_confirmed`].
12226     *
12227     * [`get_relevant_txids`]: Self::get_relevant_txids
12228     * [`transactions_confirmed`]: Self::transactions_confirmed
12229     */
12230    void (*transaction_unconfirmed)(const void *this_arg, const uint8_t (*txid)[32]);
12231    /**
12232     * Processes an update to the best header connected at the given height.
12233     *
12234     * Should be called when a new header is available but may be skipped for intermediary blocks
12235     * if they become available at the same time.
12236     */
12237    void (*best_block_updated)(const void *this_arg, const uint8_t (*header)[80], uint32_t height);
12238    /**
12239     * Returns transactions that should be monitored for reorganization out of the chain.
12240     *
12241     * Will include any transactions passed to [`transactions_confirmed`] that have insufficient
12242     * confirmations to be safe from a chain reorganization. Will not include any transactions
12243     * passed to [`transaction_unconfirmed`], unless later reconfirmed.
12244     *
12245     * May be called to determine the subset of transactions that must still be monitored for
12246     * reorganization. Will be idempotent between calls but may change as a result of calls to the
12247     * other interface methods. Thus, this is useful to determine which transactions may need to be
12248     * given to [`transaction_unconfirmed`].
12249     *
12250     * [`transactions_confirmed`]: Self::transactions_confirmed
12251     * [`transaction_unconfirmed`]: Self::transaction_unconfirmed
12252     */
12253    struct LDKCVec_TxidZ (*get_relevant_txids)(const void *this_arg);
12254    /**
12255     * Frees any resources associated with this object given its this_arg pointer.
12256     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12257     */
12258    void (*free)(void *this_arg);
12259 } LDKConfirm;
12260
12261
12262
12263 /**
12264  * An opaque identifier describing a specific [`Persist`] method call.
12265  */
12266 typedef struct MUST_USE_STRUCT LDKMonitorUpdateId {
12267    /**
12268     * A pointer to the opaque Rust object.
12269     * Nearly everywhere, inner must be non-null, however in places where
12270     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12271     */
12272    LDKnativeMonitorUpdateId *inner;
12273    /**
12274     * Indicates that this is the only struct which contains the same pointer.
12275     * Rust functions which take ownership of an object provided via an argument require
12276     * this to be true and invalidate the object pointed to by inner.
12277     */
12278    bool is_owned;
12279 } LDKMonitorUpdateId;
12280
12281 /**
12282  * `Persist` defines behavior for persisting channel monitors: this could mean
12283  * writing once to disk, and/or uploading to one or more backup services.
12284  *
12285  * Each method can return three possible values:
12286  *  * If persistence (including any relevant `fsync()` calls) happens immediately, the
12287  *    implementation should return `Ok(())`, indicating normal channel operation should continue.
12288  *  * If persistence happens asynchronously, implementations should first ensure the
12289  *    [`ChannelMonitor`] or [`ChannelMonitorUpdate`] are written durably to disk, and then return
12290  *    `Err(ChannelMonitorUpdateErr::TemporaryFailure)` while the update continues in the
12291  *    background. Once the update completes, [`ChainMonitor::channel_monitor_updated`] should be
12292  *    called with the corresponding [`MonitorUpdateId`].
12293  *
12294  *    Note that unlike the direct [`chain::Watch`] interface,
12295  *    [`ChainMonitor::channel_monitor_updated`] must be called once for *each* update which occurs.
12296  *
12297  *  * If persistence fails for some reason, implementations should return
12298  *    `Err(ChannelMonitorUpdateErr::PermanentFailure)`, in which case the channel will likely be
12299  *    closed without broadcasting the latest state. See
12300  *    [`ChannelMonitorUpdateErr::PermanentFailure`] for more details.
12301  */
12302 typedef struct LDKPersist {
12303    /**
12304     * An opaque pointer which is passed to your function implementations as an argument.
12305     * This has no meaning in the LDK, and can be NULL or any other value.
12306     */
12307    void *this_arg;
12308    /**
12309     * Persist a new channel's data in response to a [`chain::Watch::watch_channel`] call. This is
12310     * called by [`ChannelManager`] for new channels, or may be called directly, e.g. on startup.
12311     *
12312     * The data can be stored any way you want, but the identifier provided by LDK is the
12313     * channel's outpoint (and it is up to you to maintain a correct mapping between the outpoint
12314     * and the stored channel data). Note that you **must** persist every new monitor to disk.
12315     *
12316     * The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
12317     * if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
12318     *
12319     * See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`
12320     * and [`ChannelMonitorUpdateErr`] for requirements when returning errors.
12321     *
12322     * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
12323     * [`Writeable::write`]: crate::util::ser::Writeable::write
12324     */
12325    struct LDKCResult_NoneChannelMonitorUpdateErrZ (*persist_new_channel)(const void *this_arg, struct LDKOutPoint channel_id, const struct LDKChannelMonitor *NONNULL_PTR data, struct LDKMonitorUpdateId update_id);
12326    /**
12327     * Update one channel's data. The provided [`ChannelMonitor`] has already applied the given
12328     * update.
12329     *
12330     * Note that on every update, you **must** persist either the [`ChannelMonitorUpdate`] or the
12331     * updated monitor itself to disk/backups. See the [`Persist`] trait documentation for more
12332     * details.
12333     *
12334     * During blockchain synchronization operations, this may be called with no
12335     * [`ChannelMonitorUpdate`], in which case the full [`ChannelMonitor`] needs to be persisted.
12336     * Note that after the full [`ChannelMonitor`] is persisted any previous
12337     * [`ChannelMonitorUpdate`]s which were persisted should be discarded - they can no longer be
12338     * applied to the persisted [`ChannelMonitor`] as they were already applied.
12339     *
12340     * If an implementer chooses to persist the updates only, they need to make
12341     * sure that all the updates are applied to the `ChannelMonitors` *before*
12342     * the set of channel monitors is given to the `ChannelManager`
12343     * deserialization routine. See [`ChannelMonitor::update_monitor`] for
12344     * applying a monitor update to a monitor. If full `ChannelMonitors` are
12345     * persisted, then there is no need to persist individual updates.
12346     *
12347     * Note that there could be a performance tradeoff between persisting complete
12348     * channel monitors on every update vs. persisting only updates and applying
12349     * them in batches. The size of each monitor grows `O(number of state updates)`
12350     * whereas updates are small and `O(1)`.
12351     *
12352     * The `update_id` is used to identify this call to [`ChainMonitor::channel_monitor_updated`],
12353     * if you return [`ChannelMonitorUpdateErr::TemporaryFailure`].
12354     *
12355     * See [`Writeable::write`] on [`ChannelMonitor`] for writing out a `ChannelMonitor`,
12356     * [`Writeable::write`] on [`ChannelMonitorUpdate`] for writing out an update, and
12357     * [`ChannelMonitorUpdateErr`] for requirements when returning errors.
12358     *
12359     * [`Writeable::write`]: crate::util::ser::Writeable::write
12360     *
12361     * Note that update (or a relevant inner pointer) may be NULL or all-0s to represent None
12362     */
12363    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);
12364    /**
12365     * Frees any resources associated with this object given its this_arg pointer.
12366     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12367     */
12368    void (*free)(void *this_arg);
12369 } LDKPersist;
12370
12371
12372
12373 /**
12374  * An implementation of [`chain::Watch`] for monitoring channels.
12375  *
12376  * Connected and disconnected blocks must be provided to `ChainMonitor` as documented by
12377  * [`chain::Watch`]. May be used in conjunction with [`ChannelManager`] to monitor channels locally
12378  * or used independently to monitor channels remotely. See the [module-level documentation] for
12379  * details.
12380  *
12381  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
12382  * [module-level documentation]: crate::chain::chainmonitor
12383  */
12384 typedef struct MUST_USE_STRUCT LDKChainMonitor {
12385    /**
12386     * A pointer to the opaque Rust object.
12387     * Nearly everywhere, inner must be non-null, however in places where
12388     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12389     */
12390    LDKnativeChainMonitor *inner;
12391    /**
12392     * Indicates that this is the only struct which contains the same pointer.
12393     * Rust functions which take ownership of an object provided via an argument require
12394     * this to be true and invalidate the object pointed to by inner.
12395     */
12396    bool is_owned;
12397 } LDKChainMonitor;
12398
12399
12400
12401 /**
12402  * Simple KeysInterface implementor that takes a 32-byte seed for use as a BIP 32 extended key
12403  * and derives keys from that.
12404  *
12405  * Your node_id is seed/0'
12406  * ChannelMonitor closes may use seed/1'
12407  * Cooperative closes may use seed/2'
12408  * The two close keys may be needed to claim on-chain funds!
12409  *
12410  * This struct cannot be used for nodes that wish to support receiving phantom payments;
12411  * [`PhantomKeysManager`] must be used instead.
12412  *
12413  * Note that switching between this struct and [`PhantomKeysManager`] will invalidate any
12414  * previously issued invoices and attempts to pay previous invoices will fail.
12415  */
12416 typedef struct MUST_USE_STRUCT LDKKeysManager {
12417    /**
12418     * A pointer to the opaque Rust object.
12419     * Nearly everywhere, inner must be non-null, however in places where
12420     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12421     */
12422    LDKnativeKeysManager *inner;
12423    /**
12424     * Indicates that this is the only struct which contains the same pointer.
12425     * Rust functions which take ownership of an object provided via an argument require
12426     * this to be true and invalidate the object pointed to by inner.
12427     */
12428    bool is_owned;
12429 } LDKKeysManager;
12430
12431
12432
12433 /**
12434  * Similar to [`KeysManager`], but allows the node using this struct to receive phantom node
12435  * payments.
12436  *
12437  * A phantom node payment is a payment made to a phantom invoice, which is an invoice that can be
12438  * paid to one of multiple nodes. This works because we encode the invoice route hints such that
12439  * LDK will recognize an incoming payment as destined for a phantom node, and collect the payment
12440  * itself without ever needing to forward to this fake node.
12441  *
12442  * Phantom node payments are useful for load balancing between multiple LDK nodes. They also
12443  * provide some fault tolerance, because payers will automatically retry paying other provided
12444  * nodes in the case that one node goes down.
12445  *
12446  * Note that multi-path payments are not supported in phantom invoices for security reasons.
12447  * Switching between this struct and [`KeysManager`] will invalidate any previously issued
12448  * invoices and attempts to pay previous invoices will fail.
12449  */
12450 typedef struct MUST_USE_STRUCT LDKPhantomKeysManager {
12451    /**
12452     * A pointer to the opaque Rust object.
12453     * Nearly everywhere, inner must be non-null, however in places where
12454     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12455     */
12456    LDKnativePhantomKeysManager *inner;
12457    /**
12458     * Indicates that this is the only struct which contains the same pointer.
12459     * Rust functions which take ownership of an object provided via an argument require
12460     * this to be true and invalidate the object pointed to by inner.
12461     */
12462    bool is_owned;
12463 } LDKPhantomKeysManager;
12464
12465
12466
12467 /**
12468  * Chain-related parameters used to construct a new `ChannelManager`.
12469  *
12470  * Typically, the block-specific parameters are derived from the best block hash for the network,
12471  * as a newly constructed `ChannelManager` will not have created any channels yet. These parameters
12472  * are not needed when deserializing a previously constructed `ChannelManager`.
12473  */
12474 typedef struct MUST_USE_STRUCT LDKChainParameters {
12475    /**
12476     * A pointer to the opaque Rust object.
12477     * Nearly everywhere, inner must be non-null, however in places where
12478     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12479     */
12480    LDKnativeChainParameters *inner;
12481    /**
12482     * Indicates that this is the only struct which contains the same pointer.
12483     * Rust functions which take ownership of an object provided via an argument require
12484     * this to be true and invalidate the object pointed to by inner.
12485     */
12486    bool is_owned;
12487 } LDKChainParameters;
12488
12489 /**
12490  * A trait to describe an object which can receive channel messages.
12491  *
12492  * Messages MAY be called in parallel when they originate from different their_node_ids, however
12493  * they MUST NOT be called in parallel when the two calls have the same their_node_id.
12494  */
12495 typedef struct LDKChannelMessageHandler {
12496    /**
12497     * An opaque pointer which is passed to your function implementations as an argument.
12498     * This has no meaning in the LDK, and can be NULL or any other value.
12499     */
12500    void *this_arg;
12501    /**
12502     * Handle an incoming open_channel message from the given peer.
12503     */
12504    void (*handle_open_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKOpenChannel *NONNULL_PTR msg);
12505    /**
12506     * Handle an incoming accept_channel message from the given peer.
12507     */
12508    void (*handle_accept_channel)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKInitFeatures their_features, const struct LDKAcceptChannel *NONNULL_PTR msg);
12509    /**
12510     * Handle an incoming funding_created message from the given peer.
12511     */
12512    void (*handle_funding_created)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingCreated *NONNULL_PTR msg);
12513    /**
12514     * Handle an incoming funding_signed message from the given peer.
12515     */
12516    void (*handle_funding_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKFundingSigned *NONNULL_PTR msg);
12517    /**
12518     * Handle an incoming channel_ready message from the given peer.
12519     */
12520    void (*handle_channel_ready)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReady *NONNULL_PTR msg);
12521    /**
12522     * Handle an incoming shutdown message from the given peer.
12523     */
12524    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);
12525    /**
12526     * Handle an incoming closing_signed message from the given peer.
12527     */
12528    void (*handle_closing_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKClosingSigned *NONNULL_PTR msg);
12529    /**
12530     * Handle an incoming update_add_htlc message from the given peer.
12531     */
12532    void (*handle_update_add_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateAddHTLC *NONNULL_PTR msg);
12533    /**
12534     * Handle an incoming update_fulfill_htlc message from the given peer.
12535     */
12536    void (*handle_update_fulfill_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFulfillHTLC *NONNULL_PTR msg);
12537    /**
12538     * Handle an incoming update_fail_htlc message from the given peer.
12539     */
12540    void (*handle_update_fail_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailHTLC *NONNULL_PTR msg);
12541    /**
12542     * Handle an incoming update_fail_malformed_htlc message from the given peer.
12543     */
12544    void (*handle_update_fail_malformed_htlc)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR msg);
12545    /**
12546     * Handle an incoming commitment_signed message from the given peer.
12547     */
12548    void (*handle_commitment_signed)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKCommitmentSigned *NONNULL_PTR msg);
12549    /**
12550     * Handle an incoming revoke_and_ack message from the given peer.
12551     */
12552    void (*handle_revoke_and_ack)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKRevokeAndACK *NONNULL_PTR msg);
12553    /**
12554     * Handle an incoming update_fee message from the given peer.
12555     */
12556    void (*handle_update_fee)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKUpdateFee *NONNULL_PTR msg);
12557    /**
12558     * Handle an incoming announcement_signatures message from the given peer.
12559     */
12560    void (*handle_announcement_signatures)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKAnnouncementSignatures *NONNULL_PTR msg);
12561    /**
12562     * Indicates a connection to the peer failed/an existing connection was lost. If no connection
12563     * is believed to be possible in the future (eg they're sending us messages we don't
12564     * understand or indicate they require unknown feature bits), no_connection_possible is set
12565     * and any outstanding channels should be failed.
12566     */
12567    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
12568    /**
12569     * Handle a peer reconnecting, possibly generating channel_reestablish message(s).
12570     */
12571    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR msg);
12572    /**
12573     * Handle an incoming channel_reestablish message from the given peer.
12574     */
12575    void (*handle_channel_reestablish)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelReestablish *NONNULL_PTR msg);
12576    /**
12577     * Handle an incoming channel update from the given peer.
12578     */
12579    void (*handle_channel_update)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKChannelUpdate *NONNULL_PTR msg);
12580    /**
12581     * Handle an incoming error message from the given peer.
12582     */
12583    void (*handle_error)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKErrorMessage *NONNULL_PTR msg);
12584    /**
12585     * Gets the node feature flags which this handler itself supports. All available handlers are
12586     * queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
12587     * which are broadcasted in our [`NodeAnnouncement`] message.
12588     */
12589    struct LDKNodeFeatures (*provided_node_features)(const void *this_arg);
12590    /**
12591     * Gets the init feature flags which should be sent to the given peer. All available handlers
12592     * are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
12593     * which are sent in our [`Init`] message.
12594     *
12595     * Note that this method is called before [`Self::peer_connected`].
12596     */
12597    struct LDKInitFeatures (*provided_init_features)(const void *this_arg, struct LDKPublicKey their_node_id);
12598    /**
12599     * Implementation of MessageSendEventsProvider for this object.
12600     */
12601    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
12602    /**
12603     * Frees any resources associated with this object given its this_arg pointer.
12604     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12605     */
12606    void (*free)(void *this_arg);
12607 } LDKChannelMessageHandler;
12608
12609
12610
12611 /**
12612  * Arguments for the creation of a ChannelManager that are not deserialized.
12613  *
12614  * At a high-level, the process for deserializing a ChannelManager and resuming normal operation
12615  * is:
12616  * 1) Deserialize all stored [`ChannelMonitor`]s.
12617  * 2) Deserialize the [`ChannelManager`] by filling in this struct and calling:
12618  *    `<(BlockHash, ChannelManager)>::read(reader, args)`
12619  *    This may result in closing some channels if the [`ChannelMonitor`] is newer than the stored
12620  *    [`ChannelManager`] state to ensure no loss of funds. Thus, transactions may be broadcasted.
12621  * 3) If you are not fetching full blocks, register all relevant [`ChannelMonitor`] outpoints the
12622  *    same way you would handle a [`chain::Filter`] call using
12623  *    [`ChannelMonitor::get_outputs_to_watch`] and [`ChannelMonitor::get_funding_txo`].
12624  * 4) Reconnect blocks on your [`ChannelMonitor`]s.
12625  * 5) Disconnect/connect blocks on the [`ChannelManager`].
12626  * 6) Re-persist the [`ChannelMonitor`]s to ensure the latest state is on disk.
12627  *    Note that if you're using a [`ChainMonitor`] for your [`chain::Watch`] implementation, you
12628  *    will likely accomplish this as a side-effect of calling [`chain::Watch::watch_channel`] in
12629  *    the next step.
12630  * 7) Move the [`ChannelMonitor`]s into your local [`chain::Watch`]. If you're using a
12631  *    [`ChainMonitor`], this is done by calling [`chain::Watch::watch_channel`].
12632  *
12633  * Note that the ordering of #4-7 is not of importance, however all four must occur before you
12634  * call any other methods on the newly-deserialized [`ChannelManager`].
12635  *
12636  * Note that because some channels may be closed during deserialization, it is critical that you
12637  * always deserialize only the latest version of a ChannelManager and ChannelMonitors available to
12638  * you. If you deserialize an old ChannelManager (during which force-closure transactions may be
12639  * broadcast), and then later deserialize a newer version of the same ChannelManager (which will
12640  * not force-close the same channels but consider them live), you may end up revoking a state for
12641  * which you've already broadcasted the transaction.
12642  *
12643  * [`ChainMonitor`]: crate::chain::chainmonitor::ChainMonitor
12644  */
12645 typedef struct MUST_USE_STRUCT LDKChannelManagerReadArgs {
12646    /**
12647     * A pointer to the opaque Rust object.
12648     * Nearly everywhere, inner must be non-null, however in places where
12649     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12650     */
12651    LDKnativeChannelManagerReadArgs *inner;
12652    /**
12653     * Indicates that this is the only struct which contains the same pointer.
12654     * Rust functions which take ownership of an object provided via an argument require
12655     * this to be true and invalidate the object pointed to by inner.
12656     */
12657    bool is_owned;
12658 } LDKChannelManagerReadArgs;
12659
12660
12661
12662 /**
12663  * A set of keys that were HKDF-expanded from an initial call to
12664  * [`KeysInterface::get_inbound_payment_key_material`].
12665  *
12666  * [`KeysInterface::get_inbound_payment_key_material`]: crate::chain::keysinterface::KeysInterface::get_inbound_payment_key_material
12667  */
12668 typedef struct MUST_USE_STRUCT LDKExpandedKey {
12669    /**
12670     * A pointer to the opaque Rust object.
12671     * Nearly everywhere, inner must be non-null, however in places where
12672     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12673     */
12674    LDKnativeExpandedKey *inner;
12675    /**
12676     * Indicates that this is the only struct which contains the same pointer.
12677     * Rust functions which take ownership of an object provided via an argument require
12678     * this to be true and invalidate the object pointed to by inner.
12679     */
12680    bool is_owned;
12681 } LDKExpandedKey;
12682
12683
12684
12685 /**
12686  * Proof that the sender knows the per-commitment secret of the previous commitment transaction.
12687  * This is used to convince the recipient that the channel is at a certain commitment
12688  * number even if they lost that data due to a local failure.  Of course, the peer may lie
12689  * and even later commitments may have been revoked.
12690  */
12691 typedef struct MUST_USE_STRUCT LDKDataLossProtect {
12692    /**
12693     * A pointer to the opaque Rust object.
12694     * Nearly everywhere, inner must be non-null, however in places where
12695     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12696     */
12697    LDKnativeDataLossProtect *inner;
12698    /**
12699     * Indicates that this is the only struct which contains the same pointer.
12700     * Rust functions which take ownership of an object provided via an argument require
12701     * this to be true and invalidate the object pointed to by inner.
12702     */
12703    bool is_owned;
12704 } LDKDataLossProtect;
12705
12706 /**
12707  * A 3-byte byte array.
12708  */
12709 typedef struct LDKThreeBytes {
12710    /**
12711     * The three bytes
12712     */
12713    uint8_t data[3];
12714 } LDKThreeBytes;
12715
12716 /**
12717  * A trait to describe an object which can receive routing messages.
12718  *
12719  * # Implementor DoS Warnings
12720  *
12721  * For `gossip_queries` messages there are potential DoS vectors when handling
12722  * inbound queries. Implementors using an on-disk network graph should be aware of
12723  * repeated disk I/O for queries accessing different parts of the network graph.
12724  */
12725 typedef struct LDKRoutingMessageHandler {
12726    /**
12727     * An opaque pointer which is passed to your function implementations as an argument.
12728     * This has no meaning in the LDK, and can be NULL or any other value.
12729     */
12730    void *this_arg;
12731    /**
12732     * Handle an incoming node_announcement message, returning true if it should be forwarded on,
12733     * false or returning an Err otherwise.
12734     */
12735    struct LDKCResult_boolLightningErrorZ (*handle_node_announcement)(const void *this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
12736    /**
12737     * Handle a channel_announcement message, returning true if it should be forwarded on, false
12738     * or returning an Err otherwise.
12739     */
12740    struct LDKCResult_boolLightningErrorZ (*handle_channel_announcement)(const void *this_arg, const struct LDKChannelAnnouncement *NONNULL_PTR msg);
12741    /**
12742     * Handle an incoming channel_update message, returning true if it should be forwarded on,
12743     * false or returning an Err otherwise.
12744     */
12745    struct LDKCResult_boolLightningErrorZ (*handle_channel_update)(const void *this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
12746    /**
12747     * Gets channel announcements and updates required to dump our routing table to a remote node,
12748     * starting at the short_channel_id indicated by starting_point and including announcements
12749     * for a single channel.
12750     */
12751    struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ (*get_next_channel_announcement)(const void *this_arg, uint64_t starting_point);
12752    /**
12753     * Gets a node announcement required to dump our routing table to a remote node, starting at
12754     * the node *after* the provided pubkey and including up to one announcement immediately
12755     * higher (as defined by <PublicKey as Ord>::cmp) than starting_point.
12756     * If None is provided for starting_point, we start at the first node.
12757     *
12758     * Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None
12759     * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
12760     */
12761    struct LDKNodeAnnouncement (*get_next_node_announcement)(const void *this_arg, struct LDKPublicKey starting_point);
12762    /**
12763     * Called when a connection is established with a peer. This can be used to
12764     * perform routing table synchronization using a strategy defined by the
12765     * implementor.
12766     */
12767    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
12768    /**
12769     * Handles the reply of a query we initiated to learn about channels
12770     * for a given range of blocks. We can expect to receive one or more
12771     * replies to a single query.
12772     */
12773    struct LDKCResult_NoneLightningErrorZ (*handle_reply_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyChannelRange msg);
12774    /**
12775     * Handles the reply of a query we initiated asking for routing gossip
12776     * messages for a list of channels. We should receive this message when
12777     * a node has completed its best effort to send us the pertaining routing
12778     * gossip messages.
12779     */
12780    struct LDKCResult_NoneLightningErrorZ (*handle_reply_short_channel_ids_end)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKReplyShortChannelIdsEnd msg);
12781    /**
12782     * Handles when a peer asks us to send a list of short_channel_ids
12783     * for the requested range of blocks.
12784     */
12785    struct LDKCResult_NoneLightningErrorZ (*handle_query_channel_range)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryChannelRange msg);
12786    /**
12787     * Handles when a peer asks us to send routing gossip messages for a
12788     * list of short_channel_ids.
12789     */
12790    struct LDKCResult_NoneLightningErrorZ (*handle_query_short_channel_ids)(const void *this_arg, struct LDKPublicKey their_node_id, struct LDKQueryShortChannelIds msg);
12791    /**
12792     * Gets the node feature flags which this handler itself supports. All available handlers are
12793     * queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
12794     * which are broadcasted in our [`NodeAnnouncement`] message.
12795     */
12796    struct LDKNodeFeatures (*provided_node_features)(const void *this_arg);
12797    /**
12798     * Gets the init feature flags which should be sent to the given peer. All available handlers
12799     * are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
12800     * which are sent in our [`Init`] message.
12801     *
12802     * Note that this method is called before [`Self::peer_connected`].
12803     */
12804    struct LDKInitFeatures (*provided_init_features)(const void *this_arg, struct LDKPublicKey their_node_id);
12805    /**
12806     * Implementation of MessageSendEventsProvider for this object.
12807     */
12808    struct LDKMessageSendEventsProvider MessageSendEventsProvider;
12809    /**
12810     * Frees any resources associated with this object given its this_arg pointer.
12811     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12812     */
12813    void (*free)(void *this_arg);
12814 } LDKRoutingMessageHandler;
12815
12816 /**
12817  * A trait to describe an object that can receive onion messages.
12818  */
12819 typedef struct LDKOnionMessageHandler {
12820    /**
12821     * An opaque pointer which is passed to your function implementations as an argument.
12822     * This has no meaning in the LDK, and can be NULL or any other value.
12823     */
12824    void *this_arg;
12825    /**
12826     * Handle an incoming onion_message message from the given peer.
12827     */
12828    void (*handle_onion_message)(const void *this_arg, struct LDKPublicKey peer_node_id, const struct LDKOnionMessage *NONNULL_PTR msg);
12829    /**
12830     * Called when a connection is established with a peer. Can be used to track which peers
12831     * advertise onion message support and are online.
12832     */
12833    void (*peer_connected)(const void *this_arg, struct LDKPublicKey their_node_id, const struct LDKInit *NONNULL_PTR init);
12834    /**
12835     * Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to
12836     * drop and refuse to forward onion messages to this peer.
12837     */
12838    void (*peer_disconnected)(const void *this_arg, struct LDKPublicKey their_node_id, bool no_connection_possible);
12839    /**
12840     * Gets the node feature flags which this handler itself supports. All available handlers are
12841     * queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`]
12842     * which are broadcasted in our [`NodeAnnouncement`] message.
12843     */
12844    struct LDKNodeFeatures (*provided_node_features)(const void *this_arg);
12845    /**
12846     * Gets the init feature flags which should be sent to the given peer. All available handlers
12847     * are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`]
12848     * which are sent in our [`Init`] message.
12849     *
12850     * Note that this method is called before [`Self::peer_connected`].
12851     */
12852    struct LDKInitFeatures (*provided_init_features)(const void *this_arg, struct LDKPublicKey their_node_id);
12853    /**
12854     * Implementation of OnionMessageProvider for this object.
12855     */
12856    struct LDKOnionMessageProvider OnionMessageProvider;
12857    /**
12858     * Frees any resources associated with this object given its this_arg pointer.
12859     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12860     */
12861    void (*free)(void *this_arg);
12862 } LDKOnionMessageHandler;
12863
12864 /**
12865  * Trait to be implemented by custom message (unrelated to the channel/gossip LN layers)
12866  * decoders.
12867  */
12868 typedef struct LDKCustomMessageReader {
12869    /**
12870     * An opaque pointer which is passed to your function implementations as an argument.
12871     * This has no meaning in the LDK, and can be NULL or any other value.
12872     */
12873    void *this_arg;
12874    /**
12875     * Decodes a custom message to `CustomMessageType`. If the given message type is known to the
12876     * implementation and the message could be decoded, must return `Ok(Some(message))`. If the
12877     * message type is unknown to the implementation, must return `Ok(None)`. If a decoding error
12878     * occur, must return `Err(DecodeError::X)` where `X` details the encountered error.
12879     */
12880    struct LDKCResult_COption_TypeZDecodeErrorZ (*read)(const void *this_arg, uint16_t message_type, struct LDKu8slice buffer);
12881    /**
12882     * Frees any resources associated with this object given its this_arg pointer.
12883     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12884     */
12885    void (*free)(void *this_arg);
12886 } LDKCustomMessageReader;
12887
12888 /**
12889  * Handler for BOLT1-compliant messages.
12890  */
12891 typedef struct LDKCustomMessageHandler {
12892    /**
12893     * An opaque pointer which is passed to your function implementations as an argument.
12894     * This has no meaning in the LDK, and can be NULL or any other value.
12895     */
12896    void *this_arg;
12897    /**
12898     * Called with the message type that was received and the buffer to be read.
12899     * Can return a `MessageHandlingError` if the message could not be handled.
12900     */
12901    struct LDKCResult_NoneLightningErrorZ (*handle_custom_message)(const void *this_arg, struct LDKType msg, struct LDKPublicKey sender_node_id);
12902    /**
12903     * Gets the list of pending messages which were generated by the custom message
12904     * handler, clearing the list in the process. The first tuple element must
12905     * correspond to the intended recipients node ids. If no connection to one of the
12906     * specified node does not exist, the message is simply not sent to it.
12907     */
12908    struct LDKCVec_C2Tuple_PublicKeyTypeZZ (*get_and_clear_pending_msg)(const void *this_arg);
12909    /**
12910     * Implementation of CustomMessageReader for this object.
12911     */
12912    struct LDKCustomMessageReader CustomMessageReader;
12913    /**
12914     * Frees any resources associated with this object given its this_arg pointer.
12915     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
12916     */
12917    void (*free)(void *this_arg);
12918 } LDKCustomMessageHandler;
12919
12920
12921
12922 /**
12923  * A dummy struct which implements `RoutingMessageHandler` without storing any routing information
12924  * or doing any processing. You can provide one of these as the route_handler in a MessageHandler.
12925  */
12926 typedef struct MUST_USE_STRUCT LDKIgnoringMessageHandler {
12927    /**
12928     * A pointer to the opaque Rust object.
12929     * Nearly everywhere, inner must be non-null, however in places where
12930     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12931     */
12932    LDKnativeIgnoringMessageHandler *inner;
12933    /**
12934     * Indicates that this is the only struct which contains the same pointer.
12935     * Rust functions which take ownership of an object provided via an argument require
12936     * this to be true and invalidate the object pointed to by inner.
12937     */
12938    bool is_owned;
12939 } LDKIgnoringMessageHandler;
12940
12941
12942
12943 /**
12944  * A dummy struct which implements `ChannelMessageHandler` without having any channels.
12945  * You can provide one of these as the route_handler in a MessageHandler.
12946  */
12947 typedef struct MUST_USE_STRUCT LDKErroringMessageHandler {
12948    /**
12949     * A pointer to the opaque Rust object.
12950     * Nearly everywhere, inner must be non-null, however in places where
12951     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12952     */
12953    LDKnativeErroringMessageHandler *inner;
12954    /**
12955     * Indicates that this is the only struct which contains the same pointer.
12956     * Rust functions which take ownership of an object provided via an argument require
12957     * this to be true and invalidate the object pointed to by inner.
12958     */
12959    bool is_owned;
12960 } LDKErroringMessageHandler;
12961
12962
12963
12964 /**
12965  * Provides references to trait impls which handle different types of messages.
12966  */
12967 typedef struct MUST_USE_STRUCT LDKMessageHandler {
12968    /**
12969     * A pointer to the opaque Rust object.
12970     * Nearly everywhere, inner must be non-null, however in places where
12971     * the Rust equivalent takes an Option, it may be set to null to indicate None.
12972     */
12973    LDKnativeMessageHandler *inner;
12974    /**
12975     * Indicates that this is the only struct which contains the same pointer.
12976     * Rust functions which take ownership of an object provided via an argument require
12977     * this to be true and invalidate the object pointed to by inner.
12978     */
12979    bool is_owned;
12980 } LDKMessageHandler;
12981
12982 /**
12983  * Provides an object which can be used to send data to and which uniquely identifies a connection
12984  * to a remote host. You will need to be able to generate multiple of these which meet Eq and
12985  * implement Hash to meet the PeerManager API.
12986  *
12987  * For efficiency, Clone should be relatively cheap for this type.
12988  *
12989  * Two descriptors may compare equal (by [`cmp::Eq`] and [`hash::Hash`]) as long as the original
12990  * has been disconnected, the [`PeerManager`] has been informed of the disconnection (either by it
12991  * having triggered the disconnection or a call to [`PeerManager::socket_disconnected`]), and no
12992  * further calls to the [`PeerManager`] related to the original socket occur. This allows you to
12993  * use a file descriptor for your SocketDescriptor directly, however for simplicity you may wish
12994  * to simply use another value which is guaranteed to be globally unique instead.
12995  */
12996 typedef struct LDKSocketDescriptor {
12997    /**
12998     * An opaque pointer which is passed to your function implementations as an argument.
12999     * This has no meaning in the LDK, and can be NULL or any other value.
13000     */
13001    void *this_arg;
13002    /**
13003     * Attempts to send some data from the given slice to the peer.
13004     *
13005     * Returns the amount of data which was sent, possibly 0 if the socket has since disconnected.
13006     * Note that in the disconnected case, [`PeerManager::socket_disconnected`] must still be
13007     * called and further write attempts may occur until that time.
13008     *
13009     * If the returned size is smaller than `data.len()`, a
13010     * [`PeerManager::write_buffer_space_avail`] call must be made the next time more data can be
13011     * written. Additionally, until a `send_data` event completes fully, no further
13012     * [`PeerManager::read_event`] calls should be made for the same peer! Because this is to
13013     * prevent denial-of-service issues, you should not read or buffer any data from the socket
13014     * until then.
13015     *
13016     * If a [`PeerManager::read_event`] call on this descriptor had previously returned true
13017     * (indicating that read events should be paused to prevent DoS in the send buffer),
13018     * `resume_read` may be set indicating that read events on this descriptor should resume. A
13019     * `resume_read` of false carries no meaning, and should not cause any action.
13020     */
13021    uintptr_t (*send_data)(void *this_arg, struct LDKu8slice data, bool resume_read);
13022    /**
13023     * Disconnect the socket pointed to by this SocketDescriptor.
13024     *
13025     * You do *not* need to call [`PeerManager::socket_disconnected`] with this socket after this
13026     * call (doing so is a noop).
13027     */
13028    void (*disconnect_socket)(void *this_arg);
13029    /**
13030     * Checks if two objects are equal given this object's this_arg pointer and another object.
13031     */
13032    bool (*eq)(const void *this_arg, const struct LDKSocketDescriptor *NONNULL_PTR other_arg);
13033    /**
13034     * Calculate a succinct non-cryptographic hash for an object given its this_arg pointer.
13035     * This is used, for example, for inclusion of this object in a hash map.
13036     */
13037    uint64_t (*hash)(const void *this_arg);
13038    /**
13039     * Called, if set, after this SocketDescriptor has been cloned into a duplicate object.
13040     * The new SocketDescriptor is provided, and should be mutated as needed to perform a
13041     * deep copy of the object pointed to by this_arg or avoid any double-freeing.
13042     */
13043    void (*cloned)(struct LDKSocketDescriptor *NONNULL_PTR new_SocketDescriptor);
13044    /**
13045     * Frees any resources associated with this object given its this_arg pointer.
13046     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
13047     */
13048    void (*free)(void *this_arg);
13049 } LDKSocketDescriptor;
13050
13051
13052
13053 /**
13054  * A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
13055  * socket events into messages which it passes on to its [`MessageHandler`].
13056  *
13057  * Locks are taken internally, so you must never assume that reentrancy from a
13058  * [`SocketDescriptor`] call back into [`PeerManager`] methods will not deadlock.
13059  *
13060  * Calls to [`read_event`] will decode relevant messages and pass them to the
13061  * [`ChannelMessageHandler`], likely doing message processing in-line. Thus, the primary form of
13062  * parallelism in Rust-Lightning is in calls to [`read_event`]. Note, however, that calls to any
13063  * [`PeerManager`] functions related to the same connection must occur only in serial, making new
13064  * calls only after previous ones have returned.
13065  *
13066  * Rather than using a plain PeerManager, it is preferable to use either a SimpleArcPeerManager
13067  * a SimpleRefPeerManager, for conciseness. See their documentation for more details, but
13068  * essentially you should default to using a SimpleRefPeerManager, and use a
13069  * SimpleArcPeerManager when you require a PeerManager with a static lifetime, such as when
13070  * you're using lightning-net-tokio.
13071  *
13072  * [`read_event`]: PeerManager::read_event
13073  */
13074 typedef struct MUST_USE_STRUCT LDKPeerManager {
13075    /**
13076     * A pointer to the opaque Rust object.
13077     * Nearly everywhere, inner must be non-null, however in places where
13078     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13079     */
13080    LDKnativePeerManager *inner;
13081    /**
13082     * Indicates that this is the only struct which contains the same pointer.
13083     * Rust functions which take ownership of an object provided via an argument require
13084     * this to be true and invalidate the object pointed to by inner.
13085     */
13086    bool is_owned;
13087 } LDKPeerManager;
13088
13089
13090
13091 /**
13092  * Static channel fields used to build transactions given per-commitment fields, organized by
13093  * broadcaster/countersignatory.
13094  *
13095  * This is derived from the holder/counterparty-organized ChannelTransactionParameters via the
13096  * as_holder_broadcastable and as_counterparty_broadcastable functions.
13097  */
13098 typedef struct MUST_USE_STRUCT LDKDirectedChannelTransactionParameters {
13099    /**
13100     * A pointer to the opaque Rust object.
13101     * Nearly everywhere, inner must be non-null, however in places where
13102     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13103     */
13104    LDKnativeDirectedChannelTransactionParameters *inner;
13105    /**
13106     * Indicates that this is the only struct which contains the same pointer.
13107     * Rust functions which take ownership of an object provided via an argument require
13108     * this to be true and invalidate the object pointed to by inner.
13109     */
13110    bool is_owned;
13111 } LDKDirectedChannelTransactionParameters;
13112
13113 /**
13114  * Integer in the range `0..=16`
13115  */
13116 typedef struct LDKWitnessVersion {
13117    uint8_t _0;
13118 } LDKWitnessVersion;
13119
13120
13121
13122 /**
13123  * A read-only view of [`NetworkGraph`].
13124  */
13125 typedef struct MUST_USE_STRUCT LDKReadOnlyNetworkGraph {
13126    /**
13127     * A pointer to the opaque Rust object.
13128     * Nearly everywhere, inner must be non-null, however in places where
13129     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13130     */
13131    LDKnativeReadOnlyNetworkGraph *inner;
13132    /**
13133     * Indicates that this is the only struct which contains the same pointer.
13134     * Rust functions which take ownership of an object provided via an argument require
13135     * this to be true and invalidate the object pointed to by inner.
13136     */
13137    bool is_owned;
13138 } LDKReadOnlyNetworkGraph;
13139
13140
13141
13142 /**
13143  * Receives and validates network updates from peers,
13144  * stores authentic and relevant data as a network graph.
13145  * This network graph is then used for routing payments.
13146  * Provides interface to help with initial routing sync by
13147  * serving historical announcements.
13148  *
13149  * Serves as an [`EventHandler`] for applying updates from [`Event::PaymentPathFailed`] to the
13150  * [`NetworkGraph`].
13151  */
13152 typedef struct MUST_USE_STRUCT LDKP2PGossipSync {
13153    /**
13154     * A pointer to the opaque Rust object.
13155     * Nearly everywhere, inner must be non-null, however in places where
13156     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13157     */
13158    LDKnativeP2PGossipSync *inner;
13159    /**
13160     * Indicates that this is the only struct which contains the same pointer.
13161     * Rust functions which take ownership of an object provided via an argument require
13162     * this to be true and invalidate the object pointed to by inner.
13163     */
13164    bool is_owned;
13165 } LDKP2PGossipSync;
13166
13167
13168
13169 /**
13170  * A wrapper around [`ChannelInfo`] representing information about the channel as directed from a
13171  * source node to a target node.
13172  */
13173 typedef struct MUST_USE_STRUCT LDKDirectedChannelInfo {
13174    /**
13175     * A pointer to the opaque Rust object.
13176     * Nearly everywhere, inner must be non-null, however in places where
13177     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13178     */
13179    LDKnativeDirectedChannelInfo *inner;
13180    /**
13181     * Indicates that this is the only struct which contains the same pointer.
13182     * Rust functions which take ownership of an object provided via an argument require
13183     * this to be true and invalidate the object pointed to by inner.
13184     */
13185    bool is_owned;
13186 } LDKDirectedChannelInfo;
13187
13188 /**
13189  * The effective capacity of a channel for routing purposes.
13190  *
13191  * While this may be smaller than the actual channel capacity, amounts greater than
13192  * [`Self::as_msat`] should not be routed through the channel.
13193  */
13194 typedef enum LDKEffectiveCapacity_Tag {
13195    /**
13196     * The available liquidity in the channel known from being a channel counterparty, and thus a
13197     * direct hop.
13198     */
13199    LDKEffectiveCapacity_ExactLiquidity,
13200    /**
13201     * The maximum HTLC amount in one direction as advertised on the gossip network.
13202     */
13203    LDKEffectiveCapacity_MaximumHTLC,
13204    /**
13205     * The total capacity of the channel as determined by the funding transaction.
13206     */
13207    LDKEffectiveCapacity_Total,
13208    /**
13209     * A capacity sufficient to route any payment, typically used for private channels provided by
13210     * an invoice.
13211     */
13212    LDKEffectiveCapacity_Infinite,
13213    /**
13214     * A capacity that is unknown possibly because either the chain state is unavailable to know
13215     * the total capacity or the `htlc_maximum_msat` was not advertised on the gossip network.
13216     */
13217    LDKEffectiveCapacity_Unknown,
13218    /**
13219     * Must be last for serialization purposes
13220     */
13221    LDKEffectiveCapacity_Sentinel,
13222 } LDKEffectiveCapacity_Tag;
13223
13224 typedef struct LDKEffectiveCapacity_LDKExactLiquidity_Body {
13225    /**
13226     * Either the inbound or outbound liquidity depending on the direction, denominated in
13227     * millisatoshi.
13228     */
13229    uint64_t liquidity_msat;
13230 } LDKEffectiveCapacity_LDKExactLiquidity_Body;
13231
13232 typedef struct LDKEffectiveCapacity_LDKMaximumHTLC_Body {
13233    /**
13234     * The maximum HTLC amount denominated in millisatoshi.
13235     */
13236    uint64_t amount_msat;
13237 } LDKEffectiveCapacity_LDKMaximumHTLC_Body;
13238
13239 typedef struct LDKEffectiveCapacity_LDKTotal_Body {
13240    /**
13241     * The funding amount denominated in millisatoshi.
13242     */
13243    uint64_t capacity_msat;
13244    /**
13245     * The maximum HTLC amount denominated in millisatoshi.
13246     */
13247    struct LDKCOption_u64Z htlc_maximum_msat;
13248 } LDKEffectiveCapacity_LDKTotal_Body;
13249
13250 typedef struct MUST_USE_STRUCT LDKEffectiveCapacity {
13251    LDKEffectiveCapacity_Tag tag;
13252    union {
13253       LDKEffectiveCapacity_LDKExactLiquidity_Body exact_liquidity;
13254       LDKEffectiveCapacity_LDKMaximumHTLC_Body maximum_htlc;
13255       LDKEffectiveCapacity_LDKTotal_Body total;
13256    };
13257 } LDKEffectiveCapacity;
13258
13259
13260
13261 /**
13262  * A concrete implementation of [`LockableScore`] which supports multi-threading.
13263  */
13264 typedef struct MUST_USE_STRUCT LDKMultiThreadedLockableScore {
13265    /**
13266     * A pointer to the opaque Rust object.
13267     * Nearly everywhere, inner must be non-null, however in places where
13268     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13269     */
13270    LDKnativeMultiThreadedLockableScore *inner;
13271    /**
13272     * Indicates that this is the only struct which contains the same pointer.
13273     * Rust functions which take ownership of an object provided via an argument require
13274     * this to be true and invalidate the object pointed to by inner.
13275     */
13276    bool is_owned;
13277 } LDKMultiThreadedLockableScore;
13278
13279
13280
13281 /**
13282  * A locked `MultiThreadedLockableScore`.
13283  */
13284 typedef struct MUST_USE_STRUCT LDKMultiThreadedScoreLock {
13285    /**
13286     * A pointer to the opaque Rust object.
13287     * Nearly everywhere, inner must be non-null, however in places where
13288     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13289     */
13290    LDKnativeMultiThreadedScoreLock *inner;
13291    /**
13292     * Indicates that this is the only struct which contains the same pointer.
13293     * Rust functions which take ownership of an object provided via an argument require
13294     * this to be true and invalidate the object pointed to by inner.
13295     */
13296    bool is_owned;
13297 } LDKMultiThreadedScoreLock;
13298
13299
13300
13301 /**
13302  * Parameters for configuring [`ProbabilisticScorer`].
13303  *
13304  * Used to configure base, liquidity, and amount penalties, the sum of which comprises the channel
13305  * penalty (i.e., the amount in msats willing to be paid to avoid routing through the channel).
13306  *
13307  * The penalty applied to any channel by the [`ProbabilisticScorer`] is the sum of each of the
13308  * parameters here.
13309  */
13310 typedef struct MUST_USE_STRUCT LDKProbabilisticScoringParameters {
13311    /**
13312     * A pointer to the opaque Rust object.
13313     * Nearly everywhere, inner must be non-null, however in places where
13314     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13315     */
13316    LDKnativeProbabilisticScoringParameters *inner;
13317    /**
13318     * Indicates that this is the only struct which contains the same pointer.
13319     * Rust functions which take ownership of an object provided via an argument require
13320     * this to be true and invalidate the object pointed to by inner.
13321     */
13322    bool is_owned;
13323 } LDKProbabilisticScoringParameters;
13324
13325
13326
13327 /**
13328  * A sender, receiver and forwarder of onion messages. In upcoming releases, this object will be
13329  * used to retrieve invoices and fulfill invoice requests from [offers]. Currently, only sending
13330  * and receiving empty onion messages is supported.
13331  *
13332  * # Example
13333  *
13334  * ```
13335  * # extern crate bitcoin;
13336  * # use bitcoin::hashes::_export::_core::time::Duration;
13337  * # use bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
13338  * # use lightning::chain::keysinterface::{InMemorySigner, KeysManager, KeysInterface};
13339  * # use lightning::onion_message::messenger::{Destination, OnionMessenger};
13340  * # use lightning::onion_message::blinded_route::BlindedRoute;
13341  * # use lightning::util::logger::{Logger, Record};
13342  * # use std::sync::Arc;
13343  * # struct FakeLogger {};
13344  * # impl Logger for FakeLogger {
13345  * #     fn log(&self, record: &Record) { unimplemented!() }
13346  * # }
13347  * # let seed = [42u8; 32];
13348  * # let time = Duration::from_secs(123456);
13349  * # let keys_manager = KeysManager::new(&seed, time.as_secs(), time.subsec_nanos());
13350  * # let logger = Arc::new(FakeLogger {});
13351  * # let node_secret = SecretKey::from_slice(&hex::decode(\"0101010101010101010101010101010101010101010101010101010101010101\").unwrap()[..]).unwrap();
13352  * # let secp_ctx = Secp256k1::new();
13353  * # let hop_node_id1 = PublicKey::from_secret_key(&secp_ctx, &node_secret);
13354  * # let (hop_node_id2, hop_node_id3, hop_node_id4) = (hop_node_id1, hop_node_id1,
13355  * hop_node_id1);
13356  * # let destination_node_id = hop_node_id1;
13357  * #
13358  * // Create the onion messenger. This must use the same `keys_manager` as is passed to your
13359  * // ChannelManager.
13360  * let onion_messenger = OnionMessenger::new(&keys_manager, logger);
13361  *
13362  * // Send an empty onion message to a node id.
13363  * let intermediate_hops = [hop_node_id1, hop_node_id2];
13364  * let reply_path = None;
13365  * onion_messenger.send_onion_message(&intermediate_hops, Destination::Node(destination_node_id), reply_path);
13366  *
13367  * // Create a blinded route to yourself, for someone to send an onion message to.
13368  * # let your_node_id = hop_node_id1;
13369  * let hops = [hop_node_id3, hop_node_id4, your_node_id];
13370  * let blinded_route = BlindedRoute::new(&hops, &keys_manager, &secp_ctx).unwrap();
13371  *
13372  * // Send an empty onion message to a blinded route.
13373  * # let intermediate_hops = [hop_node_id1, hop_node_id2];
13374  * let reply_path = None;
13375  * onion_messenger.send_onion_message(&intermediate_hops, Destination::BlindedRoute(blinded_route), reply_path);
13376  * ```
13377  *
13378  * [offers]: <https://github.com/lightning/bolts/pull/798>
13379  * [`OnionMessenger`]: crate::onion_message::OnionMessenger
13380  */
13381 typedef struct MUST_USE_STRUCT LDKOnionMessenger {
13382    /**
13383     * A pointer to the opaque Rust object.
13384     * Nearly everywhere, inner must be non-null, however in places where
13385     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13386     */
13387    LDKnativeOnionMessenger *inner;
13388    /**
13389     * Indicates that this is the only struct which contains the same pointer.
13390     * Rust functions which take ownership of an object provided via an argument require
13391     * this to be true and invalidate the object pointed to by inner.
13392     */
13393    bool is_owned;
13394 } LDKOnionMessenger;
13395
13396 /**
13397  * The destination of an onion message.
13398  */
13399 typedef enum LDKDestination_Tag {
13400    /**
13401     * We're sending this onion message to a node.
13402     */
13403    LDKDestination_Node,
13404    /**
13405     * We're sending this onion message to a blinded route.
13406     */
13407    LDKDestination_BlindedRoute,
13408    /**
13409     * Must be last for serialization purposes
13410     */
13411    LDKDestination_Sentinel,
13412 } LDKDestination_Tag;
13413
13414 typedef struct MUST_USE_STRUCT LDKDestination {
13415    LDKDestination_Tag tag;
13416    union {
13417       struct {
13418          struct LDKPublicKey node;
13419       };
13420       struct {
13421          struct LDKBlindedRoute blinded_route;
13422       };
13423    };
13424 } LDKDestination;
13425
13426
13427
13428 /**
13429  * FilesystemPersister persists channel data on disk, where each channel's
13430  * data is stored in a file named after its funding outpoint.
13431  *
13432  * Warning: this module does the best it can with calls to persist data, but it
13433  * can only guarantee that the data is passed to the drive. It is up to the
13434  * drive manufacturers to do the actual persistence properly, which they often
13435  * don't (especially on consumer-grade hardware). Therefore, it is up to the
13436  * user to validate their entire storage stack, to ensure the writes are
13437  * persistent.
13438  * Corollary: especially when dealing with larger amounts of money, it is best
13439  * practice to have multiple channel data backups and not rely only on one
13440  * FilesystemPersister.
13441  */
13442 typedef struct MUST_USE_STRUCT LDKFilesystemPersister {
13443    /**
13444     * A pointer to the opaque Rust object.
13445     * Nearly everywhere, inner must be non-null, however in places where
13446     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13447     */
13448    LDKnativeFilesystemPersister *inner;
13449    /**
13450     * Indicates that this is the only struct which contains the same pointer.
13451     * Rust functions which take ownership of an object provided via an argument require
13452     * this to be true and invalidate the object pointed to by inner.
13453     */
13454    bool is_owned;
13455 } LDKFilesystemPersister;
13456
13457
13458
13459 /**
13460  * `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
13461  * Rust-Lightning running properly, and (2) either can or should be run in the background. Its
13462  * responsibilities are:
13463  * * Processing [`Event`]s with a user-provided [`EventHandler`].
13464  * * Monitoring whether the [`ChannelManager`] needs to be re-persisted to disk, and if so,
13465  *   writing it to disk/backups by invoking the callback given to it at startup.
13466  *   [`ChannelManager`] persistence should be done in the background.
13467  * * Calling [`ChannelManager::timer_tick_occurred`] and [`PeerManager::timer_tick_occurred`]
13468  *   at the appropriate intervals.
13469  * * Calling [`NetworkGraph::remove_stale_channels`] (if a [`GossipSync`] with a [`NetworkGraph`]
13470  *   is provided to [`BackgroundProcessor::start`]).
13471  *
13472  * It will also call [`PeerManager::process_events`] periodically though this shouldn't be relied
13473  * upon as doing so may result in high latency.
13474  *
13475  * # Note
13476  *
13477  * If [`ChannelManager`] persistence fails and the persisted manager becomes out-of-date, then
13478  * there is a risk of channels force-closing on startup when the manager realizes it's outdated.
13479  * However, as long as [`ChannelMonitor`] backups are sound, no funds besides those used for
13480  * unilateral chain closure fees are at risk.
13481  *
13482  * [`ChannelMonitor`]: lightning::chain::channelmonitor::ChannelMonitor
13483  * [`Event`]: lightning::util::events::Event
13484  *BackgroundProcessor will immediately stop on drop. It should be stored until shutdown.
13485  */
13486 typedef struct MUST_USE_STRUCT LDKBackgroundProcessor {
13487    /**
13488     * A pointer to the opaque Rust object.
13489     * Nearly everywhere, inner must be non-null, however in places where
13490     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13491     */
13492    LDKnativeBackgroundProcessor *inner;
13493    /**
13494     * Indicates that this is the only struct which contains the same pointer.
13495     * Rust functions which take ownership of an object provided via an argument require
13496     * this to be true and invalidate the object pointed to by inner.
13497     */
13498    bool is_owned;
13499 } LDKBackgroundProcessor;
13500
13501
13502
13503 /**
13504  * The main Rapid Gossip Sync object.
13505  *
13506  * See [crate-level documentation] for usage.
13507  *
13508  * [crate-level documentation]: crate
13509  */
13510 typedef struct MUST_USE_STRUCT LDKRapidGossipSync {
13511    /**
13512     * A pointer to the opaque Rust object.
13513     * Nearly everywhere, inner must be non-null, however in places where
13514     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13515     */
13516    LDKnativeRapidGossipSync *inner;
13517    /**
13518     * Indicates that this is the only struct which contains the same pointer.
13519     * Rust functions which take ownership of an object provided via an argument require
13520     * this to be true and invalidate the object pointed to by inner.
13521     */
13522    bool is_owned;
13523 } LDKRapidGossipSync;
13524
13525 /**
13526  * Either [`P2PGossipSync`] or [`RapidGossipSync`].
13527  */
13528 typedef enum LDKGossipSync_Tag {
13529    /**
13530     * Gossip sync via the lightning peer-to-peer network as defined by BOLT 7.
13531     */
13532    LDKGossipSync_P2P,
13533    /**
13534     * Rapid gossip sync from a trusted server.
13535     */
13536    LDKGossipSync_Rapid,
13537    /**
13538     * No gossip sync.
13539     */
13540    LDKGossipSync_None,
13541    /**
13542     * Must be last for serialization purposes
13543     */
13544    LDKGossipSync_Sentinel,
13545 } LDKGossipSync_Tag;
13546
13547 typedef struct MUST_USE_STRUCT LDKGossipSync {
13548    LDKGossipSync_Tag tag;
13549    union {
13550       struct {
13551          /**
13552           * Note that this field is expected to be a reference.
13553           */
13554          struct LDKP2PGossipSync p2p;
13555       };
13556       struct {
13557          /**
13558           * Note that this field is expected to be a reference.
13559           */
13560          struct LDKRapidGossipSync rapid;
13561       };
13562    };
13563 } LDKGossipSync;
13564
13565
13566
13567 /**
13568  * Data of the `RawInvoice` that is encoded in the data part
13569  */
13570 typedef struct MUST_USE_STRUCT LDKRawDataPart {
13571    /**
13572     * A pointer to the opaque Rust object.
13573     * Nearly everywhere, inner must be non-null, however in places where
13574     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13575     */
13576    LDKnativeRawDataPart *inner;
13577    /**
13578     * Indicates that this is the only struct which contains the same pointer.
13579     * Rust functions which take ownership of an object provided via an argument require
13580     * this to be true and invalidate the object pointed to by inner.
13581     */
13582    bool is_owned;
13583 } LDKRawDataPart;
13584
13585
13586
13587 /**
13588  * SHA-256 hash
13589  */
13590 typedef struct MUST_USE_STRUCT LDKSha256 {
13591    /**
13592     * A pointer to the opaque Rust object.
13593     * Nearly everywhere, inner must be non-null, however in places where
13594     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13595     */
13596    LDKnativeSha256 *inner;
13597    /**
13598     * Indicates that this is the only struct which contains the same pointer.
13599     * Rust functions which take ownership of an object provided via an argument require
13600     * this to be true and invalidate the object pointed to by inner.
13601     */
13602    bool is_owned;
13603 } LDKSha256;
13604
13605
13606
13607 /**
13608  * Positive duration that defines when (relatively to the timestamp) in the future the invoice
13609  * expires
13610  */
13611 typedef struct MUST_USE_STRUCT LDKExpiryTime {
13612    /**
13613     * A pointer to the opaque Rust object.
13614     * Nearly everywhere, inner must be non-null, however in places where
13615     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13616     */
13617    LDKnativeExpiryTime *inner;
13618    /**
13619     * Indicates that this is the only struct which contains the same pointer.
13620     * Rust functions which take ownership of an object provided via an argument require
13621     * this to be true and invalidate the object pointed to by inner.
13622     */
13623    bool is_owned;
13624 } LDKExpiryTime;
13625
13626
13627
13628 /**
13629  * `min_final_cltv_expiry` to use for the last HTLC in the route
13630  */
13631 typedef struct MUST_USE_STRUCT LDKMinFinalCltvExpiry {
13632    /**
13633     * A pointer to the opaque Rust object.
13634     * Nearly everywhere, inner must be non-null, however in places where
13635     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13636     */
13637    LDKnativeMinFinalCltvExpiry *inner;
13638    /**
13639     * Indicates that this is the only struct which contains the same pointer.
13640     * Rust functions which take ownership of an object provided via an argument require
13641     * this to be true and invalidate the object pointed to by inner.
13642     */
13643    bool is_owned;
13644 } LDKMinFinalCltvExpiry;
13645
13646 /**
13647  * A 20-byte byte array.
13648  */
13649 typedef struct LDKTwentyBytes {
13650    /**
13651     * The twenty bytes
13652     */
13653    uint8_t data[20];
13654 } LDKTwentyBytes;
13655
13656 /**
13657  * Fallback address in case no LN payment is possible
13658  */
13659 typedef enum LDKFallback_Tag {
13660    LDKFallback_SegWitProgram,
13661    LDKFallback_PubKeyHash,
13662    LDKFallback_ScriptHash,
13663    /**
13664     * Must be last for serialization purposes
13665     */
13666    LDKFallback_Sentinel,
13667 } LDKFallback_Tag;
13668
13669 typedef struct LDKFallback_LDKSegWitProgram_Body {
13670    struct LDKu5 version;
13671    struct LDKCVec_u8Z program;
13672 } LDKFallback_LDKSegWitProgram_Body;
13673
13674 typedef struct MUST_USE_STRUCT LDKFallback {
13675    LDKFallback_Tag tag;
13676    union {
13677       LDKFallback_LDKSegWitProgram_Body seg_wit_program;
13678       struct {
13679          struct LDKTwentyBytes pub_key_hash;
13680       };
13681       struct {
13682          struct LDKTwentyBytes script_hash;
13683       };
13684    };
13685 } LDKFallback;
13686
13687 /**
13688  * A trait defining behavior of an [`Invoice`] payer.
13689  */
13690 typedef struct LDKPayer {
13691    /**
13692     * An opaque pointer which is passed to your function implementations as an argument.
13693     * This has no meaning in the LDK, and can be NULL or any other value.
13694     */
13695    void *this_arg;
13696    /**
13697     * Returns the payer's node id.
13698     */
13699    struct LDKPublicKey (*node_id)(const void *this_arg);
13700    /**
13701     * Returns the payer's channels.
13702     */
13703    struct LDKCVec_ChannelDetailsZ (*first_hops)(const void *this_arg);
13704    /**
13705     * Sends a payment over the Lightning Network using the given [`Route`].
13706     *
13707     * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
13708     */
13709    struct LDKCResult_PaymentIdPaymentSendFailureZ (*send_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_hash, struct LDKThirtyTwoBytes payment_secret);
13710    /**
13711     * Sends a spontaneous payment over the Lightning Network using the given [`Route`].
13712     */
13713    struct LDKCResult_PaymentIdPaymentSendFailureZ (*send_spontaneous_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_preimage);
13714    /**
13715     * Retries a failed payment path for the [`PaymentId`] using the given [`Route`].
13716     */
13717    struct LDKCResult_NonePaymentSendFailureZ (*retry_payment)(const void *this_arg, const struct LDKRoute *NONNULL_PTR route, struct LDKThirtyTwoBytes payment_id);
13718    /**
13719     * Signals that no further retries for the given payment will occur.
13720     */
13721    void (*abandon_payment)(const void *this_arg, struct LDKThirtyTwoBytes payment_id);
13722    /**
13723     * Frees any resources associated with this object given its this_arg pointer.
13724     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
13725     */
13726    void (*free)(void *this_arg);
13727 } LDKPayer;
13728
13729 /**
13730  * A trait defining behavior for routing an [`Invoice`] payment.
13731  */
13732 typedef struct LDKRouter {
13733    /**
13734     * An opaque pointer which is passed to your function implementations as an argument.
13735     * This has no meaning in the LDK, and can be NULL or any other value.
13736     */
13737    void *this_arg;
13738    /**
13739     * Finds a [`Route`] between `payer` and `payee` for a payment with the given values.
13740     *
13741     * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
13742     */
13743    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, struct LDKInFlightHtlcs inflight_htlcs);
13744    /**
13745     * Lets the router know that payment through a specific path has failed.
13746     */
13747    void (*notify_payment_path_failed)(const void *this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
13748    /**
13749     * Lets the router know that payment through a specific path was successful.
13750     */
13751    void (*notify_payment_path_successful)(const void *this_arg, struct LDKCVec_RouteHopZ path);
13752    /**
13753     * Lets the router know that a payment probe was successful.
13754     */
13755    void (*notify_payment_probe_successful)(const void *this_arg, struct LDKCVec_RouteHopZ path);
13756    /**
13757     * Lets the router know that a payment probe failed.
13758     */
13759    void (*notify_payment_probe_failed)(const void *this_arg, struct LDKCVec_RouteHopZ path, uint64_t short_channel_id);
13760    /**
13761     * Frees any resources associated with this object given its this_arg pointer.
13762     * Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed.
13763     */
13764    void (*free)(void *this_arg);
13765 } LDKRouter;
13766
13767
13768
13769 /**
13770  * A utility for paying [`Invoice`]s and sending spontaneous payments.
13771  *
13772  * See [module-level documentation] for details.
13773  *
13774  * [module-level documentation]: crate::payment
13775  */
13776 typedef struct MUST_USE_STRUCT LDKInvoicePayer {
13777    /**
13778     * A pointer to the opaque Rust object.
13779     * Nearly everywhere, inner must be non-null, however in places where
13780     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13781     */
13782    LDKnativeInvoicePayer *inner;
13783    /**
13784     * Indicates that this is the only struct which contains the same pointer.
13785     * Rust functions which take ownership of an object provided via an argument require
13786     * this to be true and invalidate the object pointed to by inner.
13787     */
13788    bool is_owned;
13789 } LDKInvoicePayer;
13790
13791 /**
13792  * Strategies available to retry payment path failures for an [`Invoice`].
13793  *
13794  */
13795 typedef enum LDKRetry_Tag {
13796    /**
13797     * Max number of attempts to retry payment.
13798     *
13799     * Note that this is the number of *path* failures, not full payment retries. For multi-path
13800     * payments, if this is less than the total number of paths, we will never even retry all of the
13801     * payment's paths.
13802     */
13803    LDKRetry_Attempts,
13804    /**
13805     * Time elapsed before abandoning retries for a payment.
13806     */
13807    LDKRetry_Timeout,
13808    /**
13809     * Must be last for serialization purposes
13810     */
13811    LDKRetry_Sentinel,
13812 } LDKRetry_Tag;
13813
13814 typedef struct MUST_USE_STRUCT LDKRetry {
13815    LDKRetry_Tag tag;
13816    union {
13817       struct {
13818          uintptr_t attempts;
13819       };
13820       struct {
13821          uint64_t timeout;
13822       };
13823    };
13824 } LDKRetry;
13825
13826
13827
13828 /**
13829  * A [`Router`] implemented using [`find_route`].
13830  */
13831 typedef struct MUST_USE_STRUCT LDKDefaultRouter {
13832    /**
13833     * A pointer to the opaque Rust object.
13834     * Nearly everywhere, inner must be non-null, however in places where
13835     * the Rust equivalent takes an Option, it may be set to null to indicate None.
13836     */
13837    LDKnativeDefaultRouter *inner;
13838    /**
13839     * Indicates that this is the only struct which contains the same pointer.
13840     * Rust functions which take ownership of an object provided via an argument require
13841     * this to be true and invalidate the object pointed to by inner.
13842     */
13843    bool is_owned;
13844 } LDKDefaultRouter;
13845
13846 extern const uintptr_t MAX_BUF_SIZE;
13847
13848 extern const uint64_t MIN_RELAY_FEE_SAT_PER_1000_WEIGHT;
13849
13850 extern const uint32_t FEERATE_FLOOR_SATS_PER_KW;
13851
13852 extern const uint64_t CLOSED_CHANNEL_UPDATE_ID;
13853
13854 extern const uint32_t ANTI_REORG_DELAY;
13855
13856 extern const uint16_t BREAKDOWN_TIMEOUT;
13857
13858 extern const uint16_t MIN_CLTV_EXPIRY_DELTA;
13859
13860 extern const uint32_t MIN_FINAL_CLTV_EXPIRY;
13861
13862 extern const uintptr_t REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH;
13863
13864 extern const uint64_t UNKNOWN_CHANNEL_CAPACITY_MSAT;
13865
13866 extern const uint32_t DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA;
13867
13868 extern const uint8_t DEFAULT_MAX_PATH_COUNT;
13869
13870 extern const uint64_t MAX_TIMESTAMP;
13871
13872 extern const uint64_t DEFAULT_EXPIRY_TIME;
13873
13874 extern const uint64_t DEFAULT_MIN_FINAL_CLTV_EXPIRY;
13875
13876 extern const uint8_t TAG_PAYMENT_HASH;
13877
13878 extern const uint8_t TAG_DESCRIPTION;
13879
13880 extern const uint8_t TAG_PAYEE_PUB_KEY;
13881
13882 extern const uint8_t TAG_DESCRIPTION_HASH;
13883
13884 extern const uint8_t TAG_EXPIRY_TIME;
13885
13886 extern const uint8_t TAG_MIN_FINAL_CLTV_EXPIRY;
13887
13888 extern const uint8_t TAG_FALLBACK;
13889
13890 extern const uint8_t TAG_PRIVATE_ROUTE;
13891
13892 extern const uint8_t TAG_PAYMENT_SECRET;
13893
13894 extern const uint8_t TAG_FEATURES;
13895
13896 struct LDKStr _ldk_get_compiled_version(void);
13897
13898 struct LDKStr _ldk_c_bindings_get_compiled_version(void);
13899
13900 /**
13901  * Convenience function for constructing a new BigEndianScalar
13902  */
13903 struct LDKBigEndianScalar BigEndianScalar_new(struct LDKThirtyTwoBytes big_endian_bytes);
13904
13905 /**
13906  * Creates a new Bech32Error which has the same data as `orig`
13907  */
13908 struct LDKBech32Error Bech32Error_clone(const struct LDKBech32Error *NONNULL_PTR orig);
13909
13910 /**
13911  * Releases any memory held by the given `Bech32Error` (which is currently none)
13912  */
13913 void Bech32Error_free(struct LDKBech32Error o);
13914
13915 /**
13916  * Frees the data buffer, if data_is_owned is set and datalen > 0.
13917  */
13918 void Transaction_free(struct LDKTransaction _res);
13919
13920 /**
13921  * Convenience function for constructing a new TxOut
13922  */
13923 struct LDKTxOut TxOut_new(struct LDKCVec_u8Z script_pubkey, uint64_t value);
13924
13925 /**
13926  * Frees the data pointed to by script_pubkey.
13927  */
13928 void TxOut_free(struct LDKTxOut _res);
13929
13930 /**
13931  * Creates a new TxOut which has the same data as `orig` but with a new script buffer.
13932  */
13933 struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
13934
13935 /**
13936  * Frees the data buffer, if chars_is_owned is set and len > 0.
13937  */
13938 void Str_free(struct LDKStr _res);
13939
13940 #if defined(LDK_DEBUG_BUILD)
13941 /**
13942  * This function exists for memory safety testing purposes. It should never be used in production
13943  * code
13944  */
13945 const void *__unmangle_inner_ptr(const void *ptr);
13946 #endif
13947
13948 /**
13949  * Frees the buffer pointed to by `data` if `datalen` is non-0.
13950  */
13951 void CVec_PublicKeyZ_free(struct LDKCVec_PublicKeyZ _res);
13952
13953 /**
13954  * Creates a new CResult_BlindedRouteNoneZ in the success state.
13955  */
13956 struct LDKCResult_BlindedRouteNoneZ CResult_BlindedRouteNoneZ_ok(struct LDKBlindedRoute o);
13957
13958 /**
13959  * Creates a new CResult_BlindedRouteNoneZ in the error state.
13960  */
13961 struct LDKCResult_BlindedRouteNoneZ CResult_BlindedRouteNoneZ_err(void);
13962
13963 /**
13964  * Checks if the given object is currently in the success state
13965  */
13966 bool CResult_BlindedRouteNoneZ_is_ok(const struct LDKCResult_BlindedRouteNoneZ *NONNULL_PTR o);
13967
13968 /**
13969  * Frees any resources used by the CResult_BlindedRouteNoneZ.
13970  */
13971 void CResult_BlindedRouteNoneZ_free(struct LDKCResult_BlindedRouteNoneZ _res);
13972
13973 /**
13974  * Creates a new CResult_BlindedRouteDecodeErrorZ in the success state.
13975  */
13976 struct LDKCResult_BlindedRouteDecodeErrorZ CResult_BlindedRouteDecodeErrorZ_ok(struct LDKBlindedRoute o);
13977
13978 /**
13979  * Creates a new CResult_BlindedRouteDecodeErrorZ in the error state.
13980  */
13981 struct LDKCResult_BlindedRouteDecodeErrorZ CResult_BlindedRouteDecodeErrorZ_err(struct LDKDecodeError e);
13982
13983 /**
13984  * Checks if the given object is currently in the success state
13985  */
13986 bool CResult_BlindedRouteDecodeErrorZ_is_ok(const struct LDKCResult_BlindedRouteDecodeErrorZ *NONNULL_PTR o);
13987
13988 /**
13989  * Frees any resources used by the CResult_BlindedRouteDecodeErrorZ.
13990  */
13991 void CResult_BlindedRouteDecodeErrorZ_free(struct LDKCResult_BlindedRouteDecodeErrorZ _res);
13992
13993 /**
13994  * Creates a new CResult_BlindedHopDecodeErrorZ in the success state.
13995  */
13996 struct LDKCResult_BlindedHopDecodeErrorZ CResult_BlindedHopDecodeErrorZ_ok(struct LDKBlindedHop o);
13997
13998 /**
13999  * Creates a new CResult_BlindedHopDecodeErrorZ in the error state.
14000  */
14001 struct LDKCResult_BlindedHopDecodeErrorZ CResult_BlindedHopDecodeErrorZ_err(struct LDKDecodeError e);
14002
14003 /**
14004  * Checks if the given object is currently in the success state
14005  */
14006 bool CResult_BlindedHopDecodeErrorZ_is_ok(const struct LDKCResult_BlindedHopDecodeErrorZ *NONNULL_PTR o);
14007
14008 /**
14009  * Frees any resources used by the CResult_BlindedHopDecodeErrorZ.
14010  */
14011 void CResult_BlindedHopDecodeErrorZ_free(struct LDKCResult_BlindedHopDecodeErrorZ _res);
14012
14013 /**
14014  * Creates a new CResult_NoneNoneZ in the success state.
14015  */
14016 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
14017
14018 /**
14019  * Creates a new CResult_NoneNoneZ in the error state.
14020  */
14021 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
14022
14023 /**
14024  * Checks if the given object is currently in the success state
14025  */
14026 bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
14027
14028 /**
14029  * Frees any resources used by the CResult_NoneNoneZ.
14030  */
14031 void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
14032
14033 /**
14034  * Creates a new CResult_NoneNoneZ which has the same data as `orig`
14035  * but with all dynamically-allocated buffers duplicated in new buffers.
14036  */
14037 struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
14038
14039 /**
14040  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ in the success state.
14041  */
14042 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_ok(struct LDKCounterpartyCommitmentSecrets o);
14043
14044 /**
14045  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ in the error state.
14046  */
14047 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_err(struct LDKDecodeError e);
14048
14049 /**
14050  * Checks if the given object is currently in the success state
14051  */
14052 bool CResult_CounterpartyCommitmentSecretsDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR o);
14053
14054 /**
14055  * Frees any resources used by the CResult_CounterpartyCommitmentSecretsDecodeErrorZ.
14056  */
14057 void CResult_CounterpartyCommitmentSecretsDecodeErrorZ_free(struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ _res);
14058
14059 /**
14060  * Creates a new CResult_CounterpartyCommitmentSecretsDecodeErrorZ which has the same data as `orig`
14061  * but with all dynamically-allocated buffers duplicated in new buffers.
14062  */
14063 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CResult_CounterpartyCommitmentSecretsDecodeErrorZ_clone(const struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ *NONNULL_PTR orig);
14064
14065 /**
14066  * Creates a new CResult_SecretKeyErrorZ in the success state.
14067  */
14068 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_ok(struct LDKSecretKey o);
14069
14070 /**
14071  * Creates a new CResult_SecretKeyErrorZ in the error state.
14072  */
14073 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
14074
14075 /**
14076  * Checks if the given object is currently in the success state
14077  */
14078 bool CResult_SecretKeyErrorZ_is_ok(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR o);
14079
14080 /**
14081  * Frees any resources used by the CResult_SecretKeyErrorZ.
14082  */
14083 void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
14084
14085 /**
14086  * Creates a new CResult_SecretKeyErrorZ which has the same data as `orig`
14087  * but with all dynamically-allocated buffers duplicated in new buffers.
14088  */
14089 struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_clone(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR orig);
14090
14091 /**
14092  * Creates a new CResult_PublicKeyErrorZ in the success state.
14093  */
14094 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
14095
14096 /**
14097  * Creates a new CResult_PublicKeyErrorZ in the error state.
14098  */
14099 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
14100
14101 /**
14102  * Checks if the given object is currently in the success state
14103  */
14104 bool CResult_PublicKeyErrorZ_is_ok(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR o);
14105
14106 /**
14107  * Frees any resources used by the CResult_PublicKeyErrorZ.
14108  */
14109 void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
14110
14111 /**
14112  * Creates a new CResult_PublicKeyErrorZ which has the same data as `orig`
14113  * but with all dynamically-allocated buffers duplicated in new buffers.
14114  */
14115 struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
14116
14117 /**
14118  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the success state.
14119  */
14120 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
14121
14122 /**
14123  * Creates a new CResult_TxCreationKeysDecodeErrorZ in the error state.
14124  */
14125 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
14126
14127 /**
14128  * Checks if the given object is currently in the success state
14129  */
14130 bool CResult_TxCreationKeysDecodeErrorZ_is_ok(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR o);
14131
14132 /**
14133  * Frees any resources used by the CResult_TxCreationKeysDecodeErrorZ.
14134  */
14135 void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
14136
14137 /**
14138  * Creates a new CResult_TxCreationKeysDecodeErrorZ which has the same data as `orig`
14139  * but with all dynamically-allocated buffers duplicated in new buffers.
14140  */
14141 struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
14142
14143 /**
14144  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the success state.
14145  */
14146 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
14147
14148 /**
14149  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ in the error state.
14150  */
14151 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
14152
14153 /**
14154  * Checks if the given object is currently in the success state
14155  */
14156 bool CResult_ChannelPublicKeysDecodeErrorZ_is_ok(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR o);
14157
14158 /**
14159  * Frees any resources used by the CResult_ChannelPublicKeysDecodeErrorZ.
14160  */
14161 void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
14162
14163 /**
14164  * Creates a new CResult_ChannelPublicKeysDecodeErrorZ which has the same data as `orig`
14165  * but with all dynamically-allocated buffers duplicated in new buffers.
14166  */
14167 struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
14168
14169 /**
14170  * Creates a new CResult_TxCreationKeysErrorZ in the success state.
14171  */
14172 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
14173
14174 /**
14175  * Creates a new CResult_TxCreationKeysErrorZ in the error state.
14176  */
14177 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
14178
14179 /**
14180  * Checks if the given object is currently in the success state
14181  */
14182 bool CResult_TxCreationKeysErrorZ_is_ok(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR o);
14183
14184 /**
14185  * Frees any resources used by the CResult_TxCreationKeysErrorZ.
14186  */
14187 void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
14188
14189 /**
14190  * Creates a new CResult_TxCreationKeysErrorZ which has the same data as `orig`
14191  * but with all dynamically-allocated buffers duplicated in new buffers.
14192  */
14193 struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
14194
14195 /**
14196  * Constructs a new COption_u32Z containing a u32
14197  */
14198 struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
14199
14200 /**
14201  * Constructs a new COption_u32Z containing nothing
14202  */
14203 struct LDKCOption_u32Z COption_u32Z_none(void);
14204
14205 /**
14206  * Frees any resources associated with the u32, if we are in the Some state
14207  */
14208 void COption_u32Z_free(struct LDKCOption_u32Z _res);
14209
14210 /**
14211  * Creates a new COption_u32Z which has the same data as `orig`
14212  * but with all dynamically-allocated buffers duplicated in new buffers.
14213  */
14214 struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
14215
14216 /**
14217  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the success state.
14218  */
14219 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
14220
14221 /**
14222  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ in the error state.
14223  */
14224 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
14225
14226 /**
14227  * Checks if the given object is currently in the success state
14228  */
14229 bool CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR o);
14230
14231 /**
14232  * Frees any resources used by the CResult_HTLCOutputInCommitmentDecodeErrorZ.
14233  */
14234 void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
14235
14236 /**
14237  * Creates a new CResult_HTLCOutputInCommitmentDecodeErrorZ which has the same data as `orig`
14238  * but with all dynamically-allocated buffers duplicated in new buffers.
14239  */
14240 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
14241
14242 /**
14243  * Constructs a new COption_NoneZ containing a
14244  */
14245 enum LDKCOption_NoneZ COption_NoneZ_some(void);
14246
14247 /**
14248  * Constructs a new COption_NoneZ containing nothing
14249  */
14250 enum LDKCOption_NoneZ COption_NoneZ_none(void);
14251
14252 /**
14253  * Frees any resources associated with the , if we are in the Some state
14254  */
14255 void COption_NoneZ_free(enum LDKCOption_NoneZ _res);
14256
14257 /**
14258  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the success state.
14259  */
14260 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
14261
14262 /**
14263  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ in the error state.
14264  */
14265 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
14266
14267 /**
14268  * Checks if the given object is currently in the success state
14269  */
14270 bool CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
14271
14272 /**
14273  * Frees any resources used by the CResult_CounterpartyChannelTransactionParametersDecodeErrorZ.
14274  */
14275 void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
14276
14277 /**
14278  * Creates a new CResult_CounterpartyChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
14279  * but with all dynamically-allocated buffers duplicated in new buffers.
14280  */
14281 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
14282
14283 /**
14284  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the success state.
14285  */
14286 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
14287
14288 /**
14289  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ in the error state.
14290  */
14291 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
14292
14293 /**
14294  * Checks if the given object is currently in the success state
14295  */
14296 bool CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
14297
14298 /**
14299  * Frees any resources used by the CResult_ChannelTransactionParametersDecodeErrorZ.
14300  */
14301 void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
14302
14303 /**
14304  * Creates a new CResult_ChannelTransactionParametersDecodeErrorZ which has the same data as `orig`
14305  * but with all dynamically-allocated buffers duplicated in new buffers.
14306  */
14307 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
14308
14309 /**
14310  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14311  */
14312 void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
14313
14314 /**
14315  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the success state.
14316  */
14317 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_ok(struct LDKHolderCommitmentTransaction o);
14318
14319 /**
14320  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ in the error state.
14321  */
14322 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
14323
14324 /**
14325  * Checks if the given object is currently in the success state
14326  */
14327 bool CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
14328
14329 /**
14330  * Frees any resources used by the CResult_HolderCommitmentTransactionDecodeErrorZ.
14331  */
14332 void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
14333
14334 /**
14335  * Creates a new CResult_HolderCommitmentTransactionDecodeErrorZ which has the same data as `orig`
14336  * but with all dynamically-allocated buffers duplicated in new buffers.
14337  */
14338 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
14339
14340 /**
14341  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the success state.
14342  */
14343 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
14344
14345 /**
14346  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ in the error state.
14347  */
14348 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
14349
14350 /**
14351  * Checks if the given object is currently in the success state
14352  */
14353 bool CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
14354
14355 /**
14356  * Frees any resources used by the CResult_BuiltCommitmentTransactionDecodeErrorZ.
14357  */
14358 void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
14359
14360 /**
14361  * Creates a new CResult_BuiltCommitmentTransactionDecodeErrorZ which has the same data as `orig`
14362  * but with all dynamically-allocated buffers duplicated in new buffers.
14363  */
14364 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
14365
14366 /**
14367  * Creates a new CResult_TrustedClosingTransactionNoneZ in the success state.
14368  */
14369 struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_ok(struct LDKTrustedClosingTransaction o);
14370
14371 /**
14372  * Creates a new CResult_TrustedClosingTransactionNoneZ in the error state.
14373  */
14374 struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_err(void);
14375
14376 /**
14377  * Checks if the given object is currently in the success state
14378  */
14379 bool CResult_TrustedClosingTransactionNoneZ_is_ok(const struct LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR o);
14380
14381 /**
14382  * Frees any resources used by the CResult_TrustedClosingTransactionNoneZ.
14383  */
14384 void CResult_TrustedClosingTransactionNoneZ_free(struct LDKCResult_TrustedClosingTransactionNoneZ _res);
14385
14386 /**
14387  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the success state.
14388  */
14389 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
14390
14391 /**
14392  * Creates a new CResult_CommitmentTransactionDecodeErrorZ in the error state.
14393  */
14394 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
14395
14396 /**
14397  * Checks if the given object is currently in the success state
14398  */
14399 bool CResult_CommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
14400
14401 /**
14402  * Frees any resources used by the CResult_CommitmentTransactionDecodeErrorZ.
14403  */
14404 void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
14405
14406 /**
14407  * Creates a new CResult_CommitmentTransactionDecodeErrorZ which has the same data as `orig`
14408  * but with all dynamically-allocated buffers duplicated in new buffers.
14409  */
14410 struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
14411
14412 /**
14413  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the success state.
14414  */
14415 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
14416
14417 /**
14418  * Creates a new CResult_TrustedCommitmentTransactionNoneZ in the error state.
14419  */
14420 struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
14421
14422 /**
14423  * Checks if the given object is currently in the success state
14424  */
14425 bool CResult_TrustedCommitmentTransactionNoneZ_is_ok(const struct LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR o);
14426
14427 /**
14428  * Frees any resources used by the CResult_TrustedCommitmentTransactionNoneZ.
14429  */
14430 void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
14431
14432 /**
14433  * Creates a new CResult_CVec_SignatureZNoneZ in the success state.
14434  */
14435 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
14436
14437 /**
14438  * Creates a new CResult_CVec_SignatureZNoneZ in the error state.
14439  */
14440 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
14441
14442 /**
14443  * Checks if the given object is currently in the success state
14444  */
14445 bool CResult_CVec_SignatureZNoneZ_is_ok(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR o);
14446
14447 /**
14448  * Frees any resources used by the CResult_CVec_SignatureZNoneZ.
14449  */
14450 void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
14451
14452 /**
14453  * Creates a new CResult_CVec_SignatureZNoneZ which has the same data as `orig`
14454  * but with all dynamically-allocated buffers duplicated in new buffers.
14455  */
14456 struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
14457
14458 /**
14459  * Creates a new CResult_ShutdownScriptDecodeErrorZ in the success state.
14460  */
14461 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_ok(struct LDKShutdownScript o);
14462
14463 /**
14464  * Creates a new CResult_ShutdownScriptDecodeErrorZ in the error state.
14465  */
14466 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_err(struct LDKDecodeError e);
14467
14468 /**
14469  * Checks if the given object is currently in the success state
14470  */
14471 bool CResult_ShutdownScriptDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR o);
14472
14473 /**
14474  * Frees any resources used by the CResult_ShutdownScriptDecodeErrorZ.
14475  */
14476 void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
14477
14478 /**
14479  * Creates a new CResult_ShutdownScriptDecodeErrorZ which has the same data as `orig`
14480  * but with all dynamically-allocated buffers duplicated in new buffers.
14481  */
14482 struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
14483
14484 /**
14485  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ in the success state.
14486  */
14487 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_ok(struct LDKShutdownScript o);
14488
14489 /**
14490  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ in the error state.
14491  */
14492 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_err(struct LDKInvalidShutdownScript e);
14493
14494 /**
14495  * Checks if the given object is currently in the success state
14496  */
14497 bool CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR o);
14498
14499 /**
14500  * Frees any resources used by the CResult_ShutdownScriptInvalidShutdownScriptZ.
14501  */
14502 void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
14503
14504 /**
14505  * Creates a new CResult_ShutdownScriptInvalidShutdownScriptZ which has the same data as `orig`
14506  * but with all dynamically-allocated buffers duplicated in new buffers.
14507  */
14508 struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
14509
14510 /**
14511  * Constructs a new COption_WriteableScoreZ containing a crate::lightning::routing::scoring::WriteableScore
14512  */
14513 struct LDKCOption_WriteableScoreZ COption_WriteableScoreZ_some(struct LDKWriteableScore o);
14514
14515 /**
14516  * Constructs a new COption_WriteableScoreZ containing nothing
14517  */
14518 struct LDKCOption_WriteableScoreZ COption_WriteableScoreZ_none(void);
14519
14520 /**
14521  * Frees any resources associated with the crate::lightning::routing::scoring::WriteableScore, if we are in the Some state
14522  */
14523 void COption_WriteableScoreZ_free(struct LDKCOption_WriteableScoreZ _res);
14524
14525 /**
14526  * Creates a new CResult_NoneErrorZ in the success state.
14527  */
14528 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
14529
14530 /**
14531  * Creates a new CResult_NoneErrorZ in the error state.
14532  */
14533 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
14534
14535 /**
14536  * Checks if the given object is currently in the success state
14537  */
14538 bool CResult_NoneErrorZ_is_ok(const struct LDKCResult_NoneErrorZ *NONNULL_PTR o);
14539
14540 /**
14541  * Frees any resources used by the CResult_NoneErrorZ.
14542  */
14543 void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
14544
14545 /**
14546  * Creates a new CResult_NoneErrorZ which has the same data as `orig`
14547  * but with all dynamically-allocated buffers duplicated in new buffers.
14548  */
14549 struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
14550
14551 /**
14552  * Creates a new CResult_RouteHopDecodeErrorZ in the success state.
14553  */
14554 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
14555
14556 /**
14557  * Creates a new CResult_RouteHopDecodeErrorZ in the error state.
14558  */
14559 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
14560
14561 /**
14562  * Checks if the given object is currently in the success state
14563  */
14564 bool CResult_RouteHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR o);
14565
14566 /**
14567  * Frees any resources used by the CResult_RouteHopDecodeErrorZ.
14568  */
14569 void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
14570
14571 /**
14572  * Creates a new CResult_RouteHopDecodeErrorZ which has the same data as `orig`
14573  * but with all dynamically-allocated buffers duplicated in new buffers.
14574  */
14575 struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
14576
14577 /**
14578  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14579  */
14580 void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
14581
14582 /**
14583  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14584  */
14585 void CVec_CVec_RouteHopZZ_free(struct LDKCVec_CVec_RouteHopZZ _res);
14586
14587 /**
14588  * Creates a new CResult_RouteDecodeErrorZ in the success state.
14589  */
14590 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_ok(struct LDKRoute o);
14591
14592 /**
14593  * Creates a new CResult_RouteDecodeErrorZ in the error state.
14594  */
14595 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
14596
14597 /**
14598  * Checks if the given object is currently in the success state
14599  */
14600 bool CResult_RouteDecodeErrorZ_is_ok(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR o);
14601
14602 /**
14603  * Frees any resources used by the CResult_RouteDecodeErrorZ.
14604  */
14605 void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
14606
14607 /**
14608  * Creates a new CResult_RouteDecodeErrorZ which has the same data as `orig`
14609  * but with all dynamically-allocated buffers duplicated in new buffers.
14610  */
14611 struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
14612
14613 /**
14614  * Creates a new CResult_RouteParametersDecodeErrorZ in the success state.
14615  */
14616 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_ok(struct LDKRouteParameters o);
14617
14618 /**
14619  * Creates a new CResult_RouteParametersDecodeErrorZ in the error state.
14620  */
14621 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_err(struct LDKDecodeError e);
14622
14623 /**
14624  * Checks if the given object is currently in the success state
14625  */
14626 bool CResult_RouteParametersDecodeErrorZ_is_ok(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR o);
14627
14628 /**
14629  * Frees any resources used by the CResult_RouteParametersDecodeErrorZ.
14630  */
14631 void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
14632
14633 /**
14634  * Creates a new CResult_RouteParametersDecodeErrorZ which has the same data as `orig`
14635  * but with all dynamically-allocated buffers duplicated in new buffers.
14636  */
14637 struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
14638
14639 /**
14640  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14641  */
14642 void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
14643
14644 /**
14645  * Constructs a new COption_u64Z containing a u64
14646  */
14647 struct LDKCOption_u64Z COption_u64Z_some(uint64_t o);
14648
14649 /**
14650  * Constructs a new COption_u64Z containing nothing
14651  */
14652 struct LDKCOption_u64Z COption_u64Z_none(void);
14653
14654 /**
14655  * Frees any resources associated with the u64, if we are in the Some state
14656  */
14657 void COption_u64Z_free(struct LDKCOption_u64Z _res);
14658
14659 /**
14660  * Creates a new COption_u64Z which has the same data as `orig`
14661  * but with all dynamically-allocated buffers duplicated in new buffers.
14662  */
14663 struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
14664
14665 /**
14666  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14667  */
14668 void CVec_u64Z_free(struct LDKCVec_u64Z _res);
14669
14670 /**
14671  * Creates a new CResult_PaymentParametersDecodeErrorZ in the success state.
14672  */
14673 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_ok(struct LDKPaymentParameters o);
14674
14675 /**
14676  * Creates a new CResult_PaymentParametersDecodeErrorZ in the error state.
14677  */
14678 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_err(struct LDKDecodeError e);
14679
14680 /**
14681  * Checks if the given object is currently in the success state
14682  */
14683 bool CResult_PaymentParametersDecodeErrorZ_is_ok(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR o);
14684
14685 /**
14686  * Frees any resources used by the CResult_PaymentParametersDecodeErrorZ.
14687  */
14688 void CResult_PaymentParametersDecodeErrorZ_free(struct LDKCResult_PaymentParametersDecodeErrorZ _res);
14689
14690 /**
14691  * Creates a new CResult_PaymentParametersDecodeErrorZ which has the same data as `orig`
14692  * but with all dynamically-allocated buffers duplicated in new buffers.
14693  */
14694 struct LDKCResult_PaymentParametersDecodeErrorZ CResult_PaymentParametersDecodeErrorZ_clone(const struct LDKCResult_PaymentParametersDecodeErrorZ *NONNULL_PTR orig);
14695
14696 /**
14697  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14698  */
14699 void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
14700
14701 /**
14702  * Creates a new CResult_RouteHintDecodeErrorZ in the success state.
14703  */
14704 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_ok(struct LDKRouteHint o);
14705
14706 /**
14707  * Creates a new CResult_RouteHintDecodeErrorZ in the error state.
14708  */
14709 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_err(struct LDKDecodeError e);
14710
14711 /**
14712  * Checks if the given object is currently in the success state
14713  */
14714 bool CResult_RouteHintDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR o);
14715
14716 /**
14717  * Frees any resources used by the CResult_RouteHintDecodeErrorZ.
14718  */
14719 void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
14720
14721 /**
14722  * Creates a new CResult_RouteHintDecodeErrorZ which has the same data as `orig`
14723  * but with all dynamically-allocated buffers duplicated in new buffers.
14724  */
14725 struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
14726
14727 /**
14728  * Creates a new CResult_RouteHintHopDecodeErrorZ in the success state.
14729  */
14730 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_ok(struct LDKRouteHintHop o);
14731
14732 /**
14733  * Creates a new CResult_RouteHintHopDecodeErrorZ in the error state.
14734  */
14735 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_err(struct LDKDecodeError e);
14736
14737 /**
14738  * Checks if the given object is currently in the success state
14739  */
14740 bool CResult_RouteHintHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR o);
14741
14742 /**
14743  * Frees any resources used by the CResult_RouteHintHopDecodeErrorZ.
14744  */
14745 void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
14746
14747 /**
14748  * Creates a new CResult_RouteHintHopDecodeErrorZ which has the same data as `orig`
14749  * but with all dynamically-allocated buffers duplicated in new buffers.
14750  */
14751 struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
14752
14753 /**
14754  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14755  */
14756 void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
14757
14758 /**
14759  * Creates a new CResult_RouteLightningErrorZ in the success state.
14760  */
14761 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_ok(struct LDKRoute o);
14762
14763 /**
14764  * Creates a new CResult_RouteLightningErrorZ in the error state.
14765  */
14766 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
14767
14768 /**
14769  * Checks if the given object is currently in the success state
14770  */
14771 bool CResult_RouteLightningErrorZ_is_ok(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR o);
14772
14773 /**
14774  * Frees any resources used by the CResult_RouteLightningErrorZ.
14775  */
14776 void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
14777
14778 /**
14779  * Creates a new CResult_RouteLightningErrorZ which has the same data as `orig`
14780  * but with all dynamically-allocated buffers duplicated in new buffers.
14781  */
14782 struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
14783
14784 /**
14785  * Creates a new CResult_PaymentPurposeDecodeErrorZ in the success state.
14786  */
14787 struct LDKCResult_PaymentPurposeDecodeErrorZ CResult_PaymentPurposeDecodeErrorZ_ok(struct LDKPaymentPurpose o);
14788
14789 /**
14790  * Creates a new CResult_PaymentPurposeDecodeErrorZ in the error state.
14791  */
14792 struct LDKCResult_PaymentPurposeDecodeErrorZ CResult_PaymentPurposeDecodeErrorZ_err(struct LDKDecodeError e);
14793
14794 /**
14795  * Checks if the given object is currently in the success state
14796  */
14797 bool CResult_PaymentPurposeDecodeErrorZ_is_ok(const struct LDKCResult_PaymentPurposeDecodeErrorZ *NONNULL_PTR o);
14798
14799 /**
14800  * Frees any resources used by the CResult_PaymentPurposeDecodeErrorZ.
14801  */
14802 void CResult_PaymentPurposeDecodeErrorZ_free(struct LDKCResult_PaymentPurposeDecodeErrorZ _res);
14803
14804 /**
14805  * Creates a new CResult_PaymentPurposeDecodeErrorZ which has the same data as `orig`
14806  * but with all dynamically-allocated buffers duplicated in new buffers.
14807  */
14808 struct LDKCResult_PaymentPurposeDecodeErrorZ CResult_PaymentPurposeDecodeErrorZ_clone(const struct LDKCResult_PaymentPurposeDecodeErrorZ *NONNULL_PTR orig);
14809
14810 /**
14811  * Constructs a new COption_ClosureReasonZ containing a crate::lightning::util::events::ClosureReason
14812  */
14813 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_some(struct LDKClosureReason o);
14814
14815 /**
14816  * Constructs a new COption_ClosureReasonZ containing nothing
14817  */
14818 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_none(void);
14819
14820 /**
14821  * Frees any resources associated with the crate::lightning::util::events::ClosureReason, if we are in the Some state
14822  */
14823 void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
14824
14825 /**
14826  * Creates a new COption_ClosureReasonZ which has the same data as `orig`
14827  * but with all dynamically-allocated buffers duplicated in new buffers.
14828  */
14829 struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
14830
14831 /**
14832  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ in the success state.
14833  */
14834 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_ok(struct LDKCOption_ClosureReasonZ o);
14835
14836 /**
14837  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ in the error state.
14838  */
14839 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_err(struct LDKDecodeError e);
14840
14841 /**
14842  * Checks if the given object is currently in the success state
14843  */
14844 bool CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR o);
14845
14846 /**
14847  * Frees any resources used by the CResult_COption_ClosureReasonZDecodeErrorZ.
14848  */
14849 void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
14850
14851 /**
14852  * Creates a new CResult_COption_ClosureReasonZDecodeErrorZ which has the same data as `orig`
14853  * but with all dynamically-allocated buffers duplicated in new buffers.
14854  */
14855 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
14856
14857 /**
14858  * Constructs a new COption_HTLCDestinationZ containing a crate::lightning::util::events::HTLCDestination
14859  */
14860 struct LDKCOption_HTLCDestinationZ COption_HTLCDestinationZ_some(struct LDKHTLCDestination o);
14861
14862 /**
14863  * Constructs a new COption_HTLCDestinationZ containing nothing
14864  */
14865 struct LDKCOption_HTLCDestinationZ COption_HTLCDestinationZ_none(void);
14866
14867 /**
14868  * Frees any resources associated with the crate::lightning::util::events::HTLCDestination, if we are in the Some state
14869  */
14870 void COption_HTLCDestinationZ_free(struct LDKCOption_HTLCDestinationZ _res);
14871
14872 /**
14873  * Creates a new COption_HTLCDestinationZ which has the same data as `orig`
14874  * but with all dynamically-allocated buffers duplicated in new buffers.
14875  */
14876 struct LDKCOption_HTLCDestinationZ COption_HTLCDestinationZ_clone(const struct LDKCOption_HTLCDestinationZ *NONNULL_PTR orig);
14877
14878 /**
14879  * Creates a new CResult_COption_HTLCDestinationZDecodeErrorZ in the success state.
14880  */
14881 struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ CResult_COption_HTLCDestinationZDecodeErrorZ_ok(struct LDKCOption_HTLCDestinationZ o);
14882
14883 /**
14884  * Creates a new CResult_COption_HTLCDestinationZDecodeErrorZ in the error state.
14885  */
14886 struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ CResult_COption_HTLCDestinationZDecodeErrorZ_err(struct LDKDecodeError e);
14887
14888 /**
14889  * Checks if the given object is currently in the success state
14890  */
14891 bool CResult_COption_HTLCDestinationZDecodeErrorZ_is_ok(const struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ *NONNULL_PTR o);
14892
14893 /**
14894  * Frees any resources used by the CResult_COption_HTLCDestinationZDecodeErrorZ.
14895  */
14896 void CResult_COption_HTLCDestinationZDecodeErrorZ_free(struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ _res);
14897
14898 /**
14899  * Creates a new CResult_COption_HTLCDestinationZDecodeErrorZ which has the same data as `orig`
14900  * but with all dynamically-allocated buffers duplicated in new buffers.
14901  */
14902 struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ CResult_COption_HTLCDestinationZDecodeErrorZ_clone(const struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ *NONNULL_PTR orig);
14903
14904 /**
14905  * Constructs a new COption_NetworkUpdateZ containing a crate::lightning::routing::gossip::NetworkUpdate
14906  */
14907 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_some(struct LDKNetworkUpdate o);
14908
14909 /**
14910  * Constructs a new COption_NetworkUpdateZ containing nothing
14911  */
14912 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_none(void);
14913
14914 /**
14915  * Frees any resources associated with the crate::lightning::routing::gossip::NetworkUpdate, if we are in the Some state
14916  */
14917 void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
14918
14919 /**
14920  * Creates a new COption_NetworkUpdateZ which has the same data as `orig`
14921  * but with all dynamically-allocated buffers duplicated in new buffers.
14922  */
14923 struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
14924
14925 /**
14926  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14927  */
14928 void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
14929
14930 /**
14931  * Constructs a new COption_EventZ containing a crate::lightning::util::events::Event
14932  */
14933 struct LDKCOption_EventZ COption_EventZ_some(struct LDKEvent o);
14934
14935 /**
14936  * Constructs a new COption_EventZ containing nothing
14937  */
14938 struct LDKCOption_EventZ COption_EventZ_none(void);
14939
14940 /**
14941  * Frees any resources associated with the crate::lightning::util::events::Event, if we are in the Some state
14942  */
14943 void COption_EventZ_free(struct LDKCOption_EventZ _res);
14944
14945 /**
14946  * Creates a new COption_EventZ which has the same data as `orig`
14947  * but with all dynamically-allocated buffers duplicated in new buffers.
14948  */
14949 struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
14950
14951 /**
14952  * Creates a new CResult_COption_EventZDecodeErrorZ in the success state.
14953  */
14954 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_ok(struct LDKCOption_EventZ o);
14955
14956 /**
14957  * Creates a new CResult_COption_EventZDecodeErrorZ in the error state.
14958  */
14959 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_err(struct LDKDecodeError e);
14960
14961 /**
14962  * Checks if the given object is currently in the success state
14963  */
14964 bool CResult_COption_EventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR o);
14965
14966 /**
14967  * Frees any resources used by the CResult_COption_EventZDecodeErrorZ.
14968  */
14969 void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
14970
14971 /**
14972  * Creates a new CResult_COption_EventZDecodeErrorZ which has the same data as `orig`
14973  * but with all dynamically-allocated buffers duplicated in new buffers.
14974  */
14975 struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
14976
14977 /**
14978  * Frees the buffer pointed to by `data` if `datalen` is non-0.
14979  */
14980 void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
14981
14982 /**
14983  * Creates a new CResult_TxOutAccessErrorZ in the success state.
14984  */
14985 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
14986
14987 /**
14988  * Creates a new CResult_TxOutAccessErrorZ in the error state.
14989  */
14990 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
14991
14992 /**
14993  * Checks if the given object is currently in the success state
14994  */
14995 bool CResult_TxOutAccessErrorZ_is_ok(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR o);
14996
14997 /**
14998  * Frees any resources used by the CResult_TxOutAccessErrorZ.
14999  */
15000 void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
15001
15002 /**
15003  * Creates a new CResult_TxOutAccessErrorZ which has the same data as `orig`
15004  * but with all dynamically-allocated buffers duplicated in new buffers.
15005  */
15006 struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
15007
15008 /**
15009  * Creates a new tuple which has the same data as `orig`
15010  * but with all dynamically-allocated buffers duplicated in new buffers.
15011  */
15012 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
15013
15014 /**
15015  * Creates a new C2Tuple_usizeTransactionZ from the contained elements.
15016  */
15017 struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
15018
15019 /**
15020  * Frees any resources used by the C2Tuple_usizeTransactionZ.
15021  */
15022 void C2Tuple_usizeTransactionZ_free(struct LDKC2Tuple_usizeTransactionZ _res);
15023
15024 /**
15025  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15026  */
15027 void CVec_C2Tuple_usizeTransactionZZ_free(struct LDKCVec_C2Tuple_usizeTransactionZZ _res);
15028
15029 /**
15030  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15031  */
15032 void CVec_TxidZ_free(struct LDKCVec_TxidZ _res);
15033
15034 /**
15035  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the success state.
15036  */
15037 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_ok(void);
15038
15039 /**
15040  * Creates a new CResult_NoneChannelMonitorUpdateErrZ in the error state.
15041  */
15042 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
15043
15044 /**
15045  * Checks if the given object is currently in the success state
15046  */
15047 bool CResult_NoneChannelMonitorUpdateErrZ_is_ok(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR o);
15048
15049 /**
15050  * Frees any resources used by the CResult_NoneChannelMonitorUpdateErrZ.
15051  */
15052 void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
15053
15054 /**
15055  * Creates a new CResult_NoneChannelMonitorUpdateErrZ which has the same data as `orig`
15056  * but with all dynamically-allocated buffers duplicated in new buffers.
15057  */
15058 struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
15059
15060 /**
15061  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15062  */
15063 void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
15064
15065 /**
15066  * Creates a new tuple which has the same data as `orig`
15067  * but with all dynamically-allocated buffers duplicated in new buffers.
15068  */
15069 struct LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_clone(const struct LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ *NONNULL_PTR orig);
15070
15071 /**
15072  * Creates a new C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ from the contained elements.
15073  */
15074 struct LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_new(struct LDKOutPoint a, struct LDKCVec_MonitorEventZ b, struct LDKPublicKey c);
15075
15076 /**
15077  * Frees any resources used by the C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ.
15078  */
15079 void C3Tuple_OutPointCVec_MonitorEventZPublicKeyZ_free(struct LDKC3Tuple_OutPointCVec_MonitorEventZPublicKeyZ _res);
15080
15081 /**
15082  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15083  */
15084 void CVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ_free(struct LDKCVec_C3Tuple_OutPointCVec_MonitorEventZPublicKeyZZ _res);
15085
15086 /**
15087  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ in the success state.
15088  */
15089 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_ok(struct LDKFixedPenaltyScorer o);
15090
15091 /**
15092  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ in the error state.
15093  */
15094 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_err(struct LDKDecodeError e);
15095
15096 /**
15097  * Checks if the given object is currently in the success state
15098  */
15099 bool CResult_FixedPenaltyScorerDecodeErrorZ_is_ok(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR o);
15100
15101 /**
15102  * Frees any resources used by the CResult_FixedPenaltyScorerDecodeErrorZ.
15103  */
15104 void CResult_FixedPenaltyScorerDecodeErrorZ_free(struct LDKCResult_FixedPenaltyScorerDecodeErrorZ _res);
15105
15106 /**
15107  * Creates a new CResult_FixedPenaltyScorerDecodeErrorZ which has the same data as `orig`
15108  * but with all dynamically-allocated buffers duplicated in new buffers.
15109  */
15110 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ CResult_FixedPenaltyScorerDecodeErrorZ_clone(const struct LDKCResult_FixedPenaltyScorerDecodeErrorZ *NONNULL_PTR orig);
15111
15112 /**
15113  * Creates a new tuple which has the same data as `orig`
15114  * but with all dynamically-allocated buffers duplicated in new buffers.
15115  */
15116 struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_clone(const struct LDKC2Tuple_u64u64Z *NONNULL_PTR orig);
15117
15118 /**
15119  * Creates a new C2Tuple_u64u64Z from the contained elements.
15120  */
15121 struct LDKC2Tuple_u64u64Z C2Tuple_u64u64Z_new(uint64_t a, uint64_t b);
15122
15123 /**
15124  * Frees any resources used by the C2Tuple_u64u64Z.
15125  */
15126 void C2Tuple_u64u64Z_free(struct LDKC2Tuple_u64u64Z _res);
15127
15128 /**
15129  * Constructs a new COption_C2Tuple_u64u64ZZ containing a crate::c_types::derived::C2Tuple_u64u64Z
15130  */
15131 struct LDKCOption_C2Tuple_u64u64ZZ COption_C2Tuple_u64u64ZZ_some(struct LDKC2Tuple_u64u64Z o);
15132
15133 /**
15134  * Constructs a new COption_C2Tuple_u64u64ZZ containing nothing
15135  */
15136 struct LDKCOption_C2Tuple_u64u64ZZ COption_C2Tuple_u64u64ZZ_none(void);
15137
15138 /**
15139  * Frees any resources associated with the crate::c_types::derived::C2Tuple_u64u64Z, if we are in the Some state
15140  */
15141 void COption_C2Tuple_u64u64ZZ_free(struct LDKCOption_C2Tuple_u64u64ZZ _res);
15142
15143 /**
15144  * Creates a new COption_C2Tuple_u64u64ZZ which has the same data as `orig`
15145  * but with all dynamically-allocated buffers duplicated in new buffers.
15146  */
15147 struct LDKCOption_C2Tuple_u64u64ZZ COption_C2Tuple_u64u64ZZ_clone(const struct LDKCOption_C2Tuple_u64u64ZZ *NONNULL_PTR orig);
15148
15149 /**
15150  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15151  */
15152 void CVec_NodeIdZ_free(struct LDKCVec_NodeIdZ _res);
15153
15154 /**
15155  * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the success state.
15156  */
15157 struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_ok(struct LDKProbabilisticScorer o);
15158
15159 /**
15160  * Creates a new CResult_ProbabilisticScorerDecodeErrorZ in the error state.
15161  */
15162 struct LDKCResult_ProbabilisticScorerDecodeErrorZ CResult_ProbabilisticScorerDecodeErrorZ_err(struct LDKDecodeError e);
15163
15164 /**
15165  * Checks if the given object is currently in the success state
15166  */
15167 bool CResult_ProbabilisticScorerDecodeErrorZ_is_ok(const struct LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR o);
15168
15169 /**
15170  * Frees any resources used by the CResult_ProbabilisticScorerDecodeErrorZ.
15171  */
15172 void CResult_ProbabilisticScorerDecodeErrorZ_free(struct LDKCResult_ProbabilisticScorerDecodeErrorZ _res);
15173
15174 /**
15175  * Creates a new CResult_InitFeaturesDecodeErrorZ in the success state.
15176  */
15177 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
15178
15179 /**
15180  * Creates a new CResult_InitFeaturesDecodeErrorZ in the error state.
15181  */
15182 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
15183
15184 /**
15185  * Checks if the given object is currently in the success state
15186  */
15187 bool CResult_InitFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR o);
15188
15189 /**
15190  * Frees any resources used by the CResult_InitFeaturesDecodeErrorZ.
15191  */
15192 void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
15193
15194 /**
15195  * Creates a new CResult_InitFeaturesDecodeErrorZ which has the same data as `orig`
15196  * but with all dynamically-allocated buffers duplicated in new buffers.
15197  */
15198 struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_clone(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR orig);
15199
15200 /**
15201  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the success state.
15202  */
15203 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
15204
15205 /**
15206  * Creates a new CResult_ChannelFeaturesDecodeErrorZ in the error state.
15207  */
15208 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
15209
15210 /**
15211  * Checks if the given object is currently in the success state
15212  */
15213 bool CResult_ChannelFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR o);
15214
15215 /**
15216  * Frees any resources used by the CResult_ChannelFeaturesDecodeErrorZ.
15217  */
15218 void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
15219
15220 /**
15221  * Creates a new CResult_ChannelFeaturesDecodeErrorZ which has the same data as `orig`
15222  * but with all dynamically-allocated buffers duplicated in new buffers.
15223  */
15224 struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_clone(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR orig);
15225
15226 /**
15227  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the success state.
15228  */
15229 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
15230
15231 /**
15232  * Creates a new CResult_NodeFeaturesDecodeErrorZ in the error state.
15233  */
15234 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
15235
15236 /**
15237  * Checks if the given object is currently in the success state
15238  */
15239 bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
15240
15241 /**
15242  * Frees any resources used by the CResult_NodeFeaturesDecodeErrorZ.
15243  */
15244 void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
15245
15246 /**
15247  * Creates a new CResult_NodeFeaturesDecodeErrorZ which has the same data as `orig`
15248  * but with all dynamically-allocated buffers duplicated in new buffers.
15249  */
15250 struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_clone(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR orig);
15251
15252 /**
15253  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the success state.
15254  */
15255 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
15256
15257 /**
15258  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ in the error state.
15259  */
15260 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
15261
15262 /**
15263  * Checks if the given object is currently in the success state
15264  */
15265 bool CResult_InvoiceFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR o);
15266
15267 /**
15268  * Frees any resources used by the CResult_InvoiceFeaturesDecodeErrorZ.
15269  */
15270 void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
15271
15272 /**
15273  * Creates a new CResult_InvoiceFeaturesDecodeErrorZ which has the same data as `orig`
15274  * but with all dynamically-allocated buffers duplicated in new buffers.
15275  */
15276 struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_clone(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR orig);
15277
15278 /**
15279  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ in the success state.
15280  */
15281 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_ok(struct LDKChannelTypeFeatures o);
15282
15283 /**
15284  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ in the error state.
15285  */
15286 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
15287
15288 /**
15289  * Checks if the given object is currently in the success state
15290  */
15291 bool CResult_ChannelTypeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR o);
15292
15293 /**
15294  * Frees any resources used by the CResult_ChannelTypeFeaturesDecodeErrorZ.
15295  */
15296 void CResult_ChannelTypeFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ _res);
15297
15298 /**
15299  * Creates a new CResult_ChannelTypeFeaturesDecodeErrorZ which has the same data as `orig`
15300  * but with all dynamically-allocated buffers duplicated in new buffers.
15301  */
15302 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ CResult_ChannelTypeFeaturesDecodeErrorZ_clone(const struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ *NONNULL_PTR orig);
15303
15304 /**
15305  * Creates a new CResult_NodeIdDecodeErrorZ in the success state.
15306  */
15307 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_ok(struct LDKNodeId o);
15308
15309 /**
15310  * Creates a new CResult_NodeIdDecodeErrorZ in the error state.
15311  */
15312 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_err(struct LDKDecodeError e);
15313
15314 /**
15315  * Checks if the given object is currently in the success state
15316  */
15317 bool CResult_NodeIdDecodeErrorZ_is_ok(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR o);
15318
15319 /**
15320  * Frees any resources used by the CResult_NodeIdDecodeErrorZ.
15321  */
15322 void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
15323
15324 /**
15325  * Creates a new CResult_NodeIdDecodeErrorZ which has the same data as `orig`
15326  * but with all dynamically-allocated buffers duplicated in new buffers.
15327  */
15328 struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
15329
15330 /**
15331  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ in the success state.
15332  */
15333 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_ok(struct LDKCOption_NetworkUpdateZ o);
15334
15335 /**
15336  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ in the error state.
15337  */
15338 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_err(struct LDKDecodeError e);
15339
15340 /**
15341  * Checks if the given object is currently in the success state
15342  */
15343 bool CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR o);
15344
15345 /**
15346  * Frees any resources used by the CResult_COption_NetworkUpdateZDecodeErrorZ.
15347  */
15348 void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
15349
15350 /**
15351  * Creates a new CResult_COption_NetworkUpdateZDecodeErrorZ which has the same data as `orig`
15352  * but with all dynamically-allocated buffers duplicated in new buffers.
15353  */
15354 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
15355
15356 /**
15357  * Constructs a new COption_AccessZ containing a crate::lightning::chain::Access
15358  */
15359 struct LDKCOption_AccessZ COption_AccessZ_some(struct LDKAccess o);
15360
15361 /**
15362  * Constructs a new COption_AccessZ containing nothing
15363  */
15364 struct LDKCOption_AccessZ COption_AccessZ_none(void);
15365
15366 /**
15367  * Frees any resources associated with the crate::lightning::chain::Access, if we are in the Some state
15368  */
15369 void COption_AccessZ_free(struct LDKCOption_AccessZ _res);
15370
15371 /**
15372  * Creates a new CResult_boolLightningErrorZ in the success state.
15373  */
15374 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_ok(bool o);
15375
15376 /**
15377  * Creates a new CResult_boolLightningErrorZ in the error state.
15378  */
15379 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
15380
15381 /**
15382  * Checks if the given object is currently in the success state
15383  */
15384 bool CResult_boolLightningErrorZ_is_ok(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR o);
15385
15386 /**
15387  * Frees any resources used by the CResult_boolLightningErrorZ.
15388  */
15389 void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
15390
15391 /**
15392  * Creates a new CResult_boolLightningErrorZ which has the same data as `orig`
15393  * but with all dynamically-allocated buffers duplicated in new buffers.
15394  */
15395 struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
15396
15397 /**
15398  * Creates a new tuple which has the same data as `orig`
15399  * but with all dynamically-allocated buffers duplicated in new buffers.
15400  */
15401 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
15402
15403 /**
15404  * Creates a new C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ from the contained elements.
15405  */
15406 struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
15407
15408 /**
15409  * Frees any resources used by the C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ.
15410  */
15411 void C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_free(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ _res);
15412
15413 /**
15414  * Constructs a new COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ containing a crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ
15415  */
15416 struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_some(struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ o);
15417
15418 /**
15419  * Constructs a new COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ containing nothing
15420  */
15421 struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_none(void);
15422
15423 /**
15424  * Frees any resources associated with the crate::c_types::derived::C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ, if we are in the Some state
15425  */
15426 void COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_free(struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ _res);
15427
15428 /**
15429  * Creates a new COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ which has the same data as `orig`
15430  * but with all dynamically-allocated buffers duplicated in new buffers.
15431  */
15432 struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ COption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_clone(const struct LDKCOption_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ *NONNULL_PTR orig);
15433
15434 /**
15435  * Creates a new CResult_NoneLightningErrorZ in the success state.
15436  */
15437 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
15438
15439 /**
15440  * Creates a new CResult_NoneLightningErrorZ in the error state.
15441  */
15442 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
15443
15444 /**
15445  * Checks if the given object is currently in the success state
15446  */
15447 bool CResult_NoneLightningErrorZ_is_ok(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR o);
15448
15449 /**
15450  * Frees any resources used by the CResult_NoneLightningErrorZ.
15451  */
15452 void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
15453
15454 /**
15455  * Creates a new CResult_NoneLightningErrorZ which has the same data as `orig`
15456  * but with all dynamically-allocated buffers duplicated in new buffers.
15457  */
15458 struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
15459
15460 /**
15461  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ in the success state.
15462  */
15463 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_ok(struct LDKChannelUpdateInfo o);
15464
15465 /**
15466  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ in the error state.
15467  */
15468 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_err(struct LDKDecodeError e);
15469
15470 /**
15471  * Checks if the given object is currently in the success state
15472  */
15473 bool CResult_ChannelUpdateInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR o);
15474
15475 /**
15476  * Frees any resources used by the CResult_ChannelUpdateInfoDecodeErrorZ.
15477  */
15478 void CResult_ChannelUpdateInfoDecodeErrorZ_free(struct LDKCResult_ChannelUpdateInfoDecodeErrorZ _res);
15479
15480 /**
15481  * Creates a new CResult_ChannelUpdateInfoDecodeErrorZ which has the same data as `orig`
15482  * but with all dynamically-allocated buffers duplicated in new buffers.
15483  */
15484 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ CResult_ChannelUpdateInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateInfoDecodeErrorZ *NONNULL_PTR orig);
15485
15486 /**
15487  * Creates a new CResult_ChannelInfoDecodeErrorZ in the success state.
15488  */
15489 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
15490
15491 /**
15492  * Creates a new CResult_ChannelInfoDecodeErrorZ in the error state.
15493  */
15494 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
15495
15496 /**
15497  * Checks if the given object is currently in the success state
15498  */
15499 bool CResult_ChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR o);
15500
15501 /**
15502  * Frees any resources used by the CResult_ChannelInfoDecodeErrorZ.
15503  */
15504 void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
15505
15506 /**
15507  * Creates a new CResult_ChannelInfoDecodeErrorZ which has the same data as `orig`
15508  * but with all dynamically-allocated buffers duplicated in new buffers.
15509  */
15510 struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
15511
15512 /**
15513  * Creates a new CResult_RoutingFeesDecodeErrorZ in the success state.
15514  */
15515 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
15516
15517 /**
15518  * Creates a new CResult_RoutingFeesDecodeErrorZ in the error state.
15519  */
15520 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
15521
15522 /**
15523  * Checks if the given object is currently in the success state
15524  */
15525 bool CResult_RoutingFeesDecodeErrorZ_is_ok(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR o);
15526
15527 /**
15528  * Frees any resources used by the CResult_RoutingFeesDecodeErrorZ.
15529  */
15530 void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
15531
15532 /**
15533  * Creates a new CResult_RoutingFeesDecodeErrorZ which has the same data as `orig`
15534  * but with all dynamically-allocated buffers duplicated in new buffers.
15535  */
15536 struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
15537
15538 /**
15539  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15540  */
15541 void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
15542
15543 /**
15544  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the success state.
15545  */
15546 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
15547
15548 /**
15549  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ in the error state.
15550  */
15551 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
15552
15553 /**
15554  * Checks if the given object is currently in the success state
15555  */
15556 bool CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR o);
15557
15558 /**
15559  * Frees any resources used by the CResult_NodeAnnouncementInfoDecodeErrorZ.
15560  */
15561 void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
15562
15563 /**
15564  * Creates a new CResult_NodeAnnouncementInfoDecodeErrorZ which has the same data as `orig`
15565  * but with all dynamically-allocated buffers duplicated in new buffers.
15566  */
15567 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
15568
15569 /**
15570  * Creates a new CResult_NodeAliasDecodeErrorZ in the success state.
15571  */
15572 struct LDKCResult_NodeAliasDecodeErrorZ CResult_NodeAliasDecodeErrorZ_ok(struct LDKNodeAlias o);
15573
15574 /**
15575  * Creates a new CResult_NodeAliasDecodeErrorZ in the error state.
15576  */
15577 struct LDKCResult_NodeAliasDecodeErrorZ CResult_NodeAliasDecodeErrorZ_err(struct LDKDecodeError e);
15578
15579 /**
15580  * Checks if the given object is currently in the success state
15581  */
15582 bool CResult_NodeAliasDecodeErrorZ_is_ok(const struct LDKCResult_NodeAliasDecodeErrorZ *NONNULL_PTR o);
15583
15584 /**
15585  * Frees any resources used by the CResult_NodeAliasDecodeErrorZ.
15586  */
15587 void CResult_NodeAliasDecodeErrorZ_free(struct LDKCResult_NodeAliasDecodeErrorZ _res);
15588
15589 /**
15590  * Creates a new CResult_NodeAliasDecodeErrorZ which has the same data as `orig`
15591  * but with all dynamically-allocated buffers duplicated in new buffers.
15592  */
15593 struct LDKCResult_NodeAliasDecodeErrorZ CResult_NodeAliasDecodeErrorZ_clone(const struct LDKCResult_NodeAliasDecodeErrorZ *NONNULL_PTR orig);
15594
15595 /**
15596  * Creates a new CResult_NodeInfoDecodeErrorZ in the success state.
15597  */
15598 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_ok(struct LDKNodeInfo o);
15599
15600 /**
15601  * Creates a new CResult_NodeInfoDecodeErrorZ in the error state.
15602  */
15603 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
15604
15605 /**
15606  * Checks if the given object is currently in the success state
15607  */
15608 bool CResult_NodeInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR o);
15609
15610 /**
15611  * Frees any resources used by the CResult_NodeInfoDecodeErrorZ.
15612  */
15613 void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
15614
15615 /**
15616  * Creates a new CResult_NodeInfoDecodeErrorZ which has the same data as `orig`
15617  * but with all dynamically-allocated buffers duplicated in new buffers.
15618  */
15619 struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
15620
15621 /**
15622  * Creates a new CResult_NetworkGraphDecodeErrorZ in the success state.
15623  */
15624 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
15625
15626 /**
15627  * Creates a new CResult_NetworkGraphDecodeErrorZ in the error state.
15628  */
15629 struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
15630
15631 /**
15632  * Checks if the given object is currently in the success state
15633  */
15634 bool CResult_NetworkGraphDecodeErrorZ_is_ok(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR o);
15635
15636 /**
15637  * Frees any resources used by the CResult_NetworkGraphDecodeErrorZ.
15638  */
15639 void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
15640
15641 /**
15642  * Constructs a new COption_CVec_NetAddressZZ containing a crate::c_types::derived::CVec_NetAddressZ
15643  */
15644 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_some(struct LDKCVec_NetAddressZ o);
15645
15646 /**
15647  * Constructs a new COption_CVec_NetAddressZZ containing nothing
15648  */
15649 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_none(void);
15650
15651 /**
15652  * Frees any resources associated with the crate::c_types::derived::CVec_NetAddressZ, if we are in the Some state
15653  */
15654 void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
15655
15656 /**
15657  * Creates a new COption_CVec_NetAddressZZ which has the same data as `orig`
15658  * but with all dynamically-allocated buffers duplicated in new buffers.
15659  */
15660 struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
15661
15662 /**
15663  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the success state.
15664  */
15665 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
15666
15667 /**
15668  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ in the error state.
15669  */
15670 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
15671
15672 /**
15673  * Checks if the given object is currently in the success state
15674  */
15675 bool CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
15676
15677 /**
15678  * Frees any resources used by the CResult_DelayedPaymentOutputDescriptorDecodeErrorZ.
15679  */
15680 void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
15681
15682 /**
15683  * Creates a new CResult_DelayedPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
15684  * but with all dynamically-allocated buffers duplicated in new buffers.
15685  */
15686 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
15687
15688 /**
15689  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the success state.
15690  */
15691 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
15692
15693 /**
15694  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ in the error state.
15695  */
15696 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
15697
15698 /**
15699  * Checks if the given object is currently in the success state
15700  */
15701 bool CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
15702
15703 /**
15704  * Frees any resources used by the CResult_StaticPaymentOutputDescriptorDecodeErrorZ.
15705  */
15706 void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
15707
15708 /**
15709  * Creates a new CResult_StaticPaymentOutputDescriptorDecodeErrorZ which has the same data as `orig`
15710  * but with all dynamically-allocated buffers duplicated in new buffers.
15711  */
15712 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
15713
15714 /**
15715  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the success state.
15716  */
15717 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
15718
15719 /**
15720  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ in the error state.
15721  */
15722 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
15723
15724 /**
15725  * Checks if the given object is currently in the success state
15726  */
15727 bool CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
15728
15729 /**
15730  * Frees any resources used by the CResult_SpendableOutputDescriptorDecodeErrorZ.
15731  */
15732 void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
15733
15734 /**
15735  * Creates a new CResult_SpendableOutputDescriptorDecodeErrorZ which has the same data as `orig`
15736  * but with all dynamically-allocated buffers duplicated in new buffers.
15737  */
15738 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
15739
15740 /**
15741  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15742  */
15743 void CVec_PaymentPreimageZ_free(struct LDKCVec_PaymentPreimageZ _res);
15744
15745 /**
15746  * Creates a new tuple which has the same data as `orig`
15747  * but with all dynamically-allocated buffers duplicated in new buffers.
15748  */
15749 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
15750
15751 /**
15752  * Creates a new C2Tuple_SignatureCVec_SignatureZZ from the contained elements.
15753  */
15754 struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
15755
15756 /**
15757  * Frees any resources used by the C2Tuple_SignatureCVec_SignatureZZ.
15758  */
15759 void C2Tuple_SignatureCVec_SignatureZZ_free(struct LDKC2Tuple_SignatureCVec_SignatureZZ _res);
15760
15761 /**
15762  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the success state.
15763  */
15764 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(struct LDKC2Tuple_SignatureCVec_SignatureZZ o);
15765
15766 /**
15767  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ in the error state.
15768  */
15769 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
15770
15771 /**
15772  * Checks if the given object is currently in the success state
15773  */
15774 bool CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR o);
15775
15776 /**
15777  * Frees any resources used by the CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ.
15778  */
15779 void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
15780
15781 /**
15782  * Creates a new CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ which has the same data as `orig`
15783  * but with all dynamically-allocated buffers duplicated in new buffers.
15784  */
15785 struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
15786
15787 /**
15788  * Creates a new CResult_SignatureNoneZ in the success state.
15789  */
15790 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
15791
15792 /**
15793  * Creates a new CResult_SignatureNoneZ in the error state.
15794  */
15795 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
15796
15797 /**
15798  * Checks if the given object is currently in the success state
15799  */
15800 bool CResult_SignatureNoneZ_is_ok(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR o);
15801
15802 /**
15803  * Frees any resources used by the CResult_SignatureNoneZ.
15804  */
15805 void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
15806
15807 /**
15808  * Creates a new CResult_SignatureNoneZ which has the same data as `orig`
15809  * but with all dynamically-allocated buffers duplicated in new buffers.
15810  */
15811 struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
15812
15813 /**
15814  * Creates a new tuple which has the same data as `orig`
15815  * but with all dynamically-allocated buffers duplicated in new buffers.
15816  */
15817 struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_clone(const struct LDKC2Tuple_SignatureSignatureZ *NONNULL_PTR orig);
15818
15819 /**
15820  * Creates a new C2Tuple_SignatureSignatureZ from the contained elements.
15821  */
15822 struct LDKC2Tuple_SignatureSignatureZ C2Tuple_SignatureSignatureZ_new(struct LDKSignature a, struct LDKSignature b);
15823
15824 /**
15825  * Frees any resources used by the C2Tuple_SignatureSignatureZ.
15826  */
15827 void C2Tuple_SignatureSignatureZ_free(struct LDKC2Tuple_SignatureSignatureZ _res);
15828
15829 /**
15830  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ in the success state.
15831  */
15832 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_ok(struct LDKC2Tuple_SignatureSignatureZ o);
15833
15834 /**
15835  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ in the error state.
15836  */
15837 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_err(void);
15838
15839 /**
15840  * Checks if the given object is currently in the success state
15841  */
15842 bool CResult_C2Tuple_SignatureSignatureZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR o);
15843
15844 /**
15845  * Frees any resources used by the CResult_C2Tuple_SignatureSignatureZNoneZ.
15846  */
15847 void CResult_C2Tuple_SignatureSignatureZNoneZ_free(struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ _res);
15848
15849 /**
15850  * Creates a new CResult_C2Tuple_SignatureSignatureZNoneZ which has the same data as `orig`
15851  * but with all dynamically-allocated buffers duplicated in new buffers.
15852  */
15853 struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ CResult_C2Tuple_SignatureSignatureZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureSignatureZNoneZ *NONNULL_PTR orig);
15854
15855 /**
15856  * Creates a new CResult_SecretKeyNoneZ in the success state.
15857  */
15858 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_ok(struct LDKSecretKey o);
15859
15860 /**
15861  * Creates a new CResult_SecretKeyNoneZ in the error state.
15862  */
15863 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_err(void);
15864
15865 /**
15866  * Checks if the given object is currently in the success state
15867  */
15868 bool CResult_SecretKeyNoneZ_is_ok(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR o);
15869
15870 /**
15871  * Frees any resources used by the CResult_SecretKeyNoneZ.
15872  */
15873 void CResult_SecretKeyNoneZ_free(struct LDKCResult_SecretKeyNoneZ _res);
15874
15875 /**
15876  * Creates a new CResult_SecretKeyNoneZ which has the same data as `orig`
15877  * but with all dynamically-allocated buffers duplicated in new buffers.
15878  */
15879 struct LDKCResult_SecretKeyNoneZ CResult_SecretKeyNoneZ_clone(const struct LDKCResult_SecretKeyNoneZ *NONNULL_PTR orig);
15880
15881 /**
15882  * Constructs a new COption_ScalarZ containing a crate::c_types::BigEndianScalar
15883  */
15884 struct LDKCOption_ScalarZ COption_ScalarZ_some(struct LDKBigEndianScalar o);
15885
15886 /**
15887  * Constructs a new COption_ScalarZ containing nothing
15888  */
15889 struct LDKCOption_ScalarZ COption_ScalarZ_none(void);
15890
15891 /**
15892  * Frees any resources associated with the crate::c_types::BigEndianScalar, if we are in the Some state
15893  */
15894 void COption_ScalarZ_free(struct LDKCOption_ScalarZ _res);
15895
15896 /**
15897  * Creates a new CResult_SharedSecretNoneZ in the success state.
15898  */
15899 struct LDKCResult_SharedSecretNoneZ CResult_SharedSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
15900
15901 /**
15902  * Creates a new CResult_SharedSecretNoneZ in the error state.
15903  */
15904 struct LDKCResult_SharedSecretNoneZ CResult_SharedSecretNoneZ_err(void);
15905
15906 /**
15907  * Checks if the given object is currently in the success state
15908  */
15909 bool CResult_SharedSecretNoneZ_is_ok(const struct LDKCResult_SharedSecretNoneZ *NONNULL_PTR o);
15910
15911 /**
15912  * Frees any resources used by the CResult_SharedSecretNoneZ.
15913  */
15914 void CResult_SharedSecretNoneZ_free(struct LDKCResult_SharedSecretNoneZ _res);
15915
15916 /**
15917  * Creates a new CResult_SharedSecretNoneZ which has the same data as `orig`
15918  * but with all dynamically-allocated buffers duplicated in new buffers.
15919  */
15920 struct LDKCResult_SharedSecretNoneZ CResult_SharedSecretNoneZ_clone(const struct LDKCResult_SharedSecretNoneZ *NONNULL_PTR orig);
15921
15922 /**
15923  * Creates a new CResult_SignDecodeErrorZ in the success state.
15924  */
15925 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
15926
15927 /**
15928  * Creates a new CResult_SignDecodeErrorZ in the error state.
15929  */
15930 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
15931
15932 /**
15933  * Checks if the given object is currently in the success state
15934  */
15935 bool CResult_SignDecodeErrorZ_is_ok(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR o);
15936
15937 /**
15938  * Frees any resources used by the CResult_SignDecodeErrorZ.
15939  */
15940 void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
15941
15942 /**
15943  * Creates a new CResult_SignDecodeErrorZ which has the same data as `orig`
15944  * but with all dynamically-allocated buffers duplicated in new buffers.
15945  */
15946 struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
15947
15948 /**
15949  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15950  */
15951 void CVec_u5Z_free(struct LDKCVec_u5Z _res);
15952
15953 /**
15954  * Creates a new CResult_RecoverableSignatureNoneZ in the success state.
15955  */
15956 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_ok(struct LDKRecoverableSignature o);
15957
15958 /**
15959  * Creates a new CResult_RecoverableSignatureNoneZ in the error state.
15960  */
15961 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
15962
15963 /**
15964  * Checks if the given object is currently in the success state
15965  */
15966 bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
15967
15968 /**
15969  * Frees any resources used by the CResult_RecoverableSignatureNoneZ.
15970  */
15971 void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
15972
15973 /**
15974  * Creates a new CResult_RecoverableSignatureNoneZ which has the same data as `orig`
15975  * but with all dynamically-allocated buffers duplicated in new buffers.
15976  */
15977 struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
15978
15979 /**
15980  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15981  */
15982 void CVec_u8Z_free(struct LDKCVec_u8Z _res);
15983
15984 /**
15985  * Frees the buffer pointed to by `data` if `datalen` is non-0.
15986  */
15987 void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
15988
15989 /**
15990  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the success state.
15991  */
15992 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_ok(struct LDKCVec_CVec_u8ZZ o);
15993
15994 /**
15995  * Creates a new CResult_CVec_CVec_u8ZZNoneZ in the error state.
15996  */
15997 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
15998
15999 /**
16000  * Checks if the given object is currently in the success state
16001  */
16002 bool CResult_CVec_CVec_u8ZZNoneZ_is_ok(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR o);
16003
16004 /**
16005  * Frees any resources used by the CResult_CVec_CVec_u8ZZNoneZ.
16006  */
16007 void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
16008
16009 /**
16010  * Creates a new CResult_CVec_CVec_u8ZZNoneZ which has the same data as `orig`
16011  * but with all dynamically-allocated buffers duplicated in new buffers.
16012  */
16013 struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
16014
16015 /**
16016  * Creates a new CResult_InMemorySignerDecodeErrorZ in the success state.
16017  */
16018 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
16019
16020 /**
16021  * Creates a new CResult_InMemorySignerDecodeErrorZ in the error state.
16022  */
16023 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
16024
16025 /**
16026  * Checks if the given object is currently in the success state
16027  */
16028 bool CResult_InMemorySignerDecodeErrorZ_is_ok(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR o);
16029
16030 /**
16031  * Frees any resources used by the CResult_InMemorySignerDecodeErrorZ.
16032  */
16033 void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
16034
16035 /**
16036  * Creates a new CResult_InMemorySignerDecodeErrorZ which has the same data as `orig`
16037  * but with all dynamically-allocated buffers duplicated in new buffers.
16038  */
16039 struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
16040
16041 /**
16042  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16043  */
16044 void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
16045
16046 /**
16047  * Creates a new CResult_TransactionNoneZ in the success state.
16048  */
16049 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_ok(struct LDKTransaction o);
16050
16051 /**
16052  * Creates a new CResult_TransactionNoneZ in the error state.
16053  */
16054 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
16055
16056 /**
16057  * Checks if the given object is currently in the success state
16058  */
16059 bool CResult_TransactionNoneZ_is_ok(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR o);
16060
16061 /**
16062  * Frees any resources used by the CResult_TransactionNoneZ.
16063  */
16064 void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
16065
16066 /**
16067  * Creates a new CResult_TransactionNoneZ which has the same data as `orig`
16068  * but with all dynamically-allocated buffers duplicated in new buffers.
16069  */
16070 struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
16071
16072 /**
16073  * Creates a new C2Tuple_BlockHashChannelMonitorZ from the contained elements.
16074  */
16075 struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
16076
16077 /**
16078  * Frees any resources used by the C2Tuple_BlockHashChannelMonitorZ.
16079  */
16080 void C2Tuple_BlockHashChannelMonitorZ_free(struct LDKC2Tuple_BlockHashChannelMonitorZ _res);
16081
16082 /**
16083  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16084  */
16085 void CVec_C2Tuple_BlockHashChannelMonitorZZ_free(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ _res);
16086
16087 /**
16088  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the success state.
16089  */
16090 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(struct LDKCVec_C2Tuple_BlockHashChannelMonitorZZ o);
16091
16092 /**
16093  * Creates a new CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ in the error state.
16094  */
16095 struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
16096
16097 /**
16098  * Checks if the given object is currently in the success state
16099  */
16100 bool CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR o);
16101
16102 /**
16103  * Frees any resources used by the CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ.
16104  */
16105 void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
16106
16107 /**
16108  * Constructs a new COption_u16Z containing a u16
16109  */
16110 struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
16111
16112 /**
16113  * Constructs a new COption_u16Z containing nothing
16114  */
16115 struct LDKCOption_u16Z COption_u16Z_none(void);
16116
16117 /**
16118  * Frees any resources associated with the u16, if we are in the Some state
16119  */
16120 void COption_u16Z_free(struct LDKCOption_u16Z _res);
16121
16122 /**
16123  * Creates a new COption_u16Z which has the same data as `orig`
16124  * but with all dynamically-allocated buffers duplicated in new buffers.
16125  */
16126 struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
16127
16128 /**
16129  * Creates a new CResult_NoneAPIErrorZ in the success state.
16130  */
16131 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
16132
16133 /**
16134  * Creates a new CResult_NoneAPIErrorZ in the error state.
16135  */
16136 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
16137
16138 /**
16139  * Checks if the given object is currently in the success state
16140  */
16141 bool CResult_NoneAPIErrorZ_is_ok(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR o);
16142
16143 /**
16144  * Frees any resources used by the CResult_NoneAPIErrorZ.
16145  */
16146 void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
16147
16148 /**
16149  * Creates a new CResult_NoneAPIErrorZ which has the same data as `orig`
16150  * but with all dynamically-allocated buffers duplicated in new buffers.
16151  */
16152 struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
16153
16154 /**
16155  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16156  */
16157 void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
16158
16159 /**
16160  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16161  */
16162 void CVec_APIErrorZ_free(struct LDKCVec_APIErrorZ _res);
16163
16164 /**
16165  * Creates a new CResult__u832APIErrorZ in the success state.
16166  */
16167 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_ok(struct LDKThirtyTwoBytes o);
16168
16169 /**
16170  * Creates a new CResult__u832APIErrorZ in the error state.
16171  */
16172 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_err(struct LDKAPIError e);
16173
16174 /**
16175  * Checks if the given object is currently in the success state
16176  */
16177 bool CResult__u832APIErrorZ_is_ok(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR o);
16178
16179 /**
16180  * Frees any resources used by the CResult__u832APIErrorZ.
16181  */
16182 void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
16183
16184 /**
16185  * Creates a new CResult__u832APIErrorZ which has the same data as `orig`
16186  * but with all dynamically-allocated buffers duplicated in new buffers.
16187  */
16188 struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
16189
16190 /**
16191  * Creates a new CResult_PaymentIdPaymentSendFailureZ in the success state.
16192  */
16193 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
16194
16195 /**
16196  * Creates a new CResult_PaymentIdPaymentSendFailureZ in the error state.
16197  */
16198 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
16199
16200 /**
16201  * Checks if the given object is currently in the success state
16202  */
16203 bool CResult_PaymentIdPaymentSendFailureZ_is_ok(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR o);
16204
16205 /**
16206  * Frees any resources used by the CResult_PaymentIdPaymentSendFailureZ.
16207  */
16208 void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
16209
16210 /**
16211  * Creates a new CResult_PaymentIdPaymentSendFailureZ which has the same data as `orig`
16212  * but with all dynamically-allocated buffers duplicated in new buffers.
16213  */
16214 struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
16215
16216 /**
16217  * Creates a new CResult_NonePaymentSendFailureZ in the success state.
16218  */
16219 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
16220
16221 /**
16222  * Creates a new CResult_NonePaymentSendFailureZ in the error state.
16223  */
16224 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
16225
16226 /**
16227  * Checks if the given object is currently in the success state
16228  */
16229 bool CResult_NonePaymentSendFailureZ_is_ok(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR o);
16230
16231 /**
16232  * Frees any resources used by the CResult_NonePaymentSendFailureZ.
16233  */
16234 void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
16235
16236 /**
16237  * Creates a new CResult_NonePaymentSendFailureZ which has the same data as `orig`
16238  * but with all dynamically-allocated buffers duplicated in new buffers.
16239  */
16240 struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
16241
16242 /**
16243  * Creates a new tuple which has the same data as `orig`
16244  * but with all dynamically-allocated buffers duplicated in new buffers.
16245  */
16246 struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
16247
16248 /**
16249  * Creates a new C2Tuple_PaymentHashPaymentIdZ from the contained elements.
16250  */
16251 struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
16252
16253 /**
16254  * Frees any resources used by the C2Tuple_PaymentHashPaymentIdZ.
16255  */
16256 void C2Tuple_PaymentHashPaymentIdZ_free(struct LDKC2Tuple_PaymentHashPaymentIdZ _res);
16257
16258 /**
16259  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ in the success state.
16260  */
16261 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(struct LDKC2Tuple_PaymentHashPaymentIdZ o);
16262
16263 /**
16264  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ in the error state.
16265  */
16266 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
16267
16268 /**
16269  * Checks if the given object is currently in the success state
16270  */
16271 bool CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR o);
16272
16273 /**
16274  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ.
16275  */
16276 void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
16277
16278 /**
16279  * Creates a new CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ which has the same data as `orig`
16280  * but with all dynamically-allocated buffers duplicated in new buffers.
16281  */
16282 struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
16283
16284 /**
16285  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16286  */
16287 void CVec_ThirtyTwoBytesZ_free(struct LDKCVec_ThirtyTwoBytesZ _res);
16288
16289 /**
16290  * Creates a new tuple which has the same data as `orig`
16291  * but with all dynamically-allocated buffers duplicated in new buffers.
16292  */
16293 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
16294
16295 /**
16296  * Creates a new C2Tuple_PaymentHashPaymentSecretZ from the contained elements.
16297  */
16298 struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
16299
16300 /**
16301  * Frees any resources used by the C2Tuple_PaymentHashPaymentSecretZ.
16302  */
16303 void C2Tuple_PaymentHashPaymentSecretZ_free(struct LDKC2Tuple_PaymentHashPaymentSecretZ _res);
16304
16305 /**
16306  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ in the success state.
16307  */
16308 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
16309
16310 /**
16311  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ in the error state.
16312  */
16313 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_err(void);
16314
16315 /**
16316  * Checks if the given object is currently in the success state
16317  */
16318 bool CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR o);
16319
16320 /**
16321  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ.
16322  */
16323 void CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ _res);
16324
16325 /**
16326  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ which has the same data as `orig`
16327  * but with all dynamically-allocated buffers duplicated in new buffers.
16328  */
16329 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ CResult_C2Tuple_PaymentHashPaymentSecretZNoneZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ *NONNULL_PTR orig);
16330
16331 /**
16332  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ in the success state.
16333  */
16334 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_ok(struct LDKC2Tuple_PaymentHashPaymentSecretZ o);
16335
16336 /**
16337  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ in the error state.
16338  */
16339 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_err(struct LDKAPIError e);
16340
16341 /**
16342  * Checks if the given object is currently in the success state
16343  */
16344 bool CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR o);
16345
16346 /**
16347  * Frees any resources used by the CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ.
16348  */
16349 void CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ _res);
16350
16351 /**
16352  * Creates a new CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ which has the same data as `orig`
16353  * but with all dynamically-allocated buffers duplicated in new buffers.
16354  */
16355 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ CResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZAPIErrorZ *NONNULL_PTR orig);
16356
16357 /**
16358  * Creates a new CResult_PaymentSecretNoneZ in the success state.
16359  */
16360 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_ok(struct LDKThirtyTwoBytes o);
16361
16362 /**
16363  * Creates a new CResult_PaymentSecretNoneZ in the error state.
16364  */
16365 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_err(void);
16366
16367 /**
16368  * Checks if the given object is currently in the success state
16369  */
16370 bool CResult_PaymentSecretNoneZ_is_ok(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR o);
16371
16372 /**
16373  * Frees any resources used by the CResult_PaymentSecretNoneZ.
16374  */
16375 void CResult_PaymentSecretNoneZ_free(struct LDKCResult_PaymentSecretNoneZ _res);
16376
16377 /**
16378  * Creates a new CResult_PaymentSecretNoneZ which has the same data as `orig`
16379  * but with all dynamically-allocated buffers duplicated in new buffers.
16380  */
16381 struct LDKCResult_PaymentSecretNoneZ CResult_PaymentSecretNoneZ_clone(const struct LDKCResult_PaymentSecretNoneZ *NONNULL_PTR orig);
16382
16383 /**
16384  * Creates a new CResult_PaymentSecretAPIErrorZ in the success state.
16385  */
16386 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
16387
16388 /**
16389  * Creates a new CResult_PaymentSecretAPIErrorZ in the error state.
16390  */
16391 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
16392
16393 /**
16394  * Checks if the given object is currently in the success state
16395  */
16396 bool CResult_PaymentSecretAPIErrorZ_is_ok(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR o);
16397
16398 /**
16399  * Frees any resources used by the CResult_PaymentSecretAPIErrorZ.
16400  */
16401 void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
16402
16403 /**
16404  * Creates a new CResult_PaymentSecretAPIErrorZ which has the same data as `orig`
16405  * but with all dynamically-allocated buffers duplicated in new buffers.
16406  */
16407 struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
16408
16409 /**
16410  * Creates a new CResult_PaymentPreimageAPIErrorZ in the success state.
16411  */
16412 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_ok(struct LDKThirtyTwoBytes o);
16413
16414 /**
16415  * Creates a new CResult_PaymentPreimageAPIErrorZ in the error state.
16416  */
16417 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_err(struct LDKAPIError e);
16418
16419 /**
16420  * Checks if the given object is currently in the success state
16421  */
16422 bool CResult_PaymentPreimageAPIErrorZ_is_ok(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR o);
16423
16424 /**
16425  * Frees any resources used by the CResult_PaymentPreimageAPIErrorZ.
16426  */
16427 void CResult_PaymentPreimageAPIErrorZ_free(struct LDKCResult_PaymentPreimageAPIErrorZ _res);
16428
16429 /**
16430  * Creates a new CResult_PaymentPreimageAPIErrorZ which has the same data as `orig`
16431  * but with all dynamically-allocated buffers duplicated in new buffers.
16432  */
16433 struct LDKCResult_PaymentPreimageAPIErrorZ CResult_PaymentPreimageAPIErrorZ_clone(const struct LDKCResult_PaymentPreimageAPIErrorZ *NONNULL_PTR orig);
16434
16435 /**
16436  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ in the success state.
16437  */
16438 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_ok(struct LDKCounterpartyForwardingInfo o);
16439
16440 /**
16441  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ in the error state.
16442  */
16443 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_err(struct LDKDecodeError e);
16444
16445 /**
16446  * Checks if the given object is currently in the success state
16447  */
16448 bool CResult_CounterpartyForwardingInfoDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR o);
16449
16450 /**
16451  * Frees any resources used by the CResult_CounterpartyForwardingInfoDecodeErrorZ.
16452  */
16453 void CResult_CounterpartyForwardingInfoDecodeErrorZ_free(struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ _res);
16454
16455 /**
16456  * Creates a new CResult_CounterpartyForwardingInfoDecodeErrorZ which has the same data as `orig`
16457  * but with all dynamically-allocated buffers duplicated in new buffers.
16458  */
16459 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CResult_CounterpartyForwardingInfoDecodeErrorZ_clone(const struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ *NONNULL_PTR orig);
16460
16461 /**
16462  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ in the success state.
16463  */
16464 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_ok(struct LDKChannelCounterparty o);
16465
16466 /**
16467  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ in the error state.
16468  */
16469 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_err(struct LDKDecodeError e);
16470
16471 /**
16472  * Checks if the given object is currently in the success state
16473  */
16474 bool CResult_ChannelCounterpartyDecodeErrorZ_is_ok(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR o);
16475
16476 /**
16477  * Frees any resources used by the CResult_ChannelCounterpartyDecodeErrorZ.
16478  */
16479 void CResult_ChannelCounterpartyDecodeErrorZ_free(struct LDKCResult_ChannelCounterpartyDecodeErrorZ _res);
16480
16481 /**
16482  * Creates a new CResult_ChannelCounterpartyDecodeErrorZ which has the same data as `orig`
16483  * but with all dynamically-allocated buffers duplicated in new buffers.
16484  */
16485 struct LDKCResult_ChannelCounterpartyDecodeErrorZ CResult_ChannelCounterpartyDecodeErrorZ_clone(const struct LDKCResult_ChannelCounterpartyDecodeErrorZ *NONNULL_PTR orig);
16486
16487 /**
16488  * Creates a new CResult_ChannelDetailsDecodeErrorZ in the success state.
16489  */
16490 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_ok(struct LDKChannelDetails o);
16491
16492 /**
16493  * Creates a new CResult_ChannelDetailsDecodeErrorZ in the error state.
16494  */
16495 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_err(struct LDKDecodeError e);
16496
16497 /**
16498  * Checks if the given object is currently in the success state
16499  */
16500 bool CResult_ChannelDetailsDecodeErrorZ_is_ok(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR o);
16501
16502 /**
16503  * Frees any resources used by the CResult_ChannelDetailsDecodeErrorZ.
16504  */
16505 void CResult_ChannelDetailsDecodeErrorZ_free(struct LDKCResult_ChannelDetailsDecodeErrorZ _res);
16506
16507 /**
16508  * Creates a new CResult_ChannelDetailsDecodeErrorZ which has the same data as `orig`
16509  * but with all dynamically-allocated buffers duplicated in new buffers.
16510  */
16511 struct LDKCResult_ChannelDetailsDecodeErrorZ CResult_ChannelDetailsDecodeErrorZ_clone(const struct LDKCResult_ChannelDetailsDecodeErrorZ *NONNULL_PTR orig);
16512
16513 /**
16514  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ in the success state.
16515  */
16516 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_ok(struct LDKPhantomRouteHints o);
16517
16518 /**
16519  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ in the error state.
16520  */
16521 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_err(struct LDKDecodeError e);
16522
16523 /**
16524  * Checks if the given object is currently in the success state
16525  */
16526 bool CResult_PhantomRouteHintsDecodeErrorZ_is_ok(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR o);
16527
16528 /**
16529  * Frees any resources used by the CResult_PhantomRouteHintsDecodeErrorZ.
16530  */
16531 void CResult_PhantomRouteHintsDecodeErrorZ_free(struct LDKCResult_PhantomRouteHintsDecodeErrorZ _res);
16532
16533 /**
16534  * Creates a new CResult_PhantomRouteHintsDecodeErrorZ which has the same data as `orig`
16535  * but with all dynamically-allocated buffers duplicated in new buffers.
16536  */
16537 struct LDKCResult_PhantomRouteHintsDecodeErrorZ CResult_PhantomRouteHintsDecodeErrorZ_clone(const struct LDKCResult_PhantomRouteHintsDecodeErrorZ *NONNULL_PTR orig);
16538
16539 /**
16540  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16541  */
16542 void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
16543
16544 /**
16545  * Creates a new C2Tuple_BlockHashChannelManagerZ from the contained elements.
16546  */
16547 struct LDKC2Tuple_BlockHashChannelManagerZ C2Tuple_BlockHashChannelManagerZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelManager b);
16548
16549 /**
16550  * Frees any resources used by the C2Tuple_BlockHashChannelManagerZ.
16551  */
16552 void C2Tuple_BlockHashChannelManagerZ_free(struct LDKC2Tuple_BlockHashChannelManagerZ _res);
16553
16554 /**
16555  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state.
16556  */
16557 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelManagerZ o);
16558
16559 /**
16560  * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state.
16561  */
16562 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
16563
16564 /**
16565  * Checks if the given object is currently in the success state
16566  */
16567 bool CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR o);
16568
16569 /**
16570  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.
16571  */
16572 void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
16573
16574 /**
16575  * Creates a new CResult_ChannelConfigDecodeErrorZ in the success state.
16576  */
16577 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
16578
16579 /**
16580  * Creates a new CResult_ChannelConfigDecodeErrorZ in the error state.
16581  */
16582 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
16583
16584 /**
16585  * Checks if the given object is currently in the success state
16586  */
16587 bool CResult_ChannelConfigDecodeErrorZ_is_ok(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR o);
16588
16589 /**
16590  * Frees any resources used by the CResult_ChannelConfigDecodeErrorZ.
16591  */
16592 void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
16593
16594 /**
16595  * Creates a new CResult_ChannelConfigDecodeErrorZ which has the same data as `orig`
16596  * but with all dynamically-allocated buffers duplicated in new buffers.
16597  */
16598 struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
16599
16600 /**
16601  * Creates a new CResult_OutPointDecodeErrorZ in the success state.
16602  */
16603 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
16604
16605 /**
16606  * Creates a new CResult_OutPointDecodeErrorZ in the error state.
16607  */
16608 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
16609
16610 /**
16611  * Checks if the given object is currently in the success state
16612  */
16613 bool CResult_OutPointDecodeErrorZ_is_ok(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR o);
16614
16615 /**
16616  * Frees any resources used by the CResult_OutPointDecodeErrorZ.
16617  */
16618 void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
16619
16620 /**
16621  * Creates a new CResult_OutPointDecodeErrorZ which has the same data as `orig`
16622  * but with all dynamically-allocated buffers duplicated in new buffers.
16623  */
16624 struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
16625
16626 /**
16627  * Constructs a new COption_TypeZ containing a crate::lightning::ln::wire::Type
16628  */
16629 struct LDKCOption_TypeZ COption_TypeZ_some(struct LDKType o);
16630
16631 /**
16632  * Constructs a new COption_TypeZ containing nothing
16633  */
16634 struct LDKCOption_TypeZ COption_TypeZ_none(void);
16635
16636 /**
16637  * Frees any resources associated with the crate::lightning::ln::wire::Type, if we are in the Some state
16638  */
16639 void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
16640
16641 /**
16642  * Creates a new CResult_COption_TypeZDecodeErrorZ in the success state.
16643  */
16644 struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_ok(struct LDKCOption_TypeZ o);
16645
16646 /**
16647  * Creates a new CResult_COption_TypeZDecodeErrorZ in the error state.
16648  */
16649 struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_err(struct LDKDecodeError e);
16650
16651 /**
16652  * Checks if the given object is currently in the success state
16653  */
16654 bool CResult_COption_TypeZDecodeErrorZ_is_ok(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR o);
16655
16656 /**
16657  * Frees any resources used by the CResult_COption_TypeZDecodeErrorZ.
16658  */
16659 void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
16660
16661 /**
16662  * Creates a new CResult_PaymentIdPaymentErrorZ in the success state.
16663  */
16664 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_ok(struct LDKThirtyTwoBytes o);
16665
16666 /**
16667  * Creates a new CResult_PaymentIdPaymentErrorZ in the error state.
16668  */
16669 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_err(struct LDKPaymentError e);
16670
16671 /**
16672  * Checks if the given object is currently in the success state
16673  */
16674 bool CResult_PaymentIdPaymentErrorZ_is_ok(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR o);
16675
16676 /**
16677  * Frees any resources used by the CResult_PaymentIdPaymentErrorZ.
16678  */
16679 void CResult_PaymentIdPaymentErrorZ_free(struct LDKCResult_PaymentIdPaymentErrorZ _res);
16680
16681 /**
16682  * Creates a new CResult_PaymentIdPaymentErrorZ which has the same data as `orig`
16683  * but with all dynamically-allocated buffers duplicated in new buffers.
16684  */
16685 struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_clone(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR orig);
16686
16687 /**
16688  * Creates a new CResult_InFlightHtlcsDecodeErrorZ in the success state.
16689  */
16690 struct LDKCResult_InFlightHtlcsDecodeErrorZ CResult_InFlightHtlcsDecodeErrorZ_ok(struct LDKInFlightHtlcs o);
16691
16692 /**
16693  * Creates a new CResult_InFlightHtlcsDecodeErrorZ in the error state.
16694  */
16695 struct LDKCResult_InFlightHtlcsDecodeErrorZ CResult_InFlightHtlcsDecodeErrorZ_err(struct LDKDecodeError e);
16696
16697 /**
16698  * Checks if the given object is currently in the success state
16699  */
16700 bool CResult_InFlightHtlcsDecodeErrorZ_is_ok(const struct LDKCResult_InFlightHtlcsDecodeErrorZ *NONNULL_PTR o);
16701
16702 /**
16703  * Frees any resources used by the CResult_InFlightHtlcsDecodeErrorZ.
16704  */
16705 void CResult_InFlightHtlcsDecodeErrorZ_free(struct LDKCResult_InFlightHtlcsDecodeErrorZ _res);
16706
16707 /**
16708  * Creates a new CResult_SiPrefixParseErrorZ in the success state.
16709  */
16710 struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_ok(enum LDKSiPrefix o);
16711
16712 /**
16713  * Creates a new CResult_SiPrefixParseErrorZ in the error state.
16714  */
16715 struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_err(struct LDKParseError e);
16716
16717 /**
16718  * Checks if the given object is currently in the success state
16719  */
16720 bool CResult_SiPrefixParseErrorZ_is_ok(const struct LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR o);
16721
16722 /**
16723  * Frees any resources used by the CResult_SiPrefixParseErrorZ.
16724  */
16725 void CResult_SiPrefixParseErrorZ_free(struct LDKCResult_SiPrefixParseErrorZ _res);
16726
16727 /**
16728  * Creates a new CResult_SiPrefixParseErrorZ which has the same data as `orig`
16729  * but with all dynamically-allocated buffers duplicated in new buffers.
16730  */
16731 struct LDKCResult_SiPrefixParseErrorZ CResult_SiPrefixParseErrorZ_clone(const struct LDKCResult_SiPrefixParseErrorZ *NONNULL_PTR orig);
16732
16733 /**
16734  * Creates a new CResult_InvoiceParseOrSemanticErrorZ in the success state.
16735  */
16736 struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_ok(struct LDKInvoice o);
16737
16738 /**
16739  * Creates a new CResult_InvoiceParseOrSemanticErrorZ in the error state.
16740  */
16741 struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_err(struct LDKParseOrSemanticError e);
16742
16743 /**
16744  * Checks if the given object is currently in the success state
16745  */
16746 bool CResult_InvoiceParseOrSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR o);
16747
16748 /**
16749  * Frees any resources used by the CResult_InvoiceParseOrSemanticErrorZ.
16750  */
16751 void CResult_InvoiceParseOrSemanticErrorZ_free(struct LDKCResult_InvoiceParseOrSemanticErrorZ _res);
16752
16753 /**
16754  * Creates a new CResult_InvoiceParseOrSemanticErrorZ which has the same data as `orig`
16755  * but with all dynamically-allocated buffers duplicated in new buffers.
16756  */
16757 struct LDKCResult_InvoiceParseOrSemanticErrorZ CResult_InvoiceParseOrSemanticErrorZ_clone(const struct LDKCResult_InvoiceParseOrSemanticErrorZ *NONNULL_PTR orig);
16758
16759 /**
16760  * Creates a new CResult_SignedRawInvoiceParseErrorZ in the success state.
16761  */
16762 struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_ok(struct LDKSignedRawInvoice o);
16763
16764 /**
16765  * Creates a new CResult_SignedRawInvoiceParseErrorZ in the error state.
16766  */
16767 struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_err(struct LDKParseError e);
16768
16769 /**
16770  * Checks if the given object is currently in the success state
16771  */
16772 bool CResult_SignedRawInvoiceParseErrorZ_is_ok(const struct LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR o);
16773
16774 /**
16775  * Frees any resources used by the CResult_SignedRawInvoiceParseErrorZ.
16776  */
16777 void CResult_SignedRawInvoiceParseErrorZ_free(struct LDKCResult_SignedRawInvoiceParseErrorZ _res);
16778
16779 /**
16780  * Creates a new CResult_SignedRawInvoiceParseErrorZ which has the same data as `orig`
16781  * but with all dynamically-allocated buffers duplicated in new buffers.
16782  */
16783 struct LDKCResult_SignedRawInvoiceParseErrorZ CResult_SignedRawInvoiceParseErrorZ_clone(const struct LDKCResult_SignedRawInvoiceParseErrorZ *NONNULL_PTR orig);
16784
16785 /**
16786  * Creates a new tuple which has the same data as `orig`
16787  * but with all dynamically-allocated buffers duplicated in new buffers.
16788  */
16789 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
16790
16791 /**
16792  * Creates a new C3Tuple_RawInvoice_u832InvoiceSignatureZ from the contained elements.
16793  */
16794 struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(struct LDKRawInvoice a, struct LDKThirtyTwoBytes b, struct LDKInvoiceSignature c);
16795
16796 /**
16797  * Frees any resources used by the C3Tuple_RawInvoice_u832InvoiceSignatureZ.
16798  */
16799 void C3Tuple_RawInvoice_u832InvoiceSignatureZ_free(struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ _res);
16800
16801 /**
16802  * Creates a new CResult_PayeePubKeyErrorZ in the success state.
16803  */
16804 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_ok(struct LDKPayeePubKey o);
16805
16806 /**
16807  * Creates a new CResult_PayeePubKeyErrorZ in the error state.
16808  */
16809 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_err(enum LDKSecp256k1Error e);
16810
16811 /**
16812  * Checks if the given object is currently in the success state
16813  */
16814 bool CResult_PayeePubKeyErrorZ_is_ok(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR o);
16815
16816 /**
16817  * Frees any resources used by the CResult_PayeePubKeyErrorZ.
16818  */
16819 void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
16820
16821 /**
16822  * Creates a new CResult_PayeePubKeyErrorZ which has the same data as `orig`
16823  * but with all dynamically-allocated buffers duplicated in new buffers.
16824  */
16825 struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
16826
16827 /**
16828  * Frees the buffer pointed to by `data` if `datalen` is non-0.
16829  */
16830 void CVec_PrivateRouteZ_free(struct LDKCVec_PrivateRouteZ _res);
16831
16832 /**
16833  * Creates a new CResult_PositiveTimestampCreationErrorZ in the success state.
16834  */
16835 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_ok(struct LDKPositiveTimestamp o);
16836
16837 /**
16838  * Creates a new CResult_PositiveTimestampCreationErrorZ in the error state.
16839  */
16840 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_err(enum LDKCreationError e);
16841
16842 /**
16843  * Checks if the given object is currently in the success state
16844  */
16845 bool CResult_PositiveTimestampCreationErrorZ_is_ok(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR o);
16846
16847 /**
16848  * Frees any resources used by the CResult_PositiveTimestampCreationErrorZ.
16849  */
16850 void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
16851
16852 /**
16853  * Creates a new CResult_PositiveTimestampCreationErrorZ which has the same data as `orig`
16854  * but with all dynamically-allocated buffers duplicated in new buffers.
16855  */
16856 struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
16857
16858 /**
16859  * Creates a new CResult_NoneSemanticErrorZ in the success state.
16860  */
16861 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_ok(void);
16862
16863 /**
16864  * Creates a new CResult_NoneSemanticErrorZ in the error state.
16865  */
16866 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_err(enum LDKSemanticError e);
16867
16868 /**
16869  * Checks if the given object is currently in the success state
16870  */
16871 bool CResult_NoneSemanticErrorZ_is_ok(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR o);
16872
16873 /**
16874  * Frees any resources used by the CResult_NoneSemanticErrorZ.
16875  */
16876 void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
16877
16878 /**
16879  * Creates a new CResult_NoneSemanticErrorZ which has the same data as `orig`
16880  * but with all dynamically-allocated buffers duplicated in new buffers.
16881  */
16882 struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
16883
16884 /**
16885  * Creates a new CResult_InvoiceSemanticErrorZ in the success state.
16886  */
16887 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_ok(struct LDKInvoice o);
16888
16889 /**
16890  * Creates a new CResult_InvoiceSemanticErrorZ in the error state.
16891  */
16892 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_err(enum LDKSemanticError e);
16893
16894 /**
16895  * Checks if the given object is currently in the success state
16896  */
16897 bool CResult_InvoiceSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR o);
16898
16899 /**
16900  * Frees any resources used by the CResult_InvoiceSemanticErrorZ.
16901  */
16902 void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
16903
16904 /**
16905  * Creates a new CResult_InvoiceSemanticErrorZ which has the same data as `orig`
16906  * but with all dynamically-allocated buffers duplicated in new buffers.
16907  */
16908 struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
16909
16910 /**
16911  * Creates a new CResult_DescriptionCreationErrorZ in the success state.
16912  */
16913 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_ok(struct LDKDescription o);
16914
16915 /**
16916  * Creates a new CResult_DescriptionCreationErrorZ in the error state.
16917  */
16918 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_err(enum LDKCreationError e);
16919
16920 /**
16921  * Checks if the given object is currently in the success state
16922  */
16923 bool CResult_DescriptionCreationErrorZ_is_ok(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR o);
16924
16925 /**
16926  * Frees any resources used by the CResult_DescriptionCreationErrorZ.
16927  */
16928 void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
16929
16930 /**
16931  * Creates a new CResult_DescriptionCreationErrorZ which has the same data as `orig`
16932  * but with all dynamically-allocated buffers duplicated in new buffers.
16933  */
16934 struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
16935
16936 /**
16937  * Creates a new CResult_PrivateRouteCreationErrorZ in the success state.
16938  */
16939 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
16940
16941 /**
16942  * Creates a new CResult_PrivateRouteCreationErrorZ in the error state.
16943  */
16944 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
16945
16946 /**
16947  * Checks if the given object is currently in the success state
16948  */
16949 bool CResult_PrivateRouteCreationErrorZ_is_ok(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR o);
16950
16951 /**
16952  * Frees any resources used by the CResult_PrivateRouteCreationErrorZ.
16953  */
16954 void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
16955
16956 /**
16957  * Creates a new CResult_PrivateRouteCreationErrorZ which has the same data as `orig`
16958  * but with all dynamically-allocated buffers duplicated in new buffers.
16959  */
16960 struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
16961
16962 /**
16963  * Creates a new CResult_StringErrorZ in the success state.
16964  */
16965 struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
16966
16967 /**
16968  * Creates a new CResult_StringErrorZ in the error state.
16969  */
16970 struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
16971
16972 /**
16973  * Checks if the given object is currently in the success state
16974  */
16975 bool CResult_StringErrorZ_is_ok(const struct LDKCResult_StringErrorZ *NONNULL_PTR o);
16976
16977 /**
16978  * Frees any resources used by the CResult_StringErrorZ.
16979  */
16980 void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
16981
16982 /**
16983  * Creates a new CResult_StringErrorZ which has the same data as `orig`
16984  * but with all dynamically-allocated buffers duplicated in new buffers.
16985  */
16986 struct LDKCResult_StringErrorZ CResult_StringErrorZ_clone(const struct LDKCResult_StringErrorZ *NONNULL_PTR orig);
16987
16988 /**
16989  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the success state.
16990  */
16991 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
16992
16993 /**
16994  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ in the error state.
16995  */
16996 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
16997
16998 /**
16999  * Checks if the given object is currently in the success state
17000  */
17001 bool CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR o);
17002
17003 /**
17004  * Frees any resources used by the CResult_ChannelMonitorUpdateDecodeErrorZ.
17005  */
17006 void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
17007
17008 /**
17009  * Creates a new CResult_ChannelMonitorUpdateDecodeErrorZ which has the same data as `orig`
17010  * but with all dynamically-allocated buffers duplicated in new buffers.
17011  */
17012 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
17013
17014 /**
17015  * Constructs a new COption_MonitorEventZ containing a crate::lightning::chain::channelmonitor::MonitorEvent
17016  */
17017 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_some(struct LDKMonitorEvent o);
17018
17019 /**
17020  * Constructs a new COption_MonitorEventZ containing nothing
17021  */
17022 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_none(void);
17023
17024 /**
17025  * Frees any resources associated with the crate::lightning::chain::channelmonitor::MonitorEvent, if we are in the Some state
17026  */
17027 void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
17028
17029 /**
17030  * Creates a new COption_MonitorEventZ which has the same data as `orig`
17031  * but with all dynamically-allocated buffers duplicated in new buffers.
17032  */
17033 struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
17034
17035 /**
17036  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ in the success state.
17037  */
17038 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_ok(struct LDKCOption_MonitorEventZ o);
17039
17040 /**
17041  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ in the error state.
17042  */
17043 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_err(struct LDKDecodeError e);
17044
17045 /**
17046  * Checks if the given object is currently in the success state
17047  */
17048 bool CResult_COption_MonitorEventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR o);
17049
17050 /**
17051  * Frees any resources used by the CResult_COption_MonitorEventZDecodeErrorZ.
17052  */
17053 void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
17054
17055 /**
17056  * Creates a new CResult_COption_MonitorEventZDecodeErrorZ which has the same data as `orig`
17057  * but with all dynamically-allocated buffers duplicated in new buffers.
17058  */
17059 struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
17060
17061 /**
17062  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the success state.
17063  */
17064 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
17065
17066 /**
17067  * Creates a new CResult_HTLCUpdateDecodeErrorZ in the error state.
17068  */
17069 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
17070
17071 /**
17072  * Checks if the given object is currently in the success state
17073  */
17074 bool CResult_HTLCUpdateDecodeErrorZ_is_ok(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR o);
17075
17076 /**
17077  * Frees any resources used by the CResult_HTLCUpdateDecodeErrorZ.
17078  */
17079 void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
17080
17081 /**
17082  * Creates a new CResult_HTLCUpdateDecodeErrorZ which has the same data as `orig`
17083  * but with all dynamically-allocated buffers duplicated in new buffers.
17084  */
17085 struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
17086
17087 /**
17088  * Creates a new tuple which has the same data as `orig`
17089  * but with all dynamically-allocated buffers duplicated in new buffers.
17090  */
17091 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
17092
17093 /**
17094  * Creates a new C2Tuple_OutPointScriptZ from the contained elements.
17095  */
17096 struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
17097
17098 /**
17099  * Frees any resources used by the C2Tuple_OutPointScriptZ.
17100  */
17101 void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
17102
17103 /**
17104  * Creates a new tuple which has the same data as `orig`
17105  * but with all dynamically-allocated buffers duplicated in new buffers.
17106  */
17107 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
17108
17109 /**
17110  * Creates a new C2Tuple_u32ScriptZ from the contained elements.
17111  */
17112 struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
17113
17114 /**
17115  * Frees any resources used by the C2Tuple_u32ScriptZ.
17116  */
17117 void C2Tuple_u32ScriptZ_free(struct LDKC2Tuple_u32ScriptZ _res);
17118
17119 /**
17120  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17121  */
17122 void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
17123
17124 /**
17125  * Creates a new tuple which has the same data as `orig`
17126  * but with all dynamically-allocated buffers duplicated in new buffers.
17127  */
17128 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
17129
17130 /**
17131  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ from the contained elements.
17132  */
17133 struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
17134
17135 /**
17136  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ.
17137  */
17138 void C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ _res);
17139
17140 /**
17141  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17142  */
17143 void CVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_free(struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ _res);
17144
17145 /**
17146  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17147  */
17148 void CVec_EventZ_free(struct LDKCVec_EventZ _res);
17149
17150 /**
17151  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17152  */
17153 void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
17154
17155 /**
17156  * Creates a new tuple which has the same data as `orig`
17157  * but with all dynamically-allocated buffers duplicated in new buffers.
17158  */
17159 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
17160
17161 /**
17162  * Creates a new C2Tuple_u32TxOutZ from the contained elements.
17163  */
17164 struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
17165
17166 /**
17167  * Frees any resources used by the C2Tuple_u32TxOutZ.
17168  */
17169 void C2Tuple_u32TxOutZ_free(struct LDKC2Tuple_u32TxOutZ _res);
17170
17171 /**
17172  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17173  */
17174 void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
17175
17176 /**
17177  * Creates a new tuple which has the same data as `orig`
17178  * but with all dynamically-allocated buffers duplicated in new buffers.
17179  */
17180 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
17181
17182 /**
17183  * Creates a new C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ from the contained elements.
17184  */
17185 struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
17186
17187 /**
17188  * Frees any resources used by the C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ.
17189  */
17190 void C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_free(struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ _res);
17191
17192 /**
17193  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17194  */
17195 void CVec_TransactionOutputsZ_free(struct LDKCVec_TransactionOutputsZ _res);
17196
17197 /**
17198  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17199  */
17200 void CVec_BalanceZ_free(struct LDKCVec_BalanceZ _res);
17201
17202 /**
17203  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the success state.
17204  */
17205 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(struct LDKC2Tuple_BlockHashChannelMonitorZ o);
17206
17207 /**
17208  * Creates a new CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ in the error state.
17209  */
17210 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
17211
17212 /**
17213  * Checks if the given object is currently in the success state
17214  */
17215 bool CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR o);
17216
17217 /**
17218  * Frees any resources used by the CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ.
17219  */
17220 void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
17221
17222 /**
17223  * Creates a new C2Tuple_PublicKeyTypeZ from the contained elements.
17224  */
17225 struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_new(struct LDKPublicKey a, struct LDKType b);
17226
17227 /**
17228  * Frees any resources used by the C2Tuple_PublicKeyTypeZ.
17229  */
17230 void C2Tuple_PublicKeyTypeZ_free(struct LDKC2Tuple_PublicKeyTypeZ _res);
17231
17232 /**
17233  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17234  */
17235 void CVec_C2Tuple_PublicKeyTypeZZ_free(struct LDKCVec_C2Tuple_PublicKeyTypeZZ _res);
17236
17237 /**
17238  * Constructs a new COption_NetAddressZ containing a crate::lightning::ln::msgs::NetAddress
17239  */
17240 struct LDKCOption_NetAddressZ COption_NetAddressZ_some(struct LDKNetAddress o);
17241
17242 /**
17243  * Constructs a new COption_NetAddressZ containing nothing
17244  */
17245 struct LDKCOption_NetAddressZ COption_NetAddressZ_none(void);
17246
17247 /**
17248  * Frees any resources associated with the crate::lightning::ln::msgs::NetAddress, if we are in the Some state
17249  */
17250 void COption_NetAddressZ_free(struct LDKCOption_NetAddressZ _res);
17251
17252 /**
17253  * Creates a new COption_NetAddressZ which has the same data as `orig`
17254  * but with all dynamically-allocated buffers duplicated in new buffers.
17255  */
17256 struct LDKCOption_NetAddressZ COption_NetAddressZ_clone(const struct LDKCOption_NetAddressZ *NONNULL_PTR orig);
17257
17258 /**
17259  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the success state.
17260  */
17261 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_ok(struct LDKCVec_u8Z o);
17262
17263 /**
17264  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ in the error state.
17265  */
17266 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
17267
17268 /**
17269  * Checks if the given object is currently in the success state
17270  */
17271 bool CResult_CVec_u8ZPeerHandleErrorZ_is_ok(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR o);
17272
17273 /**
17274  * Frees any resources used by the CResult_CVec_u8ZPeerHandleErrorZ.
17275  */
17276 void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
17277
17278 /**
17279  * Creates a new CResult_CVec_u8ZPeerHandleErrorZ which has the same data as `orig`
17280  * but with all dynamically-allocated buffers duplicated in new buffers.
17281  */
17282 struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
17283
17284 /**
17285  * Creates a new CResult_NonePeerHandleErrorZ in the success state.
17286  */
17287 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
17288
17289 /**
17290  * Creates a new CResult_NonePeerHandleErrorZ in the error state.
17291  */
17292 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
17293
17294 /**
17295  * Checks if the given object is currently in the success state
17296  */
17297 bool CResult_NonePeerHandleErrorZ_is_ok(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR o);
17298
17299 /**
17300  * Frees any resources used by the CResult_NonePeerHandleErrorZ.
17301  */
17302 void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
17303
17304 /**
17305  * Creates a new CResult_NonePeerHandleErrorZ which has the same data as `orig`
17306  * but with all dynamically-allocated buffers duplicated in new buffers.
17307  */
17308 struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
17309
17310 /**
17311  * Creates a new CResult_boolPeerHandleErrorZ in the success state.
17312  */
17313 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
17314
17315 /**
17316  * Creates a new CResult_boolPeerHandleErrorZ in the error state.
17317  */
17318 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
17319
17320 /**
17321  * Checks if the given object is currently in the success state
17322  */
17323 bool CResult_boolPeerHandleErrorZ_is_ok(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR o);
17324
17325 /**
17326  * Frees any resources used by the CResult_boolPeerHandleErrorZ.
17327  */
17328 void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
17329
17330 /**
17331  * Creates a new CResult_boolPeerHandleErrorZ which has the same data as `orig`
17332  * but with all dynamically-allocated buffers duplicated in new buffers.
17333  */
17334 struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
17335
17336 /**
17337  * Creates a new CResult_NoneSendErrorZ in the success state.
17338  */
17339 struct LDKCResult_NoneSendErrorZ CResult_NoneSendErrorZ_ok(void);
17340
17341 /**
17342  * Creates a new CResult_NoneSendErrorZ in the error state.
17343  */
17344 struct LDKCResult_NoneSendErrorZ CResult_NoneSendErrorZ_err(struct LDKSendError e);
17345
17346 /**
17347  * Checks if the given object is currently in the success state
17348  */
17349 bool CResult_NoneSendErrorZ_is_ok(const struct LDKCResult_NoneSendErrorZ *NONNULL_PTR o);
17350
17351 /**
17352  * Frees any resources used by the CResult_NoneSendErrorZ.
17353  */
17354 void CResult_NoneSendErrorZ_free(struct LDKCResult_NoneSendErrorZ _res);
17355
17356 /**
17357  * Creates a new CResult_u32GraphSyncErrorZ in the success state.
17358  */
17359 struct LDKCResult_u32GraphSyncErrorZ CResult_u32GraphSyncErrorZ_ok(uint32_t o);
17360
17361 /**
17362  * Creates a new CResult_u32GraphSyncErrorZ in the error state.
17363  */
17364 struct LDKCResult_u32GraphSyncErrorZ CResult_u32GraphSyncErrorZ_err(struct LDKGraphSyncError e);
17365
17366 /**
17367  * Checks if the given object is currently in the success state
17368  */
17369 bool CResult_u32GraphSyncErrorZ_is_ok(const struct LDKCResult_u32GraphSyncErrorZ *NONNULL_PTR o);
17370
17371 /**
17372  * Frees any resources used by the CResult_u32GraphSyncErrorZ.
17373  */
17374 void CResult_u32GraphSyncErrorZ_free(struct LDKCResult_u32GraphSyncErrorZ _res);
17375
17376 /**
17377  * Creates a new CResult_NetAddressDecodeErrorZ in the success state.
17378  */
17379 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
17380
17381 /**
17382  * Creates a new CResult_NetAddressDecodeErrorZ in the error state.
17383  */
17384 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
17385
17386 /**
17387  * Checks if the given object is currently in the success state
17388  */
17389 bool CResult_NetAddressDecodeErrorZ_is_ok(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR o);
17390
17391 /**
17392  * Frees any resources used by the CResult_NetAddressDecodeErrorZ.
17393  */
17394 void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
17395
17396 /**
17397  * Creates a new CResult_NetAddressDecodeErrorZ which has the same data as `orig`
17398  * but with all dynamically-allocated buffers duplicated in new buffers.
17399  */
17400 struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
17401
17402 /**
17403  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17404  */
17405 void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
17406
17407 /**
17408  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17409  */
17410 void CVec_UpdateFulfillHTLCZ_free(struct LDKCVec_UpdateFulfillHTLCZ _res);
17411
17412 /**
17413  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17414  */
17415 void CVec_UpdateFailHTLCZ_free(struct LDKCVec_UpdateFailHTLCZ _res);
17416
17417 /**
17418  * Frees the buffer pointed to by `data` if `datalen` is non-0.
17419  */
17420 void CVec_UpdateFailMalformedHTLCZ_free(struct LDKCVec_UpdateFailMalformedHTLCZ _res);
17421
17422 /**
17423  * Creates a new CResult_AcceptChannelDecodeErrorZ in the success state.
17424  */
17425 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_ok(struct LDKAcceptChannel o);
17426
17427 /**
17428  * Creates a new CResult_AcceptChannelDecodeErrorZ in the error state.
17429  */
17430 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
17431
17432 /**
17433  * Checks if the given object is currently in the success state
17434  */
17435 bool CResult_AcceptChannelDecodeErrorZ_is_ok(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR o);
17436
17437 /**
17438  * Frees any resources used by the CResult_AcceptChannelDecodeErrorZ.
17439  */
17440 void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
17441
17442 /**
17443  * Creates a new CResult_AcceptChannelDecodeErrorZ which has the same data as `orig`
17444  * but with all dynamically-allocated buffers duplicated in new buffers.
17445  */
17446 struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
17447
17448 /**
17449  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the success state.
17450  */
17451 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
17452
17453 /**
17454  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ in the error state.
17455  */
17456 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
17457
17458 /**
17459  * Checks if the given object is currently in the success state
17460  */
17461 bool CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR o);
17462
17463 /**
17464  * Frees any resources used by the CResult_AnnouncementSignaturesDecodeErrorZ.
17465  */
17466 void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
17467
17468 /**
17469  * Creates a new CResult_AnnouncementSignaturesDecodeErrorZ which has the same data as `orig`
17470  * but with all dynamically-allocated buffers duplicated in new buffers.
17471  */
17472 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
17473
17474 /**
17475  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the success state.
17476  */
17477 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
17478
17479 /**
17480  * Creates a new CResult_ChannelReestablishDecodeErrorZ in the error state.
17481  */
17482 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
17483
17484 /**
17485  * Checks if the given object is currently in the success state
17486  */
17487 bool CResult_ChannelReestablishDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR o);
17488
17489 /**
17490  * Frees any resources used by the CResult_ChannelReestablishDecodeErrorZ.
17491  */
17492 void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
17493
17494 /**
17495  * Creates a new CResult_ChannelReestablishDecodeErrorZ which has the same data as `orig`
17496  * but with all dynamically-allocated buffers duplicated in new buffers.
17497  */
17498 struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
17499
17500 /**
17501  * Creates a new CResult_ClosingSignedDecodeErrorZ in the success state.
17502  */
17503 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
17504
17505 /**
17506  * Creates a new CResult_ClosingSignedDecodeErrorZ in the error state.
17507  */
17508 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
17509
17510 /**
17511  * Checks if the given object is currently in the success state
17512  */
17513 bool CResult_ClosingSignedDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR o);
17514
17515 /**
17516  * Frees any resources used by the CResult_ClosingSignedDecodeErrorZ.
17517  */
17518 void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
17519
17520 /**
17521  * Creates a new CResult_ClosingSignedDecodeErrorZ which has the same data as `orig`
17522  * but with all dynamically-allocated buffers duplicated in new buffers.
17523  */
17524 struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
17525
17526 /**
17527  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ in the success state.
17528  */
17529 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(struct LDKClosingSignedFeeRange o);
17530
17531 /**
17532  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ in the error state.
17533  */
17534 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_err(struct LDKDecodeError e);
17535
17536 /**
17537  * Checks if the given object is currently in the success state
17538  */
17539 bool CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR o);
17540
17541 /**
17542  * Frees any resources used by the CResult_ClosingSignedFeeRangeDecodeErrorZ.
17543  */
17544 void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
17545
17546 /**
17547  * Creates a new CResult_ClosingSignedFeeRangeDecodeErrorZ which has the same data as `orig`
17548  * but with all dynamically-allocated buffers duplicated in new buffers.
17549  */
17550 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
17551
17552 /**
17553  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the success state.
17554  */
17555 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
17556
17557 /**
17558  * Creates a new CResult_CommitmentSignedDecodeErrorZ in the error state.
17559  */
17560 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
17561
17562 /**
17563  * Checks if the given object is currently in the success state
17564  */
17565 bool CResult_CommitmentSignedDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR o);
17566
17567 /**
17568  * Frees any resources used by the CResult_CommitmentSignedDecodeErrorZ.
17569  */
17570 void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
17571
17572 /**
17573  * Creates a new CResult_CommitmentSignedDecodeErrorZ which has the same data as `orig`
17574  * but with all dynamically-allocated buffers duplicated in new buffers.
17575  */
17576 struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
17577
17578 /**
17579  * Creates a new CResult_FundingCreatedDecodeErrorZ in the success state.
17580  */
17581 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
17582
17583 /**
17584  * Creates a new CResult_FundingCreatedDecodeErrorZ in the error state.
17585  */
17586 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
17587
17588 /**
17589  * Checks if the given object is currently in the success state
17590  */
17591 bool CResult_FundingCreatedDecodeErrorZ_is_ok(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR o);
17592
17593 /**
17594  * Frees any resources used by the CResult_FundingCreatedDecodeErrorZ.
17595  */
17596 void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
17597
17598 /**
17599  * Creates a new CResult_FundingCreatedDecodeErrorZ which has the same data as `orig`
17600  * but with all dynamically-allocated buffers duplicated in new buffers.
17601  */
17602 struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
17603
17604 /**
17605  * Creates a new CResult_FundingSignedDecodeErrorZ in the success state.
17606  */
17607 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
17608
17609 /**
17610  * Creates a new CResult_FundingSignedDecodeErrorZ in the error state.
17611  */
17612 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
17613
17614 /**
17615  * Checks if the given object is currently in the success state
17616  */
17617 bool CResult_FundingSignedDecodeErrorZ_is_ok(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR o);
17618
17619 /**
17620  * Frees any resources used by the CResult_FundingSignedDecodeErrorZ.
17621  */
17622 void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
17623
17624 /**
17625  * Creates a new CResult_FundingSignedDecodeErrorZ which has the same data as `orig`
17626  * but with all dynamically-allocated buffers duplicated in new buffers.
17627  */
17628 struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
17629
17630 /**
17631  * Creates a new CResult_ChannelReadyDecodeErrorZ in the success state.
17632  */
17633 struct LDKCResult_ChannelReadyDecodeErrorZ CResult_ChannelReadyDecodeErrorZ_ok(struct LDKChannelReady o);
17634
17635 /**
17636  * Creates a new CResult_ChannelReadyDecodeErrorZ in the error state.
17637  */
17638 struct LDKCResult_ChannelReadyDecodeErrorZ CResult_ChannelReadyDecodeErrorZ_err(struct LDKDecodeError e);
17639
17640 /**
17641  * Checks if the given object is currently in the success state
17642  */
17643 bool CResult_ChannelReadyDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReadyDecodeErrorZ *NONNULL_PTR o);
17644
17645 /**
17646  * Frees any resources used by the CResult_ChannelReadyDecodeErrorZ.
17647  */
17648 void CResult_ChannelReadyDecodeErrorZ_free(struct LDKCResult_ChannelReadyDecodeErrorZ _res);
17649
17650 /**
17651  * Creates a new CResult_ChannelReadyDecodeErrorZ which has the same data as `orig`
17652  * but with all dynamically-allocated buffers duplicated in new buffers.
17653  */
17654 struct LDKCResult_ChannelReadyDecodeErrorZ CResult_ChannelReadyDecodeErrorZ_clone(const struct LDKCResult_ChannelReadyDecodeErrorZ *NONNULL_PTR orig);
17655
17656 /**
17657  * Creates a new CResult_InitDecodeErrorZ in the success state.
17658  */
17659 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
17660
17661 /**
17662  * Creates a new CResult_InitDecodeErrorZ in the error state.
17663  */
17664 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
17665
17666 /**
17667  * Checks if the given object is currently in the success state
17668  */
17669 bool CResult_InitDecodeErrorZ_is_ok(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR o);
17670
17671 /**
17672  * Frees any resources used by the CResult_InitDecodeErrorZ.
17673  */
17674 void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
17675
17676 /**
17677  * Creates a new CResult_InitDecodeErrorZ which has the same data as `orig`
17678  * but with all dynamically-allocated buffers duplicated in new buffers.
17679  */
17680 struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
17681
17682 /**
17683  * Creates a new CResult_OpenChannelDecodeErrorZ in the success state.
17684  */
17685 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
17686
17687 /**
17688  * Creates a new CResult_OpenChannelDecodeErrorZ in the error state.
17689  */
17690 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
17691
17692 /**
17693  * Checks if the given object is currently in the success state
17694  */
17695 bool CResult_OpenChannelDecodeErrorZ_is_ok(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR o);
17696
17697 /**
17698  * Frees any resources used by the CResult_OpenChannelDecodeErrorZ.
17699  */
17700 void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
17701
17702 /**
17703  * Creates a new CResult_OpenChannelDecodeErrorZ which has the same data as `orig`
17704  * but with all dynamically-allocated buffers duplicated in new buffers.
17705  */
17706 struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
17707
17708 /**
17709  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the success state.
17710  */
17711 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
17712
17713 /**
17714  * Creates a new CResult_RevokeAndACKDecodeErrorZ in the error state.
17715  */
17716 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
17717
17718 /**
17719  * Checks if the given object is currently in the success state
17720  */
17721 bool CResult_RevokeAndACKDecodeErrorZ_is_ok(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR o);
17722
17723 /**
17724  * Frees any resources used by the CResult_RevokeAndACKDecodeErrorZ.
17725  */
17726 void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
17727
17728 /**
17729  * Creates a new CResult_RevokeAndACKDecodeErrorZ which has the same data as `orig`
17730  * but with all dynamically-allocated buffers duplicated in new buffers.
17731  */
17732 struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
17733
17734 /**
17735  * Creates a new CResult_ShutdownDecodeErrorZ in the success state.
17736  */
17737 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
17738
17739 /**
17740  * Creates a new CResult_ShutdownDecodeErrorZ in the error state.
17741  */
17742 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
17743
17744 /**
17745  * Checks if the given object is currently in the success state
17746  */
17747 bool CResult_ShutdownDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR o);
17748
17749 /**
17750  * Frees any resources used by the CResult_ShutdownDecodeErrorZ.
17751  */
17752 void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
17753
17754 /**
17755  * Creates a new CResult_ShutdownDecodeErrorZ which has the same data as `orig`
17756  * but with all dynamically-allocated buffers duplicated in new buffers.
17757  */
17758 struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
17759
17760 /**
17761  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the success state.
17762  */
17763 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
17764
17765 /**
17766  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ in the error state.
17767  */
17768 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
17769
17770 /**
17771  * Checks if the given object is currently in the success state
17772  */
17773 bool CResult_UpdateFailHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR o);
17774
17775 /**
17776  * Frees any resources used by the CResult_UpdateFailHTLCDecodeErrorZ.
17777  */
17778 void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
17779
17780 /**
17781  * Creates a new CResult_UpdateFailHTLCDecodeErrorZ which has the same data as `orig`
17782  * but with all dynamically-allocated buffers duplicated in new buffers.
17783  */
17784 struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
17785
17786 /**
17787  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the success state.
17788  */
17789 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
17790
17791 /**
17792  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ in the error state.
17793  */
17794 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
17795
17796 /**
17797  * Checks if the given object is currently in the success state
17798  */
17799 bool CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR o);
17800
17801 /**
17802  * Frees any resources used by the CResult_UpdateFailMalformedHTLCDecodeErrorZ.
17803  */
17804 void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
17805
17806 /**
17807  * Creates a new CResult_UpdateFailMalformedHTLCDecodeErrorZ which has the same data as `orig`
17808  * but with all dynamically-allocated buffers duplicated in new buffers.
17809  */
17810 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
17811
17812 /**
17813  * Creates a new CResult_UpdateFeeDecodeErrorZ in the success state.
17814  */
17815 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
17816
17817 /**
17818  * Creates a new CResult_UpdateFeeDecodeErrorZ in the error state.
17819  */
17820 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
17821
17822 /**
17823  * Checks if the given object is currently in the success state
17824  */
17825 bool CResult_UpdateFeeDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR o);
17826
17827 /**
17828  * Frees any resources used by the CResult_UpdateFeeDecodeErrorZ.
17829  */
17830 void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
17831
17832 /**
17833  * Creates a new CResult_UpdateFeeDecodeErrorZ which has the same data as `orig`
17834  * but with all dynamically-allocated buffers duplicated in new buffers.
17835  */
17836 struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
17837
17838 /**
17839  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the success state.
17840  */
17841 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
17842
17843 /**
17844  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ in the error state.
17845  */
17846 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
17847
17848 /**
17849  * Checks if the given object is currently in the success state
17850  */
17851 bool CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR o);
17852
17853 /**
17854  * Frees any resources used by the CResult_UpdateFulfillHTLCDecodeErrorZ.
17855  */
17856 void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
17857
17858 /**
17859  * Creates a new CResult_UpdateFulfillHTLCDecodeErrorZ which has the same data as `orig`
17860  * but with all dynamically-allocated buffers duplicated in new buffers.
17861  */
17862 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
17863
17864 /**
17865  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the success state.
17866  */
17867 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
17868
17869 /**
17870  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ in the error state.
17871  */
17872 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
17873
17874 /**
17875  * Checks if the given object is currently in the success state
17876  */
17877 bool CResult_UpdateAddHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR o);
17878
17879 /**
17880  * Frees any resources used by the CResult_UpdateAddHTLCDecodeErrorZ.
17881  */
17882 void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
17883
17884 /**
17885  * Creates a new CResult_UpdateAddHTLCDecodeErrorZ which has the same data as `orig`
17886  * but with all dynamically-allocated buffers duplicated in new buffers.
17887  */
17888 struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
17889
17890 /**
17891  * Creates a new CResult_OnionMessageDecodeErrorZ in the success state.
17892  */
17893 struct LDKCResult_OnionMessageDecodeErrorZ CResult_OnionMessageDecodeErrorZ_ok(struct LDKOnionMessage o);
17894
17895 /**
17896  * Creates a new CResult_OnionMessageDecodeErrorZ in the error state.
17897  */
17898 struct LDKCResult_OnionMessageDecodeErrorZ CResult_OnionMessageDecodeErrorZ_err(struct LDKDecodeError e);
17899
17900 /**
17901  * Checks if the given object is currently in the success state
17902  */
17903 bool CResult_OnionMessageDecodeErrorZ_is_ok(const struct LDKCResult_OnionMessageDecodeErrorZ *NONNULL_PTR o);
17904
17905 /**
17906  * Frees any resources used by the CResult_OnionMessageDecodeErrorZ.
17907  */
17908 void CResult_OnionMessageDecodeErrorZ_free(struct LDKCResult_OnionMessageDecodeErrorZ _res);
17909
17910 /**
17911  * Creates a new CResult_OnionMessageDecodeErrorZ which has the same data as `orig`
17912  * but with all dynamically-allocated buffers duplicated in new buffers.
17913  */
17914 struct LDKCResult_OnionMessageDecodeErrorZ CResult_OnionMessageDecodeErrorZ_clone(const struct LDKCResult_OnionMessageDecodeErrorZ *NONNULL_PTR orig);
17915
17916 /**
17917  * Creates a new CResult_PingDecodeErrorZ in the success state.
17918  */
17919 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
17920
17921 /**
17922  * Creates a new CResult_PingDecodeErrorZ in the error state.
17923  */
17924 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
17925
17926 /**
17927  * Checks if the given object is currently in the success state
17928  */
17929 bool CResult_PingDecodeErrorZ_is_ok(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR o);
17930
17931 /**
17932  * Frees any resources used by the CResult_PingDecodeErrorZ.
17933  */
17934 void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
17935
17936 /**
17937  * Creates a new CResult_PingDecodeErrorZ which has the same data as `orig`
17938  * but with all dynamically-allocated buffers duplicated in new buffers.
17939  */
17940 struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
17941
17942 /**
17943  * Creates a new CResult_PongDecodeErrorZ in the success state.
17944  */
17945 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
17946
17947 /**
17948  * Creates a new CResult_PongDecodeErrorZ in the error state.
17949  */
17950 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
17951
17952 /**
17953  * Checks if the given object is currently in the success state
17954  */
17955 bool CResult_PongDecodeErrorZ_is_ok(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR o);
17956
17957 /**
17958  * Frees any resources used by the CResult_PongDecodeErrorZ.
17959  */
17960 void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
17961
17962 /**
17963  * Creates a new CResult_PongDecodeErrorZ which has the same data as `orig`
17964  * but with all dynamically-allocated buffers duplicated in new buffers.
17965  */
17966 struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
17967
17968 /**
17969  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the success state.
17970  */
17971 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
17972
17973 /**
17974  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ in the error state.
17975  */
17976 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
17977
17978 /**
17979  * Checks if the given object is currently in the success state
17980  */
17981 bool CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
17982
17983 /**
17984  * Frees any resources used by the CResult_UnsignedChannelAnnouncementDecodeErrorZ.
17985  */
17986 void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
17987
17988 /**
17989  * Creates a new CResult_UnsignedChannelAnnouncementDecodeErrorZ which has the same data as `orig`
17990  * but with all dynamically-allocated buffers duplicated in new buffers.
17991  */
17992 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
17993
17994 /**
17995  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the success state.
17996  */
17997 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
17998
17999 /**
18000  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ in the error state.
18001  */
18002 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
18003
18004 /**
18005  * Checks if the given object is currently in the success state
18006  */
18007 bool CResult_ChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
18008
18009 /**
18010  * Frees any resources used by the CResult_ChannelAnnouncementDecodeErrorZ.
18011  */
18012 void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
18013
18014 /**
18015  * Creates a new CResult_ChannelAnnouncementDecodeErrorZ which has the same data as `orig`
18016  * but with all dynamically-allocated buffers duplicated in new buffers.
18017  */
18018 struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
18019
18020 /**
18021  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the success state.
18022  */
18023 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
18024
18025 /**
18026  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ in the error state.
18027  */
18028 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
18029
18030 /**
18031  * Checks if the given object is currently in the success state
18032  */
18033 bool CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR o);
18034
18035 /**
18036  * Frees any resources used by the CResult_UnsignedChannelUpdateDecodeErrorZ.
18037  */
18038 void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
18039
18040 /**
18041  * Creates a new CResult_UnsignedChannelUpdateDecodeErrorZ which has the same data as `orig`
18042  * but with all dynamically-allocated buffers duplicated in new buffers.
18043  */
18044 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
18045
18046 /**
18047  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the success state.
18048  */
18049 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
18050
18051 /**
18052  * Creates a new CResult_ChannelUpdateDecodeErrorZ in the error state.
18053  */
18054 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
18055
18056 /**
18057  * Checks if the given object is currently in the success state
18058  */
18059 bool CResult_ChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR o);
18060
18061 /**
18062  * Frees any resources used by the CResult_ChannelUpdateDecodeErrorZ.
18063  */
18064 void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
18065
18066 /**
18067  * Creates a new CResult_ChannelUpdateDecodeErrorZ which has the same data as `orig`
18068  * but with all dynamically-allocated buffers duplicated in new buffers.
18069  */
18070 struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
18071
18072 /**
18073  * Creates a new CResult_ErrorMessageDecodeErrorZ in the success state.
18074  */
18075 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
18076
18077 /**
18078  * Creates a new CResult_ErrorMessageDecodeErrorZ in the error state.
18079  */
18080 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
18081
18082 /**
18083  * Checks if the given object is currently in the success state
18084  */
18085 bool CResult_ErrorMessageDecodeErrorZ_is_ok(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR o);
18086
18087 /**
18088  * Frees any resources used by the CResult_ErrorMessageDecodeErrorZ.
18089  */
18090 void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
18091
18092 /**
18093  * Creates a new CResult_ErrorMessageDecodeErrorZ which has the same data as `orig`
18094  * but with all dynamically-allocated buffers duplicated in new buffers.
18095  */
18096 struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
18097
18098 /**
18099  * Creates a new CResult_WarningMessageDecodeErrorZ in the success state.
18100  */
18101 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_ok(struct LDKWarningMessage o);
18102
18103 /**
18104  * Creates a new CResult_WarningMessageDecodeErrorZ in the error state.
18105  */
18106 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_err(struct LDKDecodeError e);
18107
18108 /**
18109  * Checks if the given object is currently in the success state
18110  */
18111 bool CResult_WarningMessageDecodeErrorZ_is_ok(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR o);
18112
18113 /**
18114  * Frees any resources used by the CResult_WarningMessageDecodeErrorZ.
18115  */
18116 void CResult_WarningMessageDecodeErrorZ_free(struct LDKCResult_WarningMessageDecodeErrorZ _res);
18117
18118 /**
18119  * Creates a new CResult_WarningMessageDecodeErrorZ which has the same data as `orig`
18120  * but with all dynamically-allocated buffers duplicated in new buffers.
18121  */
18122 struct LDKCResult_WarningMessageDecodeErrorZ CResult_WarningMessageDecodeErrorZ_clone(const struct LDKCResult_WarningMessageDecodeErrorZ *NONNULL_PTR orig);
18123
18124 /**
18125  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the success state.
18126  */
18127 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
18128
18129 /**
18130  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ in the error state.
18131  */
18132 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
18133
18134 /**
18135  * Checks if the given object is currently in the success state
18136  */
18137 bool CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
18138
18139 /**
18140  * Frees any resources used by the CResult_UnsignedNodeAnnouncementDecodeErrorZ.
18141  */
18142 void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
18143
18144 /**
18145  * Creates a new CResult_UnsignedNodeAnnouncementDecodeErrorZ which has the same data as `orig`
18146  * but with all dynamically-allocated buffers duplicated in new buffers.
18147  */
18148 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
18149
18150 /**
18151  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the success state.
18152  */
18153 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
18154
18155 /**
18156  * Creates a new CResult_NodeAnnouncementDecodeErrorZ in the error state.
18157  */
18158 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
18159
18160 /**
18161  * Checks if the given object is currently in the success state
18162  */
18163 bool CResult_NodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
18164
18165 /**
18166  * Frees any resources used by the CResult_NodeAnnouncementDecodeErrorZ.
18167  */
18168 void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
18169
18170 /**
18171  * Creates a new CResult_NodeAnnouncementDecodeErrorZ which has the same data as `orig`
18172  * but with all dynamically-allocated buffers duplicated in new buffers.
18173  */
18174 struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
18175
18176 /**
18177  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the success state.
18178  */
18179 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
18180
18181 /**
18182  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ in the error state.
18183  */
18184 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
18185
18186 /**
18187  * Checks if the given object is currently in the success state
18188  */
18189 bool CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR o);
18190
18191 /**
18192  * Frees any resources used by the CResult_QueryShortChannelIdsDecodeErrorZ.
18193  */
18194 void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
18195
18196 /**
18197  * Creates a new CResult_QueryShortChannelIdsDecodeErrorZ which has the same data as `orig`
18198  * but with all dynamically-allocated buffers duplicated in new buffers.
18199  */
18200 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
18201
18202 /**
18203  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the success state.
18204  */
18205 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
18206
18207 /**
18208  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ in the error state.
18209  */
18210 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
18211
18212 /**
18213  * Checks if the given object is currently in the success state
18214  */
18215 bool CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR o);
18216
18217 /**
18218  * Frees any resources used by the CResult_ReplyShortChannelIdsEndDecodeErrorZ.
18219  */
18220 void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
18221
18222 /**
18223  * Creates a new CResult_ReplyShortChannelIdsEndDecodeErrorZ which has the same data as `orig`
18224  * but with all dynamically-allocated buffers duplicated in new buffers.
18225  */
18226 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
18227
18228 /**
18229  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the success state.
18230  */
18231 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
18232
18233 /**
18234  * Creates a new CResult_QueryChannelRangeDecodeErrorZ in the error state.
18235  */
18236 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
18237
18238 /**
18239  * Checks if the given object is currently in the success state
18240  */
18241 bool CResult_QueryChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR o);
18242
18243 /**
18244  * Frees any resources used by the CResult_QueryChannelRangeDecodeErrorZ.
18245  */
18246 void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
18247
18248 /**
18249  * Creates a new CResult_QueryChannelRangeDecodeErrorZ which has the same data as `orig`
18250  * but with all dynamically-allocated buffers duplicated in new buffers.
18251  */
18252 struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
18253
18254 /**
18255  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the success state.
18256  */
18257 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
18258
18259 /**
18260  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ in the error state.
18261  */
18262 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
18263
18264 /**
18265  * Checks if the given object is currently in the success state
18266  */
18267 bool CResult_ReplyChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR o);
18268
18269 /**
18270  * Frees any resources used by the CResult_ReplyChannelRangeDecodeErrorZ.
18271  */
18272 void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
18273
18274 /**
18275  * Creates a new CResult_ReplyChannelRangeDecodeErrorZ which has the same data as `orig`
18276  * but with all dynamically-allocated buffers duplicated in new buffers.
18277  */
18278 struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
18279
18280 /**
18281  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the success state.
18282  */
18283 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
18284
18285 /**
18286  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ in the error state.
18287  */
18288 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
18289
18290 /**
18291  * Checks if the given object is currently in the success state
18292  */
18293 bool CResult_GossipTimestampFilterDecodeErrorZ_is_ok(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR o);
18294
18295 /**
18296  * Frees any resources used by the CResult_GossipTimestampFilterDecodeErrorZ.
18297  */
18298 void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
18299
18300 /**
18301  * Creates a new CResult_GossipTimestampFilterDecodeErrorZ which has the same data as `orig`
18302  * but with all dynamically-allocated buffers duplicated in new buffers.
18303  */
18304 struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
18305
18306 /**
18307  * Frees the buffer pointed to by `data` if `datalen` is non-0.
18308  */
18309 void CVec_PhantomRouteHintsZ_free(struct LDKCVec_PhantomRouteHintsZ _res);
18310
18311 /**
18312  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the success state.
18313  */
18314 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
18315
18316 /**
18317  * Creates a new CResult_InvoiceSignOrCreationErrorZ in the error state.
18318  */
18319 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
18320
18321 /**
18322  * Checks if the given object is currently in the success state
18323  */
18324 bool CResult_InvoiceSignOrCreationErrorZ_is_ok(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR o);
18325
18326 /**
18327  * Frees any resources used by the CResult_InvoiceSignOrCreationErrorZ.
18328  */
18329 void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
18330
18331 /**
18332  * Creates a new CResult_InvoiceSignOrCreationErrorZ which has the same data as `orig`
18333  * but with all dynamically-allocated buffers duplicated in new buffers.
18334  */
18335 struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
18336
18337 /**
18338  * Constructs a new COption_FilterZ containing a crate::lightning::chain::Filter
18339  */
18340 struct LDKCOption_FilterZ COption_FilterZ_some(struct LDKFilter o);
18341
18342 /**
18343  * Constructs a new COption_FilterZ containing nothing
18344  */
18345 struct LDKCOption_FilterZ COption_FilterZ_none(void);
18346
18347 /**
18348  * Frees any resources associated with the crate::lightning::chain::Filter, if we are in the Some state
18349  */
18350 void COption_FilterZ_free(struct LDKCOption_FilterZ _res);
18351
18352 /**
18353  * Creates a new CResult_LockedChannelMonitorNoneZ in the success state.
18354  */
18355 struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_ok(struct LDKLockedChannelMonitor o);
18356
18357 /**
18358  * Creates a new CResult_LockedChannelMonitorNoneZ in the error state.
18359  */
18360 struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_err(void);
18361
18362 /**
18363  * Checks if the given object is currently in the success state
18364  */
18365 bool CResult_LockedChannelMonitorNoneZ_is_ok(const struct LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR o);
18366
18367 /**
18368  * Frees any resources used by the CResult_LockedChannelMonitorNoneZ.
18369  */
18370 void CResult_LockedChannelMonitorNoneZ_free(struct LDKCResult_LockedChannelMonitorNoneZ _res);
18371
18372 /**
18373  * Frees the buffer pointed to by `data` if `datalen` is non-0.
18374  */
18375 void CVec_OutPointZ_free(struct LDKCVec_OutPointZ _res);
18376
18377 /**
18378  * Frees any resources used by the PaymentPurpose
18379  */
18380 void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
18381
18382 /**
18383  * Creates a copy of the PaymentPurpose
18384  */
18385 struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
18386
18387 /**
18388  * Utility method to constructs a new InvoicePayment-variant PaymentPurpose
18389  */
18390 struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret);
18391
18392 /**
18393  * Utility method to constructs a new SpontaneousPayment-variant PaymentPurpose
18394  */
18395 struct LDKPaymentPurpose PaymentPurpose_spontaneous_payment(struct LDKThirtyTwoBytes a);
18396
18397 /**
18398  * Serialize the PaymentPurpose object into a byte array which can be read by PaymentPurpose_read
18399  */
18400 struct LDKCVec_u8Z PaymentPurpose_write(const struct LDKPaymentPurpose *NONNULL_PTR obj);
18401
18402 /**
18403  * Read a PaymentPurpose from a byte array, created by PaymentPurpose_write
18404  */
18405 struct LDKCResult_PaymentPurposeDecodeErrorZ PaymentPurpose_read(struct LDKu8slice ser);
18406
18407 /**
18408  * Frees any resources used by the ClosureReason
18409  */
18410 void ClosureReason_free(struct LDKClosureReason this_ptr);
18411
18412 /**
18413  * Creates a copy of the ClosureReason
18414  */
18415 struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
18416
18417 /**
18418  * Utility method to constructs a new CounterpartyForceClosed-variant ClosureReason
18419  */
18420 struct LDKClosureReason ClosureReason_counterparty_force_closed(struct LDKStr peer_msg);
18421
18422 /**
18423  * Utility method to constructs a new HolderForceClosed-variant ClosureReason
18424  */
18425 struct LDKClosureReason ClosureReason_holder_force_closed(void);
18426
18427 /**
18428  * Utility method to constructs a new CooperativeClosure-variant ClosureReason
18429  */
18430 struct LDKClosureReason ClosureReason_cooperative_closure(void);
18431
18432 /**
18433  * Utility method to constructs a new CommitmentTxConfirmed-variant ClosureReason
18434  */
18435 struct LDKClosureReason ClosureReason_commitment_tx_confirmed(void);
18436
18437 /**
18438  * Utility method to constructs a new FundingTimedOut-variant ClosureReason
18439  */
18440 struct LDKClosureReason ClosureReason_funding_timed_out(void);
18441
18442 /**
18443  * Utility method to constructs a new ProcessingError-variant ClosureReason
18444  */
18445 struct LDKClosureReason ClosureReason_processing_error(struct LDKStr err);
18446
18447 /**
18448  * Utility method to constructs a new DisconnectedPeer-variant ClosureReason
18449  */
18450 struct LDKClosureReason ClosureReason_disconnected_peer(void);
18451
18452 /**
18453  * Utility method to constructs a new OutdatedChannelManager-variant ClosureReason
18454  */
18455 struct LDKClosureReason ClosureReason_outdated_channel_manager(void);
18456
18457 /**
18458  * Serialize the ClosureReason object into a byte array which can be read by ClosureReason_read
18459  */
18460 struct LDKCVec_u8Z ClosureReason_write(const struct LDKClosureReason *NONNULL_PTR obj);
18461
18462 /**
18463  * Read a ClosureReason from a byte array, created by ClosureReason_write
18464  */
18465 struct LDKCResult_COption_ClosureReasonZDecodeErrorZ ClosureReason_read(struct LDKu8slice ser);
18466
18467 /**
18468  * Frees any resources used by the HTLCDestination
18469  */
18470 void HTLCDestination_free(struct LDKHTLCDestination this_ptr);
18471
18472 /**
18473  * Creates a copy of the HTLCDestination
18474  */
18475 struct LDKHTLCDestination HTLCDestination_clone(const struct LDKHTLCDestination *NONNULL_PTR orig);
18476
18477 /**
18478  * Utility method to constructs a new NextHopChannel-variant HTLCDestination
18479  */
18480 struct LDKHTLCDestination HTLCDestination_next_hop_channel(struct LDKPublicKey node_id, struct LDKThirtyTwoBytes channel_id);
18481
18482 /**
18483  * Utility method to constructs a new UnknownNextHop-variant HTLCDestination
18484  */
18485 struct LDKHTLCDestination HTLCDestination_unknown_next_hop(uint64_t requested_forward_scid);
18486
18487 /**
18488  * Utility method to constructs a new FailedPayment-variant HTLCDestination
18489  */
18490 struct LDKHTLCDestination HTLCDestination_failed_payment(struct LDKThirtyTwoBytes payment_hash);
18491
18492 /**
18493  * Serialize the HTLCDestination object into a byte array which can be read by HTLCDestination_read
18494  */
18495 struct LDKCVec_u8Z HTLCDestination_write(const struct LDKHTLCDestination *NONNULL_PTR obj);
18496
18497 /**
18498  * Read a HTLCDestination from a byte array, created by HTLCDestination_write
18499  */
18500 struct LDKCResult_COption_HTLCDestinationZDecodeErrorZ HTLCDestination_read(struct LDKu8slice ser);
18501
18502 /**
18503  * Frees any resources used by the Event
18504  */
18505 void Event_free(struct LDKEvent this_ptr);
18506
18507 /**
18508  * Creates a copy of the Event
18509  */
18510 struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
18511
18512 /**
18513  * Utility method to constructs a new FundingGenerationReady-variant Event
18514  */
18515 struct LDKEvent Event_funding_generation_ready(struct LDKThirtyTwoBytes temporary_channel_id, struct LDKPublicKey counterparty_node_id, uint64_t channel_value_satoshis, struct LDKCVec_u8Z output_script, uint64_t user_channel_id);
18516
18517 /**
18518  * Utility method to constructs a new PaymentReceived-variant Event
18519  */
18520 struct LDKEvent Event_payment_received(struct LDKThirtyTwoBytes payment_hash, uint64_t amount_msat, struct LDKPaymentPurpose purpose);
18521
18522 /**
18523  * Utility method to constructs a new PaymentClaimed-variant Event
18524  */
18525 struct LDKEvent Event_payment_claimed(struct LDKThirtyTwoBytes payment_hash, uint64_t amount_msat, struct LDKPaymentPurpose purpose);
18526
18527 /**
18528  * Utility method to constructs a new PaymentSent-variant Event
18529  */
18530 struct LDKEvent Event_payment_sent(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_hash, struct LDKCOption_u64Z fee_paid_msat);
18531
18532 /**
18533  * Utility method to constructs a new PaymentFailed-variant Event
18534  */
18535 struct LDKEvent Event_payment_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash);
18536
18537 /**
18538  * Utility method to constructs a new PaymentPathSuccessful-variant Event
18539  */
18540 struct LDKEvent Event_payment_path_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
18541
18542 /**
18543  * Utility method to constructs a new PaymentPathFailed-variant Event
18544  */
18545 struct LDKEvent Event_payment_path_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, bool payment_failed_permanently, struct LDKCOption_NetworkUpdateZ network_update, bool all_paths_failed, struct LDKCVec_RouteHopZ path, struct LDKCOption_u64Z short_channel_id, struct LDKRouteParameters retry);
18546
18547 /**
18548  * Utility method to constructs a new ProbeSuccessful-variant Event
18549  */
18550 struct LDKEvent Event_probe_successful(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path);
18551
18552 /**
18553  * Utility method to constructs a new ProbeFailed-variant Event
18554  */
18555 struct LDKEvent Event_probe_failed(struct LDKThirtyTwoBytes payment_id, struct LDKThirtyTwoBytes payment_hash, struct LDKCVec_RouteHopZ path, struct LDKCOption_u64Z short_channel_id);
18556
18557 /**
18558  * Utility method to constructs a new PendingHTLCsForwardable-variant Event
18559  */
18560 struct LDKEvent Event_pending_htlcs_forwardable(uint64_t time_forwardable);
18561
18562 /**
18563  * Utility method to constructs a new SpendableOutputs-variant Event
18564  */
18565 struct LDKEvent Event_spendable_outputs(struct LDKCVec_SpendableOutputDescriptorZ outputs);
18566
18567 /**
18568  * Utility method to constructs a new PaymentForwarded-variant Event
18569  */
18570 struct LDKEvent Event_payment_forwarded(struct LDKThirtyTwoBytes prev_channel_id, struct LDKThirtyTwoBytes next_channel_id, struct LDKCOption_u64Z fee_earned_msat, bool claim_from_onchain_tx);
18571
18572 /**
18573  * Utility method to constructs a new ChannelClosed-variant Event
18574  */
18575 struct LDKEvent Event_channel_closed(struct LDKThirtyTwoBytes channel_id, uint64_t user_channel_id, struct LDKClosureReason reason);
18576
18577 /**
18578  * Utility method to constructs a new DiscardFunding-variant Event
18579  */
18580 struct LDKEvent Event_discard_funding(struct LDKThirtyTwoBytes channel_id, struct LDKTransaction transaction);
18581
18582 /**
18583  * Utility method to constructs a new OpenChannelRequest-variant Event
18584  */
18585 struct LDKEvent Event_open_channel_request(struct LDKThirtyTwoBytes temporary_channel_id, struct LDKPublicKey counterparty_node_id, uint64_t funding_satoshis, uint64_t push_msat, struct LDKChannelTypeFeatures channel_type);
18586
18587 /**
18588  * Utility method to constructs a new HTLCHandlingFailed-variant Event
18589  */
18590 struct LDKEvent Event_htlchandling_failed(struct LDKThirtyTwoBytes prev_channel_id, struct LDKHTLCDestination failed_next_destination);
18591
18592 /**
18593  * Serialize the Event object into a byte array which can be read by Event_read
18594  */
18595 struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
18596
18597 /**
18598  * Read a Event from a byte array, created by Event_write
18599  */
18600 struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
18601
18602 /**
18603  * Frees any resources used by the MessageSendEvent
18604  */
18605 void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
18606
18607 /**
18608  * Creates a copy of the MessageSendEvent
18609  */
18610 struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
18611
18612 /**
18613  * Utility method to constructs a new SendAcceptChannel-variant MessageSendEvent
18614  */
18615 struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
18616
18617 /**
18618  * Utility method to constructs a new SendOpenChannel-variant MessageSendEvent
18619  */
18620 struct LDKMessageSendEvent MessageSendEvent_send_open_channel(struct LDKPublicKey node_id, struct LDKOpenChannel msg);
18621
18622 /**
18623  * Utility method to constructs a new SendFundingCreated-variant MessageSendEvent
18624  */
18625 struct LDKMessageSendEvent MessageSendEvent_send_funding_created(struct LDKPublicKey node_id, struct LDKFundingCreated msg);
18626
18627 /**
18628  * Utility method to constructs a new SendFundingSigned-variant MessageSendEvent
18629  */
18630 struct LDKMessageSendEvent MessageSendEvent_send_funding_signed(struct LDKPublicKey node_id, struct LDKFundingSigned msg);
18631
18632 /**
18633  * Utility method to constructs a new SendChannelReady-variant MessageSendEvent
18634  */
18635 struct LDKMessageSendEvent MessageSendEvent_send_channel_ready(struct LDKPublicKey node_id, struct LDKChannelReady msg);
18636
18637 /**
18638  * Utility method to constructs a new SendAnnouncementSignatures-variant MessageSendEvent
18639  */
18640 struct LDKMessageSendEvent MessageSendEvent_send_announcement_signatures(struct LDKPublicKey node_id, struct LDKAnnouncementSignatures msg);
18641
18642 /**
18643  * Utility method to constructs a new UpdateHTLCs-variant MessageSendEvent
18644  */
18645 struct LDKMessageSendEvent MessageSendEvent_update_htlcs(struct LDKPublicKey node_id, struct LDKCommitmentUpdate updates);
18646
18647 /**
18648  * Utility method to constructs a new SendRevokeAndACK-variant MessageSendEvent
18649  */
18650 struct LDKMessageSendEvent MessageSendEvent_send_revoke_and_ack(struct LDKPublicKey node_id, struct LDKRevokeAndACK msg);
18651
18652 /**
18653  * Utility method to constructs a new SendClosingSigned-variant MessageSendEvent
18654  */
18655 struct LDKMessageSendEvent MessageSendEvent_send_closing_signed(struct LDKPublicKey node_id, struct LDKClosingSigned msg);
18656
18657 /**
18658  * Utility method to constructs a new SendShutdown-variant MessageSendEvent
18659  */
18660 struct LDKMessageSendEvent MessageSendEvent_send_shutdown(struct LDKPublicKey node_id, struct LDKShutdown msg);
18661
18662 /**
18663  * Utility method to constructs a new SendChannelReestablish-variant MessageSendEvent
18664  */
18665 struct LDKMessageSendEvent MessageSendEvent_send_channel_reestablish(struct LDKPublicKey node_id, struct LDKChannelReestablish msg);
18666
18667 /**
18668  * Utility method to constructs a new SendChannelAnnouncement-variant MessageSendEvent
18669  */
18670 struct LDKMessageSendEvent MessageSendEvent_send_channel_announcement(struct LDKPublicKey node_id, struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
18671
18672 /**
18673  * Utility method to constructs a new BroadcastChannelAnnouncement-variant MessageSendEvent
18674  */
18675 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_announcement(struct LDKChannelAnnouncement msg, struct LDKChannelUpdate update_msg);
18676
18677 /**
18678  * Utility method to constructs a new BroadcastChannelUpdate-variant MessageSendEvent
18679  */
18680 struct LDKMessageSendEvent MessageSendEvent_broadcast_channel_update(struct LDKChannelUpdate msg);
18681
18682 /**
18683  * Utility method to constructs a new SendChannelUpdate-variant MessageSendEvent
18684  */
18685 struct LDKMessageSendEvent MessageSendEvent_send_channel_update(struct LDKPublicKey node_id, struct LDKChannelUpdate msg);
18686
18687 /**
18688  * Utility method to constructs a new HandleError-variant MessageSendEvent
18689  */
18690 struct LDKMessageSendEvent MessageSendEvent_handle_error(struct LDKPublicKey node_id, struct LDKErrorAction action);
18691
18692 /**
18693  * Utility method to constructs a new SendChannelRangeQuery-variant MessageSendEvent
18694  */
18695 struct LDKMessageSendEvent MessageSendEvent_send_channel_range_query(struct LDKPublicKey node_id, struct LDKQueryChannelRange msg);
18696
18697 /**
18698  * Utility method to constructs a new SendShortIdsQuery-variant MessageSendEvent
18699  */
18700 struct LDKMessageSendEvent MessageSendEvent_send_short_ids_query(struct LDKPublicKey node_id, struct LDKQueryShortChannelIds msg);
18701
18702 /**
18703  * Utility method to constructs a new SendReplyChannelRange-variant MessageSendEvent
18704  */
18705 struct LDKMessageSendEvent MessageSendEvent_send_reply_channel_range(struct LDKPublicKey node_id, struct LDKReplyChannelRange msg);
18706
18707 /**
18708  * Utility method to constructs a new SendGossipTimestampFilter-variant MessageSendEvent
18709  */
18710 struct LDKMessageSendEvent MessageSendEvent_send_gossip_timestamp_filter(struct LDKPublicKey node_id, struct LDKGossipTimestampFilter msg);
18711
18712 /**
18713  * Calls the free function if one is set
18714  */
18715 void MessageSendEventsProvider_free(struct LDKMessageSendEventsProvider this_ptr);
18716
18717 /**
18718  * Calls the free function if one is set
18719  */
18720 void OnionMessageProvider_free(struct LDKOnionMessageProvider this_ptr);
18721
18722 /**
18723  * Calls the free function if one is set
18724  */
18725 void EventsProvider_free(struct LDKEventsProvider this_ptr);
18726
18727 /**
18728  * Calls the free function if one is set
18729  */
18730 void EventHandler_free(struct LDKEventHandler this_ptr);
18731
18732 /**
18733  * Frees any resources used by the APIError
18734  */
18735 void APIError_free(struct LDKAPIError this_ptr);
18736
18737 /**
18738  * Creates a copy of the APIError
18739  */
18740 struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
18741
18742 /**
18743  * Utility method to constructs a new APIMisuseError-variant APIError
18744  */
18745 struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
18746
18747 /**
18748  * Utility method to constructs a new FeeRateTooHigh-variant APIError
18749  */
18750 struct LDKAPIError APIError_fee_rate_too_high(struct LDKStr err, uint32_t feerate);
18751
18752 /**
18753  * Utility method to constructs a new RouteError-variant APIError
18754  */
18755 struct LDKAPIError APIError_route_error(struct LDKStr err);
18756
18757 /**
18758  * Utility method to constructs a new ChannelUnavailable-variant APIError
18759  */
18760 struct LDKAPIError APIError_channel_unavailable(struct LDKStr err);
18761
18762 /**
18763  * Utility method to constructs a new MonitorUpdateFailed-variant APIError
18764  */
18765 struct LDKAPIError APIError_monitor_update_failed(void);
18766
18767 /**
18768  * Utility method to constructs a new IncompatibleShutdownScript-variant APIError
18769  */
18770 struct LDKAPIError APIError_incompatible_shutdown_script(struct LDKShutdownScript script);
18771
18772 /**
18773  * Frees any resources used by the BigSize, if is_owned is set and inner is non-NULL.
18774  */
18775 void BigSize_free(struct LDKBigSize this_obj);
18776
18777 uint64_t BigSize_get_a(const struct LDKBigSize *NONNULL_PTR this_ptr);
18778
18779 void BigSize_set_a(struct LDKBigSize *NONNULL_PTR this_ptr, uint64_t val);
18780
18781 /**
18782  * Constructs a new BigSize given each field
18783  */
18784 MUST_USE_RES struct LDKBigSize BigSize_new(uint64_t a_arg);
18785
18786 /**
18787  * Frees any resources used by the Hostname, if is_owned is set and inner is non-NULL.
18788  */
18789 void Hostname_free(struct LDKHostname this_obj);
18790
18791 /**
18792  * Creates a copy of the Hostname
18793  */
18794 struct LDKHostname Hostname_clone(const struct LDKHostname *NONNULL_PTR orig);
18795
18796 /**
18797  * Returns the length of the hostname.
18798  */
18799 MUST_USE_RES uint8_t Hostname_len(const struct LDKHostname *NONNULL_PTR this_arg);
18800
18801 /**
18802  * Creates a digital signature of a message given a SecretKey, like the node's secret.
18803  * 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.
18804  * Signatures are EC recoverable, meaning that given the message and the signature the PublicKey of the signer can be extracted.
18805  */
18806 struct LDKCResult_StringErrorZ sign(struct LDKu8slice msg, const uint8_t (*sk)[32]);
18807
18808 /**
18809  * Recovers the PublicKey of the signer of the message given the message and the signature.
18810  */
18811 struct LDKCResult_PublicKeyErrorZ recover_pk(struct LDKu8slice msg, struct LDKStr sig);
18812
18813 /**
18814  * Verifies a message was signed by a PrivateKey that derives to a given PublicKey, given a message, a signature,
18815  * and the PublicKey.
18816  */
18817 bool verify(struct LDKu8slice msg, struct LDKStr sig, struct LDKPublicKey pk);
18818
18819 /**
18820  * Construct the invoice's HRP and signatureless data into a preimage to be hashed.
18821  */
18822 struct LDKCVec_u8Z construct_invoice_preimage(struct LDKu8slice hrp_bytes, struct LDKCVec_u5Z data_without_signature);
18823
18824 /**
18825  * Calls the free function if one is set
18826  */
18827 void Persister_free(struct LDKPersister this_ptr);
18828
18829 /**
18830  * Calls the free function if one is set
18831  */
18832 void FutureCallback_free(struct LDKFutureCallback this_ptr);
18833
18834 /**
18835  * Frees any resources used by the Future, if is_owned is set and inner is non-NULL.
18836  */
18837 void Future_free(struct LDKFuture this_obj);
18838
18839 /**
18840  * Registers a callback to be called upon completion of this future. If the future has already
18841  * completed, the callback will be called immediately.
18842  */
18843 void Future_register_callback_fn(const struct LDKFuture *NONNULL_PTR this_arg, struct LDKFutureCallback callback);
18844
18845 /**
18846  * Creates a copy of the Level
18847  */
18848 enum LDKLevel Level_clone(const enum LDKLevel *NONNULL_PTR orig);
18849
18850 /**
18851  * Utility method to constructs a new Gossip-variant Level
18852  */
18853 enum LDKLevel Level_gossip(void);
18854
18855 /**
18856  * Utility method to constructs a new Trace-variant Level
18857  */
18858 enum LDKLevel Level_trace(void);
18859
18860 /**
18861  * Utility method to constructs a new Debug-variant Level
18862  */
18863 enum LDKLevel Level_debug(void);
18864
18865 /**
18866  * Utility method to constructs a new Info-variant Level
18867  */
18868 enum LDKLevel Level_info(void);
18869
18870 /**
18871  * Utility method to constructs a new Warn-variant Level
18872  */
18873 enum LDKLevel Level_warn(void);
18874
18875 /**
18876  * Utility method to constructs a new Error-variant Level
18877  */
18878 enum LDKLevel Level_error(void);
18879
18880 /**
18881  * Checks if two Levels contain equal inner contents.
18882  * This ignores pointers and is_owned flags and looks at the values in fields.
18883  */
18884 bool Level_eq(const enum LDKLevel *NONNULL_PTR a, const enum LDKLevel *NONNULL_PTR b);
18885
18886 /**
18887  * Checks if two Levels contain equal inner contents.
18888  */
18889 uint64_t Level_hash(const enum LDKLevel *NONNULL_PTR o);
18890
18891 /**
18892  * Returns the most verbose logging level.
18893  */
18894 MUST_USE_RES enum LDKLevel Level_max(void);
18895
18896 /**
18897  * Frees any resources used by the Record, if is_owned is set and inner is non-NULL.
18898  */
18899 void Record_free(struct LDKRecord this_obj);
18900
18901 /**
18902  * The verbosity level of the message.
18903  */
18904 enum LDKLevel Record_get_level(const struct LDKRecord *NONNULL_PTR this_ptr);
18905
18906 /**
18907  * The verbosity level of the message.
18908  */
18909 void Record_set_level(struct LDKRecord *NONNULL_PTR this_ptr, enum LDKLevel val);
18910
18911 /**
18912  * The message body.
18913  */
18914 struct LDKStr Record_get_args(const struct LDKRecord *NONNULL_PTR this_ptr);
18915
18916 /**
18917  * The message body.
18918  */
18919 void Record_set_args(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
18920
18921 /**
18922  * The module path of the message.
18923  */
18924 struct LDKStr Record_get_module_path(const struct LDKRecord *NONNULL_PTR this_ptr);
18925
18926 /**
18927  * The module path of the message.
18928  */
18929 void Record_set_module_path(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
18930
18931 /**
18932  * The source file containing the message.
18933  */
18934 struct LDKStr Record_get_file(const struct LDKRecord *NONNULL_PTR this_ptr);
18935
18936 /**
18937  * The source file containing the message.
18938  */
18939 void Record_set_file(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
18940
18941 /**
18942  * The line containing the message.
18943  */
18944 uint32_t Record_get_line(const struct LDKRecord *NONNULL_PTR this_ptr);
18945
18946 /**
18947  * The line containing the message.
18948  */
18949 void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
18950
18951 /**
18952  * Creates a copy of the Record
18953  */
18954 struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
18955
18956 /**
18957  * Calls the free function if one is set
18958  */
18959 void Logger_free(struct LDKLogger this_ptr);
18960
18961 /**
18962  * Frees any resources used by the ChannelHandshakeConfig, if is_owned is set and inner is non-NULL.
18963  */
18964 void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
18965
18966 /**
18967  * Confirmations we will wait for before considering the channel locked in.
18968  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
18969  * equivalent limit applied to outbound channels).
18970  *
18971  * A lower-bound of 1 is applied, requiring all channels to have a confirmed commitment
18972  * transaction before operation. If you wish to accept channels with zero confirmations, see
18973  * [`UserConfig::manually_accept_inbound_channels`] and
18974  * [`ChannelManager::accept_inbound_channel_from_trusted_peer_0conf`].
18975  *
18976  * Default value: 6.
18977  *
18978  * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
18979  * [`ChannelManager::accept_inbound_channel_from_trusted_peer_0conf`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel_from_trusted_peer_0conf
18980  */
18981 uint32_t ChannelHandshakeConfig_get_minimum_depth(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
18982
18983 /**
18984  * Confirmations we will wait for before considering the channel locked in.
18985  * Applied only for inbound channels (see ChannelHandshakeLimits::max_minimum_depth for the
18986  * equivalent limit applied to outbound channels).
18987  *
18988  * A lower-bound of 1 is applied, requiring all channels to have a confirmed commitment
18989  * transaction before operation. If you wish to accept channels with zero confirmations, see
18990  * [`UserConfig::manually_accept_inbound_channels`] and
18991  * [`ChannelManager::accept_inbound_channel_from_trusted_peer_0conf`].
18992  *
18993  * Default value: 6.
18994  *
18995  * [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
18996  * [`ChannelManager::accept_inbound_channel_from_trusted_peer_0conf`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel_from_trusted_peer_0conf
18997  */
18998 void ChannelHandshakeConfig_set_minimum_depth(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
18999
19000 /**
19001  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
19002  * the number of blocks we have to punish our counterparty if they broadcast a revoked
19003  * transaction).
19004  *
19005  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
19006  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
19007  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
19008  * possibly with time in between to RBF the spending transaction).
19009  *
19010  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
19011  * case of an honest unilateral channel close, which implicitly decrease the economic value of
19012  * our channel.
19013  *
19014  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
19015  * can tweak config to ask for more security, not less.
19016  */
19017 uint16_t ChannelHandshakeConfig_get_our_to_self_delay(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19018
19019 /**
19020  * Set to the number of blocks we require our counterparty to wait to claim their money (ie
19021  * the number of blocks we have to punish our counterparty if they broadcast a revoked
19022  * transaction).
19023  *
19024  * This is one of the main parameters of our security model. We (or one of our watchtowers) MUST
19025  * be online to check for revoked transactions on-chain at least once every our_to_self_delay
19026  * blocks (minus some margin to allow us enough time to broadcast and confirm a transaction,
19027  * possibly with time in between to RBF the spending transaction).
19028  *
19029  * Meanwhile, asking for a too high delay, we bother peer to freeze funds for nothing in
19030  * case of an honest unilateral channel close, which implicitly decrease the economic value of
19031  * our channel.
19032  *
19033  * Default value: [`BREAKDOWN_TIMEOUT`], we enforce it as a minimum at channel opening so you
19034  * can tweak config to ask for more security, not less.
19035  */
19036 void ChannelHandshakeConfig_set_our_to_self_delay(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint16_t val);
19037
19038 /**
19039  * Set to the smallest value HTLC we will accept to process.
19040  *
19041  * This value is sent to our counterparty on channel-open and we close the channel any time
19042  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
19043  *
19044  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
19045  * by the protocol.
19046  */
19047 uint64_t ChannelHandshakeConfig_get_our_htlc_minimum_msat(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19048
19049 /**
19050  * Set to the smallest value HTLC we will accept to process.
19051  *
19052  * This value is sent to our counterparty on channel-open and we close the channel any time
19053  * our counterparty misbehaves by sending us an HTLC with a value smaller than this.
19054  *
19055  * Default value: 1. If the value is less than 1, it is ignored and set to 1, as is required
19056  * by the protocol.
19057  */
19058 void ChannelHandshakeConfig_set_our_htlc_minimum_msat(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint64_t val);
19059
19060 /**
19061  * Sets the percentage of the channel value we will cap the total value of outstanding inbound
19062  * HTLCs to.
19063  *
19064  * This can be set to a value between 1-100, where the value corresponds to the percent of the
19065  * channel value in whole percentages.
19066  *
19067  * Note that:
19068  * * If configured to another value than the default value 10, any new channels created with
19069  * the non default value will cause versions of LDK prior to 0.0.104 to refuse to read the
19070  * `ChannelManager`.
19071  *
19072  * * This caps the total value for inbound HTLCs in-flight only, and there's currently
19073  * no way to configure the cap for the total value of outbound HTLCs in-flight.
19074  *
19075  * * The requirements for your node being online to ensure the safety of HTLC-encumbered funds
19076  * are different from the non-HTLC-encumbered funds. This makes this an important knob to
19077  * restrict exposure to loss due to being offline for too long.
19078  * See [`ChannelHandshakeConfig::our_to_self_delay`] and [`ChannelConfig::cltv_expiry_delta`]
19079  * for more information.
19080  *
19081  * Default value: 10.
19082  * Minimum value: 1, any values less than 1 will be treated as 1 instead.
19083  * Maximum value: 100, any values larger than 100 will be treated as 100 instead.
19084  */
19085 uint8_t ChannelHandshakeConfig_get_max_inbound_htlc_value_in_flight_percent_of_channel(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19086
19087 /**
19088  * Sets the percentage of the channel value we will cap the total value of outstanding inbound
19089  * HTLCs to.
19090  *
19091  * This can be set to a value between 1-100, where the value corresponds to the percent of the
19092  * channel value in whole percentages.
19093  *
19094  * Note that:
19095  * * If configured to another value than the default value 10, any new channels created with
19096  * the non default value will cause versions of LDK prior to 0.0.104 to refuse to read the
19097  * `ChannelManager`.
19098  *
19099  * * This caps the total value for inbound HTLCs in-flight only, and there's currently
19100  * no way to configure the cap for the total value of outbound HTLCs in-flight.
19101  *
19102  * * The requirements for your node being online to ensure the safety of HTLC-encumbered funds
19103  * are different from the non-HTLC-encumbered funds. This makes this an important knob to
19104  * restrict exposure to loss due to being offline for too long.
19105  * See [`ChannelHandshakeConfig::our_to_self_delay`] and [`ChannelConfig::cltv_expiry_delta`]
19106  * for more information.
19107  *
19108  * Default value: 10.
19109  * Minimum value: 1, any values less than 1 will be treated as 1 instead.
19110  * Maximum value: 100, any values larger than 100 will be treated as 100 instead.
19111  */
19112 void ChannelHandshakeConfig_set_max_inbound_htlc_value_in_flight_percent_of_channel(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint8_t val);
19113
19114 /**
19115  * If set, we attempt to negotiate the `scid_privacy` (referred to as `scid_alias` in the
19116  * BOLTs) option for outbound private channels. This provides better privacy by not including
19117  * our real on-chain channel UTXO in each invoice and requiring that our counterparty only
19118  * relay HTLCs to us using the channel's SCID alias.
19119  *
19120  * If this option is set, channels may be created that will not be readable by LDK versions
19121  * prior to 0.0.106, causing [`ChannelManager`]'s read method to return a
19122  * [`DecodeError::InvalidValue`].
19123  *
19124  * Note that setting this to true does *not* prevent us from opening channels with
19125  * counterparties that do not support the `scid_alias` option; we will simply fall back to a
19126  * private channel without that option.
19127  *
19128  * Ignored if the channel is negotiated to be announced, see
19129  * [`ChannelHandshakeConfig::announced_channel`] and
19130  * [`ChannelHandshakeLimits::force_announced_channel_preference`] for more.
19131  *
19132  * Default value: false. This value is likely to change to true in the future.
19133  *
19134  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
19135  * [`DecodeError::InvalidValue`]: crate::ln::msgs::DecodeError::InvalidValue
19136  */
19137 bool ChannelHandshakeConfig_get_negotiate_scid_privacy(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19138
19139 /**
19140  * If set, we attempt to negotiate the `scid_privacy` (referred to as `scid_alias` in the
19141  * BOLTs) option for outbound private channels. This provides better privacy by not including
19142  * our real on-chain channel UTXO in each invoice and requiring that our counterparty only
19143  * relay HTLCs to us using the channel's SCID alias.
19144  *
19145  * If this option is set, channels may be created that will not be readable by LDK versions
19146  * prior to 0.0.106, causing [`ChannelManager`]'s read method to return a
19147  * [`DecodeError::InvalidValue`].
19148  *
19149  * Note that setting this to true does *not* prevent us from opening channels with
19150  * counterparties that do not support the `scid_alias` option; we will simply fall back to a
19151  * private channel without that option.
19152  *
19153  * Ignored if the channel is negotiated to be announced, see
19154  * [`ChannelHandshakeConfig::announced_channel`] and
19155  * [`ChannelHandshakeLimits::force_announced_channel_preference`] for more.
19156  *
19157  * Default value: false. This value is likely to change to true in the future.
19158  *
19159  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
19160  * [`DecodeError::InvalidValue`]: crate::ln::msgs::DecodeError::InvalidValue
19161  */
19162 void ChannelHandshakeConfig_set_negotiate_scid_privacy(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, bool val);
19163
19164 /**
19165  * Set to announce the channel publicly and notify all nodes that they can route via this
19166  * channel.
19167  *
19168  * This should only be set to true for nodes which expect to be online reliably.
19169  *
19170  * As the node which funds a channel picks this value this will only apply for new outbound
19171  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
19172  *
19173  * Default value: false.
19174  */
19175 bool ChannelHandshakeConfig_get_announced_channel(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19176
19177 /**
19178  * Set to announce the channel publicly and notify all nodes that they can route via this
19179  * channel.
19180  *
19181  * This should only be set to true for nodes which expect to be online reliably.
19182  *
19183  * As the node which funds a channel picks this value this will only apply for new outbound
19184  * channels unless [`ChannelHandshakeLimits::force_announced_channel_preference`] is set.
19185  *
19186  * Default value: false.
19187  */
19188 void ChannelHandshakeConfig_set_announced_channel(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, bool val);
19189
19190 /**
19191  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
19192  * supports it, they will then enforce the mutual-close output to us matches what we provided
19193  * at intialization, preventing us from closing to an alternate pubkey.
19194  *
19195  * This is set to true by default to provide a slight increase in security, though ultimately
19196  * any attacker who is able to take control of a channel can just as easily send the funds via
19197  * lightning payments, so we never require that our counterparties support this option.
19198  *
19199  * The upfront key committed is provided from [`KeysInterface::get_shutdown_scriptpubkey`].
19200  *
19201  * Default value: true.
19202  *
19203  * [`KeysInterface::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::KeysInterface::get_shutdown_scriptpubkey
19204  */
19205 bool ChannelHandshakeConfig_get_commit_upfront_shutdown_pubkey(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19206
19207 /**
19208  * When set, we commit to an upfront shutdown_pubkey at channel open. If our counterparty
19209  * supports it, they will then enforce the mutual-close output to us matches what we provided
19210  * at intialization, preventing us from closing to an alternate pubkey.
19211  *
19212  * This is set to true by default to provide a slight increase in security, though ultimately
19213  * any attacker who is able to take control of a channel can just as easily send the funds via
19214  * lightning payments, so we never require that our counterparties support this option.
19215  *
19216  * The upfront key committed is provided from [`KeysInterface::get_shutdown_scriptpubkey`].
19217  *
19218  * Default value: true.
19219  *
19220  * [`KeysInterface::get_shutdown_scriptpubkey`]: crate::chain::keysinterface::KeysInterface::get_shutdown_scriptpubkey
19221  */
19222 void ChannelHandshakeConfig_set_commit_upfront_shutdown_pubkey(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, bool val);
19223
19224 /**
19225  * The Proportion of the channel value to configure as counterparty's channel reserve,
19226  * i.e., `their_channel_reserve_satoshis` for both outbound and inbound channels.
19227  *
19228  * `their_channel_reserve_satoshis` is the minimum balance that the other node has to maintain
19229  * on their side, at all times.
19230  * This ensures that if our counterparty broadcasts a revoked state, we can punish them by
19231  * claiming at least this value on chain.
19232  *
19233  * Channel reserve values greater than 30% could be considered highly unreasonable, since that
19234  * amount can never be used for payments.
19235  * Also, if our selected channel reserve for counterparty and counterparty's selected
19236  * channel reserve for us sum up to equal or greater than channel value, channel negotiations
19237  * will fail.
19238  *
19239  * Note: Versions of LDK earlier than v0.0.104 will fail to read channels with any channel reserve
19240  * other than the default value.
19241  *
19242  * Default value: 1% of channel value, i.e., configured as 10,000 millionths.
19243  * Minimum value: If the calculated proportional value is less than 1000 sats, it will be treated
19244  *                as 1000 sats instead, which is a safe implementation-specific lower bound.
19245  * Maximum value: 1,000,000, any values larger than 1 Million will be treated as 1 Million (or 100%)
19246  *                instead, although channel negotiations will fail in that case.
19247  */
19248 uint32_t ChannelHandshakeConfig_get_their_channel_reserve_proportional_millionths(const struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr);
19249
19250 /**
19251  * The Proportion of the channel value to configure as counterparty's channel reserve,
19252  * i.e., `their_channel_reserve_satoshis` for both outbound and inbound channels.
19253  *
19254  * `their_channel_reserve_satoshis` is the minimum balance that the other node has to maintain
19255  * on their side, at all times.
19256  * This ensures that if our counterparty broadcasts a revoked state, we can punish them by
19257  * claiming at least this value on chain.
19258  *
19259  * Channel reserve values greater than 30% could be considered highly unreasonable, since that
19260  * amount can never be used for payments.
19261  * Also, if our selected channel reserve for counterparty and counterparty's selected
19262  * channel reserve for us sum up to equal or greater than channel value, channel negotiations
19263  * will fail.
19264  *
19265  * Note: Versions of LDK earlier than v0.0.104 will fail to read channels with any channel reserve
19266  * other than the default value.
19267  *
19268  * Default value: 1% of channel value, i.e., configured as 10,000 millionths.
19269  * Minimum value: If the calculated proportional value is less than 1000 sats, it will be treated
19270  *                as 1000 sats instead, which is a safe implementation-specific lower bound.
19271  * Maximum value: 1,000,000, any values larger than 1 Million will be treated as 1 Million (or 100%)
19272  *                instead, although channel negotiations will fail in that case.
19273  */
19274 void ChannelHandshakeConfig_set_their_channel_reserve_proportional_millionths(struct LDKChannelHandshakeConfig *NONNULL_PTR this_ptr, uint32_t val);
19275
19276 /**
19277  * Constructs a new ChannelHandshakeConfig given each field
19278  */
19279 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, uint8_t max_inbound_htlc_value_in_flight_percent_of_channel_arg, bool negotiate_scid_privacy_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg, uint32_t their_channel_reserve_proportional_millionths_arg);
19280
19281 /**
19282  * Creates a copy of the ChannelHandshakeConfig
19283  */
19284 struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
19285
19286 /**
19287  * Creates a "default" ChannelHandshakeConfig. See struct and individual field documentaiton for details on which values are used.
19288  */
19289 MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
19290
19291 /**
19292  * Frees any resources used by the ChannelHandshakeLimits, if is_owned is set and inner is non-NULL.
19293  */
19294 void ChannelHandshakeLimits_free(struct LDKChannelHandshakeLimits this_obj);
19295
19296 /**
19297  * Minimum allowed satoshis when a channel is funded. This is supplied by the sender and so
19298  * only applies to inbound channels.
19299  *
19300  * Default value: 0.
19301  */
19302 uint64_t ChannelHandshakeLimits_get_min_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19303
19304 /**
19305  * Minimum allowed satoshis when a channel is funded. This is supplied by the sender and so
19306  * only applies to inbound channels.
19307  *
19308  * Default value: 0.
19309  */
19310 void ChannelHandshakeLimits_set_min_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
19311
19312 /**
19313  * Maximum allowed satoshis when a channel is funded. This is supplied by the sender and so
19314  * only applies to inbound channels.
19315  *
19316  * Default value: 2^24 - 1.
19317  */
19318 uint64_t ChannelHandshakeLimits_get_max_funding_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19319
19320 /**
19321  * Maximum allowed satoshis when a channel is funded. This is supplied by the sender and so
19322  * only applies to inbound channels.
19323  *
19324  * Default value: 2^24 - 1.
19325  */
19326 void ChannelHandshakeLimits_set_max_funding_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
19327
19328 /**
19329  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
19330  * you to limit the maximum minimum-size they can require.
19331  *
19332  * Default value: u64::max_value.
19333  */
19334 uint64_t ChannelHandshakeLimits_get_max_htlc_minimum_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19335
19336 /**
19337  * The remote node sets a limit on the minimum size of HTLCs we can send to them. This allows
19338  * you to limit the maximum minimum-size they can require.
19339  *
19340  * Default value: u64::max_value.
19341  */
19342 void ChannelHandshakeLimits_set_max_htlc_minimum_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
19343
19344 /**
19345  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
19346  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
19347  *
19348  * Default value: 0.
19349  */
19350 uint64_t ChannelHandshakeLimits_get_min_max_htlc_value_in_flight_msat(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19351
19352 /**
19353  * The remote node sets a limit on the maximum value of pending HTLCs to them at any given
19354  * time to limit their funds exposure to HTLCs. This allows you to set a minimum such value.
19355  *
19356  * Default value: 0.
19357  */
19358 void ChannelHandshakeLimits_set_min_max_htlc_value_in_flight_msat(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
19359
19360 /**
19361  * The remote node will require we keep a certain amount in direct payment to ourselves at all
19362  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
19363  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
19364  *
19365  * Default value: u64::max_value.
19366  */
19367 uint64_t ChannelHandshakeLimits_get_max_channel_reserve_satoshis(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19368
19369 /**
19370  * The remote node will require we keep a certain amount in direct payment to ourselves at all
19371  * time, ensuring that we are able to be punished if we broadcast an old state. This allows to
19372  * you limit the amount which we will have to keep to ourselves (and cannot use for HTLCs).
19373  *
19374  * Default value: u64::max_value.
19375  */
19376 void ChannelHandshakeLimits_set_max_channel_reserve_satoshis(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint64_t val);
19377
19378 /**
19379  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
19380  * time. This allows you to set a minimum such value.
19381  *
19382  * Default value: 0.
19383  */
19384 uint16_t ChannelHandshakeLimits_get_min_max_accepted_htlcs(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19385
19386 /**
19387  * The remote node sets a limit on the maximum number of pending HTLCs to them at any given
19388  * time. This allows you to set a minimum such value.
19389  *
19390  * Default value: 0.
19391  */
19392 void ChannelHandshakeLimits_set_min_max_accepted_htlcs(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
19393
19394 /**
19395  * Before a channel is usable the funding transaction will need to be confirmed by at least a
19396  * certain number of blocks, specified by the node which is not the funder (as the funder can
19397  * assume they aren't going to double-spend themselves).
19398  * This config allows you to set a limit on the maximum amount of time to wait.
19399  *
19400  * Default value: 144, or roughly one day and only applies to outbound channels.
19401  */
19402 uint32_t ChannelHandshakeLimits_get_max_minimum_depth(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19403
19404 /**
19405  * Before a channel is usable the funding transaction will need to be confirmed by at least a
19406  * certain number of blocks, specified by the node which is not the funder (as the funder can
19407  * assume they aren't going to double-spend themselves).
19408  * This config allows you to set a limit on the maximum amount of time to wait.
19409  *
19410  * Default value: 144, or roughly one day and only applies to outbound channels.
19411  */
19412 void ChannelHandshakeLimits_set_max_minimum_depth(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint32_t val);
19413
19414 /**
19415  * Whether we implicitly trust funding transactions generated by us for our own outbound
19416  * channels to not be double-spent.
19417  *
19418  * If this is set, we assume that our own funding transactions are *never* double-spent, and
19419  * thus we can trust them without any confirmations. This is generally a reasonable
19420  * assumption, given we're the only ones who could ever double-spend it (assuming we have sole
19421  * control of the signing keys).
19422  *
19423  * You may wish to un-set this if you allow the user to (or do in an automated fashion)
19424  * double-spend the funding transaction to RBF with an alternative channel open.
19425  *
19426  * This only applies if our counterparty set their confirmations-required value to 0, and we
19427  * always trust our own funding transaction at 1 confirmation irrespective of this value.
19428  * Thus, this effectively acts as a `min_minimum_depth`, with the only possible values being
19429  * `true` (0) and `false` (1).
19430  *
19431  * Default value: true
19432  */
19433 bool ChannelHandshakeLimits_get_trust_own_funding_0conf(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19434
19435 /**
19436  * Whether we implicitly trust funding transactions generated by us for our own outbound
19437  * channels to not be double-spent.
19438  *
19439  * If this is set, we assume that our own funding transactions are *never* double-spent, and
19440  * thus we can trust them without any confirmations. This is generally a reasonable
19441  * assumption, given we're the only ones who could ever double-spend it (assuming we have sole
19442  * control of the signing keys).
19443  *
19444  * You may wish to un-set this if you allow the user to (or do in an automated fashion)
19445  * double-spend the funding transaction to RBF with an alternative channel open.
19446  *
19447  * This only applies if our counterparty set their confirmations-required value to 0, and we
19448  * always trust our own funding transaction at 1 confirmation irrespective of this value.
19449  * Thus, this effectively acts as a `min_minimum_depth`, with the only possible values being
19450  * `true` (0) and `false` (1).
19451  *
19452  * Default value: true
19453  */
19454 void ChannelHandshakeLimits_set_trust_own_funding_0conf(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
19455
19456 /**
19457  * Set to force an incoming channel to match our announced channel preference in
19458  * [`ChannelHandshakeConfig::announced_channel`].
19459  *
19460  * For a node which is not online reliably, this should be set to true and
19461  * [`ChannelHandshakeConfig::announced_channel`] set to false, ensuring that no announced (aka public)
19462  * channels will ever be opened.
19463  *
19464  * Default value: true.
19465  */
19466 bool ChannelHandshakeLimits_get_force_announced_channel_preference(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19467
19468 /**
19469  * Set to force an incoming channel to match our announced channel preference in
19470  * [`ChannelHandshakeConfig::announced_channel`].
19471  *
19472  * For a node which is not online reliably, this should be set to true and
19473  * [`ChannelHandshakeConfig::announced_channel`] set to false, ensuring that no announced (aka public)
19474  * channels will ever be opened.
19475  *
19476  * Default value: true.
19477  */
19478 void ChannelHandshakeLimits_set_force_announced_channel_preference(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, bool val);
19479
19480 /**
19481  * Set to the amount of time we're willing to wait to claim money back to us.
19482  *
19483  * Not checking this value would be a security issue, as our peer would be able to set it to
19484  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
19485  *
19486  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
19487  * reduce the loss of having useless locked funds (if your peer accepts)
19488  */
19489 uint16_t ChannelHandshakeLimits_get_their_to_self_delay(const struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr);
19490
19491 /**
19492  * Set to the amount of time we're willing to wait to claim money back to us.
19493  *
19494  * Not checking this value would be a security issue, as our peer would be able to set it to
19495  * max relative lock-time (a year) and we would \"lose\" money as it would be locked for a long time.
19496  *
19497  * Default value: 2016, which we also enforce as a maximum value so you can tweak config to
19498  * reduce the loss of having useless locked funds (if your peer accepts)
19499  */
19500 void ChannelHandshakeLimits_set_their_to_self_delay(struct LDKChannelHandshakeLimits *NONNULL_PTR this_ptr, uint16_t val);
19501
19502 /**
19503  * Constructs a new ChannelHandshakeLimits given each field
19504  */
19505 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_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 trust_own_funding_0conf_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
19506
19507 /**
19508  * Creates a copy of the ChannelHandshakeLimits
19509  */
19510 struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
19511
19512 /**
19513  * Creates a "default" ChannelHandshakeLimits. See struct and individual field documentaiton for details on which values are used.
19514  */
19515 MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
19516
19517 /**
19518  * Frees any resources used by the ChannelConfig, if is_owned is set and inner is non-NULL.
19519  */
19520 void ChannelConfig_free(struct LDKChannelConfig this_obj);
19521
19522 /**
19523  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
19524  * over the channel.
19525  * This may be allowed to change at runtime in a later update, however doing so must result in
19526  * update messages sent to notify all nodes of our updated relay fee.
19527  *
19528  * Default value: 0.
19529  */
19530 uint32_t ChannelConfig_get_forwarding_fee_proportional_millionths(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
19531
19532 /**
19533  * Amount (in millionths of a satoshi) charged per satoshi for payments forwarded outbound
19534  * over the channel.
19535  * This may be allowed to change at runtime in a later update, however doing so must result in
19536  * update messages sent to notify all nodes of our updated relay fee.
19537  *
19538  * Default value: 0.
19539  */
19540 void ChannelConfig_set_forwarding_fee_proportional_millionths(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
19541
19542 /**
19543  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
19544  * excess of [`forwarding_fee_proportional_millionths`].
19545  * This may be allowed to change at runtime in a later update, however doing so must result in
19546  * update messages sent to notify all nodes of our updated relay fee.
19547  *
19548  * The default value of a single satoshi roughly matches the market rate on many routing nodes
19549  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
19550  * this node.
19551  *
19552  * Default value: 1000.
19553  *
19554  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
19555  */
19556 uint32_t ChannelConfig_get_forwarding_fee_base_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
19557
19558 /**
19559  * Amount (in milli-satoshi) charged for payments forwarded outbound over the channel, in
19560  * excess of [`forwarding_fee_proportional_millionths`].
19561  * This may be allowed to change at runtime in a later update, however doing so must result in
19562  * update messages sent to notify all nodes of our updated relay fee.
19563  *
19564  * The default value of a single satoshi roughly matches the market rate on many routing nodes
19565  * as of July 2021. Adjusting it upwards or downwards may change whether nodes route through
19566  * this node.
19567  *
19568  * Default value: 1000.
19569  *
19570  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
19571  */
19572 void ChannelConfig_set_forwarding_fee_base_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint32_t val);
19573
19574 /**
19575  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
19576  * the channel this config applies to.
19577  *
19578  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
19579  * HTLC balance when a channel appears on-chain whereas
19580  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
19581  * (non-HTLC-encumbered) balance.
19582  *
19583  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
19584  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
19585  * commitment transaction at least once per this many blocks (minus some margin to allow us
19586  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
19587  * the spending transaction).
19588  *
19589  * Default value: 72 (12 hours at an average of 6 blocks/hour).
19590  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
19591  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
19592  *
19593  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
19594  */
19595 uint16_t ChannelConfig_get_cltv_expiry_delta(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
19596
19597 /**
19598  * The difference in the CLTV value between incoming HTLCs and an outbound HTLC forwarded over
19599  * the channel this config applies to.
19600  *
19601  * This is analogous to [`ChannelHandshakeConfig::our_to_self_delay`] but applies to in-flight
19602  * HTLC balance when a channel appears on-chain whereas
19603  * [`ChannelHandshakeConfig::our_to_self_delay`] applies to the remaining
19604  * (non-HTLC-encumbered) balance.
19605  *
19606  * Thus, for HTLC-encumbered balances to be enforced on-chain when a channel is force-closed,
19607  * we (or one of our watchtowers) MUST be online to check for broadcast of the current
19608  * commitment transaction at least once per this many blocks (minus some margin to allow us
19609  * enough time to broadcast and confirm a transaction, possibly with time in between to RBF
19610  * the spending transaction).
19611  *
19612  * Default value: 72 (12 hours at an average of 6 blocks/hour).
19613  * Minimum value: [`MIN_CLTV_EXPIRY_DELTA`], any values less than this will be treated as
19614  *                [`MIN_CLTV_EXPIRY_DELTA`] instead.
19615  *
19616  * [`MIN_CLTV_EXPIRY_DELTA`]: crate::ln::channelmanager::MIN_CLTV_EXPIRY_DELTA
19617  */
19618 void ChannelConfig_set_cltv_expiry_delta(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint16_t val);
19619
19620 /**
19621  * Limit our total exposure to in-flight HTLCs which are burned to fees as they are too
19622  * small to claim on-chain.
19623  *
19624  * When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will
19625  * not be claimable on-chain, instead being turned into additional miner fees if either
19626  * party force-closes the channel. Because the threshold is per-HTLC, our total exposure
19627  * to such payments may be sustantial if there are many dust HTLCs present when the
19628  * channel is force-closed.
19629  *
19630  * This limit is applied for sent, forwarded, and received HTLCs and limits the total
19631  * exposure across all three types per-channel. Setting this too low may prevent the
19632  * sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very
19633  * important to prevent stealing of dust HTLCs by miners.
19634  *
19635  * Default value: 5_000_000 msat.
19636  */
19637 uint64_t ChannelConfig_get_max_dust_htlc_exposure_msat(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
19638
19639 /**
19640  * Limit our total exposure to in-flight HTLCs which are burned to fees as they are too
19641  * small to claim on-chain.
19642  *
19643  * When an HTLC present in one of our channels is below a \"dust\" threshold, the HTLC will
19644  * not be claimable on-chain, instead being turned into additional miner fees if either
19645  * party force-closes the channel. Because the threshold is per-HTLC, our total exposure
19646  * to such payments may be sustantial if there are many dust HTLCs present when the
19647  * channel is force-closed.
19648  *
19649  * This limit is applied for sent, forwarded, and received HTLCs and limits the total
19650  * exposure across all three types per-channel. Setting this too low may prevent the
19651  * sending or receipt of low-value HTLCs on high-traffic nodes, and this limit is very
19652  * important to prevent stealing of dust HTLCs by miners.
19653  *
19654  * Default value: 5_000_000 msat.
19655  */
19656 void ChannelConfig_set_max_dust_htlc_exposure_msat(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
19657
19658 /**
19659  * The additional fee we're willing to pay to avoid waiting for the counterparty's
19660  * `to_self_delay` to reclaim funds.
19661  *
19662  * When we close a channel cooperatively with our counterparty, we negotiate a fee for the
19663  * closing transaction which both sides find acceptable, ultimately paid by the channel
19664  * funder/initiator.
19665  *
19666  * When we are the funder, because we have to pay the channel closing fee, we bound the
19667  * acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by
19668  * this value. Because the on-chain fee we'd pay to force-close the channel is kept near our
19669  * [`Normal`] feerate during normal operation, this value represents the additional fee we're
19670  * willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our
19671  * funds.
19672  *
19673  * When we are not the funder, we require the closing transaction fee pay at least our
19674  * [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like.
19675  * Thus, this value is ignored when we are not the funder.
19676  *
19677  * Default value: 1000 satoshis.
19678  *
19679  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
19680  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
19681  */
19682 uint64_t ChannelConfig_get_force_close_avoidance_max_fee_satoshis(const struct LDKChannelConfig *NONNULL_PTR this_ptr);
19683
19684 /**
19685  * The additional fee we're willing to pay to avoid waiting for the counterparty's
19686  * `to_self_delay` to reclaim funds.
19687  *
19688  * When we close a channel cooperatively with our counterparty, we negotiate a fee for the
19689  * closing transaction which both sides find acceptable, ultimately paid by the channel
19690  * funder/initiator.
19691  *
19692  * When we are the funder, because we have to pay the channel closing fee, we bound the
19693  * acceptable fee by our [`Background`] and [`Normal`] fees, with the upper bound increased by
19694  * this value. Because the on-chain fee we'd pay to force-close the channel is kept near our
19695  * [`Normal`] feerate during normal operation, this value represents the additional fee we're
19696  * willing to pay in order to avoid waiting for our counterparty's to_self_delay to reclaim our
19697  * funds.
19698  *
19699  * When we are not the funder, we require the closing transaction fee pay at least our
19700  * [`Background`] fee estimate, but allow our counterparty to pay as much fee as they like.
19701  * Thus, this value is ignored when we are not the funder.
19702  *
19703  * Default value: 1000 satoshis.
19704  *
19705  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
19706  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
19707  */
19708 void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(struct LDKChannelConfig *NONNULL_PTR this_ptr, uint64_t val);
19709
19710 /**
19711  * Constructs a new ChannelConfig given each field
19712  */
19713 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, uint64_t max_dust_htlc_exposure_msat_arg, uint64_t force_close_avoidance_max_fee_satoshis_arg);
19714
19715 /**
19716  * Creates a copy of the ChannelConfig
19717  */
19718 struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
19719
19720 /**
19721  * Creates a "default" ChannelConfig. See struct and individual field documentaiton for details on which values are used.
19722  */
19723 MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
19724
19725 /**
19726  * Serialize the ChannelConfig object into a byte array which can be read by ChannelConfig_read
19727  */
19728 struct LDKCVec_u8Z ChannelConfig_write(const struct LDKChannelConfig *NONNULL_PTR obj);
19729
19730 /**
19731  * Read a ChannelConfig from a byte array, created by ChannelConfig_write
19732  */
19733 struct LDKCResult_ChannelConfigDecodeErrorZ ChannelConfig_read(struct LDKu8slice ser);
19734
19735 /**
19736  * Frees any resources used by the UserConfig, if is_owned is set and inner is non-NULL.
19737  */
19738 void UserConfig_free(struct LDKUserConfig this_obj);
19739
19740 /**
19741  * Channel handshake config that we propose to our counterparty.
19742  */
19743 struct LDKChannelHandshakeConfig UserConfig_get_channel_handshake_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
19744
19745 /**
19746  * Channel handshake config that we propose to our counterparty.
19747  */
19748 void UserConfig_set_channel_handshake_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeConfig val);
19749
19750 /**
19751  * Limits applied to our counterparty's proposed channel handshake config settings.
19752  */
19753 struct LDKChannelHandshakeLimits UserConfig_get_channel_handshake_limits(const struct LDKUserConfig *NONNULL_PTR this_ptr);
19754
19755 /**
19756  * Limits applied to our counterparty's proposed channel handshake config settings.
19757  */
19758 void UserConfig_set_channel_handshake_limits(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelHandshakeLimits val);
19759
19760 /**
19761  * Channel config which affects behavior during channel lifetime.
19762  */
19763 struct LDKChannelConfig UserConfig_get_channel_config(const struct LDKUserConfig *NONNULL_PTR this_ptr);
19764
19765 /**
19766  * Channel config which affects behavior during channel lifetime.
19767  */
19768 void UserConfig_set_channel_config(struct LDKUserConfig *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
19769
19770 /**
19771  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
19772  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
19773  * node which is not online reliably.
19774  *
19775  * For nodes which are not online reliably, you should set all channels to *not* be announced
19776  * (using [`ChannelHandshakeConfig::announced_channel`] and
19777  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
19778  * ensure you are not exposed to any forwarding risk.
19779  *
19780  * Note that because you cannot change a channel's announced state after creation, there is no
19781  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
19782  * from a publicly-announced forwarding node to a private non-forwarding node you must close
19783  * all your channels and open new ones. For privacy, you should also change your node_id
19784  * (swapping all private and public key material for new ones) at that time.
19785  *
19786  * Default value: false.
19787  */
19788 bool UserConfig_get_accept_forwards_to_priv_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
19789
19790 /**
19791  * If this is set to false, we will reject any HTLCs which were to be forwarded over private
19792  * channels. This prevents us from taking on HTLC-forwarding risk when we intend to run as a
19793  * node which is not online reliably.
19794  *
19795  * For nodes which are not online reliably, you should set all channels to *not* be announced
19796  * (using [`ChannelHandshakeConfig::announced_channel`] and
19797  * [`ChannelHandshakeLimits::force_announced_channel_preference`]) and set this to false to
19798  * ensure you are not exposed to any forwarding risk.
19799  *
19800  * Note that because you cannot change a channel's announced state after creation, there is no
19801  * way to disable forwarding on public channels retroactively. Thus, in order to change a node
19802  * from a publicly-announced forwarding node to a private non-forwarding node you must close
19803  * all your channels and open new ones. For privacy, you should also change your node_id
19804  * (swapping all private and public key material for new ones) at that time.
19805  *
19806  * Default value: false.
19807  */
19808 void UserConfig_set_accept_forwards_to_priv_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
19809
19810 /**
19811  * If this is set to false, we do not accept inbound requests to open a new channel.
19812  * Default value: true.
19813  */
19814 bool UserConfig_get_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
19815
19816 /**
19817  * If this is set to false, we do not accept inbound requests to open a new channel.
19818  * Default value: true.
19819  */
19820 void UserConfig_set_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
19821
19822 /**
19823  * If this is set to true, the user needs to manually accept inbound requests to open a new
19824  * channel.
19825  *
19826  * When set to true, [`Event::OpenChannelRequest`] will be triggered once a request to open a
19827  * new inbound channel is received through a [`msgs::OpenChannel`] message. In that case, a
19828  * [`msgs::AcceptChannel`] message will not be sent back to the counterparty node unless the
19829  * user explicitly chooses to accept the request.
19830  *
19831  * Default value: false.
19832  *
19833  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
19834  * [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
19835  * [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
19836  */
19837 bool UserConfig_get_manually_accept_inbound_channels(const struct LDKUserConfig *NONNULL_PTR this_ptr);
19838
19839 /**
19840  * If this is set to true, the user needs to manually accept inbound requests to open a new
19841  * channel.
19842  *
19843  * When set to true, [`Event::OpenChannelRequest`] will be triggered once a request to open a
19844  * new inbound channel is received through a [`msgs::OpenChannel`] message. In that case, a
19845  * [`msgs::AcceptChannel`] message will not be sent back to the counterparty node unless the
19846  * user explicitly chooses to accept the request.
19847  *
19848  * Default value: false.
19849  *
19850  * [`Event::OpenChannelRequest`]: crate::util::events::Event::OpenChannelRequest
19851  * [`msgs::OpenChannel`]: crate::ln::msgs::OpenChannel
19852  * [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
19853  */
19854 void UserConfig_set_manually_accept_inbound_channels(struct LDKUserConfig *NONNULL_PTR this_ptr, bool val);
19855
19856 /**
19857  * Constructs a new UserConfig given each field
19858  */
19859 MUST_USE_RES struct LDKUserConfig UserConfig_new(struct LDKChannelHandshakeConfig channel_handshake_config_arg, struct LDKChannelHandshakeLimits channel_handshake_limits_arg, struct LDKChannelConfig channel_config_arg, bool accept_forwards_to_priv_channels_arg, bool accept_inbound_channels_arg, bool manually_accept_inbound_channels_arg);
19860
19861 /**
19862  * Creates a copy of the UserConfig
19863  */
19864 struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
19865
19866 /**
19867  * Creates a "default" UserConfig. See struct and individual field documentaiton for details on which values are used.
19868  */
19869 MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
19870
19871 /**
19872  * Frees any resources used by the BestBlock, if is_owned is set and inner is non-NULL.
19873  */
19874 void BestBlock_free(struct LDKBestBlock this_obj);
19875
19876 /**
19877  * Creates a copy of the BestBlock
19878  */
19879 struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
19880
19881 /**
19882  * Constructs a `BestBlock` that represents the genesis block at height 0 of the given
19883  * network.
19884  */
19885 MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
19886
19887 /**
19888  * Returns a `BestBlock` as identified by the given block hash and height.
19889  */
19890 MUST_USE_RES struct LDKBestBlock BestBlock_new(struct LDKThirtyTwoBytes block_hash, uint32_t height);
19891
19892 /**
19893  * Returns the best block hash.
19894  */
19895 MUST_USE_RES struct LDKThirtyTwoBytes BestBlock_block_hash(const struct LDKBestBlock *NONNULL_PTR this_arg);
19896
19897 /**
19898  * Returns the best block height.
19899  */
19900 MUST_USE_RES uint32_t BestBlock_height(const struct LDKBestBlock *NONNULL_PTR this_arg);
19901
19902 /**
19903  * Creates a copy of the AccessError
19904  */
19905 enum LDKAccessError AccessError_clone(const enum LDKAccessError *NONNULL_PTR orig);
19906
19907 /**
19908  * Utility method to constructs a new UnknownChain-variant AccessError
19909  */
19910 enum LDKAccessError AccessError_unknown_chain(void);
19911
19912 /**
19913  * Utility method to constructs a new UnknownTx-variant AccessError
19914  */
19915 enum LDKAccessError AccessError_unknown_tx(void);
19916
19917 /**
19918  * Calls the free function if one is set
19919  */
19920 void Access_free(struct LDKAccess this_ptr);
19921
19922 /**
19923  * Calls the free function if one is set
19924  */
19925 void Listen_free(struct LDKListen this_ptr);
19926
19927 /**
19928  * Calls the free function if one is set
19929  */
19930 void Confirm_free(struct LDKConfirm this_ptr);
19931
19932 /**
19933  * Creates a copy of the ChannelMonitorUpdateErr
19934  */
19935 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_clone(const enum LDKChannelMonitorUpdateErr *NONNULL_PTR orig);
19936
19937 /**
19938  * Utility method to constructs a new TemporaryFailure-variant ChannelMonitorUpdateErr
19939  */
19940 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_temporary_failure(void);
19941
19942 /**
19943  * Utility method to constructs a new PermanentFailure-variant ChannelMonitorUpdateErr
19944  */
19945 enum LDKChannelMonitorUpdateErr ChannelMonitorUpdateErr_permanent_failure(void);
19946
19947 /**
19948  * Calls the free function if one is set
19949  */
19950 void Watch_free(struct LDKWatch this_ptr);
19951
19952 /**
19953  * Calls the free function if one is set
19954  */
19955 void Filter_free(struct LDKFilter this_ptr);
19956
19957 /**
19958  * Frees any resources used by the WatchedOutput, if is_owned is set and inner is non-NULL.
19959  */
19960 void WatchedOutput_free(struct LDKWatchedOutput this_obj);
19961
19962 /**
19963  * First block where the transaction output may have been spent.
19964  *
19965  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
19966  */
19967 struct LDKThirtyTwoBytes WatchedOutput_get_block_hash(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
19968
19969 /**
19970  * First block where the transaction output may have been spent.
19971  *
19972  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
19973  */
19974 void WatchedOutput_set_block_hash(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
19975
19976 /**
19977  * Outpoint identifying the transaction output.
19978  */
19979 struct LDKOutPoint WatchedOutput_get_outpoint(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
19980
19981 /**
19982  * Outpoint identifying the transaction output.
19983  */
19984 void WatchedOutput_set_outpoint(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKOutPoint val);
19985
19986 /**
19987  * Spending condition of the transaction output.
19988  */
19989 struct LDKu8slice WatchedOutput_get_script_pubkey(const struct LDKWatchedOutput *NONNULL_PTR this_ptr);
19990
19991 /**
19992  * Spending condition of the transaction output.
19993  */
19994 void WatchedOutput_set_script_pubkey(struct LDKWatchedOutput *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
19995
19996 /**
19997  * Constructs a new WatchedOutput given each field
19998  */
19999 MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
20000
20001 /**
20002  * Creates a copy of the WatchedOutput
20003  */
20004 struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
20005
20006 /**
20007  * Checks if two WatchedOutputs contain equal inner contents.
20008  */
20009 uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
20010
20011 /**
20012  * Calls the free function if one is set
20013  */
20014 void BroadcasterInterface_free(struct LDKBroadcasterInterface this_ptr);
20015
20016 /**
20017  * Creates a copy of the ConfirmationTarget
20018  */
20019 enum LDKConfirmationTarget ConfirmationTarget_clone(const enum LDKConfirmationTarget *NONNULL_PTR orig);
20020
20021 /**
20022  * Utility method to constructs a new Background-variant ConfirmationTarget
20023  */
20024 enum LDKConfirmationTarget ConfirmationTarget_background(void);
20025
20026 /**
20027  * Utility method to constructs a new Normal-variant ConfirmationTarget
20028  */
20029 enum LDKConfirmationTarget ConfirmationTarget_normal(void);
20030
20031 /**
20032  * Utility method to constructs a new HighPriority-variant ConfirmationTarget
20033  */
20034 enum LDKConfirmationTarget ConfirmationTarget_high_priority(void);
20035
20036 /**
20037  * Checks if two ConfirmationTargets contain equal inner contents.
20038  * This ignores pointers and is_owned flags and looks at the values in fields.
20039  */
20040 bool ConfirmationTarget_eq(const enum LDKConfirmationTarget *NONNULL_PTR a, const enum LDKConfirmationTarget *NONNULL_PTR b);
20041
20042 /**
20043  * Calls the free function if one is set
20044  */
20045 void FeeEstimator_free(struct LDKFeeEstimator this_ptr);
20046
20047 /**
20048  * Frees any resources used by the MonitorUpdateId, if is_owned is set and inner is non-NULL.
20049  */
20050 void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
20051
20052 /**
20053  * Creates a copy of the MonitorUpdateId
20054  */
20055 struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
20056
20057 /**
20058  * Checks if two MonitorUpdateIds contain equal inner contents.
20059  */
20060 uint64_t MonitorUpdateId_hash(const struct LDKMonitorUpdateId *NONNULL_PTR o);
20061
20062 /**
20063  * Checks if two MonitorUpdateIds contain equal inner contents.
20064  * This ignores pointers and is_owned flags and looks at the values in fields.
20065  * Two objects with NULL inner values will be considered "equal" here.
20066  */
20067 bool MonitorUpdateId_eq(const struct LDKMonitorUpdateId *NONNULL_PTR a, const struct LDKMonitorUpdateId *NONNULL_PTR b);
20068
20069 /**
20070  * Calls the free function if one is set
20071  */
20072 void Persist_free(struct LDKPersist this_ptr);
20073
20074 /**
20075  * Frees any resources used by the LockedChannelMonitor, if is_owned is set and inner is non-NULL.
20076  */
20077 void LockedChannelMonitor_free(struct LDKLockedChannelMonitor this_obj);
20078
20079 /**
20080  * Frees any resources used by the ChainMonitor, if is_owned is set and inner is non-NULL.
20081  */
20082 void ChainMonitor_free(struct LDKChainMonitor this_obj);
20083
20084 /**
20085  * Creates a new `ChainMonitor` used to watch on-chain activity pertaining to channels.
20086  *
20087  * When an optional chain source implementing [`chain::Filter`] is provided, the chain monitor
20088  * will call back to it indicating transactions and outputs of interest. This allows clients to
20089  * pre-filter blocks or only fetch blocks matching a compact filter. Otherwise, clients may
20090  * always need to fetch full blocks absent another means for determining which blocks contain
20091  * transactions relevant to the watched channels.
20092  */
20093 MUST_USE_RES struct LDKChainMonitor ChainMonitor_new(struct LDKCOption_FilterZ chain_source, struct LDKBroadcasterInterface broadcaster, struct LDKLogger logger, struct LDKFeeEstimator feeest, struct LDKPersist persister);
20094
20095 /**
20096  * Gets the balances in the contained [`ChannelMonitor`]s which are claimable on-chain or
20097  * claims which are awaiting confirmation.
20098  *
20099  * Includes the balances from each [`ChannelMonitor`] *except* those included in
20100  * `ignored_channels`, allowing you to filter out balances from channels which are still open
20101  * (and whose balance should likely be pulled from the [`ChannelDetails`]).
20102  *
20103  * See [`ChannelMonitor::get_claimable_balances`] for more details on the exact criteria for
20104  * inclusion in the return value.
20105  */
20106 MUST_USE_RES struct LDKCVec_BalanceZ ChainMonitor_get_claimable_balances(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKCVec_ChannelDetailsZ ignored_channels);
20107
20108 /**
20109  * Gets the [`LockedChannelMonitor`] for a given funding outpoint, returning an `Err` if no
20110  * such [`ChannelMonitor`] is currently being monitored for.
20111  *
20112  * Note that the result holds a mutex over our monitor set, and should not be held
20113  * indefinitely.
20114  */
20115 MUST_USE_RES struct LDKCResult_LockedChannelMonitorNoneZ ChainMonitor_get_monitor(const struct LDKChainMonitor *NONNULL_PTR this_arg, struct LDKOutPoint funding_txo);
20116
20117 /**
20118  * Lists the funding outpoint of each [`ChannelMonitor`] being monitored.
20119  *
20120  * Note that [`ChannelMonitor`]s are not removed when a channel is closed as they are always
20121  * monitoring for on-chain state resolutions.
20122  */
20123 MUST_USE_RES struct LDKCVec_OutPointZ ChainMonitor_list_monitors(const struct LDKChainMonitor *NONNULL_PTR this_arg);
20124
20125 /**
20126  * Indicates the persistence of a [`ChannelMonitor`] has completed after
20127  * [`ChannelMonitorUpdateErr::TemporaryFailure`] was returned from an update operation.
20128  *
20129  * Thus, the anticipated use is, at a high level:
20130  *  1) This [`ChainMonitor`] calls [`Persist::update_persisted_channel`] which stores the
20131  *     update to disk and begins updating any remote (e.g. watchtower/backup) copies,
20132  *     returning [`ChannelMonitorUpdateErr::TemporaryFailure`],
20133  *  2) once all remote copies are updated, you call this function with the
20134  *     `completed_update_id` that completed, and once all pending updates have completed the
20135  *     channel will be re-enabled.
20136  *
20137  * Returns an [`APIError::APIMisuseError`] if `funding_txo` does not match any currently
20138  * registered [`ChannelMonitor`]s.
20139  */
20140 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);
20141
20142 /**
20143  * Constructs a new Listen which calls the relevant methods on this_arg.
20144  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
20145  */
20146 struct LDKListen ChainMonitor_as_Listen(const struct LDKChainMonitor *NONNULL_PTR this_arg);
20147
20148 /**
20149  * Constructs a new Confirm which calls the relevant methods on this_arg.
20150  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
20151  */
20152 struct LDKConfirm ChainMonitor_as_Confirm(const struct LDKChainMonitor *NONNULL_PTR this_arg);
20153
20154 /**
20155  * Constructs a new Watch which calls the relevant methods on this_arg.
20156  * This copies the `inner` pointer in this_arg and thus the returned Watch must be freed before this_arg is
20157  */
20158 struct LDKWatch ChainMonitor_as_Watch(const struct LDKChainMonitor *NONNULL_PTR this_arg);
20159
20160 /**
20161  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
20162  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
20163  */
20164 struct LDKEventsProvider ChainMonitor_as_EventsProvider(const struct LDKChainMonitor *NONNULL_PTR this_arg);
20165
20166 /**
20167  * Frees any resources used by the ChannelMonitorUpdate, if is_owned is set and inner is non-NULL.
20168  */
20169 void ChannelMonitorUpdate_free(struct LDKChannelMonitorUpdate this_obj);
20170
20171 /**
20172  * The sequence number of this update. Updates *must* be replayed in-order according to this
20173  * sequence number (and updates may panic if they are not). The update_id values are strictly
20174  * increasing and increase by one for each new update, with one exception specified below.
20175  *
20176  * This sequence number is also used to track up to which points updates which returned
20177  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
20178  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
20179  *
20180  * The only instance where update_id values are not strictly increasing is the case where we
20181  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
20182  * its docs for more details.
20183  */
20184 uint64_t ChannelMonitorUpdate_get_update_id(const struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr);
20185
20186 /**
20187  * The sequence number of this update. Updates *must* be replayed in-order according to this
20188  * sequence number (and updates may panic if they are not). The update_id values are strictly
20189  * increasing and increase by one for each new update, with one exception specified below.
20190  *
20191  * This sequence number is also used to track up to which points updates which returned
20192  * ChannelMonitorUpdateErr::TemporaryFailure have been applied to all copies of a given
20193  * ChannelMonitor when ChannelManager::channel_monitor_updated is called.
20194  *
20195  * The only instance where update_id values are not strictly increasing is the case where we
20196  * allow post-force-close updates with a special update ID of [`CLOSED_CHANNEL_UPDATE_ID`]. See
20197  * its docs for more details.
20198  */
20199 void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
20200
20201 /**
20202  * Creates a copy of the ChannelMonitorUpdate
20203  */
20204 struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
20205
20206 /**
20207  * Serialize the ChannelMonitorUpdate object into a byte array which can be read by ChannelMonitorUpdate_read
20208  */
20209 struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
20210
20211 /**
20212  * Read a ChannelMonitorUpdate from a byte array, created by ChannelMonitorUpdate_write
20213  */
20214 struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ ChannelMonitorUpdate_read(struct LDKu8slice ser);
20215
20216 /**
20217  * Frees any resources used by the MonitorEvent
20218  */
20219 void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
20220
20221 /**
20222  * Creates a copy of the MonitorEvent
20223  */
20224 struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
20225
20226 /**
20227  * Utility method to constructs a new HTLCEvent-variant MonitorEvent
20228  */
20229 struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
20230
20231 /**
20232  * Utility method to constructs a new CommitmentTxConfirmed-variant MonitorEvent
20233  */
20234 struct LDKMonitorEvent MonitorEvent_commitment_tx_confirmed(struct LDKOutPoint a);
20235
20236 /**
20237  * Utility method to constructs a new UpdateCompleted-variant MonitorEvent
20238  */
20239 struct LDKMonitorEvent MonitorEvent_update_completed(struct LDKOutPoint funding_txo, uint64_t monitor_update_id);
20240
20241 /**
20242  * Utility method to constructs a new UpdateFailed-variant MonitorEvent
20243  */
20244 struct LDKMonitorEvent MonitorEvent_update_failed(struct LDKOutPoint a);
20245
20246 /**
20247  * Serialize the MonitorEvent object into a byte array which can be read by MonitorEvent_read
20248  */
20249 struct LDKCVec_u8Z MonitorEvent_write(const struct LDKMonitorEvent *NONNULL_PTR obj);
20250
20251 /**
20252  * Read a MonitorEvent from a byte array, created by MonitorEvent_write
20253  */
20254 struct LDKCResult_COption_MonitorEventZDecodeErrorZ MonitorEvent_read(struct LDKu8slice ser);
20255
20256 /**
20257  * Frees any resources used by the HTLCUpdate, if is_owned is set and inner is non-NULL.
20258  */
20259 void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
20260
20261 /**
20262  * Creates a copy of the HTLCUpdate
20263  */
20264 struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
20265
20266 /**
20267  * Serialize the HTLCUpdate object into a byte array which can be read by HTLCUpdate_read
20268  */
20269 struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
20270
20271 /**
20272  * Read a HTLCUpdate from a byte array, created by HTLCUpdate_write
20273  */
20274 struct LDKCResult_HTLCUpdateDecodeErrorZ HTLCUpdate_read(struct LDKu8slice ser);
20275
20276 /**
20277  * Frees any resources used by the Balance
20278  */
20279 void Balance_free(struct LDKBalance this_ptr);
20280
20281 /**
20282  * Creates a copy of the Balance
20283  */
20284 struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
20285
20286 /**
20287  * Utility method to constructs a new ClaimableOnChannelClose-variant Balance
20288  */
20289 struct LDKBalance Balance_claimable_on_channel_close(uint64_t claimable_amount_satoshis);
20290
20291 /**
20292  * Utility method to constructs a new ClaimableAwaitingConfirmations-variant Balance
20293  */
20294 struct LDKBalance Balance_claimable_awaiting_confirmations(uint64_t claimable_amount_satoshis, uint32_t confirmation_height);
20295
20296 /**
20297  * Utility method to constructs a new ContentiousClaimable-variant Balance
20298  */
20299 struct LDKBalance Balance_contentious_claimable(uint64_t claimable_amount_satoshis, uint32_t timeout_height);
20300
20301 /**
20302  * Utility method to constructs a new MaybeTimeoutClaimableHTLC-variant Balance
20303  */
20304 struct LDKBalance Balance_maybe_timeout_claimable_htlc(uint64_t claimable_amount_satoshis, uint32_t claimable_height);
20305
20306 /**
20307  * Utility method to constructs a new MaybePreimageClaimableHTLC-variant Balance
20308  */
20309 struct LDKBalance Balance_maybe_preimage_claimable_htlc(uint64_t claimable_amount_satoshis, uint32_t expiry_height);
20310
20311 /**
20312  * Utility method to constructs a new CounterpartyRevokedOutputClaimable-variant Balance
20313  */
20314 struct LDKBalance Balance_counterparty_revoked_output_claimable(uint64_t claimable_amount_satoshis);
20315
20316 /**
20317  * Checks if two Balances contain equal inner contents.
20318  * This ignores pointers and is_owned flags and looks at the values in fields.
20319  */
20320 bool Balance_eq(const struct LDKBalance *NONNULL_PTR a, const struct LDKBalance *NONNULL_PTR b);
20321
20322 /**
20323  * Frees any resources used by the ChannelMonitor, if is_owned is set and inner is non-NULL.
20324  */
20325 void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
20326
20327 /**
20328  * Serialize the ChannelMonitor object into a byte array which can be read by ChannelMonitor_read
20329  */
20330 struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
20331
20332 /**
20333  * Updates a ChannelMonitor on the basis of some new information provided by the Channel
20334  * itself.
20335  *
20336  * panics if the given update is not the next update by update_id.
20337  */
20338 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, struct LDKFeeEstimator fee_estimator, const struct LDKLogger *NONNULL_PTR logger);
20339
20340 /**
20341  * Gets the update_id from the latest ChannelMonitorUpdate which was applied to this
20342  * ChannelMonitor.
20343  */
20344 MUST_USE_RES uint64_t ChannelMonitor_get_latest_update_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20345
20346 /**
20347  * Gets the funding transaction outpoint of the channel this ChannelMonitor is monitoring for.
20348  */
20349 MUST_USE_RES struct LDKC2Tuple_OutPointScriptZ ChannelMonitor_get_funding_txo(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20350
20351 /**
20352  * Gets a list of txids, with their output scripts (in the order they appear in the
20353  * transaction), which we must learn about spends of via block_connected().
20354  */
20355 MUST_USE_RES struct LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ ChannelMonitor_get_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20356
20357 /**
20358  * Loads the funding txo and outputs to watch into the given `chain::Filter` by repeatedly
20359  * calling `chain::Filter::register_output` and `chain::Filter::register_tx` until all outputs
20360  * have been registered.
20361  */
20362 void ChannelMonitor_load_outputs_to_watch(const struct LDKChannelMonitor *NONNULL_PTR this_arg, const struct LDKFilter *NONNULL_PTR filter);
20363
20364 /**
20365  * Get the list of HTLCs who's status has been updated on chain. This should be called by
20366  * ChannelManager via [`chain::Watch::release_pending_monitor_events`].
20367  */
20368 MUST_USE_RES struct LDKCVec_MonitorEventZ ChannelMonitor_get_and_clear_pending_monitor_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20369
20370 /**
20371  * Gets the list of pending events which were generated by previous actions, clearing the list
20372  * in the process.
20373  *
20374  * This is called by ChainMonitor::get_and_clear_pending_events() and is equivalent to
20375  * EventsProvider::get_and_clear_pending_events() except that it requires &mut self as we do
20376  * no internal locking in ChannelMonitors.
20377  */
20378 MUST_USE_RES struct LDKCVec_EventZ ChannelMonitor_get_and_clear_pending_events(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20379
20380 /**
20381  * Gets the `node_id` of the counterparty for this channel.
20382  *
20383  * Will be `None` for channels constructed on LDK versions prior to 0.0.110 and always `Some`
20384  * otherwise.
20385  *
20386  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
20387  */
20388 MUST_USE_RES struct LDKPublicKey ChannelMonitor_get_counterparty_node_id(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20389
20390 /**
20391  * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of
20392  * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of
20393  * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows
20394  * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these
20395  * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to
20396  * broadcast them if counterparty don't close channel with his higher commitment transaction after a
20397  * substantial amount of time (a month or even a year) to get back funds. Best may be to contact
20398  * out-of-band the other node operator to coordinate with him if option is available to you.
20399  * In any-case, choice is up to the user.
20400  */
20401 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);
20402
20403 /**
20404  * Processes transactions in a newly connected block, which may result in any of the following:
20405  * - update the monitor's state against resolved HTLCs
20406  * - punish the counterparty in the case of seeing a revoked commitment transaction
20407  * - force close the channel and claim/timeout incoming/outgoing HTLCs if near expiration
20408  * - detect settled outputs for later spending
20409  * - schedule and bump any in-flight claims
20410  *
20411  * Returns any new outputs to watch from `txdata`; after called, these are also included in
20412  * [`get_outputs_to_watch`].
20413  *
20414  * [`get_outputs_to_watch`]: #method.get_outputs_to_watch
20415  */
20416 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);
20417
20418 /**
20419  * Determines if the disconnected block contained any transactions of interest and updates
20420  * appropriately.
20421  */
20422 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);
20423
20424 /**
20425  * Processes transactions confirmed in a block with the given header and height, returning new
20426  * outputs to watch. See [`block_connected`] for details.
20427  *
20428  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
20429  * blocks. See [`chain::Confirm`] for calling expectations.
20430  *
20431  * [`block_connected`]: Self::block_connected
20432  */
20433 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);
20434
20435 /**
20436  * Processes a transaction that was reorganized out of the chain.
20437  *
20438  * Used instead of [`block_disconnected`] by clients that are notified of transactions rather
20439  * than blocks. See [`chain::Confirm`] for calling expectations.
20440  *
20441  * [`block_disconnected`]: Self::block_disconnected
20442  */
20443 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);
20444
20445 /**
20446  * Updates the monitor with the current best chain tip, returning new outputs to watch. See
20447  * [`block_connected`] for details.
20448  *
20449  * Used instead of [`block_connected`] by clients that are notified of transactions rather than
20450  * blocks. See [`chain::Confirm`] for calling expectations.
20451  *
20452  * [`block_connected`]: Self::block_connected
20453  */
20454 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);
20455
20456 /**
20457  * Returns the set of txids that should be monitored for re-organization out of the chain.
20458  */
20459 MUST_USE_RES struct LDKCVec_TxidZ ChannelMonitor_get_relevant_txids(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20460
20461 /**
20462  * Gets the latest best block which was connected either via the [`chain::Listen`] or
20463  * [`chain::Confirm`] interfaces.
20464  */
20465 MUST_USE_RES struct LDKBestBlock ChannelMonitor_current_best_block(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20466
20467 /**
20468  * Gets the balances in this channel which are either claimable by us if we were to
20469  * force-close the channel now or which are claimable on-chain (possibly awaiting
20470  * confirmation).
20471  *
20472  * Any balances in the channel which are available on-chain (excluding on-chain fees) are
20473  * included here until an [`Event::SpendableOutputs`] event has been generated for the
20474  * balance, or until our counterparty has claimed the balance and accrued several
20475  * confirmations on the claim transaction.
20476  *
20477  * Note that for `ChannelMonitors` which track a channel which went on-chain with versions of
20478  * LDK prior to 0.0.111, balances may not be fully captured if our counterparty broadcasted
20479  * a revoked state.
20480  *
20481  * See [`Balance`] for additional details on the types of claimable balances which
20482  * may be returned here and their meanings.
20483  */
20484 MUST_USE_RES struct LDKCVec_BalanceZ ChannelMonitor_get_claimable_balances(const struct LDKChannelMonitor *NONNULL_PTR this_arg);
20485
20486 /**
20487  * Read a C2Tuple_BlockHashChannelMonitorZ from a byte array, created by C2Tuple_BlockHashChannelMonitorZ_write
20488  */
20489 struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ C2Tuple_BlockHashChannelMonitorZ_read(struct LDKu8slice ser, const struct LDKKeysInterface *NONNULL_PTR arg);
20490
20491 /**
20492  * Frees any resources used by the OutPoint, if is_owned is set and inner is non-NULL.
20493  */
20494 void OutPoint_free(struct LDKOutPoint this_obj);
20495
20496 /**
20497  * The referenced transaction's txid.
20498  */
20499 const uint8_t (*OutPoint_get_txid(const struct LDKOutPoint *NONNULL_PTR this_ptr))[32];
20500
20501 /**
20502  * The referenced transaction's txid.
20503  */
20504 void OutPoint_set_txid(struct LDKOutPoint *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20505
20506 /**
20507  * The index of the referenced output in its transaction's vout.
20508  */
20509 uint16_t OutPoint_get_index(const struct LDKOutPoint *NONNULL_PTR this_ptr);
20510
20511 /**
20512  * The index of the referenced output in its transaction's vout.
20513  */
20514 void OutPoint_set_index(struct LDKOutPoint *NONNULL_PTR this_ptr, uint16_t val);
20515
20516 /**
20517  * Constructs a new OutPoint given each field
20518  */
20519 MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
20520
20521 /**
20522  * Creates a copy of the OutPoint
20523  */
20524 struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
20525
20526 /**
20527  * Checks if two OutPoints contain equal inner contents.
20528  * This ignores pointers and is_owned flags and looks at the values in fields.
20529  * Two objects with NULL inner values will be considered "equal" here.
20530  */
20531 bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
20532
20533 /**
20534  * Checks if two OutPoints contain equal inner contents.
20535  */
20536 uint64_t OutPoint_hash(const struct LDKOutPoint *NONNULL_PTR o);
20537
20538 /**
20539  * Convert an `OutPoint` to a lightning channel id.
20540  */
20541 MUST_USE_RES struct LDKThirtyTwoBytes OutPoint_to_channel_id(const struct LDKOutPoint *NONNULL_PTR this_arg);
20542
20543 /**
20544  * Serialize the OutPoint object into a byte array which can be read by OutPoint_read
20545  */
20546 struct LDKCVec_u8Z OutPoint_write(const struct LDKOutPoint *NONNULL_PTR obj);
20547
20548 /**
20549  * Read a OutPoint from a byte array, created by OutPoint_write
20550  */
20551 struct LDKCResult_OutPointDecodeErrorZ OutPoint_read(struct LDKu8slice ser);
20552
20553 /**
20554  * Frees any resources used by the DelayedPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
20555  */
20556 void DelayedPaymentOutputDescriptor_free(struct LDKDelayedPaymentOutputDescriptor this_obj);
20557
20558 /**
20559  * The outpoint which is spendable
20560  */
20561 struct LDKOutPoint DelayedPaymentOutputDescriptor_get_outpoint(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20562
20563 /**
20564  * The outpoint which is spendable
20565  */
20566 void DelayedPaymentOutputDescriptor_set_outpoint(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
20567
20568 /**
20569  * Per commitment point to derive delayed_payment_key by key holder
20570  */
20571 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_per_commitment_point(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20572
20573 /**
20574  * Per commitment point to derive delayed_payment_key by key holder
20575  */
20576 void DelayedPaymentOutputDescriptor_set_per_commitment_point(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20577
20578 /**
20579  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
20580  * the witness_script.
20581  */
20582 uint16_t DelayedPaymentOutputDescriptor_get_to_self_delay(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20583
20584 /**
20585  * The nSequence value which must be set in the spending input to satisfy the OP_CSV in
20586  * the witness_script.
20587  */
20588 void DelayedPaymentOutputDescriptor_set_to_self_delay(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint16_t val);
20589
20590 /**
20591  * The output which is referenced by the given outpoint
20592  *
20593  * Returns a copy of the field.
20594  */
20595 struct LDKTxOut DelayedPaymentOutputDescriptor_get_output(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20596
20597 /**
20598  * The output which is referenced by the given outpoint
20599  */
20600 void DelayedPaymentOutputDescriptor_set_output(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
20601
20602 /**
20603  * The revocation point specific to the commitment transaction which was broadcast. Used to
20604  * derive the witnessScript for this output.
20605  */
20606 struct LDKPublicKey DelayedPaymentOutputDescriptor_get_revocation_pubkey(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20607
20608 /**
20609  * The revocation point specific to the commitment transaction which was broadcast. Used to
20610  * derive the witnessScript for this output.
20611  */
20612 void DelayedPaymentOutputDescriptor_set_revocation_pubkey(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKPublicKey val);
20613
20614 /**
20615  * Arbitrary identification information returned by a call to
20616  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
20617  * the channel to spend the output.
20618  */
20619 const uint8_t (*DelayedPaymentOutputDescriptor_get_channel_keys_id(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
20620
20621 /**
20622  * Arbitrary identification information returned by a call to
20623  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
20624  * the channel to spend the output.
20625  */
20626 void DelayedPaymentOutputDescriptor_set_channel_keys_id(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20627
20628 /**
20629  * The value of the channel which this output originated from, possibly indirectly.
20630  */
20631 uint64_t DelayedPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20632
20633 /**
20634  * The value of the channel which this output originated from, possibly indirectly.
20635  */
20636 void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
20637
20638 /**
20639  * Constructs a new DelayedPaymentOutputDescriptor given each field
20640  */
20641 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);
20642
20643 /**
20644  * Creates a copy of the DelayedPaymentOutputDescriptor
20645  */
20646 struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
20647
20648 /**
20649  * Serialize the DelayedPaymentOutputDescriptor object into a byte array which can be read by DelayedPaymentOutputDescriptor_read
20650  */
20651 struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
20652
20653 /**
20654  * Read a DelayedPaymentOutputDescriptor from a byte array, created by DelayedPaymentOutputDescriptor_write
20655  */
20656 struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ DelayedPaymentOutputDescriptor_read(struct LDKu8slice ser);
20657
20658 /**
20659  * Frees any resources used by the StaticPaymentOutputDescriptor, if is_owned is set and inner is non-NULL.
20660  */
20661 void StaticPaymentOutputDescriptor_free(struct LDKStaticPaymentOutputDescriptor this_obj);
20662
20663 /**
20664  * The outpoint which is spendable
20665  */
20666 struct LDKOutPoint StaticPaymentOutputDescriptor_get_outpoint(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20667
20668 /**
20669  * The outpoint which is spendable
20670  */
20671 void StaticPaymentOutputDescriptor_set_outpoint(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKOutPoint val);
20672
20673 /**
20674  * The output which is referenced by the given outpoint
20675  *
20676  * Returns a copy of the field.
20677  */
20678 struct LDKTxOut StaticPaymentOutputDescriptor_get_output(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20679
20680 /**
20681  * The output which is referenced by the given outpoint
20682  */
20683 void StaticPaymentOutputDescriptor_set_output(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKTxOut val);
20684
20685 /**
20686  * Arbitrary identification information returned by a call to
20687  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
20688  * the channel to spend the output.
20689  */
20690 const uint8_t (*StaticPaymentOutputDescriptor_get_channel_keys_id(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr))[32];
20691
20692 /**
20693  * Arbitrary identification information returned by a call to
20694  * `Sign::channel_keys_id()`. This may be useful in re-deriving keys used in
20695  * the channel to spend the output.
20696  */
20697 void StaticPaymentOutputDescriptor_set_channel_keys_id(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20698
20699 /**
20700  * The value of the channel which this transactions spends.
20701  */
20702 uint64_t StaticPaymentOutputDescriptor_get_channel_value_satoshis(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr);
20703
20704 /**
20705  * The value of the channel which this transactions spends.
20706  */
20707 void StaticPaymentOutputDescriptor_set_channel_value_satoshis(struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR this_ptr, uint64_t val);
20708
20709 /**
20710  * Constructs a new StaticPaymentOutputDescriptor given each field
20711  */
20712 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);
20713
20714 /**
20715  * Creates a copy of the StaticPaymentOutputDescriptor
20716  */
20717 struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
20718
20719 /**
20720  * Serialize the StaticPaymentOutputDescriptor object into a byte array which can be read by StaticPaymentOutputDescriptor_read
20721  */
20722 struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
20723
20724 /**
20725  * Read a StaticPaymentOutputDescriptor from a byte array, created by StaticPaymentOutputDescriptor_write
20726  */
20727 struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ StaticPaymentOutputDescriptor_read(struct LDKu8slice ser);
20728
20729 /**
20730  * Frees any resources used by the SpendableOutputDescriptor
20731  */
20732 void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
20733
20734 /**
20735  * Creates a copy of the SpendableOutputDescriptor
20736  */
20737 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
20738
20739 /**
20740  * Utility method to constructs a new StaticOutput-variant SpendableOutputDescriptor
20741  */
20742 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
20743
20744 /**
20745  * Utility method to constructs a new DelayedPaymentOutput-variant SpendableOutputDescriptor
20746  */
20747 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_delayed_payment_output(struct LDKDelayedPaymentOutputDescriptor a);
20748
20749 /**
20750  * Utility method to constructs a new StaticPaymentOutput-variant SpendableOutputDescriptor
20751  */
20752 struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_payment_output(struct LDKStaticPaymentOutputDescriptor a);
20753
20754 /**
20755  * Serialize the SpendableOutputDescriptor object into a byte array which can be read by SpendableOutputDescriptor_read
20756  */
20757 struct LDKCVec_u8Z SpendableOutputDescriptor_write(const struct LDKSpendableOutputDescriptor *NONNULL_PTR obj);
20758
20759 /**
20760  * Read a SpendableOutputDescriptor from a byte array, created by SpendableOutputDescriptor_write
20761  */
20762 struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ SpendableOutputDescriptor_read(struct LDKu8slice ser);
20763
20764 /**
20765  * Calls the free function if one is set
20766  */
20767 void BaseSign_free(struct LDKBaseSign this_ptr);
20768
20769 /**
20770  * Creates a copy of a Sign
20771  */
20772 struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
20773
20774 /**
20775  * Calls the free function if one is set
20776  */
20777 void Sign_free(struct LDKSign this_ptr);
20778
20779 /**
20780  * Creates a copy of the Recipient
20781  */
20782 enum LDKRecipient Recipient_clone(const enum LDKRecipient *NONNULL_PTR orig);
20783
20784 /**
20785  * Utility method to constructs a new Node-variant Recipient
20786  */
20787 enum LDKRecipient Recipient_node(void);
20788
20789 /**
20790  * Utility method to constructs a new PhantomNode-variant Recipient
20791  */
20792 enum LDKRecipient Recipient_phantom_node(void);
20793
20794 /**
20795  * Calls the free function if one is set
20796  */
20797 void KeysInterface_free(struct LDKKeysInterface this_ptr);
20798
20799 /**
20800  * Frees any resources used by the InMemorySigner, if is_owned is set and inner is non-NULL.
20801  */
20802 void InMemorySigner_free(struct LDKInMemorySigner this_obj);
20803
20804 /**
20805  * Private key of anchor tx
20806  */
20807 const uint8_t (*InMemorySigner_get_funding_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
20808
20809 /**
20810  * Private key of anchor tx
20811  */
20812 void InMemorySigner_set_funding_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
20813
20814 /**
20815  * Holder secret key for blinded revocation pubkey
20816  */
20817 const uint8_t (*InMemorySigner_get_revocation_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
20818
20819 /**
20820  * Holder secret key for blinded revocation pubkey
20821  */
20822 void InMemorySigner_set_revocation_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
20823
20824 /**
20825  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
20826  */
20827 const uint8_t (*InMemorySigner_get_payment_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
20828
20829 /**
20830  * Holder secret key used for our balance in counterparty-broadcasted commitment transactions
20831  */
20832 void InMemorySigner_set_payment_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
20833
20834 /**
20835  * Holder secret key used in HTLC tx
20836  */
20837 const uint8_t (*InMemorySigner_get_delayed_payment_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
20838
20839 /**
20840  * Holder secret key used in HTLC tx
20841  */
20842 void InMemorySigner_set_delayed_payment_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
20843
20844 /**
20845  * Holder htlc secret key used in commitment tx htlc outputs
20846  */
20847 const uint8_t (*InMemorySigner_get_htlc_base_key(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
20848
20849 /**
20850  * Holder htlc secret key used in commitment tx htlc outputs
20851  */
20852 void InMemorySigner_set_htlc_base_key(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKSecretKey val);
20853
20854 /**
20855  * Commitment seed
20856  */
20857 const uint8_t (*InMemorySigner_get_commitment_seed(const struct LDKInMemorySigner *NONNULL_PTR this_ptr))[32];
20858
20859 /**
20860  * Commitment seed
20861  */
20862 void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
20863
20864 /**
20865  * Creates a copy of the InMemorySigner
20866  */
20867 struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
20868
20869 /**
20870  * Create a new InMemorySigner
20871  */
20872 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);
20873
20874 /**
20875  * Counterparty pubkeys.
20876  * Will panic if ready_channel wasn't called.
20877  */
20878 MUST_USE_RES struct LDKChannelPublicKeys InMemorySigner_counterparty_pubkeys(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20879
20880 /**
20881  * The contest_delay value specified by our counterparty and applied on holder-broadcastable
20882  * transactions, ie the amount of time that we have to wait to recover our funds if we
20883  * broadcast a transaction.
20884  * Will panic if ready_channel wasn't called.
20885  */
20886 MUST_USE_RES uint16_t InMemorySigner_counterparty_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20887
20888 /**
20889  * The contest_delay value specified by us and applied on transactions broadcastable
20890  * by our counterparty, ie the amount of time that they have to wait to recover their funds
20891  * if they broadcast a transaction.
20892  * Will panic if ready_channel wasn't called.
20893  */
20894 MUST_USE_RES uint16_t InMemorySigner_holder_selected_contest_delay(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20895
20896 /**
20897  * Whether the holder is the initiator
20898  * Will panic if ready_channel wasn't called.
20899  */
20900 MUST_USE_RES bool InMemorySigner_is_outbound(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20901
20902 /**
20903  * Funding outpoint
20904  * Will panic if ready_channel wasn't called.
20905  */
20906 MUST_USE_RES struct LDKOutPoint InMemorySigner_funding_outpoint(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20907
20908 /**
20909  * Obtain a ChannelTransactionParameters for this channel, to be used when verifying or
20910  * building transactions.
20911  *
20912  * Will panic if ready_channel wasn't called.
20913  */
20914 MUST_USE_RES struct LDKChannelTransactionParameters InMemorySigner_get_channel_parameters(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20915
20916 /**
20917  * Whether anchors should be used.
20918  * Will panic if ready_channel wasn't called.
20919  */
20920 MUST_USE_RES bool InMemorySigner_opt_anchors(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20921
20922 /**
20923  * Sign the single input of spend_tx at index `input_idx` which spends the output
20924  * described by descriptor, returning the witness stack for the input.
20925  *
20926  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
20927  * is not spending the outpoint described by `descriptor.outpoint`,
20928  * or if an output descriptor script_pubkey does not match the one we can spend.
20929  */
20930 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);
20931
20932 /**
20933  * Sign the single input of spend_tx at index `input_idx` which spends the output
20934  * described by descriptor, returning the witness stack for the input.
20935  *
20936  * Returns an Err if the input at input_idx does not exist, has a non-empty script_sig,
20937  * is not spending the outpoint described by `descriptor.outpoint`, does not have a
20938  * sequence set to `descriptor.to_self_delay`, or if an output descriptor
20939  * script_pubkey does not match the one we can spend.
20940  */
20941 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);
20942
20943 /**
20944  * Constructs a new BaseSign which calls the relevant methods on this_arg.
20945  * This copies the `inner` pointer in this_arg and thus the returned BaseSign must be freed before this_arg is
20946  */
20947 struct LDKBaseSign InMemorySigner_as_BaseSign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20948
20949 /**
20950  * Constructs a new Sign which calls the relevant methods on this_arg.
20951  * This copies the `inner` pointer in this_arg and thus the returned Sign must be freed before this_arg is
20952  */
20953 struct LDKSign InMemorySigner_as_Sign(const struct LDKInMemorySigner *NONNULL_PTR this_arg);
20954
20955 /**
20956  * Serialize the InMemorySigner object into a byte array which can be read by InMemorySigner_read
20957  */
20958 struct LDKCVec_u8Z InMemorySigner_write(const struct LDKInMemorySigner *NONNULL_PTR obj);
20959
20960 /**
20961  * Read a InMemorySigner from a byte array, created by InMemorySigner_write
20962  */
20963 struct LDKCResult_InMemorySignerDecodeErrorZ InMemorySigner_read(struct LDKu8slice ser, struct LDKSecretKey arg);
20964
20965 /**
20966  * Frees any resources used by the KeysManager, if is_owned is set and inner is non-NULL.
20967  */
20968 void KeysManager_free(struct LDKKeysManager this_obj);
20969
20970 /**
20971  * Constructs a KeysManager from a 32-byte seed. If the seed is in some way biased (eg your
20972  * CSRNG is busted) this may panic (but more importantly, you will possibly lose funds).
20973  * starting_time isn't strictly required to actually be a time, but it must absolutely,
20974  * without a doubt, be unique to this instance. ie if you start multiple times with the same
20975  * seed, starting_time must be unique to each run. Thus, the easiest way to achieve this is to
20976  * simply use the current time (with very high precision).
20977  *
20978  * The seed MUST be backed up safely prior to use so that the keys can be re-created, however,
20979  * obviously, starting_time should be unique every time you reload the library - it is only
20980  * used to generate new ephemeral key data (which will be stored by the individual channel if
20981  * necessary).
20982  *
20983  * Note that the seed is required to recover certain on-chain funds independent of
20984  * ChannelMonitor data, though a current copy of ChannelMonitor data is also required for any
20985  * channel, and some on-chain during-closing funds.
20986  *
20987  * Note that until the 0.1 release there is no guarantee of backward compatibility between
20988  * versions. Once the library is more fully supported, the docs will be updated to include a
20989  * detailed description of the guarantee.
20990  */
20991 MUST_USE_RES struct LDKKeysManager KeysManager_new(const uint8_t (*seed)[32], uint64_t starting_time_secs, uint32_t starting_time_nanos);
20992
20993 /**
20994  * Derive an old Sign containing per-channel secrets based on a key derivation parameters.
20995  *
20996  * Key derivation parameters are accessible through a per-channel secrets
20997  * Sign::channel_keys_id and is provided inside DynamicOuputP2WSH in case of
20998  * onchain output detection for which a corresponding delayed_payment_key must be derived.
20999  */
21000 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]);
21001
21002 /**
21003  * Creates a Transaction which spends the given descriptors to the given outputs, plus an
21004  * output to the given change destination (if sufficient change value remains). The
21005  * transaction will have a feerate, at least, of the given value.
21006  *
21007  * Returns `Err(())` if the output value is greater than the input value minus required fee,
21008  * if a descriptor was duplicated, or if an output descriptor `script_pubkey`
21009  * does not match the one we can spend.
21010  *
21011  * We do not enforce that outputs meet the dust limit or that any output scripts are standard.
21012  *
21013  * May panic if the `SpendableOutputDescriptor`s were not generated by Channels which used
21014  * this KeysManager or one of the `InMemorySigner` created by this KeysManager.
21015  */
21016 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);
21017
21018 /**
21019  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
21020  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
21021  */
21022 struct LDKKeysInterface KeysManager_as_KeysInterface(const struct LDKKeysManager *NONNULL_PTR this_arg);
21023
21024 /**
21025  * Frees any resources used by the PhantomKeysManager, if is_owned is set and inner is non-NULL.
21026  */
21027 void PhantomKeysManager_free(struct LDKPhantomKeysManager this_obj);
21028
21029 /**
21030  * Constructs a new KeysInterface which calls the relevant methods on this_arg.
21031  * This copies the `inner` pointer in this_arg and thus the returned KeysInterface must be freed before this_arg is
21032  */
21033 struct LDKKeysInterface PhantomKeysManager_as_KeysInterface(const struct LDKPhantomKeysManager *NONNULL_PTR this_arg);
21034
21035 /**
21036  * Constructs a `PhantomKeysManager` given a 32-byte seed and an additional `cross_node_seed`
21037  * that is shared across all nodes that intend to participate in [phantom node payments] together.
21038  *
21039  * See [`KeysManager::new`] for more information on `seed`, `starting_time_secs`, and
21040  * `starting_time_nanos`.
21041  *
21042  * `cross_node_seed` must be the same across all phantom payment-receiving nodes and also the
21043  * same across restarts, or else inbound payments may fail.
21044  *
21045  * [phantom node payments]: PhantomKeysManager
21046  */
21047 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]);
21048
21049 /**
21050  * See [`KeysManager::spend_spendable_outputs`] for documentation on this method.
21051  */
21052 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);
21053
21054 /**
21055  * See [`KeysManager::derive_channel_keys`] for documentation on this method.
21056  */
21057 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]);
21058
21059 /**
21060  * Frees any resources used by the ChannelManager, if is_owned is set and inner is non-NULL.
21061  */
21062 void ChannelManager_free(struct LDKChannelManager this_obj);
21063
21064 /**
21065  * Frees any resources used by the ChainParameters, if is_owned is set and inner is non-NULL.
21066  */
21067 void ChainParameters_free(struct LDKChainParameters this_obj);
21068
21069 /**
21070  * The network for determining the `chain_hash` in Lightning messages.
21071  */
21072 enum LDKNetwork ChainParameters_get_network(const struct LDKChainParameters *NONNULL_PTR this_ptr);
21073
21074 /**
21075  * The network for determining the `chain_hash` in Lightning messages.
21076  */
21077 void ChainParameters_set_network(struct LDKChainParameters *NONNULL_PTR this_ptr, enum LDKNetwork val);
21078
21079 /**
21080  * The hash and height of the latest block successfully connected.
21081  *
21082  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
21083  */
21084 struct LDKBestBlock ChainParameters_get_best_block(const struct LDKChainParameters *NONNULL_PTR this_ptr);
21085
21086 /**
21087  * The hash and height of the latest block successfully connected.
21088  *
21089  * Used to track on-chain channel funding outputs and send payments with reliable timelocks.
21090  */
21091 void ChainParameters_set_best_block(struct LDKChainParameters *NONNULL_PTR this_ptr, struct LDKBestBlock val);
21092
21093 /**
21094  * Constructs a new ChainParameters given each field
21095  */
21096 MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
21097
21098 /**
21099  * Creates a copy of the ChainParameters
21100  */
21101 struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
21102
21103 /**
21104  * Frees any resources used by the CounterpartyForwardingInfo, if is_owned is set and inner is non-NULL.
21105  */
21106 void CounterpartyForwardingInfo_free(struct LDKCounterpartyForwardingInfo this_obj);
21107
21108 /**
21109  * Base routing fee in millisatoshis.
21110  */
21111 uint32_t CounterpartyForwardingInfo_get_fee_base_msat(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
21112
21113 /**
21114  * Base routing fee in millisatoshis.
21115  */
21116 void CounterpartyForwardingInfo_set_fee_base_msat(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
21117
21118 /**
21119  * Amount in millionths of a satoshi the channel will charge per transferred satoshi.
21120  */
21121 uint32_t CounterpartyForwardingInfo_get_fee_proportional_millionths(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
21122
21123 /**
21124  * Amount in millionths of a satoshi the channel will charge per transferred satoshi.
21125  */
21126 void CounterpartyForwardingInfo_set_fee_proportional_millionths(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint32_t val);
21127
21128 /**
21129  * The minimum difference in cltv_expiry between an ingoing HTLC and its outgoing counterpart,
21130  * such that the outgoing HTLC is forwardable to this counterparty. See `msgs::ChannelUpdate`'s
21131  * `cltv_expiry_delta` for more details.
21132  */
21133 uint16_t CounterpartyForwardingInfo_get_cltv_expiry_delta(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr);
21134
21135 /**
21136  * The minimum difference in cltv_expiry between an ingoing HTLC and its outgoing counterpart,
21137  * such that the outgoing HTLC is forwardable to this counterparty. See `msgs::ChannelUpdate`'s
21138  * `cltv_expiry_delta` for more details.
21139  */
21140 void CounterpartyForwardingInfo_set_cltv_expiry_delta(struct LDKCounterpartyForwardingInfo *NONNULL_PTR this_ptr, uint16_t val);
21141
21142 /**
21143  * Constructs a new CounterpartyForwardingInfo given each field
21144  */
21145 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);
21146
21147 /**
21148  * Creates a copy of the CounterpartyForwardingInfo
21149  */
21150 struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
21151
21152 /**
21153  * Frees any resources used by the ChannelCounterparty, if is_owned is set and inner is non-NULL.
21154  */
21155 void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
21156
21157 /**
21158  * The node_id of our counterparty
21159  */
21160 struct LDKPublicKey ChannelCounterparty_get_node_id(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
21161
21162 /**
21163  * The node_id of our counterparty
21164  */
21165 void ChannelCounterparty_set_node_id(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21166
21167 /**
21168  * The Features the channel counterparty provided upon last connection.
21169  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
21170  * many routing-relevant features are present in the init context.
21171  */
21172 struct LDKInitFeatures ChannelCounterparty_get_features(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
21173
21174 /**
21175  * The Features the channel counterparty provided upon last connection.
21176  * Useful for routing as it is the most up-to-date copy of the counterparty's features and
21177  * many routing-relevant features are present in the init context.
21178  */
21179 void ChannelCounterparty_set_features(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
21180
21181 /**
21182  * The value, in satoshis, that must always be held in the channel for our counterparty. This
21183  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
21184  * claiming at least this value on chain.
21185  *
21186  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
21187  *
21188  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
21189  */
21190 uint64_t ChannelCounterparty_get_unspendable_punishment_reserve(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
21191
21192 /**
21193  * The value, in satoshis, that must always be held in the channel for our counterparty. This
21194  * value ensures that if our counterparty broadcasts a revoked state, we can punish them by
21195  * claiming at least this value on chain.
21196  *
21197  * This value is not included in [`inbound_capacity_msat`] as it can never be spent.
21198  *
21199  * [`inbound_capacity_msat`]: ChannelDetails::inbound_capacity_msat
21200  */
21201 void ChannelCounterparty_set_unspendable_punishment_reserve(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, uint64_t val);
21202
21203 /**
21204  * Information on the fees and requirements that the counterparty requires when forwarding
21205  * payments to us through this channel.
21206  *
21207  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
21208  */
21209 struct LDKCounterpartyForwardingInfo ChannelCounterparty_get_forwarding_info(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
21210
21211 /**
21212  * Information on the fees and requirements that the counterparty requires when forwarding
21213  * payments to us through this channel.
21214  *
21215  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
21216  */
21217 void ChannelCounterparty_set_forwarding_info(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCounterpartyForwardingInfo val);
21218
21219 /**
21220  * The smallest value HTLC (in msat) the remote peer will accept, for this channel. This field
21221  * is only `None` before we have received either the `OpenChannel` or `AcceptChannel` message
21222  * from the remote peer, or for `ChannelCounterparty` objects serialized prior to LDK 0.0.107.
21223  */
21224 struct LDKCOption_u64Z ChannelCounterparty_get_outbound_htlc_minimum_msat(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
21225
21226 /**
21227  * The smallest value HTLC (in msat) the remote peer will accept, for this channel. This field
21228  * is only `None` before we have received either the `OpenChannel` or `AcceptChannel` message
21229  * from the remote peer, or for `ChannelCounterparty` objects serialized prior to LDK 0.0.107.
21230  */
21231 void ChannelCounterparty_set_outbound_htlc_minimum_msat(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21232
21233 /**
21234  * The largest value HTLC (in msat) the remote peer currently will accept, for this channel.
21235  */
21236 struct LDKCOption_u64Z ChannelCounterparty_get_outbound_htlc_maximum_msat(const struct LDKChannelCounterparty *NONNULL_PTR this_ptr);
21237
21238 /**
21239  * The largest value HTLC (in msat) the remote peer currently will accept, for this channel.
21240  */
21241 void ChannelCounterparty_set_outbound_htlc_maximum_msat(struct LDKChannelCounterparty *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21242
21243 /**
21244  * Constructs a new ChannelCounterparty given each field
21245  */
21246 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, struct LDKCOption_u64Z outbound_htlc_minimum_msat_arg, struct LDKCOption_u64Z outbound_htlc_maximum_msat_arg);
21247
21248 /**
21249  * Creates a copy of the ChannelCounterparty
21250  */
21251 struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
21252
21253 /**
21254  * Frees any resources used by the ChannelDetails, if is_owned is set and inner is non-NULL.
21255  */
21256 void ChannelDetails_free(struct LDKChannelDetails this_obj);
21257
21258 /**
21259  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
21260  * thereafter this is the txid of the funding transaction xor the funding transaction output).
21261  * Note that this means this value is *not* persistent - it can change once during the
21262  * lifetime of the channel.
21263  */
21264 const uint8_t (*ChannelDetails_get_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr))[32];
21265
21266 /**
21267  * The channel's ID (prior to funding transaction generation, this is a random 32 bytes,
21268  * thereafter this is the txid of the funding transaction xor the funding transaction output).
21269  * Note that this means this value is *not* persistent - it can change once during the
21270  * lifetime of the channel.
21271  */
21272 void ChannelDetails_set_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
21273
21274 /**
21275  * Parameters which apply to our counterparty. See individual fields for more information.
21276  */
21277 struct LDKChannelCounterparty ChannelDetails_get_counterparty(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21278
21279 /**
21280  * Parameters which apply to our counterparty. See individual fields for more information.
21281  */
21282 void ChannelDetails_set_counterparty(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelCounterparty val);
21283
21284 /**
21285  * The Channel's funding transaction output, if we've negotiated the funding transaction with
21286  * our counterparty already.
21287  *
21288  * Note that, if this has been set, `channel_id` will be equivalent to
21289  * `funding_txo.unwrap().to_channel_id()`.
21290  *
21291  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
21292  */
21293 struct LDKOutPoint ChannelDetails_get_funding_txo(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21294
21295 /**
21296  * The Channel's funding transaction output, if we've negotiated the funding transaction with
21297  * our counterparty already.
21298  *
21299  * Note that, if this has been set, `channel_id` will be equivalent to
21300  * `funding_txo.unwrap().to_channel_id()`.
21301  *
21302  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
21303  */
21304 void ChannelDetails_set_funding_txo(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKOutPoint val);
21305
21306 /**
21307  * The features which this channel operates with. See individual features for more info.
21308  *
21309  * `None` until negotiation completes and the channel type is finalized.
21310  *
21311  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
21312  */
21313 struct LDKChannelTypeFeatures ChannelDetails_get_channel_type(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21314
21315 /**
21316  * The features which this channel operates with. See individual features for more info.
21317  *
21318  * `None` until negotiation completes and the channel type is finalized.
21319  *
21320  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
21321  */
21322 void ChannelDetails_set_channel_type(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
21323
21324 /**
21325  * The position of the funding transaction in the chain. None if the funding transaction has
21326  * not yet been confirmed and the channel fully opened.
21327  *
21328  * Note that if [`inbound_scid_alias`] is set, it must be used for invoices and inbound
21329  * payments instead of this. See [`get_inbound_payment_scid`].
21330  *
21331  * For channels with [`confirmations_required`] set to `Some(0)`, [`outbound_scid_alias`] may
21332  * be used in place of this in outbound routes. See [`get_outbound_payment_scid`].
21333  *
21334  * [`inbound_scid_alias`]: Self::inbound_scid_alias
21335  * [`outbound_scid_alias`]: Self::outbound_scid_alias
21336  * [`get_inbound_payment_scid`]: Self::get_inbound_payment_scid
21337  * [`get_outbound_payment_scid`]: Self::get_outbound_payment_scid
21338  * [`confirmations_required`]: Self::confirmations_required
21339  */
21340 struct LDKCOption_u64Z ChannelDetails_get_short_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21341
21342 /**
21343  * The position of the funding transaction in the chain. None if the funding transaction has
21344  * not yet been confirmed and the channel fully opened.
21345  *
21346  * Note that if [`inbound_scid_alias`] is set, it must be used for invoices and inbound
21347  * payments instead of this. See [`get_inbound_payment_scid`].
21348  *
21349  * For channels with [`confirmations_required`] set to `Some(0)`, [`outbound_scid_alias`] may
21350  * be used in place of this in outbound routes. See [`get_outbound_payment_scid`].
21351  *
21352  * [`inbound_scid_alias`]: Self::inbound_scid_alias
21353  * [`outbound_scid_alias`]: Self::outbound_scid_alias
21354  * [`get_inbound_payment_scid`]: Self::get_inbound_payment_scid
21355  * [`get_outbound_payment_scid`]: Self::get_outbound_payment_scid
21356  * [`confirmations_required`]: Self::confirmations_required
21357  */
21358 void ChannelDetails_set_short_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21359
21360 /**
21361  * An optional [`short_channel_id`] alias for this channel, randomly generated by us and
21362  * usable in place of [`short_channel_id`] to reference the channel in outbound routes when
21363  * the channel has not yet been confirmed (as long as [`confirmations_required`] is
21364  * `Some(0)`).
21365  *
21366  * This will be `None` as long as the channel is not available for routing outbound payments.
21367  *
21368  * [`short_channel_id`]: Self::short_channel_id
21369  * [`confirmations_required`]: Self::confirmations_required
21370  */
21371 struct LDKCOption_u64Z ChannelDetails_get_outbound_scid_alias(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21372
21373 /**
21374  * An optional [`short_channel_id`] alias for this channel, randomly generated by us and
21375  * usable in place of [`short_channel_id`] to reference the channel in outbound routes when
21376  * the channel has not yet been confirmed (as long as [`confirmations_required`] is
21377  * `Some(0)`).
21378  *
21379  * This will be `None` as long as the channel is not available for routing outbound payments.
21380  *
21381  * [`short_channel_id`]: Self::short_channel_id
21382  * [`confirmations_required`]: Self::confirmations_required
21383  */
21384 void ChannelDetails_set_outbound_scid_alias(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21385
21386 /**
21387  * An optional [`short_channel_id`] alias for this channel, randomly generated by our
21388  * counterparty and usable in place of [`short_channel_id`] in invoice route hints. Our
21389  * counterparty will recognize the alias provided here in place of the [`short_channel_id`]
21390  * when they see a payment to be routed to us.
21391  *
21392  * Our counterparty may choose to rotate this value at any time, though will always recognize
21393  * previous values for inbound payment forwarding.
21394  *
21395  * [`short_channel_id`]: Self::short_channel_id
21396  */
21397 struct LDKCOption_u64Z ChannelDetails_get_inbound_scid_alias(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21398
21399 /**
21400  * An optional [`short_channel_id`] alias for this channel, randomly generated by our
21401  * counterparty and usable in place of [`short_channel_id`] in invoice route hints. Our
21402  * counterparty will recognize the alias provided here in place of the [`short_channel_id`]
21403  * when they see a payment to be routed to us.
21404  *
21405  * Our counterparty may choose to rotate this value at any time, though will always recognize
21406  * previous values for inbound payment forwarding.
21407  *
21408  * [`short_channel_id`]: Self::short_channel_id
21409  */
21410 void ChannelDetails_set_inbound_scid_alias(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21411
21412 /**
21413  * The value, in satoshis, of this channel as appears in the funding output
21414  */
21415 uint64_t ChannelDetails_get_channel_value_satoshis(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21416
21417 /**
21418  * The value, in satoshis, of this channel as appears in the funding output
21419  */
21420 void ChannelDetails_set_channel_value_satoshis(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
21421
21422 /**
21423  * The value, in satoshis, that must always be held in the channel for us. This value ensures
21424  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
21425  * this value on chain.
21426  *
21427  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
21428  *
21429  * This value will be `None` for outbound channels until the counterparty accepts the channel.
21430  *
21431  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
21432  */
21433 struct LDKCOption_u64Z ChannelDetails_get_unspendable_punishment_reserve(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21434
21435 /**
21436  * The value, in satoshis, that must always be held in the channel for us. This value ensures
21437  * that if we broadcast a revoked state, our counterparty can punish us by claiming at least
21438  * this value on chain.
21439  *
21440  * This value is not included in [`outbound_capacity_msat`] as it can never be spent.
21441  *
21442  * This value will be `None` for outbound channels until the counterparty accepts the channel.
21443  *
21444  * [`outbound_capacity_msat`]: ChannelDetails::outbound_capacity_msat
21445  */
21446 void ChannelDetails_set_unspendable_punishment_reserve(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21447
21448 /**
21449  * The `user_channel_id` passed in to create_channel, or 0 if the channel was inbound.
21450  */
21451 uint64_t ChannelDetails_get_user_channel_id(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21452
21453 /**
21454  * The `user_channel_id` passed in to create_channel, or 0 if the channel was inbound.
21455  */
21456 void ChannelDetails_set_user_channel_id(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
21457
21458 /**
21459  * Our total balance.  This is the amount we would get if we close the channel.
21460  * This value is not exact. Due to various in-flight changes and feerate changes, exactly this
21461  * amount is not likely to be recoverable on close.
21462  *
21463  * This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
21464  * balance is not available for inclusion in new outbound HTLCs). This further does not include
21465  * any pending outgoing HTLCs which are awaiting some other resolution to be sent.
21466  * This does not consider any on-chain fees.
21467  *
21468  * See also [`ChannelDetails::outbound_capacity_msat`]
21469  */
21470 uint64_t ChannelDetails_get_balance_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21471
21472 /**
21473  * Our total balance.  This is the amount we would get if we close the channel.
21474  * This value is not exact. Due to various in-flight changes and feerate changes, exactly this
21475  * amount is not likely to be recoverable on close.
21476  *
21477  * This does not include any pending HTLCs which are not yet fully resolved (and, thus, whose
21478  * balance is not available for inclusion in new outbound HTLCs). This further does not include
21479  * any pending outgoing HTLCs which are awaiting some other resolution to be sent.
21480  * This does not consider any on-chain fees.
21481  *
21482  * See also [`ChannelDetails::outbound_capacity_msat`]
21483  */
21484 void ChannelDetails_set_balance_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
21485
21486 /**
21487  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
21488  * any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
21489  * available for inclusion in new outbound HTLCs). This further does not include any pending
21490  * outgoing HTLCs which are awaiting some other resolution to be sent.
21491  *
21492  * See also [`ChannelDetails::balance_msat`]
21493  *
21494  * This value is not exact. Due to various in-flight changes, feerate changes, and our
21495  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
21496  * should be able to spend nearly this amount.
21497  */
21498 uint64_t ChannelDetails_get_outbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21499
21500 /**
21501  * The available outbound capacity for sending HTLCs to the remote peer. This does not include
21502  * any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
21503  * available for inclusion in new outbound HTLCs). This further does not include any pending
21504  * outgoing HTLCs which are awaiting some other resolution to be sent.
21505  *
21506  * See also [`ChannelDetails::balance_msat`]
21507  *
21508  * This value is not exact. Due to various in-flight changes, feerate changes, and our
21509  * conflict-avoidance policy, exactly this amount is not likely to be spendable. However, we
21510  * should be able to spend nearly this amount.
21511  */
21512 void ChannelDetails_set_outbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
21513
21514 /**
21515  * The available outbound capacity for sending a single HTLC to the remote peer. This is
21516  * similar to [`ChannelDetails::outbound_capacity_msat`] but it may be further restricted by
21517  * the current state and per-HTLC limit(s). This is intended for use when routing, allowing us
21518  * to use a limit as close as possible to the HTLC limit we can currently send.
21519  *
21520  * See also [`ChannelDetails::balance_msat`] and [`ChannelDetails::outbound_capacity_msat`].
21521  */
21522 uint64_t ChannelDetails_get_next_outbound_htlc_limit_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21523
21524 /**
21525  * The available outbound capacity for sending a single HTLC to the remote peer. This is
21526  * similar to [`ChannelDetails::outbound_capacity_msat`] but it may be further restricted by
21527  * the current state and per-HTLC limit(s). This is intended for use when routing, allowing us
21528  * to use a limit as close as possible to the HTLC limit we can currently send.
21529  *
21530  * See also [`ChannelDetails::balance_msat`] and [`ChannelDetails::outbound_capacity_msat`].
21531  */
21532 void ChannelDetails_set_next_outbound_htlc_limit_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
21533
21534 /**
21535  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
21536  * include any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
21537  * available for inclusion in new inbound HTLCs).
21538  * Note that there are some corner cases not fully handled here, so the actual available
21539  * inbound capacity may be slightly higher than this.
21540  *
21541  * This value is not exact. Due to various in-flight changes, feerate changes, and our
21542  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
21543  * However, our counterparty should be able to spend nearly this amount.
21544  */
21545 uint64_t ChannelDetails_get_inbound_capacity_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21546
21547 /**
21548  * The available inbound capacity for the remote peer to send HTLCs to us. This does not
21549  * include any pending HTLCs which are not yet fully resolved (and, thus, whose balance is not
21550  * available for inclusion in new inbound HTLCs).
21551  * Note that there are some corner cases not fully handled here, so the actual available
21552  * inbound capacity may be slightly higher than this.
21553  *
21554  * This value is not exact. Due to various in-flight changes, feerate changes, and our
21555  * counterparty's conflict-avoidance policy, exactly this amount is not likely to be spendable.
21556  * However, our counterparty should be able to spend nearly this amount.
21557  */
21558 void ChannelDetails_set_inbound_capacity_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, uint64_t val);
21559
21560 /**
21561  * The number of required confirmations on the funding transaction before the funding will be
21562  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
21563  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
21564  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
21565  * [`ChannelHandshakeLimits::max_minimum_depth`].
21566  *
21567  * This value will be `None` for outbound channels until the counterparty accepts the channel.
21568  *
21569  * [`is_outbound`]: ChannelDetails::is_outbound
21570  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
21571  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
21572  */
21573 struct LDKCOption_u32Z ChannelDetails_get_confirmations_required(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21574
21575 /**
21576  * The number of required confirmations on the funding transaction before the funding will be
21577  * considered \"locked\". This number is selected by the channel fundee (i.e. us if
21578  * [`is_outbound`] is *not* set), and can be selected for inbound channels with
21579  * [`ChannelHandshakeConfig::minimum_depth`] or limited for outbound channels with
21580  * [`ChannelHandshakeLimits::max_minimum_depth`].
21581  *
21582  * This value will be `None` for outbound channels until the counterparty accepts the channel.
21583  *
21584  * [`is_outbound`]: ChannelDetails::is_outbound
21585  * [`ChannelHandshakeConfig::minimum_depth`]: crate::util::config::ChannelHandshakeConfig::minimum_depth
21586  * [`ChannelHandshakeLimits::max_minimum_depth`]: crate::util::config::ChannelHandshakeLimits::max_minimum_depth
21587  */
21588 void ChannelDetails_set_confirmations_required(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
21589
21590 /**
21591  * The number of blocks (after our commitment transaction confirms) that we will need to wait
21592  * until we can claim our funds after we force-close the channel. During this time our
21593  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
21594  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
21595  * time to claim our non-HTLC-encumbered funds.
21596  *
21597  * This value will be `None` for outbound channels until the counterparty accepts the channel.
21598  */
21599 struct LDKCOption_u16Z ChannelDetails_get_force_close_spend_delay(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21600
21601 /**
21602  * The number of blocks (after our commitment transaction confirms) that we will need to wait
21603  * until we can claim our funds after we force-close the channel. During this time our
21604  * counterparty is allowed to punish us if we broadcasted a stale state. If our counterparty
21605  * force-closes the channel and broadcasts a commitment transaction we do not have to wait any
21606  * time to claim our non-HTLC-encumbered funds.
21607  *
21608  * This value will be `None` for outbound channels until the counterparty accepts the channel.
21609  */
21610 void ChannelDetails_set_force_close_spend_delay(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u16Z val);
21611
21612 /**
21613  * True if the channel was initiated (and thus funded) by us.
21614  */
21615 bool ChannelDetails_get_is_outbound(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21616
21617 /**
21618  * True if the channel was initiated (and thus funded) by us.
21619  */
21620 void ChannelDetails_set_is_outbound(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
21621
21622 /**
21623  * True if the channel is confirmed, channel_ready messages have been exchanged, and the
21624  * channel is not currently being shut down. `channel_ready` message exchange implies the
21625  * required confirmation count has been reached (and we were connected to the peer at some
21626  * point after the funding transaction received enough confirmations). The required
21627  * confirmation count is provided in [`confirmations_required`].
21628  *
21629  * [`confirmations_required`]: ChannelDetails::confirmations_required
21630  */
21631 bool ChannelDetails_get_is_channel_ready(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21632
21633 /**
21634  * True if the channel is confirmed, channel_ready messages have been exchanged, and the
21635  * channel is not currently being shut down. `channel_ready` message exchange implies the
21636  * required confirmation count has been reached (and we were connected to the peer at some
21637  * point after the funding transaction received enough confirmations). The required
21638  * confirmation count is provided in [`confirmations_required`].
21639  *
21640  * [`confirmations_required`]: ChannelDetails::confirmations_required
21641  */
21642 void ChannelDetails_set_is_channel_ready(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
21643
21644 /**
21645  * True if the channel is (a) confirmed and channel_ready messages have been exchanged, (b)
21646  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
21647  *
21648  * This is a strict superset of `is_channel_ready`.
21649  */
21650 bool ChannelDetails_get_is_usable(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21651
21652 /**
21653  * True if the channel is (a) confirmed and channel_ready messages have been exchanged, (b)
21654  * the peer is connected, and (c) the channel is not currently negotiating a shutdown.
21655  *
21656  * This is a strict superset of `is_channel_ready`.
21657  */
21658 void ChannelDetails_set_is_usable(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
21659
21660 /**
21661  * True if this channel is (or will be) publicly-announced.
21662  */
21663 bool ChannelDetails_get_is_public(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21664
21665 /**
21666  * True if this channel is (or will be) publicly-announced.
21667  */
21668 void ChannelDetails_set_is_public(struct LDKChannelDetails *NONNULL_PTR this_ptr, bool val);
21669
21670 /**
21671  * The smallest value HTLC (in msat) we will accept, for this channel. This field
21672  * is only `None` for `ChannelDetails` objects serialized prior to LDK 0.0.107
21673  */
21674 struct LDKCOption_u64Z ChannelDetails_get_inbound_htlc_minimum_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21675
21676 /**
21677  * The smallest value HTLC (in msat) we will accept, for this channel. This field
21678  * is only `None` for `ChannelDetails` objects serialized prior to LDK 0.0.107
21679  */
21680 void ChannelDetails_set_inbound_htlc_minimum_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21681
21682 /**
21683  * The largest value HTLC (in msat) we currently will accept, for this channel.
21684  */
21685 struct LDKCOption_u64Z ChannelDetails_get_inbound_htlc_maximum_msat(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21686
21687 /**
21688  * The largest value HTLC (in msat) we currently will accept, for this channel.
21689  */
21690 void ChannelDetails_set_inbound_htlc_maximum_msat(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
21691
21692 /**
21693  * Set of configurable parameters that affect channel operation.
21694  *
21695  * This field is only `None` for `ChannelDetails` objects serialized prior to LDK 0.0.109.
21696  *
21697  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
21698  */
21699 struct LDKChannelConfig ChannelDetails_get_config(const struct LDKChannelDetails *NONNULL_PTR this_ptr);
21700
21701 /**
21702  * Set of configurable parameters that affect channel operation.
21703  *
21704  * This field is only `None` for `ChannelDetails` objects serialized prior to LDK 0.0.109.
21705  *
21706  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
21707  */
21708 void ChannelDetails_set_config(struct LDKChannelDetails *NONNULL_PTR this_ptr, struct LDKChannelConfig val);
21709
21710 /**
21711  * Constructs a new ChannelDetails given each field
21712  */
21713 MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKChannelTypeFeatures channel_type_arg, struct LDKCOption_u64Z short_channel_id_arg, struct LDKCOption_u64Z outbound_scid_alias_arg, struct LDKCOption_u64Z inbound_scid_alias_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t balance_msat_arg, uint64_t outbound_capacity_msat_arg, uint64_t next_outbound_htlc_limit_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_channel_ready_arg, bool is_usable_arg, bool is_public_arg, struct LDKCOption_u64Z inbound_htlc_minimum_msat_arg, struct LDKCOption_u64Z inbound_htlc_maximum_msat_arg, struct LDKChannelConfig config_arg);
21714
21715 /**
21716  * Creates a copy of the ChannelDetails
21717  */
21718 struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
21719
21720 /**
21721  * Gets the current SCID which should be used to identify this channel for inbound payments.
21722  * This should be used for providing invoice hints or in any other context where our
21723  * counterparty will forward a payment to us.
21724  *
21725  * This is either the [`ChannelDetails::inbound_scid_alias`], if set, or the
21726  * [`ChannelDetails::short_channel_id`]. See those for more information.
21727  */
21728 MUST_USE_RES struct LDKCOption_u64Z ChannelDetails_get_inbound_payment_scid(const struct LDKChannelDetails *NONNULL_PTR this_arg);
21729
21730 /**
21731  * Gets the current SCID which should be used to identify this channel for outbound payments.
21732  * This should be used in [`Route`]s to describe the first hop or in other contexts where
21733  * we're sending or forwarding a payment outbound over this channel.
21734  *
21735  * This is either the [`ChannelDetails::short_channel_id`], if set, or the
21736  * [`ChannelDetails::outbound_scid_alias`]. See those for more information.
21737  */
21738 MUST_USE_RES struct LDKCOption_u64Z ChannelDetails_get_outbound_payment_scid(const struct LDKChannelDetails *NONNULL_PTR this_arg);
21739
21740 /**
21741  * Frees any resources used by the PaymentSendFailure
21742  */
21743 void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
21744
21745 /**
21746  * Creates a copy of the PaymentSendFailure
21747  */
21748 struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
21749
21750 /**
21751  * Utility method to constructs a new ParameterError-variant PaymentSendFailure
21752  */
21753 struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
21754
21755 /**
21756  * Utility method to constructs a new PathParameterError-variant PaymentSendFailure
21757  */
21758 struct LDKPaymentSendFailure PaymentSendFailure_path_parameter_error(struct LDKCVec_CResult_NoneAPIErrorZZ a);
21759
21760 /**
21761  * Utility method to constructs a new AllFailedRetrySafe-variant PaymentSendFailure
21762  */
21763 struct LDKPaymentSendFailure PaymentSendFailure_all_failed_retry_safe(struct LDKCVec_APIErrorZ a);
21764
21765 /**
21766  * Utility method to constructs a new PartialFailure-variant PaymentSendFailure
21767  */
21768 struct LDKPaymentSendFailure PaymentSendFailure_partial_failure(struct LDKCVec_CResult_NoneAPIErrorZZ results, struct LDKRouteParameters failed_paths_retry, struct LDKThirtyTwoBytes payment_id);
21769
21770 /**
21771  * Frees any resources used by the PhantomRouteHints, if is_owned is set and inner is non-NULL.
21772  */
21773 void PhantomRouteHints_free(struct LDKPhantomRouteHints this_obj);
21774
21775 /**
21776  * The list of channels to be included in the invoice route hints.
21777  */
21778 struct LDKCVec_ChannelDetailsZ PhantomRouteHints_get_channels(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
21779
21780 /**
21781  * The list of channels to be included in the invoice route hints.
21782  */
21783 void PhantomRouteHints_set_channels(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKCVec_ChannelDetailsZ val);
21784
21785 /**
21786  * A fake scid used for representing the phantom node's fake channel in generating the invoice
21787  * route hints.
21788  */
21789 uint64_t PhantomRouteHints_get_phantom_scid(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
21790
21791 /**
21792  * A fake scid used for representing the phantom node's fake channel in generating the invoice
21793  * route hints.
21794  */
21795 void PhantomRouteHints_set_phantom_scid(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, uint64_t val);
21796
21797 /**
21798  * The pubkey of the real backing node that would ultimately receive the payment.
21799  */
21800 struct LDKPublicKey PhantomRouteHints_get_real_node_pubkey(const struct LDKPhantomRouteHints *NONNULL_PTR this_ptr);
21801
21802 /**
21803  * The pubkey of the real backing node that would ultimately receive the payment.
21804  */
21805 void PhantomRouteHints_set_real_node_pubkey(struct LDKPhantomRouteHints *NONNULL_PTR this_ptr, struct LDKPublicKey val);
21806
21807 /**
21808  * Constructs a new PhantomRouteHints given each field
21809  */
21810 MUST_USE_RES struct LDKPhantomRouteHints PhantomRouteHints_new(struct LDKCVec_ChannelDetailsZ channels_arg, uint64_t phantom_scid_arg, struct LDKPublicKey real_node_pubkey_arg);
21811
21812 /**
21813  * Creates a copy of the PhantomRouteHints
21814  */
21815 struct LDKPhantomRouteHints PhantomRouteHints_clone(const struct LDKPhantomRouteHints *NONNULL_PTR orig);
21816
21817 /**
21818  * Constructs a new ChannelManager to hold several channels and route between them.
21819  *
21820  * This is the main \"logic hub\" for all channel-related actions, and implements
21821  * ChannelMessageHandler.
21822  *
21823  * Non-proportional fees are fixed according to our risk using the provided fee estimator.
21824  *
21825  * Users need to notify the new ChannelManager when a new block is connected or
21826  * disconnected using its `block_connected` and `block_disconnected` methods, starting
21827  * from after `params.latest_hash`.
21828  */
21829 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);
21830
21831 /**
21832  * Gets the current configuration applied to all new channels.
21833  */
21834 MUST_USE_RES struct LDKUserConfig ChannelManager_get_current_default_configuration(const struct LDKChannelManager *NONNULL_PTR this_arg);
21835
21836 /**
21837  * Creates a new outbound channel to the given remote node and with the given value.
21838  *
21839  * `user_channel_id` will be provided back as in
21840  * [`Event::FundingGenerationReady::user_channel_id`] to allow tracking of which events
21841  * correspond with which `create_channel` call. Note that the `user_channel_id` defaults to 0
21842  * for inbound channels, so you may wish to avoid using 0 for `user_channel_id` here.
21843  * `user_channel_id` has no meaning inside of LDK, it is simply copied to events and otherwise
21844  * ignored.
21845  *
21846  * Raises [`APIError::APIMisuseError`] when `channel_value_satoshis` > 2**24 or `push_msat` is
21847  * greater than `channel_value_satoshis * 1k` or `channel_value_satoshis < 1000`.
21848  *
21849  * Note that we do not check if you are currently connected to the given peer. If no
21850  * connection is available, the outbound `open_channel` message may fail to send, resulting in
21851  * the channel eventually being silently forgotten (dropped on reload).
21852  *
21853  * Returns the new Channel's temporary `channel_id`. This ID will appear as
21854  * [`Event::FundingGenerationReady::temporary_channel_id`] and in
21855  * [`ChannelDetails::channel_id`] until after
21856  * [`ChannelManager::funding_transaction_generated`] is called, swapping the Channel's ID for
21857  * one derived from the funding transaction's TXID. If the counterparty rejects the channel
21858  * immediately, this temporary ID will appear in [`Event::ChannelClosed::channel_id`].
21859  *
21860  * [`Event::FundingGenerationReady::user_channel_id`]: events::Event::FundingGenerationReady::user_channel_id
21861  * [`Event::FundingGenerationReady::temporary_channel_id`]: events::Event::FundingGenerationReady::temporary_channel_id
21862  * [`Event::ChannelClosed::channel_id`]: events::Event::ChannelClosed::channel_id
21863  *
21864  * Note that override_config (or a relevant inner pointer) may be NULL or all-0s to represent None
21865  */
21866 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);
21867
21868 /**
21869  * Gets the list of open channels, in random order. See ChannelDetail field documentation for
21870  * more information.
21871  */
21872 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
21873
21874 /**
21875  * Gets the list of usable channels, in random order. Useful as an argument to [`find_route`]
21876  * to ensure non-announced channels are used.
21877  *
21878  * These are guaranteed to have their [`ChannelDetails::is_usable`] value set to true, see the
21879  * documentation for [`ChannelDetails::is_usable`] for more info on exactly what the criteria
21880  * are.
21881  *
21882  * [`find_route`]: crate::routing::router::find_route
21883  */
21884 MUST_USE_RES struct LDKCVec_ChannelDetailsZ ChannelManager_list_usable_channels(const struct LDKChannelManager *NONNULL_PTR this_arg);
21885
21886 /**
21887  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
21888  * will be accepted on the given channel, and after additional timeout/the closing of all
21889  * pending HTLCs, the channel will be closed on chain.
21890  *
21891  *  * If we are the channel initiator, we will pay between our [`Background`] and
21892  *    [`ChannelConfig::force_close_avoidance_max_fee_satoshis`] plus our [`Normal`] fee
21893  *    estimate.
21894  *  * If our counterparty is the channel initiator, we will require a channel closing
21895  *    transaction feerate of at least our [`Background`] feerate or the feerate which
21896  *    would appear on a force-closure transaction, whichever is lower. We will allow our
21897  *    counterparty to pay as much fee as they'd like, however.
21898  *
21899  * May generate a SendShutdown message event on success, which should be relayed.
21900  *
21901  * [`ChannelConfig::force_close_avoidance_max_fee_satoshis`]: crate::util::config::ChannelConfig::force_close_avoidance_max_fee_satoshis
21902  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
21903  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
21904  */
21905 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_close_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32], struct LDKPublicKey counterparty_node_id);
21906
21907 /**
21908  * Begins the process of closing a channel. After this call (plus some timeout), no new HTLCs
21909  * will be accepted on the given channel, and after additional timeout/the closing of all
21910  * pending HTLCs, the channel will be closed on chain.
21911  *
21912  * `target_feerate_sat_per_1000_weight` has different meanings depending on if we initiated
21913  * the channel being closed or not:
21914  *  * If we are the channel initiator, we will pay at least this feerate on the closing
21915  *    transaction. The upper-bound is set by
21916  *    [`ChannelConfig::force_close_avoidance_max_fee_satoshis`] plus our [`Normal`] fee
21917  *    estimate (or `target_feerate_sat_per_1000_weight`, if it is greater).
21918  *  * If our counterparty is the channel initiator, we will refuse to accept a channel closure
21919  *    transaction feerate below `target_feerate_sat_per_1000_weight` (or the feerate which
21920  *    will appear on a force-closure transaction, whichever is lower).
21921  *
21922  * May generate a SendShutdown message event on success, which should be relayed.
21923  *
21924  * [`ChannelConfig::force_close_avoidance_max_fee_satoshis`]: crate::util::config::ChannelConfig::force_close_avoidance_max_fee_satoshis
21925  * [`Background`]: crate::chain::chaininterface::ConfirmationTarget::Background
21926  * [`Normal`]: crate::chain::chaininterface::ConfirmationTarget::Normal
21927  */
21928 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], struct LDKPublicKey counterparty_node_id, uint32_t target_feerate_sats_per_1000_weight);
21929
21930 /**
21931  * Force closes a channel, immediately broadcasting the latest local transaction(s) and
21932  * rejecting new HTLCs on the given channel. Fails if `channel_id` is unknown to
21933  * the manager, or if the `counterparty_node_id` isn't the counterparty of the corresponding
21934  * channel.
21935  */
21936 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_broadcasting_latest_txn(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32], struct LDKPublicKey counterparty_node_id);
21937
21938 /**
21939  * Force closes a channel, rejecting new HTLCs on the given channel but skips broadcasting
21940  * the latest local transaction(s). Fails if `channel_id` is unknown to the manager, or if the
21941  * `counterparty_node_id` isn't the counterparty of the corresponding channel.
21942  *
21943  * You can always get the latest local transaction(s) to broadcast from
21944  * [`ChannelMonitor::get_latest_holder_commitment_txn`].
21945  */
21946 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_force_close_without_broadcasting_txn(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*channel_id)[32], struct LDKPublicKey counterparty_node_id);
21947
21948 /**
21949  * Force close all channels, immediately broadcasting the latest local commitment transaction
21950  * for each to the chain and rejecting new HTLCs on each.
21951  */
21952 void ChannelManager_force_close_all_channels_broadcasting_latest_txn(const struct LDKChannelManager *NONNULL_PTR this_arg);
21953
21954 /**
21955  * Force close all channels rejecting new HTLCs on each but without broadcasting the latest
21956  * local transaction(s).
21957  */
21958 void ChannelManager_force_close_all_channels_without_broadcasting_txn(const struct LDKChannelManager *NONNULL_PTR this_arg);
21959
21960 /**
21961  * Sends a payment along a given route.
21962  *
21963  * Value parameters are provided via the last hop in route, see documentation for RouteHop
21964  * fields for more info.
21965  *
21966  * Note that if the payment_hash already exists elsewhere (eg you're sending a duplicative
21967  * payment), we don't do anything to stop you! We always try to ensure that if the provided
21968  * next hop knows the preimage to payment_hash they can claim an additional amount as
21969  * specified in the last hop in the route! Thus, you should probably do your own
21970  * payment_preimage tracking (which you should already be doing as they represent \"proof of
21971  * payment\") and prevent double-sends yourself.
21972  *
21973  * May generate SendHTLCs message(s) event on success, which should be relayed.
21974  *
21975  * Each path may have a different return value, and PaymentSendValue may return a Vec with
21976  * each entry matching the corresponding-index entry in the route paths, see
21977  * PaymentSendFailure for more info.
21978  *
21979  * In general, a path may raise:
21980  *  * APIError::RouteError when an invalid route or forwarding parameter (cltv_delta, fee,
21981  *    node public key) is specified.
21982  *  * APIError::ChannelUnavailable if the next-hop channel is not available for updates
21983  *    (including due to previous monitor update failure or new permanent monitor update
21984  *    failure).
21985  *  * APIError::MonitorUpdateFailed if a new monitor update failure prevented sending the
21986  *    relevant updates.
21987  *
21988  * Note that depending on the type of the PaymentSendFailure the HTLC may have been
21989  * irrevocably committed to on our end. In such a case, do NOT retry the payment with a
21990  * different route unless you intend to pay twice!
21991  *
21992  * payment_secret is unrelated to payment_hash (or PaymentPreimage) and exists to authenticate
21993  * the sender to the recipient and prevent payment-probing (deanonymization) attacks. For
21994  * newer nodes, it will be provided to you in the invoice. If you do not have one, the Route
21995  * must not contain multiple paths as multi-path payments require a recipient-provided
21996  * payment_secret.
21997  * If a payment_secret *is* provided, we assume that the invoice had the payment_secret feature
21998  * bit set (either as required or as available). If multiple paths are present in the Route,
21999  * we assume the invoice had the basic_mpp feature set.
22000  *
22001  * Note that payment_secret (or a relevant inner pointer) may be NULL or all-0s to represent None
22002  */
22003 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);
22004
22005 /**
22006  * Retries a payment along the given [`Route`].
22007  *
22008  * Errors returned are a superset of those returned from [`send_payment`], so see
22009  * [`send_payment`] documentation for more details on errors. This method will also error if the
22010  * retry amount puts the payment more than 10% over the payment's total amount, if the payment
22011  * for the given `payment_id` cannot be found (likely due to timeout or success), or if
22012  * further retries have been disabled with [`abandon_payment`].
22013  *
22014  * [`send_payment`]: [`ChannelManager::send_payment`]
22015  * [`abandon_payment`]: [`ChannelManager::abandon_payment`]
22016  */
22017 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);
22018
22019 /**
22020  * Signals that no further retries for the given payment will occur.
22021  *
22022  * After this method returns, any future calls to [`retry_payment`] for the given `payment_id`
22023  * will fail with [`PaymentSendFailure::ParameterError`]. If no such event has been generated,
22024  * an [`Event::PaymentFailed`] event will be generated as soon as there are no remaining
22025  * pending HTLCs for this payment.
22026  *
22027  * Note that calling this method does *not* prevent a payment from succeeding. You must still
22028  * wait until you receive either a [`Event::PaymentFailed`] or [`Event::PaymentSent`] event to
22029  * determine the ultimate status of a payment.
22030  *
22031  * [`retry_payment`]: Self::retry_payment
22032  * [`Event::PaymentFailed`]: events::Event::PaymentFailed
22033  * [`Event::PaymentSent`]: events::Event::PaymentSent
22034  */
22035 void ChannelManager_abandon_payment(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_id);
22036
22037 /**
22038  * Send a spontaneous payment, which is a payment that does not require the recipient to have
22039  * generated an invoice. Optionally, you may specify the preimage. If you do choose to specify
22040  * the preimage, it must be a cryptographically secure random value that no intermediate node
22041  * would be able to guess -- otherwise, an intermediate node may claim the payment and it will
22042  * never reach the recipient.
22043  *
22044  * See [`send_payment`] documentation for more details on the return value of this function.
22045  *
22046  * Similar to regular payments, you MUST NOT reuse a `payment_preimage` value. See
22047  * [`send_payment`] for more information about the risks of duplicate preimage usage.
22048  *
22049  * Note that `route` must have exactly one path.
22050  *
22051  * [`send_payment`]: Self::send_payment
22052  *
22053  * Note that payment_preimage (or a relevant inner pointer) may be NULL or all-0s to represent None
22054  */
22055 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);
22056
22057 /**
22058  * Send a payment that is probing the given route for liquidity. We calculate the
22059  * [`PaymentHash`] of probes based on a static secret and a random [`PaymentId`], which allows
22060  * us to easily discern them from real payments.
22061  */
22062 MUST_USE_RES struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ ChannelManager_send_probe(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKCVec_RouteHopZ hops);
22063
22064 /**
22065  * Call this upon creation of a funding transaction for the given channel.
22066  *
22067  * Returns an [`APIError::APIMisuseError`] if the funding_transaction spent non-SegWit outputs
22068  * or if no output was found which matches the parameters in [`Event::FundingGenerationReady`].
22069  *
22070  * Returns [`APIError::APIMisuseError`] if the funding transaction is not final for propagation
22071  * across the p2p network.
22072  *
22073  * Returns [`APIError::ChannelUnavailable`] if a funding transaction has already been provided
22074  * for the channel or if the channel has been closed as indicated by [`Event::ChannelClosed`].
22075  *
22076  * May panic if the output found in the funding transaction is duplicative with some other
22077  * channel (note that this should be trivially prevented by using unique funding transaction
22078  * keys per-channel).
22079  *
22080  * Do NOT broadcast the funding transaction yourself. When we have safely received our
22081  * counterparty's signature the funding transaction will automatically be broadcast via the
22082  * [`BroadcasterInterface`] provided when this `ChannelManager` was constructed.
22083  *
22084  * Note that this includes RBF or similar transaction replacement strategies - lightning does
22085  * not currently support replacing a funding transaction on an existing channel. Instead,
22086  * create a new channel with a conflicting funding transaction.
22087  *
22088  * Note to keep the miner incentives aligned in moving the blockchain forward, we recommend
22089  * the wallet software generating the funding transaction to apply anti-fee sniping as
22090  * implemented by Bitcoin Core wallet. See <https://bitcoinops.org/en/topics/fee-sniping/>
22091  * for more details.
22092  *
22093  * [`Event::FundingGenerationReady`]: crate::util::events::Event::FundingGenerationReady
22094  * [`Event::ChannelClosed`]: crate::util::events::Event::ChannelClosed
22095  */
22096 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 LDKPublicKey counterparty_node_id, struct LDKTransaction funding_transaction);
22097
22098 /**
22099  * Atomically updates the [`ChannelConfig`] for the given channels.
22100  *
22101  * Once the updates are applied, each eligible channel (advertised with a known short channel
22102  * ID and a change in [`forwarding_fee_proportional_millionths`], [`forwarding_fee_base_msat`],
22103  * or [`cltv_expiry_delta`]) has a [`BroadcastChannelUpdate`] event message generated
22104  * containing the new [`ChannelUpdate`] message which should be broadcast to the network.
22105  *
22106  * Returns [`ChannelUnavailable`] when a channel is not found or an incorrect
22107  * `counterparty_node_id` is provided.
22108  *
22109  * Returns [`APIMisuseError`] when a [`cltv_expiry_delta`] update is to be applied with a value
22110  * below [`MIN_CLTV_EXPIRY_DELTA`].
22111  *
22112  * If an error is returned, none of the updates should be considered applied.
22113  *
22114  * [`forwarding_fee_proportional_millionths`]: ChannelConfig::forwarding_fee_proportional_millionths
22115  * [`forwarding_fee_base_msat`]: ChannelConfig::forwarding_fee_base_msat
22116  * [`cltv_expiry_delta`]: ChannelConfig::cltv_expiry_delta
22117  * [`BroadcastChannelUpdate`]: events::MessageSendEvent::BroadcastChannelUpdate
22118  * [`ChannelUpdate`]: msgs::ChannelUpdate
22119  * [`ChannelUnavailable`]: APIError::ChannelUnavailable
22120  * [`APIMisuseError`]: APIError::APIMisuseError
22121  */
22122 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_update_channel_config(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKPublicKey counterparty_node_id, struct LDKCVec_ThirtyTwoBytesZ channel_ids, const struct LDKChannelConfig *NONNULL_PTR config);
22123
22124 /**
22125  * Processes HTLCs which are pending waiting on random forward delay.
22126  *
22127  * Should only really ever be called in response to a PendingHTLCsForwardable event.
22128  * Will likely generate further events.
22129  */
22130 void ChannelManager_process_pending_htlc_forwards(const struct LDKChannelManager *NONNULL_PTR this_arg);
22131
22132 /**
22133  * Performs actions which should happen on startup and roughly once per minute thereafter.
22134  *
22135  * This currently includes:
22136  *  * Increasing or decreasing the on-chain feerate estimates for our outbound channels,
22137  *  * Broadcasting `ChannelUpdate` messages if we've been disconnected from our peer for more
22138  *    than a minute, informing the network that they should no longer attempt to route over
22139  *    the channel.
22140  *  * Expiring a channel's previous `ChannelConfig` if necessary to only allow forwarding HTLCs
22141  *    with the current `ChannelConfig`.
22142  *
22143  * Note that this may cause reentrancy through `chain::Watch::update_channel` calls or feerate
22144  * estimate fetches.
22145  */
22146 void ChannelManager_timer_tick_occurred(const struct LDKChannelManager *NONNULL_PTR this_arg);
22147
22148 /**
22149  * Indicates that the preimage for payment_hash is unknown or the received amount is incorrect
22150  * after a PaymentReceived event, failing the HTLC back to its origin and freeing resources
22151  * along the path (including in our own channel on which we received it).
22152  *
22153  * Note that in some cases around unclean shutdown, it is possible the payment may have
22154  * already been claimed by you via [`ChannelManager::claim_funds`] prior to you seeing (a
22155  * second copy of) the [`events::Event::PaymentReceived`] event. Alternatively, the payment
22156  * may have already been failed automatically by LDK if it was nearing its expiration time.
22157  *
22158  * While LDK will never claim a payment automatically on your behalf (i.e. without you calling
22159  * [`ChannelManager::claim_funds`]), you should still monitor for
22160  * [`events::Event::PaymentClaimed`] events even for payments you intend to fail, especially on
22161  * startup during which time claims that were in-progress at shutdown may be replayed.
22162  */
22163 void ChannelManager_fail_htlc_backwards(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
22164
22165 /**
22166  * Provides a payment preimage in response to [`Event::PaymentReceived`], generating any
22167  * [`MessageSendEvent`]s needed to claim the payment.
22168  *
22169  * Note that calling this method does *not* guarantee that the payment has been claimed. You
22170  * *must* wait for an [`Event::PaymentClaimed`] event which upon a successful claim will be
22171  * provided to your [`EventHandler`] when [`process_pending_events`] is next called.
22172  *
22173  * Note that if you did not set an `amount_msat` when calling [`create_inbound_payment`] or
22174  * [`create_inbound_payment_for_hash`] you must check that the amount in the `PaymentReceived`
22175  * event matches your expectation. If you fail to do so and call this method, you may provide
22176  * the sender \"proof-of-payment\" when they did not fulfill the full expected payment.
22177  *
22178  * [`Event::PaymentReceived`]: crate::util::events::Event::PaymentReceived
22179  * [`Event::PaymentClaimed`]: crate::util::events::Event::PaymentClaimed
22180  * [`process_pending_events`]: EventsProvider::process_pending_events
22181  * [`create_inbound_payment`]: Self::create_inbound_payment
22182  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
22183  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
22184  */
22185 void ChannelManager_claim_funds(const struct LDKChannelManager *NONNULL_PTR this_arg, struct LDKThirtyTwoBytes payment_preimage);
22186
22187 /**
22188  * Gets the node_id held by this ChannelManager
22189  */
22190 MUST_USE_RES struct LDKPublicKey ChannelManager_get_our_node_id(const struct LDKChannelManager *NONNULL_PTR this_arg);
22191
22192 /**
22193  * Accepts a request to open a channel after a [`Event::OpenChannelRequest`].
22194  *
22195  * The `temporary_channel_id` parameter indicates which inbound channel should be accepted,
22196  * and the `counterparty_node_id` parameter is the id of the peer which has requested to open
22197  * the channel.
22198  *
22199  * The `user_channel_id` parameter will be provided back in
22200  * [`Event::ChannelClosed::user_channel_id`] to allow tracking of which events correspond
22201  * with which `accept_inbound_channel`/`accept_inbound_channel_from_trusted_peer_0conf` call.
22202  *
22203  * Note that this method will return an error and reject the channel, if it requires support
22204  * for zero confirmations. Instead, `accept_inbound_channel_from_trusted_peer_0conf` must be
22205  * used to accept such channels.
22206  *
22207  * [`Event::OpenChannelRequest`]: events::Event::OpenChannelRequest
22208  * [`Event::ChannelClosed::user_channel_id`]: events::Event::ChannelClosed::user_channel_id
22209  */
22210 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_accept_inbound_channel(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKPublicKey counterparty_node_id, uint64_t user_channel_id);
22211
22212 /**
22213  * Accepts a request to open a channel after a [`events::Event::OpenChannelRequest`], treating
22214  * it as confirmed immediately.
22215  *
22216  * The `user_channel_id` parameter will be provided back in
22217  * [`Event::ChannelClosed::user_channel_id`] to allow tracking of which events correspond
22218  * with which `accept_inbound_channel`/`accept_inbound_channel_from_trusted_peer_0conf` call.
22219  *
22220  * Unlike [`ChannelManager::accept_inbound_channel`], this method accepts the incoming channel
22221  * and (if the counterparty agrees), enables forwarding of payments immediately.
22222  *
22223  * This fully trusts that the counterparty has honestly and correctly constructed the funding
22224  * transaction and blindly assumes that it will eventually confirm.
22225  *
22226  * If it does not confirm before we decide to close the channel, or if the funding transaction
22227  * does not pay to the correct script the correct amount, *you will lose funds*.
22228  *
22229  * [`Event::OpenChannelRequest`]: events::Event::OpenChannelRequest
22230  * [`Event::ChannelClosed::user_channel_id`]: events::Event::ChannelClosed::user_channel_id
22231  */
22232 MUST_USE_RES struct LDKCResult_NoneAPIErrorZ ChannelManager_accept_inbound_channel_from_trusted_peer_0conf(const struct LDKChannelManager *NONNULL_PTR this_arg, const uint8_t (*temporary_channel_id)[32], struct LDKPublicKey counterparty_node_id, uint64_t user_channel_id);
22233
22234 /**
22235  * Gets a payment secret and payment hash for use in an invoice given to a third party wishing
22236  * to pay us.
22237  *
22238  * This differs from [`create_inbound_payment_for_hash`] only in that it generates the
22239  * [`PaymentHash`] and [`PaymentPreimage`] for you.
22240  *
22241  * The [`PaymentPreimage`] will ultimately be returned to you in the [`PaymentReceived`], which
22242  * will have the [`PaymentReceived::payment_preimage`] field filled in. That should then be
22243  * passed directly to [`claim_funds`].
22244  *
22245  * See [`create_inbound_payment_for_hash`] for detailed documentation on behavior and requirements.
22246  *
22247  * Note that a malicious eavesdropper can intuit whether an inbound payment was created by
22248  * `create_inbound_payment` or `create_inbound_payment_for_hash` based on runtime.
22249  *
22250  * # Note
22251  *
22252  * If you register an inbound payment with this method, then serialize the `ChannelManager`, then
22253  * deserialize it with a node running 0.0.103 and earlier, the payment will fail to be received.
22254  *
22255  * Errors if `min_value_msat` is greater than total bitcoin supply.
22256  *
22257  * [`claim_funds`]: Self::claim_funds
22258  * [`PaymentReceived`]: events::Event::PaymentReceived
22259  * [`PaymentReceived::payment_preimage`]: events::Event::PaymentReceived::payment_preimage
22260  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
22261  */
22262 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);
22263
22264 /**
22265  * Legacy version of [`create_inbound_payment`]. Use this method if you wish to share
22266  * serialized state with LDK node(s) running 0.0.103 and earlier.
22267  *
22268  * May panic if `invoice_expiry_delta_secs` is greater than one year.
22269  *
22270  * # Note
22271  * This method is deprecated and will be removed soon.
22272  *
22273  * [`create_inbound_payment`]: Self::create_inbound_payment
22274  */
22275 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);
22276
22277 /**
22278  * Gets a [`PaymentSecret`] for a given [`PaymentHash`], for which the payment preimage is
22279  * stored external to LDK.
22280  *
22281  * A [`PaymentReceived`] event will only be generated if the [`PaymentSecret`] matches a
22282  * payment secret fetched via this method or [`create_inbound_payment`], and which is at least
22283  * the `min_value_msat` provided here, if one is provided.
22284  *
22285  * The [`PaymentHash`] (and corresponding [`PaymentPreimage`]) should be globally unique, though
22286  * note that LDK will not stop you from registering duplicate payment hashes for inbound
22287  * payments.
22288  *
22289  * `min_value_msat` should be set if the invoice being generated contains a value. Any payment
22290  * received for the returned [`PaymentHash`] will be required to be at least `min_value_msat`
22291  * before a [`PaymentReceived`] event will be generated, ensuring that we do not provide the
22292  * sender \"proof-of-payment\" unless they have paid the required amount.
22293  *
22294  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
22295  * in excess of the current time. This should roughly match the expiry time set in the invoice.
22296  * After this many seconds, we will remove the inbound payment, resulting in any attempts to
22297  * pay the invoice failing. The BOLT spec suggests 3,600 secs as a default validity time for
22298  * invoices when no timeout is set.
22299  *
22300  * Note that we use block header time to time-out pending inbound payments (with some margin
22301  * to compensate for the inaccuracy of block header timestamps). Thus, in practice we will
22302  * accept a payment and generate a [`PaymentReceived`] event for some time after the expiry.
22303  * If you need exact expiry semantics, you should enforce them upon receipt of
22304  * [`PaymentReceived`].
22305  *
22306  * Note that invoices generated for inbound payments should have their `min_final_cltv_expiry`
22307  * set to at least [`MIN_FINAL_CLTV_EXPIRY`].
22308  *
22309  * Note that a malicious eavesdropper can intuit whether an inbound payment was created by
22310  * `create_inbound_payment` or `create_inbound_payment_for_hash` based on runtime.
22311  *
22312  * # Note
22313  *
22314  * If you register an inbound payment with this method, then serialize the `ChannelManager`, then
22315  * deserialize it with a node running 0.0.103 and earlier, the payment will fail to be received.
22316  *
22317  * Errors if `min_value_msat` is greater than total bitcoin supply.
22318  *
22319  * [`create_inbound_payment`]: Self::create_inbound_payment
22320  * [`PaymentReceived`]: events::Event::PaymentReceived
22321  */
22322 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);
22323
22324 /**
22325  * Legacy version of [`create_inbound_payment_for_hash`]. Use this method if you wish to share
22326  * serialized state with LDK node(s) running 0.0.103 and earlier.
22327  *
22328  * May panic if `invoice_expiry_delta_secs` is greater than one year.
22329  *
22330  * # Note
22331  * This method is deprecated and will be removed soon.
22332  *
22333  * [`create_inbound_payment_for_hash`]: Self::create_inbound_payment_for_hash
22334  */
22335 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);
22336
22337 /**
22338  * Gets an LDK-generated payment preimage from a payment hash and payment secret that were
22339  * previously returned from [`create_inbound_payment`].
22340  *
22341  * [`create_inbound_payment`]: Self::create_inbound_payment
22342  */
22343 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);
22344
22345 /**
22346  * Gets a fake short channel id for use in receiving [phantom node payments]. These fake scids
22347  * are used when constructing the phantom invoice's route hints.
22348  *
22349  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
22350  */
22351 MUST_USE_RES uint64_t ChannelManager_get_phantom_scid(const struct LDKChannelManager *NONNULL_PTR this_arg);
22352
22353 /**
22354  * Gets route hints for use in receiving [phantom node payments].
22355  *
22356  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
22357  */
22358 MUST_USE_RES struct LDKPhantomRouteHints ChannelManager_get_phantom_route_hints(const struct LDKChannelManager *NONNULL_PTR this_arg);
22359
22360 /**
22361  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
22362  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
22363  */
22364 struct LDKMessageSendEventsProvider ChannelManager_as_MessageSendEventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
22365
22366 /**
22367  * Constructs a new EventsProvider which calls the relevant methods on this_arg.
22368  * This copies the `inner` pointer in this_arg and thus the returned EventsProvider must be freed before this_arg is
22369  */
22370 struct LDKEventsProvider ChannelManager_as_EventsProvider(const struct LDKChannelManager *NONNULL_PTR this_arg);
22371
22372 /**
22373  * Constructs a new Listen which calls the relevant methods on this_arg.
22374  * This copies the `inner` pointer in this_arg and thus the returned Listen must be freed before this_arg is
22375  */
22376 struct LDKListen ChannelManager_as_Listen(const struct LDKChannelManager *NONNULL_PTR this_arg);
22377
22378 /**
22379  * Constructs a new Confirm which calls the relevant methods on this_arg.
22380  * This copies the `inner` pointer in this_arg and thus the returned Confirm must be freed before this_arg is
22381  */
22382 struct LDKConfirm ChannelManager_as_Confirm(const struct LDKChannelManager *NONNULL_PTR this_arg);
22383
22384 /**
22385  * Blocks until ChannelManager needs to be persisted or a timeout is reached. It returns a bool
22386  * indicating whether persistence is necessary. Only one listener on
22387  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
22388  * up.
22389  *
22390  * Note that this method is not available with the `no-std` feature.
22391  */
22392 MUST_USE_RES bool ChannelManager_await_persistable_update_timeout(const struct LDKChannelManager *NONNULL_PTR this_arg, uint64_t max_wait);
22393
22394 /**
22395  * Blocks until ChannelManager needs to be persisted. Only one listener on
22396  * `await_persistable_update` or `await_persistable_update_timeout` is guaranteed to be woken
22397  * up.
22398  */
22399 void ChannelManager_await_persistable_update(const struct LDKChannelManager *NONNULL_PTR this_arg);
22400
22401 /**
22402  * Gets a [`Future`] that completes when a persistable update is available. Note that
22403  * callbacks registered on the [`Future`] MUST NOT call back into this [`ChannelManager`] and
22404  * should instead register actions to be taken later.
22405  */
22406 MUST_USE_RES struct LDKFuture ChannelManager_get_persistable_update_future(const struct LDKChannelManager *NONNULL_PTR this_arg);
22407
22408 /**
22409  * Gets the latest best block which was connected either via the [`chain::Listen`] or
22410  * [`chain::Confirm`] interfaces.
22411  */
22412 MUST_USE_RES struct LDKBestBlock ChannelManager_current_best_block(const struct LDKChannelManager *NONNULL_PTR this_arg);
22413
22414 /**
22415  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
22416  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
22417  */
22418 struct LDKChannelMessageHandler ChannelManager_as_ChannelMessageHandler(const struct LDKChannelManager *NONNULL_PTR this_arg);
22419
22420 /**
22421  * Serialize the CounterpartyForwardingInfo object into a byte array which can be read by CounterpartyForwardingInfo_read
22422  */
22423 struct LDKCVec_u8Z CounterpartyForwardingInfo_write(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR obj);
22424
22425 /**
22426  * Read a CounterpartyForwardingInfo from a byte array, created by CounterpartyForwardingInfo_write
22427  */
22428 struct LDKCResult_CounterpartyForwardingInfoDecodeErrorZ CounterpartyForwardingInfo_read(struct LDKu8slice ser);
22429
22430 /**
22431  * Serialize the ChannelCounterparty object into a byte array which can be read by ChannelCounterparty_read
22432  */
22433 struct LDKCVec_u8Z ChannelCounterparty_write(const struct LDKChannelCounterparty *NONNULL_PTR obj);
22434
22435 /**
22436  * Read a ChannelCounterparty from a byte array, created by ChannelCounterparty_write
22437  */
22438 struct LDKCResult_ChannelCounterpartyDecodeErrorZ ChannelCounterparty_read(struct LDKu8slice ser);
22439
22440 /**
22441  * Serialize the ChannelDetails object into a byte array which can be read by ChannelDetails_read
22442  */
22443 struct LDKCVec_u8Z ChannelDetails_write(const struct LDKChannelDetails *NONNULL_PTR obj);
22444
22445 /**
22446  * Read a ChannelDetails from a byte array, created by ChannelDetails_write
22447  */
22448 struct LDKCResult_ChannelDetailsDecodeErrorZ ChannelDetails_read(struct LDKu8slice ser);
22449
22450 /**
22451  * Serialize the PhantomRouteHints object into a byte array which can be read by PhantomRouteHints_read
22452  */
22453 struct LDKCVec_u8Z PhantomRouteHints_write(const struct LDKPhantomRouteHints *NONNULL_PTR obj);
22454
22455 /**
22456  * Read a PhantomRouteHints from a byte array, created by PhantomRouteHints_write
22457  */
22458 struct LDKCResult_PhantomRouteHintsDecodeErrorZ PhantomRouteHints_read(struct LDKu8slice ser);
22459
22460 /**
22461  * Serialize the ChannelManager object into a byte array which can be read by ChannelManager_read
22462  */
22463 struct LDKCVec_u8Z ChannelManager_write(const struct LDKChannelManager *NONNULL_PTR obj);
22464
22465 /**
22466  * Frees any resources used by the ChannelManagerReadArgs, if is_owned is set and inner is non-NULL.
22467  */
22468 void ChannelManagerReadArgs_free(struct LDKChannelManagerReadArgs this_obj);
22469
22470 /**
22471  * The keys provider which will give us relevant keys. Some keys will be loaded during
22472  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
22473  * signing data.
22474  */
22475 const struct LDKKeysInterface *ChannelManagerReadArgs_get_keys_manager(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
22476
22477 /**
22478  * The keys provider which will give us relevant keys. Some keys will be loaded during
22479  * deserialization and KeysInterface::read_chan_signer will be used to read per-Channel
22480  * signing data.
22481  */
22482 void ChannelManagerReadArgs_set_keys_manager(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKKeysInterface val);
22483
22484 /**
22485  * The fee_estimator for use in the ChannelManager in the future.
22486  *
22487  * No calls to the FeeEstimator will be made during deserialization.
22488  */
22489 const struct LDKFeeEstimator *ChannelManagerReadArgs_get_fee_estimator(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
22490
22491 /**
22492  * The fee_estimator for use in the ChannelManager in the future.
22493  *
22494  * No calls to the FeeEstimator will be made during deserialization.
22495  */
22496 void ChannelManagerReadArgs_set_fee_estimator(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKFeeEstimator val);
22497
22498 /**
22499  * The chain::Watch for use in the ChannelManager in the future.
22500  *
22501  * No calls to the chain::Watch will be made during deserialization. It is assumed that
22502  * you have deserialized ChannelMonitors separately and will add them to your
22503  * chain::Watch after deserializing this ChannelManager.
22504  */
22505 const struct LDKWatch *ChannelManagerReadArgs_get_chain_monitor(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
22506
22507 /**
22508  * The chain::Watch for use in the ChannelManager in the future.
22509  *
22510  * No calls to the chain::Watch will be made during deserialization. It is assumed that
22511  * you have deserialized ChannelMonitors separately and will add them to your
22512  * chain::Watch after deserializing this ChannelManager.
22513  */
22514 void ChannelManagerReadArgs_set_chain_monitor(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKWatch val);
22515
22516 /**
22517  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
22518  * used to broadcast the latest local commitment transactions of channels which must be
22519  * force-closed during deserialization.
22520  */
22521 const struct LDKBroadcasterInterface *ChannelManagerReadArgs_get_tx_broadcaster(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
22522
22523 /**
22524  * The BroadcasterInterface which will be used in the ChannelManager in the future and may be
22525  * used to broadcast the latest local commitment transactions of channels which must be
22526  * force-closed during deserialization.
22527  */
22528 void ChannelManagerReadArgs_set_tx_broadcaster(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKBroadcasterInterface val);
22529
22530 /**
22531  * The Logger for use in the ChannelManager and which may be used to log information during
22532  * deserialization.
22533  */
22534 const struct LDKLogger *ChannelManagerReadArgs_get_logger(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
22535
22536 /**
22537  * The Logger for use in the ChannelManager and which may be used to log information during
22538  * deserialization.
22539  */
22540 void ChannelManagerReadArgs_set_logger(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKLogger val);
22541
22542 /**
22543  * Default settings used for new channels. Any existing channels will continue to use the
22544  * runtime settings which were stored when the ChannelManager was serialized.
22545  */
22546 struct LDKUserConfig ChannelManagerReadArgs_get_default_config(const struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr);
22547
22548 /**
22549  * Default settings used for new channels. Any existing channels will continue to use the
22550  * runtime settings which were stored when the ChannelManager was serialized.
22551  */
22552 void ChannelManagerReadArgs_set_default_config(struct LDKChannelManagerReadArgs *NONNULL_PTR this_ptr, struct LDKUserConfig val);
22553
22554 /**
22555  * Simple utility function to create a ChannelManagerReadArgs which creates the monitor
22556  * HashMap for you. This is primarily useful for C bindings where it is not practical to
22557  * populate a HashMap directly from C.
22558  */
22559 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);
22560
22561 /**
22562  * Read a C2Tuple_BlockHashChannelManagerZ from a byte array, created by C2Tuple_BlockHashChannelManagerZ_write
22563  */
22564 struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ C2Tuple_BlockHashChannelManagerZ_read(struct LDKu8slice ser, struct LDKChannelManagerReadArgs arg);
22565
22566 /**
22567  * Frees any resources used by the ExpandedKey, if is_owned is set and inner is non-NULL.
22568  */
22569 void ExpandedKey_free(struct LDKExpandedKey this_obj);
22570
22571 /**
22572  * Create a  new [`ExpandedKey`] for generating an inbound payment hash and secret.
22573  *
22574  * It is recommended to cache this value and not regenerate it for each new inbound payment.
22575  */
22576 MUST_USE_RES struct LDKExpandedKey ExpandedKey_new(const uint8_t (*key_material)[32]);
22577
22578 /**
22579  * Equivalent to [`crate::ln::channelmanager::ChannelManager::create_inbound_payment`], but no
22580  * `ChannelManager` is required. Useful for generating invoices for [phantom node payments] without
22581  * a `ChannelManager`.
22582  *
22583  * `keys` is generated by calling [`KeysInterface::get_inbound_payment_key_material`] and then
22584  * calling [`ExpandedKey::new`] with its result. It is recommended to cache this value and not
22585  * regenerate it for each new inbound payment.
22586  *
22587  * `current_time` is a Unix timestamp representing the current time.
22588  *
22589  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
22590  */
22591 struct LDKCResult_C2Tuple_PaymentHashPaymentSecretZNoneZ create(const struct LDKExpandedKey *NONNULL_PTR keys, struct LDKCOption_u64Z min_value_msat, uint32_t invoice_expiry_delta_secs, const struct LDKKeysInterface *NONNULL_PTR keys_manager, uint64_t current_time);
22592
22593 /**
22594  * Equivalent to [`crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash`],
22595  * but no `ChannelManager` is required. Useful for generating invoices for [phantom node payments]
22596  * without a `ChannelManager`.
22597  *
22598  * See [`create`] for information on the `keys` and `current_time` parameters.
22599  *
22600  * [phantom node payments]: crate::chain::keysinterface::PhantomKeysManager
22601  */
22602 struct LDKCResult_PaymentSecretNoneZ create_from_hash(const struct LDKExpandedKey *NONNULL_PTR keys, struct LDKCOption_u64Z min_value_msat, struct LDKThirtyTwoBytes payment_hash, uint32_t invoice_expiry_delta_secs, uint64_t current_time);
22603
22604 /**
22605  * Frees any resources used by the DecodeError, if is_owned is set and inner is non-NULL.
22606  */
22607 void DecodeError_free(struct LDKDecodeError this_obj);
22608
22609 /**
22610  * Creates a copy of the DecodeError
22611  */
22612 struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
22613
22614 /**
22615  * Frees any resources used by the Init, if is_owned is set and inner is non-NULL.
22616  */
22617 void Init_free(struct LDKInit this_obj);
22618
22619 /**
22620  * The relevant features which the sender supports
22621  */
22622 struct LDKInitFeatures Init_get_features(const struct LDKInit *NONNULL_PTR this_ptr);
22623
22624 /**
22625  * The relevant features which the sender supports
22626  */
22627 void Init_set_features(struct LDKInit *NONNULL_PTR this_ptr, struct LDKInitFeatures val);
22628
22629 /**
22630  * The receipient's network address. This adds the option to report a remote IP address
22631  * back to a connecting peer using the init message. A node can decide to use that information
22632  * to discover a potential update to its public IPv4 address (NAT) and use
22633  * that for a node_announcement update message containing the new address.
22634  */
22635 struct LDKCOption_NetAddressZ Init_get_remote_network_address(const struct LDKInit *NONNULL_PTR this_ptr);
22636
22637 /**
22638  * The receipient's network address. This adds the option to report a remote IP address
22639  * back to a connecting peer using the init message. A node can decide to use that information
22640  * to discover a potential update to its public IPv4 address (NAT) and use
22641  * that for a node_announcement update message containing the new address.
22642  */
22643 void Init_set_remote_network_address(struct LDKInit *NONNULL_PTR this_ptr, struct LDKCOption_NetAddressZ val);
22644
22645 /**
22646  * Constructs a new Init given each field
22647  */
22648 MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg, struct LDKCOption_NetAddressZ remote_network_address_arg);
22649
22650 /**
22651  * Creates a copy of the Init
22652  */
22653 struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
22654
22655 /**
22656  * Frees any resources used by the ErrorMessage, if is_owned is set and inner is non-NULL.
22657  */
22658 void ErrorMessage_free(struct LDKErrorMessage this_obj);
22659
22660 /**
22661  * The channel ID involved in the error.
22662  *
22663  * All-0s indicates a general error unrelated to a specific channel, after which all channels
22664  * with the sending peer should be closed.
22665  */
22666 const uint8_t (*ErrorMessage_get_channel_id(const struct LDKErrorMessage *NONNULL_PTR this_ptr))[32];
22667
22668 /**
22669  * The channel ID involved in the error.
22670  *
22671  * All-0s indicates a general error unrelated to a specific channel, after which all channels
22672  * with the sending peer should be closed.
22673  */
22674 void ErrorMessage_set_channel_id(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22675
22676 /**
22677  * A possibly human-readable error description.
22678  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
22679  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
22680  * the terminal emulator or the logging subsystem.
22681  */
22682 struct LDKStr ErrorMessage_get_data(const struct LDKErrorMessage *NONNULL_PTR this_ptr);
22683
22684 /**
22685  * A possibly human-readable error description.
22686  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
22687  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
22688  * the terminal emulator or the logging subsystem.
22689  */
22690 void ErrorMessage_set_data(struct LDKErrorMessage *NONNULL_PTR this_ptr, struct LDKStr val);
22691
22692 /**
22693  * Constructs a new ErrorMessage given each field
22694  */
22695 MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
22696
22697 /**
22698  * Creates a copy of the ErrorMessage
22699  */
22700 struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
22701
22702 /**
22703  * Frees any resources used by the WarningMessage, if is_owned is set and inner is non-NULL.
22704  */
22705 void WarningMessage_free(struct LDKWarningMessage this_obj);
22706
22707 /**
22708  * The channel ID involved in the warning.
22709  *
22710  * All-0s indicates a warning unrelated to a specific channel.
22711  */
22712 const uint8_t (*WarningMessage_get_channel_id(const struct LDKWarningMessage *NONNULL_PTR this_ptr))[32];
22713
22714 /**
22715  * The channel ID involved in the warning.
22716  *
22717  * All-0s indicates a warning unrelated to a specific channel.
22718  */
22719 void WarningMessage_set_channel_id(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22720
22721 /**
22722  * A possibly human-readable warning description.
22723  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
22724  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
22725  * the terminal emulator or the logging subsystem.
22726  */
22727 struct LDKStr WarningMessage_get_data(const struct LDKWarningMessage *NONNULL_PTR this_ptr);
22728
22729 /**
22730  * A possibly human-readable warning description.
22731  * The string should be sanitized before it is used (e.g. emitted to logs or printed to
22732  * stdout). Otherwise, a well crafted error message may trigger a security vulnerability in
22733  * the terminal emulator or the logging subsystem.
22734  */
22735 void WarningMessage_set_data(struct LDKWarningMessage *NONNULL_PTR this_ptr, struct LDKStr val);
22736
22737 /**
22738  * Constructs a new WarningMessage given each field
22739  */
22740 MUST_USE_RES struct LDKWarningMessage WarningMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
22741
22742 /**
22743  * Creates a copy of the WarningMessage
22744  */
22745 struct LDKWarningMessage WarningMessage_clone(const struct LDKWarningMessage *NONNULL_PTR orig);
22746
22747 /**
22748  * Frees any resources used by the Ping, if is_owned is set and inner is non-NULL.
22749  */
22750 void Ping_free(struct LDKPing this_obj);
22751
22752 /**
22753  * The desired response length
22754  */
22755 uint16_t Ping_get_ponglen(const struct LDKPing *NONNULL_PTR this_ptr);
22756
22757 /**
22758  * The desired response length
22759  */
22760 void Ping_set_ponglen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
22761
22762 /**
22763  * The ping packet size.
22764  * This field is not sent on the wire. byteslen zeros are sent.
22765  */
22766 uint16_t Ping_get_byteslen(const struct LDKPing *NONNULL_PTR this_ptr);
22767
22768 /**
22769  * The ping packet size.
22770  * This field is not sent on the wire. byteslen zeros are sent.
22771  */
22772 void Ping_set_byteslen(struct LDKPing *NONNULL_PTR this_ptr, uint16_t val);
22773
22774 /**
22775  * Constructs a new Ping given each field
22776  */
22777 MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
22778
22779 /**
22780  * Creates a copy of the Ping
22781  */
22782 struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
22783
22784 /**
22785  * Frees any resources used by the Pong, if is_owned is set and inner is non-NULL.
22786  */
22787 void Pong_free(struct LDKPong this_obj);
22788
22789 /**
22790  * The pong packet size.
22791  * This field is not sent on the wire. byteslen zeros are sent.
22792  */
22793 uint16_t Pong_get_byteslen(const struct LDKPong *NONNULL_PTR this_ptr);
22794
22795 /**
22796  * The pong packet size.
22797  * This field is not sent on the wire. byteslen zeros are sent.
22798  */
22799 void Pong_set_byteslen(struct LDKPong *NONNULL_PTR this_ptr, uint16_t val);
22800
22801 /**
22802  * Constructs a new Pong given each field
22803  */
22804 MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
22805
22806 /**
22807  * Creates a copy of the Pong
22808  */
22809 struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
22810
22811 /**
22812  * Frees any resources used by the OpenChannel, if is_owned is set and inner is non-NULL.
22813  */
22814 void OpenChannel_free(struct LDKOpenChannel this_obj);
22815
22816 /**
22817  * The genesis hash of the blockchain where the channel is to be opened
22818  */
22819 const uint8_t (*OpenChannel_get_chain_hash(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
22820
22821 /**
22822  * The genesis hash of the blockchain where the channel is to be opened
22823  */
22824 void OpenChannel_set_chain_hash(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22825
22826 /**
22827  * A temporary channel ID, until the funding outpoint is announced
22828  */
22829 const uint8_t (*OpenChannel_get_temporary_channel_id(const struct LDKOpenChannel *NONNULL_PTR this_ptr))[32];
22830
22831 /**
22832  * A temporary channel ID, until the funding outpoint is announced
22833  */
22834 void OpenChannel_set_temporary_channel_id(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
22835
22836 /**
22837  * The channel value
22838  */
22839 uint64_t OpenChannel_get_funding_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22840
22841 /**
22842  * The channel value
22843  */
22844 void OpenChannel_set_funding_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
22845
22846 /**
22847  * The amount to push to the counterparty as part of the open, in milli-satoshi
22848  */
22849 uint64_t OpenChannel_get_push_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22850
22851 /**
22852  * The amount to push to the counterparty as part of the open, in milli-satoshi
22853  */
22854 void OpenChannel_set_push_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
22855
22856 /**
22857  * The threshold below which outputs on transactions broadcast by sender will be omitted
22858  */
22859 uint64_t OpenChannel_get_dust_limit_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22860
22861 /**
22862  * The threshold below which outputs on transactions broadcast by sender will be omitted
22863  */
22864 void OpenChannel_set_dust_limit_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
22865
22866 /**
22867  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
22868  */
22869 uint64_t OpenChannel_get_max_htlc_value_in_flight_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22870
22871 /**
22872  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
22873  */
22874 void OpenChannel_set_max_htlc_value_in_flight_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
22875
22876 /**
22877  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
22878  */
22879 uint64_t OpenChannel_get_channel_reserve_satoshis(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22880
22881 /**
22882  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
22883  */
22884 void OpenChannel_set_channel_reserve_satoshis(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
22885
22886 /**
22887  * The minimum HTLC size incoming to sender, in milli-satoshi
22888  */
22889 uint64_t OpenChannel_get_htlc_minimum_msat(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22890
22891 /**
22892  * The minimum HTLC size incoming to sender, in milli-satoshi
22893  */
22894 void OpenChannel_set_htlc_minimum_msat(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint64_t val);
22895
22896 /**
22897  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
22898  */
22899 uint32_t OpenChannel_get_feerate_per_kw(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22900
22901 /**
22902  * The feerate per 1000-weight of sender generated transactions, until updated by update_fee
22903  */
22904 void OpenChannel_set_feerate_per_kw(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint32_t val);
22905
22906 /**
22907  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
22908  */
22909 uint16_t OpenChannel_get_to_self_delay(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22910
22911 /**
22912  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
22913  */
22914 void OpenChannel_set_to_self_delay(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
22915
22916 /**
22917  * The maximum number of inbound HTLCs towards sender
22918  */
22919 uint16_t OpenChannel_get_max_accepted_htlcs(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22920
22921 /**
22922  * The maximum number of inbound HTLCs towards sender
22923  */
22924 void OpenChannel_set_max_accepted_htlcs(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint16_t val);
22925
22926 /**
22927  * The sender's key controlling the funding transaction
22928  */
22929 struct LDKPublicKey OpenChannel_get_funding_pubkey(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22930
22931 /**
22932  * The sender's key controlling the funding transaction
22933  */
22934 void OpenChannel_set_funding_pubkey(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22935
22936 /**
22937  * Used to derive a revocation key for transactions broadcast by counterparty
22938  */
22939 struct LDKPublicKey OpenChannel_get_revocation_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22940
22941 /**
22942  * Used to derive a revocation key for transactions broadcast by counterparty
22943  */
22944 void OpenChannel_set_revocation_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22945
22946 /**
22947  * A payment key to sender for transactions broadcast by counterparty
22948  */
22949 struct LDKPublicKey OpenChannel_get_payment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22950
22951 /**
22952  * A payment key to sender for transactions broadcast by counterparty
22953  */
22954 void OpenChannel_set_payment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22955
22956 /**
22957  * Used to derive a payment key to sender for transactions broadcast by sender
22958  */
22959 struct LDKPublicKey OpenChannel_get_delayed_payment_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22960
22961 /**
22962  * Used to derive a payment key to sender for transactions broadcast by sender
22963  */
22964 void OpenChannel_set_delayed_payment_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22965
22966 /**
22967  * Used to derive an HTLC payment key to sender
22968  */
22969 struct LDKPublicKey OpenChannel_get_htlc_basepoint(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22970
22971 /**
22972  * Used to derive an HTLC payment key to sender
22973  */
22974 void OpenChannel_set_htlc_basepoint(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22975
22976 /**
22977  * The first to-be-broadcast-by-sender transaction's per commitment point
22978  */
22979 struct LDKPublicKey OpenChannel_get_first_per_commitment_point(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22980
22981 /**
22982  * The first to-be-broadcast-by-sender transaction's per commitment point
22983  */
22984 void OpenChannel_set_first_per_commitment_point(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
22985
22986 /**
22987  * Channel flags
22988  */
22989 uint8_t OpenChannel_get_channel_flags(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
22990
22991 /**
22992  * Channel flags
22993  */
22994 void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
22995
22996 /**
22997  * The channel type that this channel will represent. If none is set, we derive the channel
22998  * type from the intersection of our feature bits with our counterparty's feature bits from
22999  * the Init message.
23000  *
23001  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23002  */
23003 struct LDKChannelTypeFeatures OpenChannel_get_channel_type(const struct LDKOpenChannel *NONNULL_PTR this_ptr);
23004
23005 /**
23006  * The channel type that this channel will represent. If none is set, we derive the channel
23007  * type from the intersection of our feature bits with our counterparty's feature bits from
23008  * the Init message.
23009  *
23010  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23011  */
23012 void OpenChannel_set_channel_type(struct LDKOpenChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
23013
23014 /**
23015  * Creates a copy of the OpenChannel
23016  */
23017 struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
23018
23019 /**
23020  * Frees any resources used by the AcceptChannel, if is_owned is set and inner is non-NULL.
23021  */
23022 void AcceptChannel_free(struct LDKAcceptChannel this_obj);
23023
23024 /**
23025  * A temporary channel ID, until the funding outpoint is announced
23026  */
23027 const uint8_t (*AcceptChannel_get_temporary_channel_id(const struct LDKAcceptChannel *NONNULL_PTR this_ptr))[32];
23028
23029 /**
23030  * A temporary channel ID, until the funding outpoint is announced
23031  */
23032 void AcceptChannel_set_temporary_channel_id(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23033
23034 /**
23035  * The threshold below which outputs on transactions broadcast by sender will be omitted
23036  */
23037 uint64_t AcceptChannel_get_dust_limit_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23038
23039 /**
23040  * The threshold below which outputs on transactions broadcast by sender will be omitted
23041  */
23042 void AcceptChannel_set_dust_limit_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
23043
23044 /**
23045  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
23046  */
23047 uint64_t AcceptChannel_get_max_htlc_value_in_flight_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23048
23049 /**
23050  * The maximum inbound HTLC value in flight towards sender, in milli-satoshi
23051  */
23052 void AcceptChannel_set_max_htlc_value_in_flight_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
23053
23054 /**
23055  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
23056  */
23057 uint64_t AcceptChannel_get_channel_reserve_satoshis(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23058
23059 /**
23060  * The minimum value unencumbered by HTLCs for the counterparty to keep in the channel
23061  */
23062 void AcceptChannel_set_channel_reserve_satoshis(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
23063
23064 /**
23065  * The minimum HTLC size incoming to sender, in milli-satoshi
23066  */
23067 uint64_t AcceptChannel_get_htlc_minimum_msat(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23068
23069 /**
23070  * The minimum HTLC size incoming to sender, in milli-satoshi
23071  */
23072 void AcceptChannel_set_htlc_minimum_msat(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint64_t val);
23073
23074 /**
23075  * Minimum depth of the funding transaction before the channel is considered open
23076  */
23077 uint32_t AcceptChannel_get_minimum_depth(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23078
23079 /**
23080  * Minimum depth of the funding transaction before the channel is considered open
23081  */
23082 void AcceptChannel_set_minimum_depth(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint32_t val);
23083
23084 /**
23085  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
23086  */
23087 uint16_t AcceptChannel_get_to_self_delay(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23088
23089 /**
23090  * The number of blocks which the counterparty will have to wait to claim on-chain funds if they broadcast a commitment transaction
23091  */
23092 void AcceptChannel_set_to_self_delay(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
23093
23094 /**
23095  * The maximum number of inbound HTLCs towards sender
23096  */
23097 uint16_t AcceptChannel_get_max_accepted_htlcs(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23098
23099 /**
23100  * The maximum number of inbound HTLCs towards sender
23101  */
23102 void AcceptChannel_set_max_accepted_htlcs(struct LDKAcceptChannel *NONNULL_PTR this_ptr, uint16_t val);
23103
23104 /**
23105  * The sender's key controlling the funding transaction
23106  */
23107 struct LDKPublicKey AcceptChannel_get_funding_pubkey(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23108
23109 /**
23110  * The sender's key controlling the funding transaction
23111  */
23112 void AcceptChannel_set_funding_pubkey(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23113
23114 /**
23115  * Used to derive a revocation key for transactions broadcast by counterparty
23116  */
23117 struct LDKPublicKey AcceptChannel_get_revocation_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23118
23119 /**
23120  * Used to derive a revocation key for transactions broadcast by counterparty
23121  */
23122 void AcceptChannel_set_revocation_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23123
23124 /**
23125  * A payment key to sender for transactions broadcast by counterparty
23126  */
23127 struct LDKPublicKey AcceptChannel_get_payment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23128
23129 /**
23130  * A payment key to sender for transactions broadcast by counterparty
23131  */
23132 void AcceptChannel_set_payment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23133
23134 /**
23135  * Used to derive a payment key to sender for transactions broadcast by sender
23136  */
23137 struct LDKPublicKey AcceptChannel_get_delayed_payment_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23138
23139 /**
23140  * Used to derive a payment key to sender for transactions broadcast by sender
23141  */
23142 void AcceptChannel_set_delayed_payment_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23143
23144 /**
23145  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
23146  */
23147 struct LDKPublicKey AcceptChannel_get_htlc_basepoint(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23148
23149 /**
23150  * Used to derive an HTLC payment key to sender for transactions broadcast by counterparty
23151  */
23152 void AcceptChannel_set_htlc_basepoint(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23153
23154 /**
23155  * The first to-be-broadcast-by-sender transaction's per commitment point
23156  */
23157 struct LDKPublicKey AcceptChannel_get_first_per_commitment_point(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23158
23159 /**
23160  * The first to-be-broadcast-by-sender transaction's per commitment point
23161  */
23162 void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23163
23164 /**
23165  * The channel type that this channel will represent. If none is set, we derive the channel
23166  * type from the intersection of our feature bits with our counterparty's feature bits from
23167  * the Init message.
23168  *
23169  * This is required to match the equivalent field in [`OpenChannel::channel_type`].
23170  *
23171  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23172  */
23173 struct LDKChannelTypeFeatures AcceptChannel_get_channel_type(const struct LDKAcceptChannel *NONNULL_PTR this_ptr);
23174
23175 /**
23176  * The channel type that this channel will represent. If none is set, we derive the channel
23177  * type from the intersection of our feature bits with our counterparty's feature bits from
23178  * the Init message.
23179  *
23180  * This is required to match the equivalent field in [`OpenChannel::channel_type`].
23181  *
23182  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23183  */
23184 void AcceptChannel_set_channel_type(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKChannelTypeFeatures val);
23185
23186 /**
23187  * Creates a copy of the AcceptChannel
23188  */
23189 struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
23190
23191 /**
23192  * Frees any resources used by the FundingCreated, if is_owned is set and inner is non-NULL.
23193  */
23194 void FundingCreated_free(struct LDKFundingCreated this_obj);
23195
23196 /**
23197  * A temporary channel ID, until the funding is established
23198  */
23199 const uint8_t (*FundingCreated_get_temporary_channel_id(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
23200
23201 /**
23202  * A temporary channel ID, until the funding is established
23203  */
23204 void FundingCreated_set_temporary_channel_id(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23205
23206 /**
23207  * The funding transaction ID
23208  */
23209 const uint8_t (*FundingCreated_get_funding_txid(const struct LDKFundingCreated *NONNULL_PTR this_ptr))[32];
23210
23211 /**
23212  * The funding transaction ID
23213  */
23214 void FundingCreated_set_funding_txid(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23215
23216 /**
23217  * The specific output index funding this channel
23218  */
23219 uint16_t FundingCreated_get_funding_output_index(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
23220
23221 /**
23222  * The specific output index funding this channel
23223  */
23224 void FundingCreated_set_funding_output_index(struct LDKFundingCreated *NONNULL_PTR this_ptr, uint16_t val);
23225
23226 /**
23227  * The signature of the channel initiator (funder) on the initial commitment transaction
23228  */
23229 struct LDKSignature FundingCreated_get_signature(const struct LDKFundingCreated *NONNULL_PTR this_ptr);
23230
23231 /**
23232  * The signature of the channel initiator (funder) on the initial commitment transaction
23233  */
23234 void FundingCreated_set_signature(struct LDKFundingCreated *NONNULL_PTR this_ptr, struct LDKSignature val);
23235
23236 /**
23237  * Constructs a new FundingCreated given each field
23238  */
23239 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);
23240
23241 /**
23242  * Creates a copy of the FundingCreated
23243  */
23244 struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
23245
23246 /**
23247  * Frees any resources used by the FundingSigned, if is_owned is set and inner is non-NULL.
23248  */
23249 void FundingSigned_free(struct LDKFundingSigned this_obj);
23250
23251 /**
23252  * The channel ID
23253  */
23254 const uint8_t (*FundingSigned_get_channel_id(const struct LDKFundingSigned *NONNULL_PTR this_ptr))[32];
23255
23256 /**
23257  * The channel ID
23258  */
23259 void FundingSigned_set_channel_id(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23260
23261 /**
23262  * The signature of the channel acceptor (fundee) on the initial commitment transaction
23263  */
23264 struct LDKSignature FundingSigned_get_signature(const struct LDKFundingSigned *NONNULL_PTR this_ptr);
23265
23266 /**
23267  * The signature of the channel acceptor (fundee) on the initial commitment transaction
23268  */
23269 void FundingSigned_set_signature(struct LDKFundingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
23270
23271 /**
23272  * Constructs a new FundingSigned given each field
23273  */
23274 MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
23275
23276 /**
23277  * Creates a copy of the FundingSigned
23278  */
23279 struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
23280
23281 /**
23282  * Frees any resources used by the ChannelReady, if is_owned is set and inner is non-NULL.
23283  */
23284 void ChannelReady_free(struct LDKChannelReady this_obj);
23285
23286 /**
23287  * The channel ID
23288  */
23289 const uint8_t (*ChannelReady_get_channel_id(const struct LDKChannelReady *NONNULL_PTR this_ptr))[32];
23290
23291 /**
23292  * The channel ID
23293  */
23294 void ChannelReady_set_channel_id(struct LDKChannelReady *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23295
23296 /**
23297  * The per-commitment point of the second commitment transaction
23298  */
23299 struct LDKPublicKey ChannelReady_get_next_per_commitment_point(const struct LDKChannelReady *NONNULL_PTR this_ptr);
23300
23301 /**
23302  * The per-commitment point of the second commitment transaction
23303  */
23304 void ChannelReady_set_next_per_commitment_point(struct LDKChannelReady *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23305
23306 /**
23307  * If set, provides a short_channel_id alias for this channel. The sender will accept payments
23308  * to be forwarded over this SCID and forward them to this messages' recipient.
23309  */
23310 struct LDKCOption_u64Z ChannelReady_get_short_channel_id_alias(const struct LDKChannelReady *NONNULL_PTR this_ptr);
23311
23312 /**
23313  * If set, provides a short_channel_id alias for this channel. The sender will accept payments
23314  * to be forwarded over this SCID and forward them to this messages' recipient.
23315  */
23316 void ChannelReady_set_short_channel_id_alias(struct LDKChannelReady *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
23317
23318 /**
23319  * Constructs a new ChannelReady given each field
23320  */
23321 MUST_USE_RES struct LDKChannelReady ChannelReady_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg, struct LDKCOption_u64Z short_channel_id_alias_arg);
23322
23323 /**
23324  * Creates a copy of the ChannelReady
23325  */
23326 struct LDKChannelReady ChannelReady_clone(const struct LDKChannelReady *NONNULL_PTR orig);
23327
23328 /**
23329  * Frees any resources used by the Shutdown, if is_owned is set and inner is non-NULL.
23330  */
23331 void Shutdown_free(struct LDKShutdown this_obj);
23332
23333 /**
23334  * The channel ID
23335  */
23336 const uint8_t (*Shutdown_get_channel_id(const struct LDKShutdown *NONNULL_PTR this_ptr))[32];
23337
23338 /**
23339  * The channel ID
23340  */
23341 void Shutdown_set_channel_id(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23342
23343 /**
23344  * The destination of this peer's funds on closing.
23345  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
23346  */
23347 struct LDKu8slice Shutdown_get_scriptpubkey(const struct LDKShutdown *NONNULL_PTR this_ptr);
23348
23349 /**
23350  * The destination of this peer's funds on closing.
23351  * Must be in one of these forms: p2pkh, p2sh, p2wpkh, p2wsh.
23352  */
23353 void Shutdown_set_scriptpubkey(struct LDKShutdown *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
23354
23355 /**
23356  * Constructs a new Shutdown given each field
23357  */
23358 MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
23359
23360 /**
23361  * Creates a copy of the Shutdown
23362  */
23363 struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
23364
23365 /**
23366  * Frees any resources used by the ClosingSignedFeeRange, if is_owned is set and inner is non-NULL.
23367  */
23368 void ClosingSignedFeeRange_free(struct LDKClosingSignedFeeRange this_obj);
23369
23370 /**
23371  * The minimum absolute fee, in satoshis, which the sender is willing to place on the closing
23372  * transaction.
23373  */
23374 uint64_t ClosingSignedFeeRange_get_min_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
23375
23376 /**
23377  * The minimum absolute fee, in satoshis, which the sender is willing to place on the closing
23378  * transaction.
23379  */
23380 void ClosingSignedFeeRange_set_min_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
23381
23382 /**
23383  * The maximum absolute fee, in satoshis, which the sender is willing to place on the closing
23384  * transaction.
23385  */
23386 uint64_t ClosingSignedFeeRange_get_max_fee_satoshis(const struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr);
23387
23388 /**
23389  * The maximum absolute fee, in satoshis, which the sender is willing to place on the closing
23390  * transaction.
23391  */
23392 void ClosingSignedFeeRange_set_max_fee_satoshis(struct LDKClosingSignedFeeRange *NONNULL_PTR this_ptr, uint64_t val);
23393
23394 /**
23395  * Constructs a new ClosingSignedFeeRange given each field
23396  */
23397 MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
23398
23399 /**
23400  * Creates a copy of the ClosingSignedFeeRange
23401  */
23402 struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
23403
23404 /**
23405  * Frees any resources used by the ClosingSigned, if is_owned is set and inner is non-NULL.
23406  */
23407 void ClosingSigned_free(struct LDKClosingSigned this_obj);
23408
23409 /**
23410  * The channel ID
23411  */
23412 const uint8_t (*ClosingSigned_get_channel_id(const struct LDKClosingSigned *NONNULL_PTR this_ptr))[32];
23413
23414 /**
23415  * The channel ID
23416  */
23417 void ClosingSigned_set_channel_id(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23418
23419 /**
23420  * The proposed total fee for the closing transaction
23421  */
23422 uint64_t ClosingSigned_get_fee_satoshis(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
23423
23424 /**
23425  * The proposed total fee for the closing transaction
23426  */
23427 void ClosingSigned_set_fee_satoshis(struct LDKClosingSigned *NONNULL_PTR this_ptr, uint64_t val);
23428
23429 /**
23430  * A signature on the closing transaction
23431  */
23432 struct LDKSignature ClosingSigned_get_signature(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
23433
23434 /**
23435  * A signature on the closing transaction
23436  */
23437 void ClosingSigned_set_signature(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
23438
23439 /**
23440  * The minimum and maximum fees which the sender is willing to accept, provided only by new
23441  * nodes.
23442  *
23443  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
23444  */
23445 struct LDKClosingSignedFeeRange ClosingSigned_get_fee_range(const struct LDKClosingSigned *NONNULL_PTR this_ptr);
23446
23447 /**
23448  * The minimum and maximum fees which the sender is willing to accept, provided only by new
23449  * nodes.
23450  *
23451  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
23452  */
23453 void ClosingSigned_set_fee_range(struct LDKClosingSigned *NONNULL_PTR this_ptr, struct LDKClosingSignedFeeRange val);
23454
23455 /**
23456  * Constructs a new ClosingSigned given each field
23457  */
23458 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);
23459
23460 /**
23461  * Creates a copy of the ClosingSigned
23462  */
23463 struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
23464
23465 /**
23466  * Frees any resources used by the UpdateAddHTLC, if is_owned is set and inner is non-NULL.
23467  */
23468 void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
23469
23470 /**
23471  * The channel ID
23472  */
23473 const uint8_t (*UpdateAddHTLC_get_channel_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
23474
23475 /**
23476  * The channel ID
23477  */
23478 void UpdateAddHTLC_set_channel_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23479
23480 /**
23481  * The HTLC ID
23482  */
23483 uint64_t UpdateAddHTLC_get_htlc_id(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
23484
23485 /**
23486  * The HTLC ID
23487  */
23488 void UpdateAddHTLC_set_htlc_id(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
23489
23490 /**
23491  * The HTLC value in milli-satoshi
23492  */
23493 uint64_t UpdateAddHTLC_get_amount_msat(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
23494
23495 /**
23496  * The HTLC value in milli-satoshi
23497  */
23498 void UpdateAddHTLC_set_amount_msat(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint64_t val);
23499
23500 /**
23501  * The payment hash, the pre-image of which controls HTLC redemption
23502  */
23503 const uint8_t (*UpdateAddHTLC_get_payment_hash(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr))[32];
23504
23505 /**
23506  * The payment hash, the pre-image of which controls HTLC redemption
23507  */
23508 void UpdateAddHTLC_set_payment_hash(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23509
23510 /**
23511  * The expiry height of the HTLC
23512  */
23513 uint32_t UpdateAddHTLC_get_cltv_expiry(const struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr);
23514
23515 /**
23516  * The expiry height of the HTLC
23517  */
23518 void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
23519
23520 /**
23521  * Creates a copy of the UpdateAddHTLC
23522  */
23523 struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
23524
23525 /**
23526  * Frees any resources used by the OnionMessage, if is_owned is set and inner is non-NULL.
23527  */
23528 void OnionMessage_free(struct LDKOnionMessage this_obj);
23529
23530 /**
23531  * Used in decrypting the onion packet's payload.
23532  */
23533 struct LDKPublicKey OnionMessage_get_blinding_point(const struct LDKOnionMessage *NONNULL_PTR this_ptr);
23534
23535 /**
23536  * Used in decrypting the onion packet's payload.
23537  */
23538 void OnionMessage_set_blinding_point(struct LDKOnionMessage *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23539
23540 /**
23541  * Creates a copy of the OnionMessage
23542  */
23543 struct LDKOnionMessage OnionMessage_clone(const struct LDKOnionMessage *NONNULL_PTR orig);
23544
23545 /**
23546  * Frees any resources used by the UpdateFulfillHTLC, if is_owned is set and inner is non-NULL.
23547  */
23548 void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
23549
23550 /**
23551  * The channel ID
23552  */
23553 const uint8_t (*UpdateFulfillHTLC_get_channel_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
23554
23555 /**
23556  * The channel ID
23557  */
23558 void UpdateFulfillHTLC_set_channel_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23559
23560 /**
23561  * The HTLC ID
23562  */
23563 uint64_t UpdateFulfillHTLC_get_htlc_id(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr);
23564
23565 /**
23566  * The HTLC ID
23567  */
23568 void UpdateFulfillHTLC_set_htlc_id(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, uint64_t val);
23569
23570 /**
23571  * The pre-image of the payment hash, allowing HTLC redemption
23572  */
23573 const uint8_t (*UpdateFulfillHTLC_get_payment_preimage(const struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr))[32];
23574
23575 /**
23576  * The pre-image of the payment hash, allowing HTLC redemption
23577  */
23578 void UpdateFulfillHTLC_set_payment_preimage(struct LDKUpdateFulfillHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23579
23580 /**
23581  * Constructs a new UpdateFulfillHTLC given each field
23582  */
23583 MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
23584
23585 /**
23586  * Creates a copy of the UpdateFulfillHTLC
23587  */
23588 struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
23589
23590 /**
23591  * Frees any resources used by the UpdateFailHTLC, if is_owned is set and inner is non-NULL.
23592  */
23593 void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
23594
23595 /**
23596  * The channel ID
23597  */
23598 const uint8_t (*UpdateFailHTLC_get_channel_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr))[32];
23599
23600 /**
23601  * The channel ID
23602  */
23603 void UpdateFailHTLC_set_channel_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23604
23605 /**
23606  * The HTLC ID
23607  */
23608 uint64_t UpdateFailHTLC_get_htlc_id(const struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr);
23609
23610 /**
23611  * The HTLC ID
23612  */
23613 void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
23614
23615 /**
23616  * Creates a copy of the UpdateFailHTLC
23617  */
23618 struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
23619
23620 /**
23621  * Frees any resources used by the UpdateFailMalformedHTLC, if is_owned is set and inner is non-NULL.
23622  */
23623 void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
23624
23625 /**
23626  * The channel ID
23627  */
23628 const uint8_t (*UpdateFailMalformedHTLC_get_channel_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr))[32];
23629
23630 /**
23631  * The channel ID
23632  */
23633 void UpdateFailMalformedHTLC_set_channel_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23634
23635 /**
23636  * The HTLC ID
23637  */
23638 uint64_t UpdateFailMalformedHTLC_get_htlc_id(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
23639
23640 /**
23641  * The HTLC ID
23642  */
23643 void UpdateFailMalformedHTLC_set_htlc_id(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint64_t val);
23644
23645 /**
23646  * The failure code
23647  */
23648 uint16_t UpdateFailMalformedHTLC_get_failure_code(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr);
23649
23650 /**
23651  * The failure code
23652  */
23653 void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
23654
23655 /**
23656  * Creates a copy of the UpdateFailMalformedHTLC
23657  */
23658 struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
23659
23660 /**
23661  * Frees any resources used by the CommitmentSigned, if is_owned is set and inner is non-NULL.
23662  */
23663 void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
23664
23665 /**
23666  * The channel ID
23667  */
23668 const uint8_t (*CommitmentSigned_get_channel_id(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr))[32];
23669
23670 /**
23671  * The channel ID
23672  */
23673 void CommitmentSigned_set_channel_id(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23674
23675 /**
23676  * A signature on the commitment transaction
23677  */
23678 struct LDKSignature CommitmentSigned_get_signature(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
23679
23680 /**
23681  * A signature on the commitment transaction
23682  */
23683 void CommitmentSigned_set_signature(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKSignature val);
23684
23685 /**
23686  * Signatures on the HTLC transactions
23687  *
23688  * Returns a copy of the field.
23689  */
23690 struct LDKCVec_SignatureZ CommitmentSigned_get_htlc_signatures(const struct LDKCommitmentSigned *NONNULL_PTR this_ptr);
23691
23692 /**
23693  * Signatures on the HTLC transactions
23694  */
23695 void CommitmentSigned_set_htlc_signatures(struct LDKCommitmentSigned *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
23696
23697 /**
23698  * Constructs a new CommitmentSigned given each field
23699  */
23700 MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
23701
23702 /**
23703  * Creates a copy of the CommitmentSigned
23704  */
23705 struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
23706
23707 /**
23708  * Frees any resources used by the RevokeAndACK, if is_owned is set and inner is non-NULL.
23709  */
23710 void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
23711
23712 /**
23713  * The channel ID
23714  */
23715 const uint8_t (*RevokeAndACK_get_channel_id(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
23716
23717 /**
23718  * The channel ID
23719  */
23720 void RevokeAndACK_set_channel_id(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23721
23722 /**
23723  * The secret corresponding to the per-commitment point
23724  */
23725 const uint8_t (*RevokeAndACK_get_per_commitment_secret(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr))[32];
23726
23727 /**
23728  * The secret corresponding to the per-commitment point
23729  */
23730 void RevokeAndACK_set_per_commitment_secret(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23731
23732 /**
23733  * The next sender-broadcast commitment transaction's per-commitment point
23734  */
23735 struct LDKPublicKey RevokeAndACK_get_next_per_commitment_point(const struct LDKRevokeAndACK *NONNULL_PTR this_ptr);
23736
23737 /**
23738  * The next sender-broadcast commitment transaction's per-commitment point
23739  */
23740 void RevokeAndACK_set_next_per_commitment_point(struct LDKRevokeAndACK *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23741
23742 /**
23743  * Constructs a new RevokeAndACK given each field
23744  */
23745 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);
23746
23747 /**
23748  * Creates a copy of the RevokeAndACK
23749  */
23750 struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
23751
23752 /**
23753  * Frees any resources used by the UpdateFee, if is_owned is set and inner is non-NULL.
23754  */
23755 void UpdateFee_free(struct LDKUpdateFee this_obj);
23756
23757 /**
23758  * The channel ID
23759  */
23760 const uint8_t (*UpdateFee_get_channel_id(const struct LDKUpdateFee *NONNULL_PTR this_ptr))[32];
23761
23762 /**
23763  * The channel ID
23764  */
23765 void UpdateFee_set_channel_id(struct LDKUpdateFee *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23766
23767 /**
23768  * Fee rate per 1000-weight of the transaction
23769  */
23770 uint32_t UpdateFee_get_feerate_per_kw(const struct LDKUpdateFee *NONNULL_PTR this_ptr);
23771
23772 /**
23773  * Fee rate per 1000-weight of the transaction
23774  */
23775 void UpdateFee_set_feerate_per_kw(struct LDKUpdateFee *NONNULL_PTR this_ptr, uint32_t val);
23776
23777 /**
23778  * Constructs a new UpdateFee given each field
23779  */
23780 MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
23781
23782 /**
23783  * Creates a copy of the UpdateFee
23784  */
23785 struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
23786
23787 /**
23788  * Frees any resources used by the DataLossProtect, if is_owned is set and inner is non-NULL.
23789  */
23790 void DataLossProtect_free(struct LDKDataLossProtect this_obj);
23791
23792 /**
23793  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
23794  * belonging to the recipient
23795  */
23796 const uint8_t (*DataLossProtect_get_your_last_per_commitment_secret(const struct LDKDataLossProtect *NONNULL_PTR this_ptr))[32];
23797
23798 /**
23799  * Proof that the sender knows the per-commitment secret of a specific commitment transaction
23800  * belonging to the recipient
23801  */
23802 void DataLossProtect_set_your_last_per_commitment_secret(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23803
23804 /**
23805  * The sender's per-commitment point for their current commitment transaction
23806  */
23807 struct LDKPublicKey DataLossProtect_get_my_current_per_commitment_point(const struct LDKDataLossProtect *NONNULL_PTR this_ptr);
23808
23809 /**
23810  * The sender's per-commitment point for their current commitment transaction
23811  */
23812 void DataLossProtect_set_my_current_per_commitment_point(struct LDKDataLossProtect *NONNULL_PTR this_ptr, struct LDKPublicKey val);
23813
23814 /**
23815  * Constructs a new DataLossProtect given each field
23816  */
23817 MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
23818
23819 /**
23820  * Creates a copy of the DataLossProtect
23821  */
23822 struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
23823
23824 /**
23825  * Frees any resources used by the ChannelReestablish, if is_owned is set and inner is non-NULL.
23826  */
23827 void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
23828
23829 /**
23830  * The channel ID
23831  */
23832 const uint8_t (*ChannelReestablish_get_channel_id(const struct LDKChannelReestablish *NONNULL_PTR this_ptr))[32];
23833
23834 /**
23835  * The channel ID
23836  */
23837 void ChannelReestablish_set_channel_id(struct LDKChannelReestablish *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23838
23839 /**
23840  * The next commitment number for the sender
23841  */
23842 uint64_t ChannelReestablish_get_next_local_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
23843
23844 /**
23845  * The next commitment number for the sender
23846  */
23847 void ChannelReestablish_set_next_local_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
23848
23849 /**
23850  * The next commitment number for the recipient
23851  */
23852 uint64_t ChannelReestablish_get_next_remote_commitment_number(const struct LDKChannelReestablish *NONNULL_PTR this_ptr);
23853
23854 /**
23855  * The next commitment number for the recipient
23856  */
23857 void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
23858
23859 /**
23860  * Creates a copy of the ChannelReestablish
23861  */
23862 struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
23863
23864 /**
23865  * Frees any resources used by the AnnouncementSignatures, if is_owned is set and inner is non-NULL.
23866  */
23867 void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
23868
23869 /**
23870  * The channel ID
23871  */
23872 const uint8_t (*AnnouncementSignatures_get_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr))[32];
23873
23874 /**
23875  * The channel ID
23876  */
23877 void AnnouncementSignatures_set_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
23878
23879 /**
23880  * The short channel ID
23881  */
23882 uint64_t AnnouncementSignatures_get_short_channel_id(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
23883
23884 /**
23885  * The short channel ID
23886  */
23887 void AnnouncementSignatures_set_short_channel_id(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, uint64_t val);
23888
23889 /**
23890  * A signature by the node key
23891  */
23892 struct LDKSignature AnnouncementSignatures_get_node_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
23893
23894 /**
23895  * A signature by the node key
23896  */
23897 void AnnouncementSignatures_set_node_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
23898
23899 /**
23900  * A signature by the funding key
23901  */
23902 struct LDKSignature AnnouncementSignatures_get_bitcoin_signature(const struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr);
23903
23904 /**
23905  * A signature by the funding key
23906  */
23907 void AnnouncementSignatures_set_bitcoin_signature(struct LDKAnnouncementSignatures *NONNULL_PTR this_ptr, struct LDKSignature val);
23908
23909 /**
23910  * Constructs a new AnnouncementSignatures given each field
23911  */
23912 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);
23913
23914 /**
23915  * Creates a copy of the AnnouncementSignatures
23916  */
23917 struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
23918
23919 /**
23920  * Frees any resources used by the NetAddress
23921  */
23922 void NetAddress_free(struct LDKNetAddress this_ptr);
23923
23924 /**
23925  * Creates a copy of the NetAddress
23926  */
23927 struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
23928
23929 /**
23930  * Utility method to constructs a new IPv4-variant NetAddress
23931  */
23932 struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
23933
23934 /**
23935  * Utility method to constructs a new IPv6-variant NetAddress
23936  */
23937 struct LDKNetAddress NetAddress_ipv6(struct LDKSixteenBytes addr, uint16_t port);
23938
23939 /**
23940  * Utility method to constructs a new OnionV2-variant NetAddress
23941  */
23942 struct LDKNetAddress NetAddress_onion_v2(struct LDKTwelveBytes a);
23943
23944 /**
23945  * Utility method to constructs a new OnionV3-variant NetAddress
23946  */
23947 struct LDKNetAddress NetAddress_onion_v3(struct LDKThirtyTwoBytes ed25519_pubkey, uint16_t checksum, uint8_t version, uint16_t port);
23948
23949 /**
23950  * Utility method to constructs a new Hostname-variant NetAddress
23951  */
23952 struct LDKNetAddress NetAddress_hostname(struct LDKHostname hostname, uint16_t port);
23953
23954 /**
23955  * Serialize the NetAddress object into a byte array which can be read by NetAddress_read
23956  */
23957 struct LDKCVec_u8Z NetAddress_write(const struct LDKNetAddress *NONNULL_PTR obj);
23958
23959 /**
23960  * Read a NetAddress from a byte array, created by NetAddress_write
23961  */
23962 struct LDKCResult_NetAddressDecodeErrorZ NetAddress_read(struct LDKu8slice ser);
23963
23964 /**
23965  * Frees any resources used by the UnsignedNodeAnnouncement, if is_owned is set and inner is non-NULL.
23966  */
23967 void UnsignedNodeAnnouncement_free(struct LDKUnsignedNodeAnnouncement this_obj);
23968
23969 /**
23970  * The advertised features
23971  */
23972 struct LDKNodeFeatures UnsignedNodeAnnouncement_get_features(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
23973
23974 /**
23975  * The advertised features
23976  */
23977 void UnsignedNodeAnnouncement_set_features(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
23978
23979 /**
23980  * A strictly monotonic announcement counter, with gaps allowed
23981  */
23982 uint32_t UnsignedNodeAnnouncement_get_timestamp(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
23983
23984 /**
23985  * A strictly monotonic announcement counter, with gaps allowed
23986  */
23987 void UnsignedNodeAnnouncement_set_timestamp(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, uint32_t val);
23988
23989 /**
23990  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
23991  * to this node).
23992  */
23993 struct LDKPublicKey UnsignedNodeAnnouncement_get_node_id(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
23994
23995 /**
23996  * The node_id this announcement originated from (don't rebroadcast the node_announcement back
23997  * to this node).
23998  */
23999 void UnsignedNodeAnnouncement_set_node_id(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24000
24001 /**
24002  * An RGB color for UI purposes
24003  */
24004 const uint8_t (*UnsignedNodeAnnouncement_get_rgb(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[3];
24005
24006 /**
24007  * An RGB color for UI purposes
24008  */
24009 void UnsignedNodeAnnouncement_set_rgb(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
24010
24011 /**
24012  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
24013  * of uniqueness.
24014  */
24015 const uint8_t (*UnsignedNodeAnnouncement_get_alias(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr))[32];
24016
24017 /**
24018  * An alias, for UI purposes.  This should be sanitized before use.  There is no guarantee
24019  * of uniqueness.
24020  */
24021 void UnsignedNodeAnnouncement_set_alias(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24022
24023 /**
24024  * List of addresses on which this node is reachable
24025  *
24026  * Returns a copy of the field.
24027  */
24028 struct LDKCVec_NetAddressZ UnsignedNodeAnnouncement_get_addresses(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr);
24029
24030 /**
24031  * List of addresses on which this node is reachable
24032  */
24033 void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
24034
24035 /**
24036  * Creates a copy of the UnsignedNodeAnnouncement
24037  */
24038 struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
24039
24040 /**
24041  * Frees any resources used by the NodeAnnouncement, if is_owned is set and inner is non-NULL.
24042  */
24043 void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
24044
24045 /**
24046  * The signature by the node key
24047  */
24048 struct LDKSignature NodeAnnouncement_get_signature(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
24049
24050 /**
24051  * The signature by the node key
24052  */
24053 void NodeAnnouncement_set_signature(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
24054
24055 /**
24056  * The actual content of the announcement
24057  */
24058 struct LDKUnsignedNodeAnnouncement NodeAnnouncement_get_contents(const struct LDKNodeAnnouncement *NONNULL_PTR this_ptr);
24059
24060 /**
24061  * The actual content of the announcement
24062  */
24063 void NodeAnnouncement_set_contents(struct LDKNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedNodeAnnouncement val);
24064
24065 /**
24066  * Constructs a new NodeAnnouncement given each field
24067  */
24068 MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
24069
24070 /**
24071  * Creates a copy of the NodeAnnouncement
24072  */
24073 struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
24074
24075 /**
24076  * Frees any resources used by the UnsignedChannelAnnouncement, if is_owned is set and inner is non-NULL.
24077  */
24078 void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
24079
24080 /**
24081  * The advertised channel features
24082  */
24083 struct LDKChannelFeatures UnsignedChannelAnnouncement_get_features(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
24084
24085 /**
24086  * The advertised channel features
24087  */
24088 void UnsignedChannelAnnouncement_set_features(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
24089
24090 /**
24091  * The genesis hash of the blockchain where the channel is to be opened
24092  */
24093 const uint8_t (*UnsignedChannelAnnouncement_get_chain_hash(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr))[32];
24094
24095 /**
24096  * The genesis hash of the blockchain where the channel is to be opened
24097  */
24098 void UnsignedChannelAnnouncement_set_chain_hash(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24099
24100 /**
24101  * The short channel ID
24102  */
24103 uint64_t UnsignedChannelAnnouncement_get_short_channel_id(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
24104
24105 /**
24106  * The short channel ID
24107  */
24108 void UnsignedChannelAnnouncement_set_short_channel_id(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, uint64_t val);
24109
24110 /**
24111  * One of the two node_ids which are endpoints of this channel
24112  */
24113 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
24114
24115 /**
24116  * One of the two node_ids which are endpoints of this channel
24117  */
24118 void UnsignedChannelAnnouncement_set_node_id_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24119
24120 /**
24121  * The other of the two node_ids which are endpoints of this channel
24122  */
24123 struct LDKPublicKey UnsignedChannelAnnouncement_get_node_id_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
24124
24125 /**
24126  * The other of the two node_ids which are endpoints of this channel
24127  */
24128 void UnsignedChannelAnnouncement_set_node_id_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24129
24130 /**
24131  * The funding key for the first node
24132  */
24133 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_1(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
24134
24135 /**
24136  * The funding key for the first node
24137  */
24138 void UnsignedChannelAnnouncement_set_bitcoin_key_1(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24139
24140 /**
24141  * The funding key for the second node
24142  */
24143 struct LDKPublicKey UnsignedChannelAnnouncement_get_bitcoin_key_2(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr);
24144
24145 /**
24146  * The funding key for the second node
24147  */
24148 void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
24149
24150 /**
24151  * Creates a copy of the UnsignedChannelAnnouncement
24152  */
24153 struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
24154
24155 /**
24156  * Frees any resources used by the ChannelAnnouncement, if is_owned is set and inner is non-NULL.
24157  */
24158 void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
24159
24160 /**
24161  * Authentication of the announcement by the first public node
24162  */
24163 struct LDKSignature ChannelAnnouncement_get_node_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
24164
24165 /**
24166  * Authentication of the announcement by the first public node
24167  */
24168 void ChannelAnnouncement_set_node_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
24169
24170 /**
24171  * Authentication of the announcement by the second public node
24172  */
24173 struct LDKSignature ChannelAnnouncement_get_node_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
24174
24175 /**
24176  * Authentication of the announcement by the second public node
24177  */
24178 void ChannelAnnouncement_set_node_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
24179
24180 /**
24181  * Proof of funding UTXO ownership by the first public node
24182  */
24183 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_1(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
24184
24185 /**
24186  * Proof of funding UTXO ownership by the first public node
24187  */
24188 void ChannelAnnouncement_set_bitcoin_signature_1(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
24189
24190 /**
24191  * Proof of funding UTXO ownership by the second public node
24192  */
24193 struct LDKSignature ChannelAnnouncement_get_bitcoin_signature_2(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
24194
24195 /**
24196  * Proof of funding UTXO ownership by the second public node
24197  */
24198 void ChannelAnnouncement_set_bitcoin_signature_2(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKSignature val);
24199
24200 /**
24201  * The actual announcement
24202  */
24203 struct LDKUnsignedChannelAnnouncement ChannelAnnouncement_get_contents(const struct LDKChannelAnnouncement *NONNULL_PTR this_ptr);
24204
24205 /**
24206  * The actual announcement
24207  */
24208 void ChannelAnnouncement_set_contents(struct LDKChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKUnsignedChannelAnnouncement val);
24209
24210 /**
24211  * Constructs a new ChannelAnnouncement given each field
24212  */
24213 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);
24214
24215 /**
24216  * Creates a copy of the ChannelAnnouncement
24217  */
24218 struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
24219
24220 /**
24221  * Frees any resources used by the UnsignedChannelUpdate, if is_owned is set and inner is non-NULL.
24222  */
24223 void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
24224
24225 /**
24226  * The genesis hash of the blockchain where the channel is to be opened
24227  */
24228 const uint8_t (*UnsignedChannelUpdate_get_chain_hash(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr))[32];
24229
24230 /**
24231  * The genesis hash of the blockchain where the channel is to be opened
24232  */
24233 void UnsignedChannelUpdate_set_chain_hash(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24234
24235 /**
24236  * The short channel ID
24237  */
24238 uint64_t UnsignedChannelUpdate_get_short_channel_id(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24239
24240 /**
24241  * The short channel ID
24242  */
24243 void UnsignedChannelUpdate_set_short_channel_id(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
24244
24245 /**
24246  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
24247  */
24248 uint32_t UnsignedChannelUpdate_get_timestamp(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24249
24250 /**
24251  * A strictly monotonic announcement counter, with gaps allowed, specific to this channel
24252  */
24253 void UnsignedChannelUpdate_set_timestamp(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
24254
24255 /**
24256  * Channel flags
24257  */
24258 uint8_t UnsignedChannelUpdate_get_flags(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24259
24260 /**
24261  * Channel flags
24262  */
24263 void UnsignedChannelUpdate_set_flags(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint8_t val);
24264
24265 /**
24266  * The number of blocks such that if:
24267  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
24268  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
24269  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
24270  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
24271  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
24272  * forwarding. Note that the HTLC sender is the one who originally sets this value when
24273  * constructing the route.
24274  */
24275 uint16_t UnsignedChannelUpdate_get_cltv_expiry_delta(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24276
24277 /**
24278  * The number of blocks such that if:
24279  * `incoming_htlc.cltv_expiry < outgoing_htlc.cltv_expiry + cltv_expiry_delta`
24280  * then we need to fail the HTLC backwards. When forwarding an HTLC, cltv_expiry_delta determines
24281  * the outgoing HTLC's minimum cltv_expiry value -- so, if an incoming HTLC comes in with a
24282  * cltv_expiry of 100000, and the node we're forwarding to has a cltv_expiry_delta value of 10,
24283  * then we'll check that the outgoing HTLC's cltv_expiry value is at least 100010 before
24284  * forwarding. Note that the HTLC sender is the one who originally sets this value when
24285  * constructing the route.
24286  */
24287 void UnsignedChannelUpdate_set_cltv_expiry_delta(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint16_t val);
24288
24289 /**
24290  * The minimum HTLC size incoming to sender, in milli-satoshi
24291  */
24292 uint64_t UnsignedChannelUpdate_get_htlc_minimum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24293
24294 /**
24295  * The minimum HTLC size incoming to sender, in milli-satoshi
24296  */
24297 void UnsignedChannelUpdate_set_htlc_minimum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
24298
24299 /**
24300  * The maximum HTLC value incoming to sender, in milli-satoshi. Used to be optional.
24301  */
24302 uint64_t UnsignedChannelUpdate_get_htlc_maximum_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24303
24304 /**
24305  * The maximum HTLC value incoming to sender, in milli-satoshi. Used to be optional.
24306  */
24307 void UnsignedChannelUpdate_set_htlc_maximum_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint64_t val);
24308
24309 /**
24310  * The base HTLC fee charged by sender, in milli-satoshi
24311  */
24312 uint32_t UnsignedChannelUpdate_get_fee_base_msat(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24313
24314 /**
24315  * The base HTLC fee charged by sender, in milli-satoshi
24316  */
24317 void UnsignedChannelUpdate_set_fee_base_msat(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
24318
24319 /**
24320  * The amount to fee multiplier, in micro-satoshi
24321  */
24322 uint32_t UnsignedChannelUpdate_get_fee_proportional_millionths(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24323
24324 /**
24325  * The amount to fee multiplier, in micro-satoshi
24326  */
24327 void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
24328
24329 /**
24330  * Excess data which was signed as a part of the message which we do not (yet) understand how
24331  * to decode. This is stored to ensure forward-compatibility as new fields are added to the
24332  * lightning gossip
24333  *
24334  * Returns a copy of the field.
24335  */
24336 struct LDKCVec_u8Z UnsignedChannelUpdate_get_excess_data(const struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr);
24337
24338 /**
24339  * Excess data which was signed as a part of the message which we do not (yet) understand how
24340  * to decode. This is stored to ensure forward-compatibility as new fields are added to the
24341  * lightning gossip
24342  */
24343 void UnsignedChannelUpdate_set_excess_data(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
24344
24345 /**
24346  * Constructs a new UnsignedChannelUpdate given each field
24347  */
24348 MUST_USE_RES struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_new(struct LDKThirtyTwoBytes chain_hash_arg, uint64_t short_channel_id_arg, uint32_t timestamp_arg, uint8_t flags_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg, uint64_t htlc_maximum_msat_arg, uint32_t fee_base_msat_arg, uint32_t fee_proportional_millionths_arg, struct LDKCVec_u8Z excess_data_arg);
24349
24350 /**
24351  * Creates a copy of the UnsignedChannelUpdate
24352  */
24353 struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
24354
24355 /**
24356  * Frees any resources used by the ChannelUpdate, if is_owned is set and inner is non-NULL.
24357  */
24358 void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
24359
24360 /**
24361  * A signature of the channel update
24362  */
24363 struct LDKSignature ChannelUpdate_get_signature(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
24364
24365 /**
24366  * A signature of the channel update
24367  */
24368 void ChannelUpdate_set_signature(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKSignature val);
24369
24370 /**
24371  * The actual channel update
24372  */
24373 struct LDKUnsignedChannelUpdate ChannelUpdate_get_contents(const struct LDKChannelUpdate *NONNULL_PTR this_ptr);
24374
24375 /**
24376  * The actual channel update
24377  */
24378 void ChannelUpdate_set_contents(struct LDKChannelUpdate *NONNULL_PTR this_ptr, struct LDKUnsignedChannelUpdate val);
24379
24380 /**
24381  * Constructs a new ChannelUpdate given each field
24382  */
24383 MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
24384
24385 /**
24386  * Creates a copy of the ChannelUpdate
24387  */
24388 struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
24389
24390 /**
24391  * Frees any resources used by the QueryChannelRange, if is_owned is set and inner is non-NULL.
24392  */
24393 void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
24394
24395 /**
24396  * The genesis hash of the blockchain being queried
24397  */
24398 const uint8_t (*QueryChannelRange_get_chain_hash(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr))[32];
24399
24400 /**
24401  * The genesis hash of the blockchain being queried
24402  */
24403 void QueryChannelRange_set_chain_hash(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24404
24405 /**
24406  * The height of the first block for the channel UTXOs being queried
24407  */
24408 uint32_t QueryChannelRange_get_first_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
24409
24410 /**
24411  * The height of the first block for the channel UTXOs being queried
24412  */
24413 void QueryChannelRange_set_first_blocknum(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
24414
24415 /**
24416  * The number of blocks to include in the query results
24417  */
24418 uint32_t QueryChannelRange_get_number_of_blocks(const struct LDKQueryChannelRange *NONNULL_PTR this_ptr);
24419
24420 /**
24421  * The number of blocks to include in the query results
24422  */
24423 void QueryChannelRange_set_number_of_blocks(struct LDKQueryChannelRange *NONNULL_PTR this_ptr, uint32_t val);
24424
24425 /**
24426  * Constructs a new QueryChannelRange given each field
24427  */
24428 MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
24429
24430 /**
24431  * Creates a copy of the QueryChannelRange
24432  */
24433 struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
24434
24435 /**
24436  * Frees any resources used by the ReplyChannelRange, if is_owned is set and inner is non-NULL.
24437  */
24438 void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
24439
24440 /**
24441  * The genesis hash of the blockchain being queried
24442  */
24443 const uint8_t (*ReplyChannelRange_get_chain_hash(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr))[32];
24444
24445 /**
24446  * The genesis hash of the blockchain being queried
24447  */
24448 void ReplyChannelRange_set_chain_hash(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24449
24450 /**
24451  * The height of the first block in the range of the reply
24452  */
24453 uint32_t ReplyChannelRange_get_first_blocknum(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
24454
24455 /**
24456  * The height of the first block in the range of the reply
24457  */
24458 void ReplyChannelRange_set_first_blocknum(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
24459
24460 /**
24461  * The number of blocks included in the range of the reply
24462  */
24463 uint32_t ReplyChannelRange_get_number_of_blocks(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
24464
24465 /**
24466  * The number of blocks included in the range of the reply
24467  */
24468 void ReplyChannelRange_set_number_of_blocks(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, uint32_t val);
24469
24470 /**
24471  * True when this is the final reply for a query
24472  */
24473 bool ReplyChannelRange_get_sync_complete(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
24474
24475 /**
24476  * True when this is the final reply for a query
24477  */
24478 void ReplyChannelRange_set_sync_complete(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, bool val);
24479
24480 /**
24481  * The short_channel_ids in the channel range
24482  *
24483  * Returns a copy of the field.
24484  */
24485 struct LDKCVec_u64Z ReplyChannelRange_get_short_channel_ids(const struct LDKReplyChannelRange *NONNULL_PTR this_ptr);
24486
24487 /**
24488  * The short_channel_ids in the channel range
24489  */
24490 void ReplyChannelRange_set_short_channel_ids(struct LDKReplyChannelRange *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
24491
24492 /**
24493  * Constructs a new ReplyChannelRange given each field
24494  */
24495 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);
24496
24497 /**
24498  * Creates a copy of the ReplyChannelRange
24499  */
24500 struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
24501
24502 /**
24503  * Frees any resources used by the QueryShortChannelIds, if is_owned is set and inner is non-NULL.
24504  */
24505 void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
24506
24507 /**
24508  * The genesis hash of the blockchain being queried
24509  */
24510 const uint8_t (*QueryShortChannelIds_get_chain_hash(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr))[32];
24511
24512 /**
24513  * The genesis hash of the blockchain being queried
24514  */
24515 void QueryShortChannelIds_set_chain_hash(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24516
24517 /**
24518  * The short_channel_ids that are being queried
24519  *
24520  * Returns a copy of the field.
24521  */
24522 struct LDKCVec_u64Z QueryShortChannelIds_get_short_channel_ids(const struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr);
24523
24524 /**
24525  * The short_channel_ids that are being queried
24526  */
24527 void QueryShortChannelIds_set_short_channel_ids(struct LDKQueryShortChannelIds *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
24528
24529 /**
24530  * Constructs a new QueryShortChannelIds given each field
24531  */
24532 MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
24533
24534 /**
24535  * Creates a copy of the QueryShortChannelIds
24536  */
24537 struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
24538
24539 /**
24540  * Frees any resources used by the ReplyShortChannelIdsEnd, if is_owned is set and inner is non-NULL.
24541  */
24542 void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
24543
24544 /**
24545  * The genesis hash of the blockchain that was queried
24546  */
24547 const uint8_t (*ReplyShortChannelIdsEnd_get_chain_hash(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr))[32];
24548
24549 /**
24550  * The genesis hash of the blockchain that was queried
24551  */
24552 void ReplyShortChannelIdsEnd_set_chain_hash(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24553
24554 /**
24555  * Indicates if the query recipient maintains up-to-date channel
24556  * information for the chain_hash
24557  */
24558 bool ReplyShortChannelIdsEnd_get_full_information(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr);
24559
24560 /**
24561  * Indicates if the query recipient maintains up-to-date channel
24562  * information for the chain_hash
24563  */
24564 void ReplyShortChannelIdsEnd_set_full_information(struct LDKReplyShortChannelIdsEnd *NONNULL_PTR this_ptr, bool val);
24565
24566 /**
24567  * Constructs a new ReplyShortChannelIdsEnd given each field
24568  */
24569 MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
24570
24571 /**
24572  * Creates a copy of the ReplyShortChannelIdsEnd
24573  */
24574 struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
24575
24576 /**
24577  * Frees any resources used by the GossipTimestampFilter, if is_owned is set and inner is non-NULL.
24578  */
24579 void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
24580
24581 /**
24582  * The genesis hash of the blockchain for channel and node information
24583  */
24584 const uint8_t (*GossipTimestampFilter_get_chain_hash(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr))[32];
24585
24586 /**
24587  * The genesis hash of the blockchain for channel and node information
24588  */
24589 void GossipTimestampFilter_set_chain_hash(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
24590
24591 /**
24592  * The starting unix timestamp
24593  */
24594 uint32_t GossipTimestampFilter_get_first_timestamp(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
24595
24596 /**
24597  * The starting unix timestamp
24598  */
24599 void GossipTimestampFilter_set_first_timestamp(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
24600
24601 /**
24602  * The range of information in seconds
24603  */
24604 uint32_t GossipTimestampFilter_get_timestamp_range(const struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr);
24605
24606 /**
24607  * The range of information in seconds
24608  */
24609 void GossipTimestampFilter_set_timestamp_range(struct LDKGossipTimestampFilter *NONNULL_PTR this_ptr, uint32_t val);
24610
24611 /**
24612  * Constructs a new GossipTimestampFilter given each field
24613  */
24614 MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
24615
24616 /**
24617  * Creates a copy of the GossipTimestampFilter
24618  */
24619 struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
24620
24621 /**
24622  * Frees any resources used by the ErrorAction
24623  */
24624 void ErrorAction_free(struct LDKErrorAction this_ptr);
24625
24626 /**
24627  * Creates a copy of the ErrorAction
24628  */
24629 struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
24630
24631 /**
24632  * Utility method to constructs a new DisconnectPeer-variant ErrorAction
24633  */
24634 struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
24635
24636 /**
24637  * Utility method to constructs a new IgnoreError-variant ErrorAction
24638  */
24639 struct LDKErrorAction ErrorAction_ignore_error(void);
24640
24641 /**
24642  * Utility method to constructs a new IgnoreAndLog-variant ErrorAction
24643  */
24644 struct LDKErrorAction ErrorAction_ignore_and_log(enum LDKLevel a);
24645
24646 /**
24647  * Utility method to constructs a new IgnoreDuplicateGossip-variant ErrorAction
24648  */
24649 struct LDKErrorAction ErrorAction_ignore_duplicate_gossip(void);
24650
24651 /**
24652  * Utility method to constructs a new SendErrorMessage-variant ErrorAction
24653  */
24654 struct LDKErrorAction ErrorAction_send_error_message(struct LDKErrorMessage msg);
24655
24656 /**
24657  * Utility method to constructs a new SendWarningMessage-variant ErrorAction
24658  */
24659 struct LDKErrorAction ErrorAction_send_warning_message(struct LDKWarningMessage msg, enum LDKLevel log_level);
24660
24661 /**
24662  * Frees any resources used by the LightningError, if is_owned is set and inner is non-NULL.
24663  */
24664 void LightningError_free(struct LDKLightningError this_obj);
24665
24666 /**
24667  * A human-readable message describing the error
24668  */
24669 struct LDKStr LightningError_get_err(const struct LDKLightningError *NONNULL_PTR this_ptr);
24670
24671 /**
24672  * A human-readable message describing the error
24673  */
24674 void LightningError_set_err(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKStr val);
24675
24676 /**
24677  * The action which should be taken against the offending peer.
24678  */
24679 struct LDKErrorAction LightningError_get_action(const struct LDKLightningError *NONNULL_PTR this_ptr);
24680
24681 /**
24682  * The action which should be taken against the offending peer.
24683  */
24684 void LightningError_set_action(struct LDKLightningError *NONNULL_PTR this_ptr, struct LDKErrorAction val);
24685
24686 /**
24687  * Constructs a new LightningError given each field
24688  */
24689 MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
24690
24691 /**
24692  * Creates a copy of the LightningError
24693  */
24694 struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
24695
24696 /**
24697  * Frees any resources used by the CommitmentUpdate, if is_owned is set and inner is non-NULL.
24698  */
24699 void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
24700
24701 /**
24702  * update_add_htlc messages which should be sent
24703  */
24704 struct LDKCVec_UpdateAddHTLCZ CommitmentUpdate_get_update_add_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
24705
24706 /**
24707  * update_add_htlc messages which should be sent
24708  */
24709 void CommitmentUpdate_set_update_add_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateAddHTLCZ val);
24710
24711 /**
24712  * update_fulfill_htlc messages which should be sent
24713  */
24714 struct LDKCVec_UpdateFulfillHTLCZ CommitmentUpdate_get_update_fulfill_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
24715
24716 /**
24717  * update_fulfill_htlc messages which should be sent
24718  */
24719 void CommitmentUpdate_set_update_fulfill_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFulfillHTLCZ val);
24720
24721 /**
24722  * update_fail_htlc messages which should be sent
24723  */
24724 struct LDKCVec_UpdateFailHTLCZ CommitmentUpdate_get_update_fail_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
24725
24726 /**
24727  * update_fail_htlc messages which should be sent
24728  */
24729 void CommitmentUpdate_set_update_fail_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailHTLCZ val);
24730
24731 /**
24732  * update_fail_malformed_htlc messages which should be sent
24733  */
24734 struct LDKCVec_UpdateFailMalformedHTLCZ CommitmentUpdate_get_update_fail_malformed_htlcs(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
24735
24736 /**
24737  * update_fail_malformed_htlc messages which should be sent
24738  */
24739 void CommitmentUpdate_set_update_fail_malformed_htlcs(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCVec_UpdateFailMalformedHTLCZ val);
24740
24741 /**
24742  * An update_fee message which should be sent
24743  *
24744  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
24745  */
24746 struct LDKUpdateFee CommitmentUpdate_get_update_fee(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
24747
24748 /**
24749  * An update_fee message which should be sent
24750  *
24751  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
24752  */
24753 void CommitmentUpdate_set_update_fee(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKUpdateFee val);
24754
24755 /**
24756  * Finally, the commitment_signed message which should be sent
24757  */
24758 struct LDKCommitmentSigned CommitmentUpdate_get_commitment_signed(const struct LDKCommitmentUpdate *NONNULL_PTR this_ptr);
24759
24760 /**
24761  * Finally, the commitment_signed message which should be sent
24762  */
24763 void CommitmentUpdate_set_commitment_signed(struct LDKCommitmentUpdate *NONNULL_PTR this_ptr, struct LDKCommitmentSigned val);
24764
24765 /**
24766  * Constructs a new CommitmentUpdate given each field
24767  */
24768 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);
24769
24770 /**
24771  * Creates a copy of the CommitmentUpdate
24772  */
24773 struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
24774
24775 /**
24776  * Calls the free function if one is set
24777  */
24778 void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
24779
24780 /**
24781  * Calls the free function if one is set
24782  */
24783 void RoutingMessageHandler_free(struct LDKRoutingMessageHandler this_ptr);
24784
24785 /**
24786  * Calls the free function if one is set
24787  */
24788 void OnionMessageHandler_free(struct LDKOnionMessageHandler this_ptr);
24789
24790 /**
24791  * Serialize the AcceptChannel object into a byte array which can be read by AcceptChannel_read
24792  */
24793 struct LDKCVec_u8Z AcceptChannel_write(const struct LDKAcceptChannel *NONNULL_PTR obj);
24794
24795 /**
24796  * Read a AcceptChannel from a byte array, created by AcceptChannel_write
24797  */
24798 struct LDKCResult_AcceptChannelDecodeErrorZ AcceptChannel_read(struct LDKu8slice ser);
24799
24800 /**
24801  * Serialize the AnnouncementSignatures object into a byte array which can be read by AnnouncementSignatures_read
24802  */
24803 struct LDKCVec_u8Z AnnouncementSignatures_write(const struct LDKAnnouncementSignatures *NONNULL_PTR obj);
24804
24805 /**
24806  * Read a AnnouncementSignatures from a byte array, created by AnnouncementSignatures_write
24807  */
24808 struct LDKCResult_AnnouncementSignaturesDecodeErrorZ AnnouncementSignatures_read(struct LDKu8slice ser);
24809
24810 /**
24811  * Serialize the ChannelReestablish object into a byte array which can be read by ChannelReestablish_read
24812  */
24813 struct LDKCVec_u8Z ChannelReestablish_write(const struct LDKChannelReestablish *NONNULL_PTR obj);
24814
24815 /**
24816  * Read a ChannelReestablish from a byte array, created by ChannelReestablish_write
24817  */
24818 struct LDKCResult_ChannelReestablishDecodeErrorZ ChannelReestablish_read(struct LDKu8slice ser);
24819
24820 /**
24821  * Serialize the ClosingSigned object into a byte array which can be read by ClosingSigned_read
24822  */
24823 struct LDKCVec_u8Z ClosingSigned_write(const struct LDKClosingSigned *NONNULL_PTR obj);
24824
24825 /**
24826  * Read a ClosingSigned from a byte array, created by ClosingSigned_write
24827  */
24828 struct LDKCResult_ClosingSignedDecodeErrorZ ClosingSigned_read(struct LDKu8slice ser);
24829
24830 /**
24831  * Serialize the ClosingSignedFeeRange object into a byte array which can be read by ClosingSignedFeeRange_read
24832  */
24833 struct LDKCVec_u8Z ClosingSignedFeeRange_write(const struct LDKClosingSignedFeeRange *NONNULL_PTR obj);
24834
24835 /**
24836  * Read a ClosingSignedFeeRange from a byte array, created by ClosingSignedFeeRange_write
24837  */
24838 struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ ClosingSignedFeeRange_read(struct LDKu8slice ser);
24839
24840 /**
24841  * Serialize the CommitmentSigned object into a byte array which can be read by CommitmentSigned_read
24842  */
24843 struct LDKCVec_u8Z CommitmentSigned_write(const struct LDKCommitmentSigned *NONNULL_PTR obj);
24844
24845 /**
24846  * Read a CommitmentSigned from a byte array, created by CommitmentSigned_write
24847  */
24848 struct LDKCResult_CommitmentSignedDecodeErrorZ CommitmentSigned_read(struct LDKu8slice ser);
24849
24850 /**
24851  * Serialize the FundingCreated object into a byte array which can be read by FundingCreated_read
24852  */
24853 struct LDKCVec_u8Z FundingCreated_write(const struct LDKFundingCreated *NONNULL_PTR obj);
24854
24855 /**
24856  * Read a FundingCreated from a byte array, created by FundingCreated_write
24857  */
24858 struct LDKCResult_FundingCreatedDecodeErrorZ FundingCreated_read(struct LDKu8slice ser);
24859
24860 /**
24861  * Serialize the FundingSigned object into a byte array which can be read by FundingSigned_read
24862  */
24863 struct LDKCVec_u8Z FundingSigned_write(const struct LDKFundingSigned *NONNULL_PTR obj);
24864
24865 /**
24866  * Read a FundingSigned from a byte array, created by FundingSigned_write
24867  */
24868 struct LDKCResult_FundingSignedDecodeErrorZ FundingSigned_read(struct LDKu8slice ser);
24869
24870 /**
24871  * Serialize the ChannelReady object into a byte array which can be read by ChannelReady_read
24872  */
24873 struct LDKCVec_u8Z ChannelReady_write(const struct LDKChannelReady *NONNULL_PTR obj);
24874
24875 /**
24876  * Read a ChannelReady from a byte array, created by ChannelReady_write
24877  */
24878 struct LDKCResult_ChannelReadyDecodeErrorZ ChannelReady_read(struct LDKu8slice ser);
24879
24880 /**
24881  * Serialize the Init object into a byte array which can be read by Init_read
24882  */
24883 struct LDKCVec_u8Z Init_write(const struct LDKInit *NONNULL_PTR obj);
24884
24885 /**
24886  * Read a Init from a byte array, created by Init_write
24887  */
24888 struct LDKCResult_InitDecodeErrorZ Init_read(struct LDKu8slice ser);
24889
24890 /**
24891  * Serialize the OpenChannel object into a byte array which can be read by OpenChannel_read
24892  */
24893 struct LDKCVec_u8Z OpenChannel_write(const struct LDKOpenChannel *NONNULL_PTR obj);
24894
24895 /**
24896  * Read a OpenChannel from a byte array, created by OpenChannel_write
24897  */
24898 struct LDKCResult_OpenChannelDecodeErrorZ OpenChannel_read(struct LDKu8slice ser);
24899
24900 /**
24901  * Serialize the RevokeAndACK object into a byte array which can be read by RevokeAndACK_read
24902  */
24903 struct LDKCVec_u8Z RevokeAndACK_write(const struct LDKRevokeAndACK *NONNULL_PTR obj);
24904
24905 /**
24906  * Read a RevokeAndACK from a byte array, created by RevokeAndACK_write
24907  */
24908 struct LDKCResult_RevokeAndACKDecodeErrorZ RevokeAndACK_read(struct LDKu8slice ser);
24909
24910 /**
24911  * Serialize the Shutdown object into a byte array which can be read by Shutdown_read
24912  */
24913 struct LDKCVec_u8Z Shutdown_write(const struct LDKShutdown *NONNULL_PTR obj);
24914
24915 /**
24916  * Read a Shutdown from a byte array, created by Shutdown_write
24917  */
24918 struct LDKCResult_ShutdownDecodeErrorZ Shutdown_read(struct LDKu8slice ser);
24919
24920 /**
24921  * Serialize the UpdateFailHTLC object into a byte array which can be read by UpdateFailHTLC_read
24922  */
24923 struct LDKCVec_u8Z UpdateFailHTLC_write(const struct LDKUpdateFailHTLC *NONNULL_PTR obj);
24924
24925 /**
24926  * Read a UpdateFailHTLC from a byte array, created by UpdateFailHTLC_write
24927  */
24928 struct LDKCResult_UpdateFailHTLCDecodeErrorZ UpdateFailHTLC_read(struct LDKu8slice ser);
24929
24930 /**
24931  * Serialize the UpdateFailMalformedHTLC object into a byte array which can be read by UpdateFailMalformedHTLC_read
24932  */
24933 struct LDKCVec_u8Z UpdateFailMalformedHTLC_write(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR obj);
24934
24935 /**
24936  * Read a UpdateFailMalformedHTLC from a byte array, created by UpdateFailMalformedHTLC_write
24937  */
24938 struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ UpdateFailMalformedHTLC_read(struct LDKu8slice ser);
24939
24940 /**
24941  * Serialize the UpdateFee object into a byte array which can be read by UpdateFee_read
24942  */
24943 struct LDKCVec_u8Z UpdateFee_write(const struct LDKUpdateFee *NONNULL_PTR obj);
24944
24945 /**
24946  * Read a UpdateFee from a byte array, created by UpdateFee_write
24947  */
24948 struct LDKCResult_UpdateFeeDecodeErrorZ UpdateFee_read(struct LDKu8slice ser);
24949
24950 /**
24951  * Serialize the UpdateFulfillHTLC object into a byte array which can be read by UpdateFulfillHTLC_read
24952  */
24953 struct LDKCVec_u8Z UpdateFulfillHTLC_write(const struct LDKUpdateFulfillHTLC *NONNULL_PTR obj);
24954
24955 /**
24956  * Read a UpdateFulfillHTLC from a byte array, created by UpdateFulfillHTLC_write
24957  */
24958 struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ UpdateFulfillHTLC_read(struct LDKu8slice ser);
24959
24960 /**
24961  * Serialize the UpdateAddHTLC object into a byte array which can be read by UpdateAddHTLC_read
24962  */
24963 struct LDKCVec_u8Z UpdateAddHTLC_write(const struct LDKUpdateAddHTLC *NONNULL_PTR obj);
24964
24965 /**
24966  * Read a UpdateAddHTLC from a byte array, created by UpdateAddHTLC_write
24967  */
24968 struct LDKCResult_UpdateAddHTLCDecodeErrorZ UpdateAddHTLC_read(struct LDKu8slice ser);
24969
24970 /**
24971  * Read a OnionMessage from a byte array, created by OnionMessage_write
24972  */
24973 struct LDKCResult_OnionMessageDecodeErrorZ OnionMessage_read(struct LDKu8slice ser);
24974
24975 /**
24976  * Serialize the OnionMessage object into a byte array which can be read by OnionMessage_read
24977  */
24978 struct LDKCVec_u8Z OnionMessage_write(const struct LDKOnionMessage *NONNULL_PTR obj);
24979
24980 /**
24981  * Serialize the Ping object into a byte array which can be read by Ping_read
24982  */
24983 struct LDKCVec_u8Z Ping_write(const struct LDKPing *NONNULL_PTR obj);
24984
24985 /**
24986  * Read a Ping from a byte array, created by Ping_write
24987  */
24988 struct LDKCResult_PingDecodeErrorZ Ping_read(struct LDKu8slice ser);
24989
24990 /**
24991  * Serialize the Pong object into a byte array which can be read by Pong_read
24992  */
24993 struct LDKCVec_u8Z Pong_write(const struct LDKPong *NONNULL_PTR obj);
24994
24995 /**
24996  * Read a Pong from a byte array, created by Pong_write
24997  */
24998 struct LDKCResult_PongDecodeErrorZ Pong_read(struct LDKu8slice ser);
24999
25000 /**
25001  * Serialize the UnsignedChannelAnnouncement object into a byte array which can be read by UnsignedChannelAnnouncement_read
25002  */
25003 struct LDKCVec_u8Z UnsignedChannelAnnouncement_write(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR obj);
25004
25005 /**
25006  * Read a UnsignedChannelAnnouncement from a byte array, created by UnsignedChannelAnnouncement_write
25007  */
25008 struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ UnsignedChannelAnnouncement_read(struct LDKu8slice ser);
25009
25010 /**
25011  * Serialize the ChannelAnnouncement object into a byte array which can be read by ChannelAnnouncement_read
25012  */
25013 struct LDKCVec_u8Z ChannelAnnouncement_write(const struct LDKChannelAnnouncement *NONNULL_PTR obj);
25014
25015 /**
25016  * Read a ChannelAnnouncement from a byte array, created by ChannelAnnouncement_write
25017  */
25018 struct LDKCResult_ChannelAnnouncementDecodeErrorZ ChannelAnnouncement_read(struct LDKu8slice ser);
25019
25020 /**
25021  * Serialize the UnsignedChannelUpdate object into a byte array which can be read by UnsignedChannelUpdate_read
25022  */
25023 struct LDKCVec_u8Z UnsignedChannelUpdate_write(const struct LDKUnsignedChannelUpdate *NONNULL_PTR obj);
25024
25025 /**
25026  * Read a UnsignedChannelUpdate from a byte array, created by UnsignedChannelUpdate_write
25027  */
25028 struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ UnsignedChannelUpdate_read(struct LDKu8slice ser);
25029
25030 /**
25031  * Serialize the ChannelUpdate object into a byte array which can be read by ChannelUpdate_read
25032  */
25033 struct LDKCVec_u8Z ChannelUpdate_write(const struct LDKChannelUpdate *NONNULL_PTR obj);
25034
25035 /**
25036  * Read a ChannelUpdate from a byte array, created by ChannelUpdate_write
25037  */
25038 struct LDKCResult_ChannelUpdateDecodeErrorZ ChannelUpdate_read(struct LDKu8slice ser);
25039
25040 /**
25041  * Serialize the ErrorMessage object into a byte array which can be read by ErrorMessage_read
25042  */
25043 struct LDKCVec_u8Z ErrorMessage_write(const struct LDKErrorMessage *NONNULL_PTR obj);
25044
25045 /**
25046  * Read a ErrorMessage from a byte array, created by ErrorMessage_write
25047  */
25048 struct LDKCResult_ErrorMessageDecodeErrorZ ErrorMessage_read(struct LDKu8slice ser);
25049
25050 /**
25051  * Serialize the WarningMessage object into a byte array which can be read by WarningMessage_read
25052  */
25053 struct LDKCVec_u8Z WarningMessage_write(const struct LDKWarningMessage *NONNULL_PTR obj);
25054
25055 /**
25056  * Read a WarningMessage from a byte array, created by WarningMessage_write
25057  */
25058 struct LDKCResult_WarningMessageDecodeErrorZ WarningMessage_read(struct LDKu8slice ser);
25059
25060 /**
25061  * Serialize the UnsignedNodeAnnouncement object into a byte array which can be read by UnsignedNodeAnnouncement_read
25062  */
25063 struct LDKCVec_u8Z UnsignedNodeAnnouncement_write(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR obj);
25064
25065 /**
25066  * Read a UnsignedNodeAnnouncement from a byte array, created by UnsignedNodeAnnouncement_write
25067  */
25068 struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ UnsignedNodeAnnouncement_read(struct LDKu8slice ser);
25069
25070 /**
25071  * Serialize the NodeAnnouncement object into a byte array which can be read by NodeAnnouncement_read
25072  */
25073 struct LDKCVec_u8Z NodeAnnouncement_write(const struct LDKNodeAnnouncement *NONNULL_PTR obj);
25074
25075 /**
25076  * Read a NodeAnnouncement from a byte array, created by NodeAnnouncement_write
25077  */
25078 struct LDKCResult_NodeAnnouncementDecodeErrorZ NodeAnnouncement_read(struct LDKu8slice ser);
25079
25080 /**
25081  * Read a QueryShortChannelIds from a byte array, created by QueryShortChannelIds_write
25082  */
25083 struct LDKCResult_QueryShortChannelIdsDecodeErrorZ QueryShortChannelIds_read(struct LDKu8slice ser);
25084
25085 /**
25086  * Serialize the QueryShortChannelIds object into a byte array which can be read by QueryShortChannelIds_read
25087  */
25088 struct LDKCVec_u8Z QueryShortChannelIds_write(const struct LDKQueryShortChannelIds *NONNULL_PTR obj);
25089
25090 /**
25091  * Serialize the ReplyShortChannelIdsEnd object into a byte array which can be read by ReplyShortChannelIdsEnd_read
25092  */
25093 struct LDKCVec_u8Z ReplyShortChannelIdsEnd_write(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR obj);
25094
25095 /**
25096  * Read a ReplyShortChannelIdsEnd from a byte array, created by ReplyShortChannelIdsEnd_write
25097  */
25098 struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ ReplyShortChannelIdsEnd_read(struct LDKu8slice ser);
25099
25100 /**
25101  *\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
25102  */
25103 MUST_USE_RES uint32_t QueryChannelRange_end_blocknum(const struct LDKQueryChannelRange *NONNULL_PTR this_arg);
25104
25105 /**
25106  * Serialize the QueryChannelRange object into a byte array which can be read by QueryChannelRange_read
25107  */
25108 struct LDKCVec_u8Z QueryChannelRange_write(const struct LDKQueryChannelRange *NONNULL_PTR obj);
25109
25110 /**
25111  * Read a QueryChannelRange from a byte array, created by QueryChannelRange_write
25112  */
25113 struct LDKCResult_QueryChannelRangeDecodeErrorZ QueryChannelRange_read(struct LDKu8slice ser);
25114
25115 /**
25116  * Read a ReplyChannelRange from a byte array, created by ReplyChannelRange_write
25117  */
25118 struct LDKCResult_ReplyChannelRangeDecodeErrorZ ReplyChannelRange_read(struct LDKu8slice ser);
25119
25120 /**
25121  * Serialize the ReplyChannelRange object into a byte array which can be read by ReplyChannelRange_read
25122  */
25123 struct LDKCVec_u8Z ReplyChannelRange_write(const struct LDKReplyChannelRange *NONNULL_PTR obj);
25124
25125 /**
25126  * Serialize the GossipTimestampFilter object into a byte array which can be read by GossipTimestampFilter_read
25127  */
25128 struct LDKCVec_u8Z GossipTimestampFilter_write(const struct LDKGossipTimestampFilter *NONNULL_PTR obj);
25129
25130 /**
25131  * Read a GossipTimestampFilter from a byte array, created by GossipTimestampFilter_write
25132  */
25133 struct LDKCResult_GossipTimestampFilterDecodeErrorZ GossipTimestampFilter_read(struct LDKu8slice ser);
25134
25135 /**
25136  * Calls the free function if one is set
25137  */
25138 void CustomMessageHandler_free(struct LDKCustomMessageHandler this_ptr);
25139
25140 /**
25141  * Frees any resources used by the IgnoringMessageHandler, if is_owned is set and inner is non-NULL.
25142  */
25143 void IgnoringMessageHandler_free(struct LDKIgnoringMessageHandler this_obj);
25144
25145 /**
25146  * Constructs a new IgnoringMessageHandler given each field
25147  */
25148 MUST_USE_RES struct LDKIgnoringMessageHandler IgnoringMessageHandler_new(void);
25149
25150 /**
25151  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
25152  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
25153  */
25154 struct LDKMessageSendEventsProvider IgnoringMessageHandler_as_MessageSendEventsProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
25155
25156 /**
25157  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
25158  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
25159  */
25160 struct LDKRoutingMessageHandler IgnoringMessageHandler_as_RoutingMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
25161
25162 /**
25163  * Constructs a new OnionMessageProvider which calls the relevant methods on this_arg.
25164  * This copies the `inner` pointer in this_arg and thus the returned OnionMessageProvider must be freed before this_arg is
25165  */
25166 struct LDKOnionMessageProvider IgnoringMessageHandler_as_OnionMessageProvider(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
25167
25168 /**
25169  * Constructs a new OnionMessageHandler which calls the relevant methods on this_arg.
25170  * This copies the `inner` pointer in this_arg and thus the returned OnionMessageHandler must be freed before this_arg is
25171  */
25172 struct LDKOnionMessageHandler IgnoringMessageHandler_as_OnionMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
25173
25174 /**
25175  * Constructs a new CustomMessageReader which calls the relevant methods on this_arg.
25176  * This copies the `inner` pointer in this_arg and thus the returned CustomMessageReader must be freed before this_arg is
25177  */
25178 struct LDKCustomMessageReader IgnoringMessageHandler_as_CustomMessageReader(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
25179
25180 /**
25181  * Constructs a new CustomMessageHandler which calls the relevant methods on this_arg.
25182  * This copies the `inner` pointer in this_arg and thus the returned CustomMessageHandler must be freed before this_arg is
25183  */
25184 struct LDKCustomMessageHandler IgnoringMessageHandler_as_CustomMessageHandler(const struct LDKIgnoringMessageHandler *NONNULL_PTR this_arg);
25185
25186 /**
25187  * Frees any resources used by the ErroringMessageHandler, if is_owned is set and inner is non-NULL.
25188  */
25189 void ErroringMessageHandler_free(struct LDKErroringMessageHandler this_obj);
25190
25191 /**
25192  * Constructs a new ErroringMessageHandler
25193  */
25194 MUST_USE_RES struct LDKErroringMessageHandler ErroringMessageHandler_new(void);
25195
25196 /**
25197  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
25198  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
25199  */
25200 struct LDKMessageSendEventsProvider ErroringMessageHandler_as_MessageSendEventsProvider(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
25201
25202 /**
25203  * Constructs a new ChannelMessageHandler which calls the relevant methods on this_arg.
25204  * This copies the `inner` pointer in this_arg and thus the returned ChannelMessageHandler must be freed before this_arg is
25205  */
25206 struct LDKChannelMessageHandler ErroringMessageHandler_as_ChannelMessageHandler(const struct LDKErroringMessageHandler *NONNULL_PTR this_arg);
25207
25208 /**
25209  * Frees any resources used by the MessageHandler, if is_owned is set and inner is non-NULL.
25210  */
25211 void MessageHandler_free(struct LDKMessageHandler this_obj);
25212
25213 /**
25214  * A message handler which handles messages specific to channels. Usually this is just a
25215  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
25216  *
25217  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
25218  */
25219 const struct LDKChannelMessageHandler *MessageHandler_get_chan_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
25220
25221 /**
25222  * A message handler which handles messages specific to channels. Usually this is just a
25223  * [`ChannelManager`] object or an [`ErroringMessageHandler`].
25224  *
25225  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
25226  */
25227 void MessageHandler_set_chan_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKChannelMessageHandler val);
25228
25229 /**
25230  * A message handler which handles messages updating our knowledge of the network channel
25231  * graph. Usually this is just a [`P2PGossipSync`] object or an [`IgnoringMessageHandler`].
25232  *
25233  * [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync
25234  */
25235 const struct LDKRoutingMessageHandler *MessageHandler_get_route_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
25236
25237 /**
25238  * A message handler which handles messages updating our knowledge of the network channel
25239  * graph. Usually this is just a [`P2PGossipSync`] object or an [`IgnoringMessageHandler`].
25240  *
25241  * [`P2PGossipSync`]: crate::routing::gossip::P2PGossipSync
25242  */
25243 void MessageHandler_set_route_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKRoutingMessageHandler val);
25244
25245 /**
25246  * A message handler which handles onion messages. For now, this can only be an
25247  * [`IgnoringMessageHandler`].
25248  */
25249 const struct LDKOnionMessageHandler *MessageHandler_get_onion_message_handler(const struct LDKMessageHandler *NONNULL_PTR this_ptr);
25250
25251 /**
25252  * A message handler which handles onion messages. For now, this can only be an
25253  * [`IgnoringMessageHandler`].
25254  */
25255 void MessageHandler_set_onion_message_handler(struct LDKMessageHandler *NONNULL_PTR this_ptr, struct LDKOnionMessageHandler val);
25256
25257 /**
25258  * Constructs a new MessageHandler given each field
25259  */
25260 MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg, struct LDKOnionMessageHandler onion_message_handler_arg);
25261
25262 /**
25263  * Creates a copy of a SocketDescriptor
25264  */
25265 struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
25266
25267 /**
25268  * Calls the free function if one is set
25269  */
25270 void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
25271
25272 /**
25273  * Frees any resources used by the PeerHandleError, if is_owned is set and inner is non-NULL.
25274  */
25275 void PeerHandleError_free(struct LDKPeerHandleError this_obj);
25276
25277 /**
25278  * Used to indicate that we probably can't make any future connections to this peer (e.g.
25279  * because we required features that our peer was missing, or vice versa).
25280  *
25281  * While LDK's [`ChannelManager`] will not do it automatically, you likely wish to force-close
25282  * any channels with this peer or check for new versions of LDK.
25283  *
25284  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
25285  */
25286 bool PeerHandleError_get_no_connection_possible(const struct LDKPeerHandleError *NONNULL_PTR this_ptr);
25287
25288 /**
25289  * Used to indicate that we probably can't make any future connections to this peer (e.g.
25290  * because we required features that our peer was missing, or vice versa).
25291  *
25292  * While LDK's [`ChannelManager`] will not do it automatically, you likely wish to force-close
25293  * any channels with this peer or check for new versions of LDK.
25294  *
25295  * [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
25296  */
25297 void PeerHandleError_set_no_connection_possible(struct LDKPeerHandleError *NONNULL_PTR this_ptr, bool val);
25298
25299 /**
25300  * Constructs a new PeerHandleError given each field
25301  */
25302 MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
25303
25304 /**
25305  * Creates a copy of the PeerHandleError
25306  */
25307 struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
25308
25309 /**
25310  * Frees any resources used by the PeerManager, if is_owned is set and inner is non-NULL.
25311  */
25312 void PeerManager_free(struct LDKPeerManager this_obj);
25313
25314 /**
25315  * Constructs a new PeerManager with the given message handlers and node_id secret key
25316  * ephemeral_random_data is used to derive per-connection ephemeral keys and must be
25317  * cryptographically secure random bytes.
25318  *
25319  * `current_time` is used as an always-increasing counter that survives across restarts and is
25320  * incremented irregularly internally. In general it is best to simply use the current UNIX
25321  * timestamp, however if it is not available a persistent counter that increases once per
25322  * minute should suffice.
25323  */
25324 MUST_USE_RES struct LDKPeerManager PeerManager_new(struct LDKMessageHandler message_handler, struct LDKSecretKey our_node_secret, uint64_t current_time, const uint8_t (*ephemeral_random_data)[32], struct LDKLogger logger, struct LDKCustomMessageHandler custom_message_handler);
25325
25326 /**
25327  * Get the list of node ids for peers which have completed the initial handshake.
25328  *
25329  * For outbound connections, this will be the same as the their_node_id parameter passed in to
25330  * new_outbound_connection, however entries will only appear once the initial handshake has
25331  * completed and we are sure the remote peer has the private key for the given node_id.
25332  */
25333 MUST_USE_RES struct LDKCVec_PublicKeyZ PeerManager_get_peer_node_ids(const struct LDKPeerManager *NONNULL_PTR this_arg);
25334
25335 /**
25336  * Indicates a new outbound connection has been established to a node with the given node_id
25337  * and an optional remote network address.
25338  *
25339  * The remote network address adds the option to report a remote IP address back to a connecting
25340  * peer using the init message.
25341  * The user should pass the remote network address of the host they are connected to.
25342  *
25343  * If an `Err` is returned here you must disconnect the connection immediately.
25344  *
25345  * Returns a small number of bytes to send to the remote node (currently always 50).
25346  *
25347  * Panics if descriptor is duplicative with some other descriptor which has not yet been
25348  * [`socket_disconnected()`].
25349  *
25350  * [`socket_disconnected()`]: PeerManager::socket_disconnected
25351  */
25352 MUST_USE_RES struct LDKCResult_CVec_u8ZPeerHandleErrorZ PeerManager_new_outbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey their_node_id, struct LDKSocketDescriptor descriptor, struct LDKCOption_NetAddressZ remote_network_address);
25353
25354 /**
25355  * Indicates a new inbound connection has been established to a node with an optional remote
25356  * network address.
25357  *
25358  * The remote network address adds the option to report a remote IP address back to a connecting
25359  * peer using the init message.
25360  * The user should pass the remote network address of the host they are connected to.
25361  *
25362  * May refuse the connection by returning an Err, but will never write bytes to the remote end
25363  * (outbound connector always speaks first). If an `Err` is returned here you must disconnect
25364  * the connection immediately.
25365  *
25366  * Panics if descriptor is duplicative with some other descriptor which has not yet been
25367  * [`socket_disconnected()`].
25368  *
25369  * [`socket_disconnected()`]: PeerManager::socket_disconnected
25370  */
25371 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_new_inbound_connection(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor descriptor, struct LDKCOption_NetAddressZ remote_network_address);
25372
25373 /**
25374  * Indicates that there is room to write data to the given socket descriptor.
25375  *
25376  * May return an Err to indicate that the connection should be closed.
25377  *
25378  * May call [`send_data`] on the descriptor passed in (or an equal descriptor) before
25379  * returning. Thus, be very careful with reentrancy issues! The invariants around calling
25380  * [`write_buffer_space_avail`] in case a write did not fully complete must still hold - be
25381  * ready to call `[write_buffer_space_avail`] again if a write call generated here isn't
25382  * sufficient!
25383  *
25384  * [`send_data`]: SocketDescriptor::send_data
25385  * [`write_buffer_space_avail`]: PeerManager::write_buffer_space_avail
25386  */
25387 MUST_USE_RES struct LDKCResult_NonePeerHandleErrorZ PeerManager_write_buffer_space_avail(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKSocketDescriptor *NONNULL_PTR descriptor);
25388
25389 /**
25390  * Indicates that data was read from the given socket descriptor.
25391  *
25392  * May return an Err to indicate that the connection should be closed.
25393  *
25394  * Will *not* call back into [`send_data`] on any descriptors to avoid reentrancy complexity.
25395  * Thus, however, you should call [`process_events`] after any `read_event` to generate
25396  * [`send_data`] calls to handle responses.
25397  *
25398  * If `Ok(true)` is returned, further read_events should not be triggered until a
25399  * [`send_data`] call on this descriptor has `resume_read` set (preventing DoS issues in the
25400  * send buffer).
25401  *
25402  * [`send_data`]: SocketDescriptor::send_data
25403  * [`process_events`]: PeerManager::process_events
25404  */
25405 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);
25406
25407 /**
25408  * Checks for any events generated by our handlers and processes them. Includes sending most
25409  * response messages as well as messages generated by calls to handler functions directly (eg
25410  * functions like [`ChannelManager::process_pending_htlc_forwards`] or [`send_payment`]).
25411  *
25412  * May call [`send_data`] on [`SocketDescriptor`]s. Thus, be very careful with reentrancy
25413  * issues!
25414  *
25415  * You don't have to call this function explicitly if you are using [`lightning-net-tokio`]
25416  * or one of the other clients provided in our language bindings.
25417  *
25418  * Note that if there are any other calls to this function waiting on lock(s) this may return
25419  * without doing any work. All available events that need handling will be handled before the
25420  * other calls return.
25421  *
25422  * [`send_payment`]: crate::ln::channelmanager::ChannelManager::send_payment
25423  * [`ChannelManager::process_pending_htlc_forwards`]: crate::ln::channelmanager::ChannelManager::process_pending_htlc_forwards
25424  * [`send_data`]: SocketDescriptor::send_data
25425  */
25426 void PeerManager_process_events(const struct LDKPeerManager *NONNULL_PTR this_arg);
25427
25428 /**
25429  * Indicates that the given socket descriptor's connection is now closed.
25430  */
25431 void PeerManager_socket_disconnected(const struct LDKPeerManager *NONNULL_PTR this_arg, const struct LDKSocketDescriptor *NONNULL_PTR descriptor);
25432
25433 /**
25434  * Disconnect a peer given its node id.
25435  *
25436  * Set `no_connection_possible` to true to prevent any further connection with this peer,
25437  * force-closing any channels we have with it.
25438  *
25439  * If a peer is connected, this will call [`disconnect_socket`] on the descriptor for the
25440  * peer. Thus, be very careful about reentrancy issues.
25441  *
25442  * [`disconnect_socket`]: SocketDescriptor::disconnect_socket
25443  */
25444 void PeerManager_disconnect_by_node_id(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKPublicKey node_id, bool no_connection_possible);
25445
25446 /**
25447  * Disconnects all currently-connected peers. This is useful on platforms where there may be
25448  * an indication that TCP sockets have stalled even if we weren't around to time them out
25449  * using regular ping/pongs.
25450  */
25451 void PeerManager_disconnect_all_peers(const struct LDKPeerManager *NONNULL_PTR this_arg);
25452
25453 /**
25454  * Send pings to each peer and disconnect those which did not respond to the last round of
25455  * pings.
25456  *
25457  * This may be called on any timescale you want, however, roughly once every ten seconds is
25458  * preferred. The call rate determines both how often we send a ping to our peers and how much
25459  * time they have to respond before we disconnect them.
25460  *
25461  * May call [`send_data`] on all [`SocketDescriptor`]s. Thus, be very careful with reentrancy
25462  * issues!
25463  *
25464  * [`send_data`]: SocketDescriptor::send_data
25465  */
25466 void PeerManager_timer_tick_occurred(const struct LDKPeerManager *NONNULL_PTR this_arg);
25467
25468 /**
25469  * Generates a signed node_announcement from the given arguments, sending it to all connected
25470  * peers. Note that peers will likely ignore this message unless we have at least one public
25471  * channel which has at least six confirmations on-chain.
25472  *
25473  * `rgb` is a node \"color\" and `alias` is a printable human-readable string to describe this
25474  * node to humans. They carry no in-protocol meaning.
25475  *
25476  * `addresses` represent the set (possibly empty) of socket addresses on which this node
25477  * accepts incoming connections. These will be included in the node_announcement, publicly
25478  * tying these addresses together and to this node. If you wish to preserve user privacy,
25479  * addresses should likely contain only Tor Onion addresses.
25480  *
25481  * Panics if `addresses` is absurdly large (more than 100).
25482  *
25483  * [`get_and_clear_pending_msg_events`]: MessageSendEventsProvider::get_and_clear_pending_msg_events
25484  */
25485 void PeerManager_broadcast_node_announcement(const struct LDKPeerManager *NONNULL_PTR this_arg, struct LDKThreeBytes rgb, struct LDKThirtyTwoBytes alias, struct LDKCVec_NetAddressZ addresses);
25486
25487 /**
25488  * Gets the weight for an HTLC-Success transaction.
25489  */
25490 uint64_t htlc_success_tx_weight(bool opt_anchors);
25491
25492 /**
25493  * Gets the weight for an HTLC-Timeout transaction.
25494  */
25495 uint64_t htlc_timeout_tx_weight(bool opt_anchors);
25496
25497 /**
25498  * Build the commitment secret from the seed and the commitment number
25499  */
25500 struct LDKThirtyTwoBytes build_commitment_secret(const uint8_t (*commitment_seed)[32], uint64_t idx);
25501
25502 /**
25503  * Build a closing transaction
25504  */
25505 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);
25506
25507 /**
25508  * Frees any resources used by the CounterpartyCommitmentSecrets, if is_owned is set and inner is non-NULL.
25509  */
25510 void CounterpartyCommitmentSecrets_free(struct LDKCounterpartyCommitmentSecrets this_obj);
25511
25512 /**
25513  * Creates a copy of the CounterpartyCommitmentSecrets
25514  */
25515 struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_clone(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR orig);
25516
25517 /**
25518  * Creates a new empty `CounterpartyCommitmentSecrets` structure.
25519  */
25520 MUST_USE_RES struct LDKCounterpartyCommitmentSecrets CounterpartyCommitmentSecrets_new(void);
25521
25522 /**
25523  * Returns the minimum index of all stored secrets. Note that indexes start
25524  * at 1 << 48 and get decremented by one for each new secret.
25525  */
25526 MUST_USE_RES uint64_t CounterpartyCommitmentSecrets_get_min_seen_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg);
25527
25528 /**
25529  * Inserts the `secret` at `idx`. Returns `Ok(())` if the secret
25530  * was generated in accordance with BOLT 3 and is consistent with previous secrets.
25531  */
25532 MUST_USE_RES struct LDKCResult_NoneNoneZ CounterpartyCommitmentSecrets_provide_secret(struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx, struct LDKThirtyTwoBytes secret);
25533
25534 /**
25535  * Returns the secret at `idx`.
25536  * Returns `None` if `idx` is < [`CounterpartyCommitmentSecrets::get_min_seen_secret`].
25537  *
25538  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
25539  */
25540 MUST_USE_RES struct LDKThirtyTwoBytes CounterpartyCommitmentSecrets_get_secret(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR this_arg, uint64_t idx);
25541
25542 /**
25543  * Serialize the CounterpartyCommitmentSecrets object into a byte array which can be read by CounterpartyCommitmentSecrets_read
25544  */
25545 struct LDKCVec_u8Z CounterpartyCommitmentSecrets_write(const struct LDKCounterpartyCommitmentSecrets *NONNULL_PTR obj);
25546
25547 /**
25548  * Read a CounterpartyCommitmentSecrets from a byte array, created by CounterpartyCommitmentSecrets_write
25549  */
25550 struct LDKCResult_CounterpartyCommitmentSecretsDecodeErrorZ CounterpartyCommitmentSecrets_read(struct LDKu8slice ser);
25551
25552 /**
25553  * Derives a per-commitment-transaction private key (eg an htlc key or delayed_payment key)
25554  * from the base secret and the per_commitment_point.
25555  *
25556  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
25557  * generated (ie our own).
25558  */
25559 struct LDKCResult_SecretKeyErrorZ derive_private_key(struct LDKPublicKey per_commitment_point, const uint8_t (*base_secret)[32]);
25560
25561 /**
25562  * Derives a per-commitment-transaction public key (eg an htlc key or a delayed_payment key)
25563  * from the base point and the per_commitment_key. This is the public equivalent of
25564  * derive_private_key - using only public keys to derive a public key instead of private keys.
25565  *
25566  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
25567  * generated (ie our own).
25568  */
25569 struct LDKCResult_PublicKeyErrorZ derive_public_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey base_point);
25570
25571 /**
25572  * Derives a per-commitment-transaction revocation key from its constituent parts.
25573  *
25574  * Only the cheating participant owns a valid witness to propagate a revoked
25575  * commitment transaction, thus per_commitment_secret always come from cheater
25576  * and revocation_base_secret always come from punisher, which is the broadcaster
25577  * of the transaction spending with this key knowledge.
25578  *
25579  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
25580  * generated (ie our own).
25581  */
25582 struct LDKCResult_SecretKeyErrorZ derive_private_revocation_key(const uint8_t (*per_commitment_secret)[32], const uint8_t (*countersignatory_revocation_base_secret)[32]);
25583
25584 /**
25585  * Derives a per-commitment-transaction revocation public key from its constituent parts. This is
25586  * the public equivalend of derive_private_revocation_key - using only public keys to derive a
25587  * public key instead of private keys.
25588  *
25589  * Only the cheating participant owns a valid witness to propagate a revoked
25590  * commitment transaction, thus per_commitment_point always come from cheater
25591  * and revocation_base_point always come from punisher, which is the broadcaster
25592  * of the transaction spending with this key knowledge.
25593  *
25594  * Note that this is infallible iff we trust that at least one of the two input keys are randomly
25595  * generated (ie our own).
25596  */
25597 struct LDKCResult_PublicKeyErrorZ derive_public_revocation_key(struct LDKPublicKey per_commitment_point, struct LDKPublicKey countersignatory_revocation_base_point);
25598
25599 /**
25600  * Frees any resources used by the TxCreationKeys, if is_owned is set and inner is non-NULL.
25601  */
25602 void TxCreationKeys_free(struct LDKTxCreationKeys this_obj);
25603
25604 /**
25605  * The broadcaster's per-commitment public key which was used to derive the other keys.
25606  */
25607 struct LDKPublicKey TxCreationKeys_get_per_commitment_point(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
25608
25609 /**
25610  * The broadcaster's per-commitment public key which was used to derive the other keys.
25611  */
25612 void TxCreationKeys_set_per_commitment_point(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25613
25614 /**
25615  * The revocation key which is used to allow the broadcaster of the commitment
25616  * transaction to provide their counterparty the ability to punish them if they broadcast
25617  * an old state.
25618  */
25619 struct LDKPublicKey TxCreationKeys_get_revocation_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
25620
25621 /**
25622  * The revocation key which is used to allow the broadcaster of the commitment
25623  * transaction to provide their counterparty the ability to punish them if they broadcast
25624  * an old state.
25625  */
25626 void TxCreationKeys_set_revocation_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25627
25628 /**
25629  * Broadcaster's HTLC Key
25630  */
25631 struct LDKPublicKey TxCreationKeys_get_broadcaster_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
25632
25633 /**
25634  * Broadcaster's HTLC Key
25635  */
25636 void TxCreationKeys_set_broadcaster_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25637
25638 /**
25639  * Countersignatory's HTLC Key
25640  */
25641 struct LDKPublicKey TxCreationKeys_get_countersignatory_htlc_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
25642
25643 /**
25644  * Countersignatory's HTLC Key
25645  */
25646 void TxCreationKeys_set_countersignatory_htlc_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25647
25648 /**
25649  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
25650  */
25651 struct LDKPublicKey TxCreationKeys_get_broadcaster_delayed_payment_key(const struct LDKTxCreationKeys *NONNULL_PTR this_ptr);
25652
25653 /**
25654  * Broadcaster's Payment Key (which isn't allowed to be spent from for some delay)
25655  */
25656 void TxCreationKeys_set_broadcaster_delayed_payment_key(struct LDKTxCreationKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25657
25658 /**
25659  * Constructs a new TxCreationKeys given each field
25660  */
25661 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);
25662
25663 /**
25664  * Creates a copy of the TxCreationKeys
25665  */
25666 struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
25667
25668 /**
25669  * Serialize the TxCreationKeys object into a byte array which can be read by TxCreationKeys_read
25670  */
25671 struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
25672
25673 /**
25674  * Read a TxCreationKeys from a byte array, created by TxCreationKeys_write
25675  */
25676 struct LDKCResult_TxCreationKeysDecodeErrorZ TxCreationKeys_read(struct LDKu8slice ser);
25677
25678 /**
25679  * Frees any resources used by the ChannelPublicKeys, if is_owned is set and inner is non-NULL.
25680  */
25681 void ChannelPublicKeys_free(struct LDKChannelPublicKeys this_obj);
25682
25683 /**
25684  * The public key which is used to sign all commitment transactions, as it appears in the
25685  * on-chain channel lock-in 2-of-2 multisig output.
25686  */
25687 struct LDKPublicKey ChannelPublicKeys_get_funding_pubkey(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
25688
25689 /**
25690  * The public key which is used to sign all commitment transactions, as it appears in the
25691  * on-chain channel lock-in 2-of-2 multisig output.
25692  */
25693 void ChannelPublicKeys_set_funding_pubkey(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25694
25695 /**
25696  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
25697  * revocation keys. This is combined with the per-commitment-secret generated by the
25698  * counterparty to create a secret which the counterparty can reveal to revoke previous
25699  * states.
25700  */
25701 struct LDKPublicKey ChannelPublicKeys_get_revocation_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
25702
25703 /**
25704  * The base point which is used (with derive_public_revocation_key) to derive per-commitment
25705  * revocation keys. This is combined with the per-commitment-secret generated by the
25706  * counterparty to create a secret which the counterparty can reveal to revoke previous
25707  * states.
25708  */
25709 void ChannelPublicKeys_set_revocation_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25710
25711 /**
25712  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
25713  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
25714  * static across every commitment transaction.
25715  */
25716 struct LDKPublicKey ChannelPublicKeys_get_payment_point(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
25717
25718 /**
25719  * The public key on which the non-broadcaster (ie the countersignatory) receives an immediately
25720  * spendable primary channel balance on the broadcaster's commitment transaction. This key is
25721  * static across every commitment transaction.
25722  */
25723 void ChannelPublicKeys_set_payment_point(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25724
25725 /**
25726  * The base point which is used (with derive_public_key) to derive a per-commitment payment
25727  * public key which receives non-HTLC-encumbered funds which are only available for spending
25728  * after some delay (or can be claimed via the revocation path).
25729  */
25730 struct LDKPublicKey ChannelPublicKeys_get_delayed_payment_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
25731
25732 /**
25733  * The base point which is used (with derive_public_key) to derive a per-commitment payment
25734  * public key which receives non-HTLC-encumbered funds which are only available for spending
25735  * after some delay (or can be claimed via the revocation path).
25736  */
25737 void ChannelPublicKeys_set_delayed_payment_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25738
25739 /**
25740  * The base point which is used (with derive_public_key) to derive a per-commitment public key
25741  * which is used to encumber HTLC-in-flight outputs.
25742  */
25743 struct LDKPublicKey ChannelPublicKeys_get_htlc_basepoint(const struct LDKChannelPublicKeys *NONNULL_PTR this_ptr);
25744
25745 /**
25746  * The base point which is used (with derive_public_key) to derive a per-commitment public key
25747  * which is used to encumber HTLC-in-flight outputs.
25748  */
25749 void ChannelPublicKeys_set_htlc_basepoint(struct LDKChannelPublicKeys *NONNULL_PTR this_ptr, struct LDKPublicKey val);
25750
25751 /**
25752  * Constructs a new ChannelPublicKeys given each field
25753  */
25754 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);
25755
25756 /**
25757  * Creates a copy of the ChannelPublicKeys
25758  */
25759 struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
25760
25761 /**
25762  * Serialize the ChannelPublicKeys object into a byte array which can be read by ChannelPublicKeys_read
25763  */
25764 struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
25765
25766 /**
25767  * Read a ChannelPublicKeys from a byte array, created by ChannelPublicKeys_write
25768  */
25769 struct LDKCResult_ChannelPublicKeysDecodeErrorZ ChannelPublicKeys_read(struct LDKu8slice ser);
25770
25771 /**
25772  * Create per-state keys from channel base points and the per-commitment point.
25773  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
25774  */
25775 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);
25776
25777 /**
25778  * Generate per-state keys from channel static keys.
25779  * Key set is asymmetric and can't be used as part of counter-signatory set of transactions.
25780  */
25781 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);
25782
25783 /**
25784  * A script either spendable by the revocation
25785  * key or the broadcaster_delayed_payment_key and satisfying the relative-locktime OP_CSV constrain.
25786  * Encumbering a `to_holder` output on a commitment transaction or 2nd-stage HTLC transactions.
25787  */
25788 struct LDKCVec_u8Z get_revokeable_redeemscript(struct LDKPublicKey revocation_key, uint16_t contest_delay, struct LDKPublicKey broadcaster_delayed_payment_key);
25789
25790 /**
25791  * Frees any resources used by the HTLCOutputInCommitment, if is_owned is set and inner is non-NULL.
25792  */
25793 void HTLCOutputInCommitment_free(struct LDKHTLCOutputInCommitment this_obj);
25794
25795 /**
25796  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
25797  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
25798  * need to compare this value to whether the commitment transaction in question is that of
25799  * the counterparty or our own.
25800  */
25801 bool HTLCOutputInCommitment_get_offered(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
25802
25803 /**
25804  * Whether the HTLC was \"offered\" (ie outbound in relation to this commitment transaction).
25805  * Note that this is not the same as whether it is ountbound *from us*. To determine that you
25806  * need to compare this value to whether the commitment transaction in question is that of
25807  * the counterparty or our own.
25808  */
25809 void HTLCOutputInCommitment_set_offered(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, bool val);
25810
25811 /**
25812  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
25813  * this divided by 1000.
25814  */
25815 uint64_t HTLCOutputInCommitment_get_amount_msat(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
25816
25817 /**
25818  * The value, in msat, of the HTLC. The value as it appears in the commitment transaction is
25819  * this divided by 1000.
25820  */
25821 void HTLCOutputInCommitment_set_amount_msat(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint64_t val);
25822
25823 /**
25824  * The CLTV lock-time at which this HTLC expires.
25825  */
25826 uint32_t HTLCOutputInCommitment_get_cltv_expiry(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
25827
25828 /**
25829  * The CLTV lock-time at which this HTLC expires.
25830  */
25831 void HTLCOutputInCommitment_set_cltv_expiry(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, uint32_t val);
25832
25833 /**
25834  * The hash of the preimage which unlocks this HTLC.
25835  */
25836 const uint8_t (*HTLCOutputInCommitment_get_payment_hash(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr))[32];
25837
25838 /**
25839  * The hash of the preimage which unlocks this HTLC.
25840  */
25841 void HTLCOutputInCommitment_set_payment_hash(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
25842
25843 /**
25844  * The position within the commitment transactions' outputs. This may be None if the value is
25845  * below the dust limit (in which case no output appears in the commitment transaction and the
25846  * value is spent to additional transaction fees).
25847  */
25848 struct LDKCOption_u32Z HTLCOutputInCommitment_get_transaction_output_index(const struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr);
25849
25850 /**
25851  * The position within the commitment transactions' outputs. This may be None if the value is
25852  * below the dust limit (in which case no output appears in the commitment transaction and the
25853  * value is spent to additional transaction fees).
25854  */
25855 void HTLCOutputInCommitment_set_transaction_output_index(struct LDKHTLCOutputInCommitment *NONNULL_PTR this_ptr, struct LDKCOption_u32Z val);
25856
25857 /**
25858  * Constructs a new HTLCOutputInCommitment given each field
25859  */
25860 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);
25861
25862 /**
25863  * Creates a copy of the HTLCOutputInCommitment
25864  */
25865 struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
25866
25867 /**
25868  * Serialize the HTLCOutputInCommitment object into a byte array which can be read by HTLCOutputInCommitment_read
25869  */
25870 struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
25871
25872 /**
25873  * Read a HTLCOutputInCommitment from a byte array, created by HTLCOutputInCommitment_write
25874  */
25875 struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ HTLCOutputInCommitment_read(struct LDKu8slice ser);
25876
25877 /**
25878  * Gets the witness redeemscript for an HTLC output in a commitment transaction. Note that htlc
25879  * does not need to have its previous_output_index filled.
25880  */
25881 struct LDKCVec_u8Z get_htlc_redeemscript(const struct LDKHTLCOutputInCommitment *NONNULL_PTR htlc, bool opt_anchors, const struct LDKTxCreationKeys *NONNULL_PTR keys);
25882
25883 /**
25884  * Gets the redeemscript for a funding output from the two funding public keys.
25885  * Note that the order of funding public keys does not matter.
25886  */
25887 struct LDKCVec_u8Z make_funding_redeemscript(struct LDKPublicKey broadcaster, struct LDKPublicKey countersignatory);
25888
25889 /**
25890  * Builds an unsigned HTLC-Success or HTLC-Timeout transaction from the given channel and HTLC
25891  * parameters. This is used by [`TrustedCommitmentTransaction::get_htlc_sigs`] to fetch the
25892  * transaction which needs signing, and can be used to construct an HTLC transaction which is
25893  * broadcastable given a counterparty HTLC signature.
25894  *
25895  * Panics if htlc.transaction_output_index.is_none() (as such HTLCs do not appear in the
25896  * commitment transaction).
25897  */
25898 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);
25899
25900 /**
25901  * Gets the witnessScript for an anchor output from the funding public key.
25902  * The witness in the spending input must be:
25903  * <BIP 143 funding_signature>
25904  * After 16 blocks of confirmation, an alternative satisfying witness could be:
25905  * <>
25906  * (empty vector required to satisfy compliance with MINIMALIF-standard rule)
25907  */
25908 struct LDKCVec_u8Z get_anchor_redeemscript(struct LDKPublicKey funding_pubkey);
25909
25910 /**
25911  * Frees any resources used by the ChannelTransactionParameters, if is_owned is set and inner is non-NULL.
25912  */
25913 void ChannelTransactionParameters_free(struct LDKChannelTransactionParameters this_obj);
25914
25915 /**
25916  * Holder public keys
25917  */
25918 struct LDKChannelPublicKeys ChannelTransactionParameters_get_holder_pubkeys(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
25919
25920 /**
25921  * Holder public keys
25922  */
25923 void ChannelTransactionParameters_set_holder_pubkeys(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
25924
25925 /**
25926  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
25927  */
25928 uint16_t ChannelTransactionParameters_get_holder_selected_contest_delay(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
25929
25930 /**
25931  * The contest delay selected by the holder, which applies to counterparty-broadcast transactions
25932  */
25933 void ChannelTransactionParameters_set_holder_selected_contest_delay(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
25934
25935 /**
25936  * Whether the holder is the initiator of this channel.
25937  * This is an input to the commitment number obscure factor computation.
25938  */
25939 bool ChannelTransactionParameters_get_is_outbound_from_holder(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
25940
25941 /**
25942  * Whether the holder is the initiator of this channel.
25943  * This is an input to the commitment number obscure factor computation.
25944  */
25945 void ChannelTransactionParameters_set_is_outbound_from_holder(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, bool val);
25946
25947 /**
25948  * The late-bound counterparty channel transaction parameters.
25949  * These parameters are populated at the point in the protocol where the counterparty provides them.
25950  *
25951  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
25952  */
25953 struct LDKCounterpartyChannelTransactionParameters ChannelTransactionParameters_get_counterparty_parameters(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
25954
25955 /**
25956  * The late-bound counterparty channel transaction parameters.
25957  * These parameters are populated at the point in the protocol where the counterparty provides them.
25958  *
25959  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
25960  */
25961 void ChannelTransactionParameters_set_counterparty_parameters(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKCounterpartyChannelTransactionParameters val);
25962
25963 /**
25964  * The late-bound funding outpoint
25965  *
25966  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
25967  */
25968 struct LDKOutPoint ChannelTransactionParameters_get_funding_outpoint(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
25969
25970 /**
25971  * The late-bound funding outpoint
25972  *
25973  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
25974  */
25975 void ChannelTransactionParameters_set_funding_outpoint(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKOutPoint val);
25976
25977 /**
25978  * Are anchors used for this channel.  Boolean is serialization backwards-compatible
25979  */
25980 enum LDKCOption_NoneZ ChannelTransactionParameters_get_opt_anchors(const struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr);
25981
25982 /**
25983  * Are anchors used for this channel.  Boolean is serialization backwards-compatible
25984  */
25985 void ChannelTransactionParameters_set_opt_anchors(struct LDKChannelTransactionParameters *NONNULL_PTR this_ptr, enum LDKCOption_NoneZ val);
25986
25987 /**
25988  * Constructs a new ChannelTransactionParameters given each field
25989  */
25990 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);
25991
25992 /**
25993  * Creates a copy of the ChannelTransactionParameters
25994  */
25995 struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
25996
25997 /**
25998  * Frees any resources used by the CounterpartyChannelTransactionParameters, if is_owned is set and inner is non-NULL.
25999  */
26000 void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
26001
26002 /**
26003  * Counter-party public keys
26004  */
26005 struct LDKChannelPublicKeys CounterpartyChannelTransactionParameters_get_pubkeys(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
26006
26007 /**
26008  * Counter-party public keys
26009  */
26010 void CounterpartyChannelTransactionParameters_set_pubkeys(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, struct LDKChannelPublicKeys val);
26011
26012 /**
26013  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
26014  */
26015 uint16_t CounterpartyChannelTransactionParameters_get_selected_contest_delay(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr);
26016
26017 /**
26018  * The contest delay selected by the counterparty, which applies to holder-broadcast transactions
26019  */
26020 void CounterpartyChannelTransactionParameters_set_selected_contest_delay(struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR this_ptr, uint16_t val);
26021
26022 /**
26023  * Constructs a new CounterpartyChannelTransactionParameters given each field
26024  */
26025 MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
26026
26027 /**
26028  * Creates a copy of the CounterpartyChannelTransactionParameters
26029  */
26030 struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
26031
26032 /**
26033  * Whether the late bound parameters are populated.
26034  */
26035 MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
26036
26037 /**
26038  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
26039  * given that the holder is the broadcaster.
26040  *
26041  * self.is_populated() must be true before calling this function.
26042  */
26043 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_holder_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
26044
26045 /**
26046  * Convert the holder/counterparty parameters to broadcaster/countersignatory-organized parameters,
26047  * given that the counterparty is the broadcaster.
26048  *
26049  * self.is_populated() must be true before calling this function.
26050  */
26051 MUST_USE_RES struct LDKDirectedChannelTransactionParameters ChannelTransactionParameters_as_counterparty_broadcastable(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
26052
26053 /**
26054  * Serialize the CounterpartyChannelTransactionParameters object into a byte array which can be read by CounterpartyChannelTransactionParameters_read
26055  */
26056 struct LDKCVec_u8Z CounterpartyChannelTransactionParameters_write(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR obj);
26057
26058 /**
26059  * Read a CounterpartyChannelTransactionParameters from a byte array, created by CounterpartyChannelTransactionParameters_write
26060  */
26061 struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CounterpartyChannelTransactionParameters_read(struct LDKu8slice ser);
26062
26063 /**
26064  * Serialize the ChannelTransactionParameters object into a byte array which can be read by ChannelTransactionParameters_read
26065  */
26066 struct LDKCVec_u8Z ChannelTransactionParameters_write(const struct LDKChannelTransactionParameters *NONNULL_PTR obj);
26067
26068 /**
26069  * Read a ChannelTransactionParameters from a byte array, created by ChannelTransactionParameters_write
26070  */
26071 struct LDKCResult_ChannelTransactionParametersDecodeErrorZ ChannelTransactionParameters_read(struct LDKu8slice ser);
26072
26073 /**
26074  * Frees any resources used by the DirectedChannelTransactionParameters, if is_owned is set and inner is non-NULL.
26075  */
26076 void DirectedChannelTransactionParameters_free(struct LDKDirectedChannelTransactionParameters this_obj);
26077
26078 /**
26079  * Get the channel pubkeys for the broadcaster
26080  */
26081 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_broadcaster_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
26082
26083 /**
26084  * Get the channel pubkeys for the countersignatory
26085  */
26086 MUST_USE_RES struct LDKChannelPublicKeys DirectedChannelTransactionParameters_countersignatory_pubkeys(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
26087
26088 /**
26089  * Get the contest delay applicable to the transactions.
26090  * Note that the contest delay was selected by the countersignatory.
26091  */
26092 MUST_USE_RES uint16_t DirectedChannelTransactionParameters_contest_delay(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
26093
26094 /**
26095  * Whether the channel is outbound from the broadcaster.
26096  *
26097  * The boolean representing the side that initiated the channel is
26098  * an input to the commitment number obscure factor computation.
26099  */
26100 MUST_USE_RES bool DirectedChannelTransactionParameters_is_outbound(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
26101
26102 /**
26103  * The funding outpoint
26104  */
26105 MUST_USE_RES struct LDKOutPoint DirectedChannelTransactionParameters_funding_outpoint(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
26106
26107 /**
26108  * Whether to use anchors for this channel
26109  */
26110 MUST_USE_RES bool DirectedChannelTransactionParameters_opt_anchors(const struct LDKDirectedChannelTransactionParameters *NONNULL_PTR this_arg);
26111
26112 /**
26113  * Frees any resources used by the HolderCommitmentTransaction, if is_owned is set and inner is non-NULL.
26114  */
26115 void HolderCommitmentTransaction_free(struct LDKHolderCommitmentTransaction this_obj);
26116
26117 /**
26118  * Our counterparty's signature for the transaction
26119  */
26120 struct LDKSignature HolderCommitmentTransaction_get_counterparty_sig(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
26121
26122 /**
26123  * Our counterparty's signature for the transaction
26124  */
26125 void HolderCommitmentTransaction_set_counterparty_sig(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKSignature val);
26126
26127 /**
26128  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
26129  *
26130  * Returns a copy of the field.
26131  */
26132 struct LDKCVec_SignatureZ HolderCommitmentTransaction_get_counterparty_htlc_sigs(const struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr);
26133
26134 /**
26135  * All non-dust counterparty HTLC signatures, in the order they appear in the transaction
26136  */
26137 void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
26138
26139 /**
26140  * Creates a copy of the HolderCommitmentTransaction
26141  */
26142 struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
26143
26144 /**
26145  * Serialize the HolderCommitmentTransaction object into a byte array which can be read by HolderCommitmentTransaction_read
26146  */
26147 struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
26148
26149 /**
26150  * Read a HolderCommitmentTransaction from a byte array, created by HolderCommitmentTransaction_write
26151  */
26152 struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ HolderCommitmentTransaction_read(struct LDKu8slice ser);
26153
26154 /**
26155  * Create a new holder transaction with the given counterparty signatures.
26156  * The funding keys are used to figure out which signature should go first when building the transaction for broadcast.
26157  */
26158 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);
26159
26160 /**
26161  * Frees any resources used by the BuiltCommitmentTransaction, if is_owned is set and inner is non-NULL.
26162  */
26163 void BuiltCommitmentTransaction_free(struct LDKBuiltCommitmentTransaction this_obj);
26164
26165 /**
26166  * The commitment transaction
26167  */
26168 struct LDKTransaction BuiltCommitmentTransaction_get_transaction(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr);
26169
26170 /**
26171  * The commitment transaction
26172  */
26173 void BuiltCommitmentTransaction_set_transaction(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKTransaction val);
26174
26175 /**
26176  * The txid for the commitment transaction.
26177  *
26178  * This is provided as a performance optimization, instead of calling transaction.txid()
26179  * multiple times.
26180  */
26181 const uint8_t (*BuiltCommitmentTransaction_get_txid(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr))[32];
26182
26183 /**
26184  * The txid for the commitment transaction.
26185  *
26186  * This is provided as a performance optimization, instead of calling transaction.txid()
26187  * multiple times.
26188  */
26189 void BuiltCommitmentTransaction_set_txid(struct LDKBuiltCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
26190
26191 /**
26192  * Constructs a new BuiltCommitmentTransaction given each field
26193  */
26194 MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
26195
26196 /**
26197  * Creates a copy of the BuiltCommitmentTransaction
26198  */
26199 struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
26200
26201 /**
26202  * Serialize the BuiltCommitmentTransaction object into a byte array which can be read by BuiltCommitmentTransaction_read
26203  */
26204 struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
26205
26206 /**
26207  * Read a BuiltCommitmentTransaction from a byte array, created by BuiltCommitmentTransaction_write
26208  */
26209 struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ BuiltCommitmentTransaction_read(struct LDKu8slice ser);
26210
26211 /**
26212  * Get the SIGHASH_ALL sighash value of the transaction.
26213  *
26214  * This can be used to verify a signature.
26215  */
26216 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);
26217
26218 /**
26219  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
26220  * because we are about to broadcast a holder transaction.
26221  */
26222 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);
26223
26224 /**
26225  * Frees any resources used by the ClosingTransaction, if is_owned is set and inner is non-NULL.
26226  */
26227 void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
26228
26229 /**
26230  * Creates a copy of the ClosingTransaction
26231  */
26232 struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
26233
26234 /**
26235  * Checks if two ClosingTransactions contain equal inner contents.
26236  */
26237 uint64_t ClosingTransaction_hash(const struct LDKClosingTransaction *NONNULL_PTR o);
26238
26239 /**
26240  * Construct an object of the class
26241  */
26242 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);
26243
26244 /**
26245  * Trust our pre-built transaction.
26246  *
26247  * Applies a wrapper which allows access to the transaction.
26248  *
26249  * This should only be used if you fully trust the builder of this object. It should not
26250  * be used by an external signer - instead use the verify function.
26251  */
26252 MUST_USE_RES struct LDKTrustedClosingTransaction ClosingTransaction_trust(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
26253
26254 /**
26255  * Verify our pre-built transaction.
26256  *
26257  * Applies a wrapper which allows access to the transaction.
26258  *
26259  * An external validating signer must call this method before signing
26260  * or using the built transaction.
26261  */
26262 MUST_USE_RES struct LDKCResult_TrustedClosingTransactionNoneZ ClosingTransaction_verify(const struct LDKClosingTransaction *NONNULL_PTR this_arg, struct LDKOutPoint funding_outpoint);
26263
26264 /**
26265  * The value to be sent to the holder, or zero if the output will be omitted
26266  */
26267 MUST_USE_RES uint64_t ClosingTransaction_to_holder_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
26268
26269 /**
26270  * The value to be sent to the counterparty, or zero if the output will be omitted
26271  */
26272 MUST_USE_RES uint64_t ClosingTransaction_to_counterparty_value_sat(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
26273
26274 /**
26275  * The destination of the holder's output
26276  */
26277 MUST_USE_RES struct LDKu8slice ClosingTransaction_to_holder_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
26278
26279 /**
26280  * The destination of the counterparty's output
26281  */
26282 MUST_USE_RES struct LDKu8slice ClosingTransaction_to_counterparty_script(const struct LDKClosingTransaction *NONNULL_PTR this_arg);
26283
26284 /**
26285  * Frees any resources used by the TrustedClosingTransaction, if is_owned is set and inner is non-NULL.
26286  */
26287 void TrustedClosingTransaction_free(struct LDKTrustedClosingTransaction this_obj);
26288
26289 /**
26290  * The pre-built Bitcoin commitment transaction
26291  */
26292 MUST_USE_RES struct LDKTransaction TrustedClosingTransaction_built_transaction(const struct LDKTrustedClosingTransaction *NONNULL_PTR this_arg);
26293
26294 /**
26295  * Get the SIGHASH_ALL sighash value of the transaction.
26296  *
26297  * This can be used to verify a signature.
26298  */
26299 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);
26300
26301 /**
26302  * Sign a transaction, either because we are counter-signing the counterparty's transaction or
26303  * because we are about to broadcast a holder transaction.
26304  */
26305 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);
26306
26307 /**
26308  * Frees any resources used by the CommitmentTransaction, if is_owned is set and inner is non-NULL.
26309  */
26310 void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
26311
26312 /**
26313  * Creates a copy of the CommitmentTransaction
26314  */
26315 struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
26316
26317 /**
26318  * Serialize the CommitmentTransaction object into a byte array which can be read by CommitmentTransaction_read
26319  */
26320 struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
26321
26322 /**
26323  * Read a CommitmentTransaction from a byte array, created by CommitmentTransaction_write
26324  */
26325 struct LDKCResult_CommitmentTransactionDecodeErrorZ CommitmentTransaction_read(struct LDKu8slice ser);
26326
26327 /**
26328  * The backwards-counting commitment number
26329  */
26330 MUST_USE_RES uint64_t CommitmentTransaction_commitment_number(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
26331
26332 /**
26333  * The value to be sent to the broadcaster
26334  */
26335 MUST_USE_RES uint64_t CommitmentTransaction_to_broadcaster_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
26336
26337 /**
26338  * The value to be sent to the counterparty
26339  */
26340 MUST_USE_RES uint64_t CommitmentTransaction_to_countersignatory_value_sat(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
26341
26342 /**
26343  * The feerate paid per 1000-weight-unit in this commitment transaction.
26344  */
26345 MUST_USE_RES uint32_t CommitmentTransaction_feerate_per_kw(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
26346
26347 /**
26348  * Trust our pre-built transaction and derived transaction creation public keys.
26349  *
26350  * Applies a wrapper which allows access to these fields.
26351  *
26352  * This should only be used if you fully trust the builder of this object.  It should not
26353  * be used by an external signer - instead use the verify function.
26354  */
26355 MUST_USE_RES struct LDKTrustedCommitmentTransaction CommitmentTransaction_trust(const struct LDKCommitmentTransaction *NONNULL_PTR this_arg);
26356
26357 /**
26358  * Verify our pre-built transaction and derived transaction creation public keys.
26359  *
26360  * Applies a wrapper which allows access to these fields.
26361  *
26362  * An external validating signer must call this method before signing
26363  * or using the built transaction.
26364  */
26365 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);
26366
26367 /**
26368  * Frees any resources used by the TrustedCommitmentTransaction, if is_owned is set and inner is non-NULL.
26369  */
26370 void TrustedCommitmentTransaction_free(struct LDKTrustedCommitmentTransaction this_obj);
26371
26372 /**
26373  * The transaction ID of the built Bitcoin transaction
26374  */
26375 MUST_USE_RES struct LDKThirtyTwoBytes TrustedCommitmentTransaction_txid(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
26376
26377 /**
26378  * The pre-built Bitcoin commitment transaction
26379  */
26380 MUST_USE_RES struct LDKBuiltCommitmentTransaction TrustedCommitmentTransaction_built_transaction(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
26381
26382 /**
26383  * The pre-calculated transaction creation public keys.
26384  */
26385 MUST_USE_RES struct LDKTxCreationKeys TrustedCommitmentTransaction_keys(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
26386
26387 /**
26388  * Should anchors be used.
26389  */
26390 MUST_USE_RES bool TrustedCommitmentTransaction_opt_anchors(const struct LDKTrustedCommitmentTransaction *NONNULL_PTR this_arg);
26391
26392 /**
26393  * Get a signature for each HTLC which was included in the commitment transaction (ie for
26394  * which HTLCOutputInCommitment::transaction_output_index.is_some()).
26395  *
26396  * The returned Vec has one entry for each HTLC, and in the same order.
26397  *
26398  * This function is only valid in the holder commitment context, it always uses EcdsaSighashType::All.
26399  */
26400 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);
26401
26402 /**
26403  * Commitment transaction numbers which appear in the transactions themselves are XOR'd with a
26404  * shared secret first. This prevents on-chain observers from discovering how many commitment
26405  * transactions occurred in a channel before it was closed.
26406  *
26407  * This function gets the shared secret from relevant channel public keys and can be used to
26408  * \"decrypt\" the commitment transaction number given a commitment transaction on-chain.
26409  */
26410 uint64_t get_commitment_transaction_number_obscure_factor(struct LDKPublicKey broadcaster_payment_basepoint, struct LDKPublicKey countersignatory_payment_basepoint, bool outbound_from_broadcaster);
26411
26412 /**
26413  * Checks if two InitFeaturess contain equal inner contents.
26414  * This ignores pointers and is_owned flags and looks at the values in fields.
26415  * Two objects with NULL inner values will be considered "equal" here.
26416  */
26417 bool InitFeatures_eq(const struct LDKInitFeatures *NONNULL_PTR a, const struct LDKInitFeatures *NONNULL_PTR b);
26418
26419 /**
26420  * Checks if two NodeFeaturess contain equal inner contents.
26421  * This ignores pointers and is_owned flags and looks at the values in fields.
26422  * Two objects with NULL inner values will be considered "equal" here.
26423  */
26424 bool NodeFeatures_eq(const struct LDKNodeFeatures *NONNULL_PTR a, const struct LDKNodeFeatures *NONNULL_PTR b);
26425
26426 /**
26427  * Checks if two ChannelFeaturess contain equal inner contents.
26428  * This ignores pointers and is_owned flags and looks at the values in fields.
26429  * Two objects with NULL inner values will be considered "equal" here.
26430  */
26431 bool ChannelFeatures_eq(const struct LDKChannelFeatures *NONNULL_PTR a, const struct LDKChannelFeatures *NONNULL_PTR b);
26432
26433 /**
26434  * Checks if two InvoiceFeaturess contain equal inner contents.
26435  * This ignores pointers and is_owned flags and looks at the values in fields.
26436  * Two objects with NULL inner values will be considered "equal" here.
26437  */
26438 bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
26439
26440 /**
26441  * Checks if two ChannelTypeFeaturess contain equal inner contents.
26442  * This ignores pointers and is_owned flags and looks at the values in fields.
26443  * Two objects with NULL inner values will be considered "equal" here.
26444  */
26445 bool ChannelTypeFeatures_eq(const struct LDKChannelTypeFeatures *NONNULL_PTR a, const struct LDKChannelTypeFeatures *NONNULL_PTR b);
26446
26447 /**
26448  * Creates a copy of the InitFeatures
26449  */
26450 struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
26451
26452 /**
26453  * Creates a copy of the NodeFeatures
26454  */
26455 struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
26456
26457 /**
26458  * Creates a copy of the ChannelFeatures
26459  */
26460 struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
26461
26462 /**
26463  * Creates a copy of the InvoiceFeatures
26464  */
26465 struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
26466
26467 /**
26468  * Creates a copy of the ChannelTypeFeatures
26469  */
26470 struct LDKChannelTypeFeatures ChannelTypeFeatures_clone(const struct LDKChannelTypeFeatures *NONNULL_PTR orig);
26471
26472 /**
26473  * Frees any resources used by the InitFeatures, if is_owned is set and inner is non-NULL.
26474  */
26475 void InitFeatures_free(struct LDKInitFeatures this_obj);
26476
26477 /**
26478  * Frees any resources used by the NodeFeatures, if is_owned is set and inner is non-NULL.
26479  */
26480 void NodeFeatures_free(struct LDKNodeFeatures this_obj);
26481
26482 /**
26483  * Frees any resources used by the ChannelFeatures, if is_owned is set and inner is non-NULL.
26484  */
26485 void ChannelFeatures_free(struct LDKChannelFeatures this_obj);
26486
26487 /**
26488  * Frees any resources used by the InvoiceFeatures, if is_owned is set and inner is non-NULL.
26489  */
26490 void InvoiceFeatures_free(struct LDKInvoiceFeatures this_obj);
26491
26492 /**
26493  * Frees any resources used by the ChannelTypeFeatures, if is_owned is set and inner is non-NULL.
26494  */
26495 void ChannelTypeFeatures_free(struct LDKChannelTypeFeatures this_obj);
26496
26497 /**
26498  * Returns the set of known init features that are related to channels. At least some of
26499  * these features are likely required for peers to talk to us.
26500  */
26501 MUST_USE_RES struct LDKInitFeatures InitFeatures_known_channel_features(void);
26502
26503 /**
26504  * Returns the set of known node features that are related to channels.
26505  */
26506 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known_channel_features(void);
26507
26508 /**
26509  * Create a blank Features with no features set
26510  */
26511 MUST_USE_RES struct LDKInitFeatures InitFeatures_empty(void);
26512
26513 /**
26514  * Creates a Features with the bits set which are known by the implementation
26515  */
26516 MUST_USE_RES struct LDKInitFeatures InitFeatures_known(void);
26517
26518 /**
26519  * Returns true if this `Features` object contains unknown feature flags which are set as
26520  * \"required\".
26521  */
26522 MUST_USE_RES bool InitFeatures_requires_unknown_bits(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26523
26524 /**
26525  * Create a blank Features with no features set
26526  */
26527 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_empty(void);
26528
26529 /**
26530  * Creates a Features with the bits set which are known by the implementation
26531  */
26532 MUST_USE_RES struct LDKNodeFeatures NodeFeatures_known(void);
26533
26534 /**
26535  * Returns true if this `Features` object contains unknown feature flags which are set as
26536  * \"required\".
26537  */
26538 MUST_USE_RES bool NodeFeatures_requires_unknown_bits(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26539
26540 /**
26541  * Create a blank Features with no features set
26542  */
26543 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_empty(void);
26544
26545 /**
26546  * Creates a Features with the bits set which are known by the implementation
26547  */
26548 MUST_USE_RES struct LDKChannelFeatures ChannelFeatures_known(void);
26549
26550 /**
26551  * Returns true if this `Features` object contains unknown feature flags which are set as
26552  * \"required\".
26553  */
26554 MUST_USE_RES bool ChannelFeatures_requires_unknown_bits(const struct LDKChannelFeatures *NONNULL_PTR this_arg);
26555
26556 /**
26557  * Create a blank Features with no features set
26558  */
26559 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_empty(void);
26560
26561 /**
26562  * Creates a Features with the bits set which are known by the implementation
26563  */
26564 MUST_USE_RES struct LDKInvoiceFeatures InvoiceFeatures_known(void);
26565
26566 /**
26567  * Returns true if this `Features` object contains unknown feature flags which are set as
26568  * \"required\".
26569  */
26570 MUST_USE_RES bool InvoiceFeatures_requires_unknown_bits(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26571
26572 /**
26573  * Create a blank Features with no features set
26574  */
26575 MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_empty(void);
26576
26577 /**
26578  * Creates a Features with the bits set which are known by the implementation
26579  */
26580 MUST_USE_RES struct LDKChannelTypeFeatures ChannelTypeFeatures_known(void);
26581
26582 /**
26583  * Returns true if this `Features` object contains unknown feature flags which are set as
26584  * \"required\".
26585  */
26586 MUST_USE_RES bool ChannelTypeFeatures_requires_unknown_bits(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
26587
26588 /**
26589  * Serialize the InitFeatures object into a byte array which can be read by InitFeatures_read
26590  */
26591 struct LDKCVec_u8Z InitFeatures_write(const struct LDKInitFeatures *NONNULL_PTR obj);
26592
26593 /**
26594  * Read a InitFeatures from a byte array, created by InitFeatures_write
26595  */
26596 struct LDKCResult_InitFeaturesDecodeErrorZ InitFeatures_read(struct LDKu8slice ser);
26597
26598 /**
26599  * Serialize the ChannelFeatures object into a byte array which can be read by ChannelFeatures_read
26600  */
26601 struct LDKCVec_u8Z ChannelFeatures_write(const struct LDKChannelFeatures *NONNULL_PTR obj);
26602
26603 /**
26604  * Read a ChannelFeatures from a byte array, created by ChannelFeatures_write
26605  */
26606 struct LDKCResult_ChannelFeaturesDecodeErrorZ ChannelFeatures_read(struct LDKu8slice ser);
26607
26608 /**
26609  * Serialize the NodeFeatures object into a byte array which can be read by NodeFeatures_read
26610  */
26611 struct LDKCVec_u8Z NodeFeatures_write(const struct LDKNodeFeatures *NONNULL_PTR obj);
26612
26613 /**
26614  * Read a NodeFeatures from a byte array, created by NodeFeatures_write
26615  */
26616 struct LDKCResult_NodeFeaturesDecodeErrorZ NodeFeatures_read(struct LDKu8slice ser);
26617
26618 /**
26619  * Serialize the InvoiceFeatures object into a byte array which can be read by InvoiceFeatures_read
26620  */
26621 struct LDKCVec_u8Z InvoiceFeatures_write(const struct LDKInvoiceFeatures *NONNULL_PTR obj);
26622
26623 /**
26624  * Read a InvoiceFeatures from a byte array, created by InvoiceFeatures_write
26625  */
26626 struct LDKCResult_InvoiceFeaturesDecodeErrorZ InvoiceFeatures_read(struct LDKu8slice ser);
26627
26628 /**
26629  * Serialize the ChannelTypeFeatures object into a byte array which can be read by ChannelTypeFeatures_read
26630  */
26631 struct LDKCVec_u8Z ChannelTypeFeatures_write(const struct LDKChannelTypeFeatures *NONNULL_PTR obj);
26632
26633 /**
26634  * Read a ChannelTypeFeatures from a byte array, created by ChannelTypeFeatures_write
26635  */
26636 struct LDKCResult_ChannelTypeFeaturesDecodeErrorZ ChannelTypeFeatures_read(struct LDKu8slice ser);
26637
26638 /**
26639  * Set this feature as optional.
26640  */
26641 void InitFeatures_set_data_loss_protect_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26642
26643 /**
26644  * Set this feature as required.
26645  */
26646 void InitFeatures_set_data_loss_protect_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26647
26648 /**
26649  * Checks if this feature is supported.
26650  */
26651 MUST_USE_RES bool InitFeatures_supports_data_loss_protect(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26652
26653 /**
26654  * Set this feature as optional.
26655  */
26656 void NodeFeatures_set_data_loss_protect_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26657
26658 /**
26659  * Set this feature as required.
26660  */
26661 void NodeFeatures_set_data_loss_protect_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26662
26663 /**
26664  * Checks if this feature is supported.
26665  */
26666 MUST_USE_RES bool NodeFeatures_supports_data_loss_protect(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26667
26668 /**
26669  * Checks if this feature is required.
26670  */
26671 MUST_USE_RES bool InitFeatures_requires_data_loss_protect(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26672
26673 /**
26674  * Checks if this feature is required.
26675  */
26676 MUST_USE_RES bool NodeFeatures_requires_data_loss_protect(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26677
26678 /**
26679  * Set this feature as optional.
26680  */
26681 void InitFeatures_set_initial_routing_sync_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26682
26683 /**
26684  * Set this feature as required.
26685  */
26686 void InitFeatures_set_initial_routing_sync_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26687
26688 /**
26689  * Checks if this feature is supported.
26690  */
26691 MUST_USE_RES bool InitFeatures_initial_routing_sync(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26692
26693 /**
26694  * Set this feature as optional.
26695  */
26696 void InitFeatures_set_upfront_shutdown_script_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26697
26698 /**
26699  * Set this feature as required.
26700  */
26701 void InitFeatures_set_upfront_shutdown_script_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26702
26703 /**
26704  * Checks if this feature is supported.
26705  */
26706 MUST_USE_RES bool InitFeatures_supports_upfront_shutdown_script(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26707
26708 /**
26709  * Set this feature as optional.
26710  */
26711 void NodeFeatures_set_upfront_shutdown_script_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26712
26713 /**
26714  * Set this feature as required.
26715  */
26716 void NodeFeatures_set_upfront_shutdown_script_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26717
26718 /**
26719  * Checks if this feature is supported.
26720  */
26721 MUST_USE_RES bool NodeFeatures_supports_upfront_shutdown_script(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26722
26723 /**
26724  * Checks if this feature is required.
26725  */
26726 MUST_USE_RES bool InitFeatures_requires_upfront_shutdown_script(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26727
26728 /**
26729  * Checks if this feature is required.
26730  */
26731 MUST_USE_RES bool NodeFeatures_requires_upfront_shutdown_script(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26732
26733 /**
26734  * Set this feature as optional.
26735  */
26736 void InitFeatures_set_gossip_queries_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26737
26738 /**
26739  * Set this feature as required.
26740  */
26741 void InitFeatures_set_gossip_queries_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26742
26743 /**
26744  * Checks if this feature is supported.
26745  */
26746 MUST_USE_RES bool InitFeatures_supports_gossip_queries(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26747
26748 /**
26749  * Set this feature as optional.
26750  */
26751 void NodeFeatures_set_gossip_queries_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26752
26753 /**
26754  * Set this feature as required.
26755  */
26756 void NodeFeatures_set_gossip_queries_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26757
26758 /**
26759  * Checks if this feature is supported.
26760  */
26761 MUST_USE_RES bool NodeFeatures_supports_gossip_queries(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26762
26763 /**
26764  * Checks if this feature is required.
26765  */
26766 MUST_USE_RES bool InitFeatures_requires_gossip_queries(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26767
26768 /**
26769  * Checks if this feature is required.
26770  */
26771 MUST_USE_RES bool NodeFeatures_requires_gossip_queries(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26772
26773 /**
26774  * Set this feature as optional.
26775  */
26776 void InitFeatures_set_variable_length_onion_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26777
26778 /**
26779  * Set this feature as required.
26780  */
26781 void InitFeatures_set_variable_length_onion_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26782
26783 /**
26784  * Checks if this feature is supported.
26785  */
26786 MUST_USE_RES bool InitFeatures_supports_variable_length_onion(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26787
26788 /**
26789  * Set this feature as optional.
26790  */
26791 void NodeFeatures_set_variable_length_onion_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26792
26793 /**
26794  * Set this feature as required.
26795  */
26796 void NodeFeatures_set_variable_length_onion_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26797
26798 /**
26799  * Checks if this feature is supported.
26800  */
26801 MUST_USE_RES bool NodeFeatures_supports_variable_length_onion(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26802
26803 /**
26804  * Set this feature as optional.
26805  */
26806 void InvoiceFeatures_set_variable_length_onion_optional(struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26807
26808 /**
26809  * Set this feature as required.
26810  */
26811 void InvoiceFeatures_set_variable_length_onion_required(struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26812
26813 /**
26814  * Checks if this feature is supported.
26815  */
26816 MUST_USE_RES bool InvoiceFeatures_supports_variable_length_onion(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26817
26818 /**
26819  * Checks if this feature is required.
26820  */
26821 MUST_USE_RES bool InitFeatures_requires_variable_length_onion(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26822
26823 /**
26824  * Checks if this feature is required.
26825  */
26826 MUST_USE_RES bool NodeFeatures_requires_variable_length_onion(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26827
26828 /**
26829  * Checks if this feature is required.
26830  */
26831 MUST_USE_RES bool InvoiceFeatures_requires_variable_length_onion(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26832
26833 /**
26834  * Set this feature as optional.
26835  */
26836 void InitFeatures_set_static_remote_key_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26837
26838 /**
26839  * Set this feature as required.
26840  */
26841 void InitFeatures_set_static_remote_key_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26842
26843 /**
26844  * Checks if this feature is supported.
26845  */
26846 MUST_USE_RES bool InitFeatures_supports_static_remote_key(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26847
26848 /**
26849  * Set this feature as optional.
26850  */
26851 void NodeFeatures_set_static_remote_key_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26852
26853 /**
26854  * Set this feature as required.
26855  */
26856 void NodeFeatures_set_static_remote_key_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26857
26858 /**
26859  * Checks if this feature is supported.
26860  */
26861 MUST_USE_RES bool NodeFeatures_supports_static_remote_key(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26862
26863 /**
26864  * Set this feature as optional.
26865  */
26866 void ChannelTypeFeatures_set_static_remote_key_optional(struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
26867
26868 /**
26869  * Set this feature as required.
26870  */
26871 void ChannelTypeFeatures_set_static_remote_key_required(struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
26872
26873 /**
26874  * Checks if this feature is supported.
26875  */
26876 MUST_USE_RES bool ChannelTypeFeatures_supports_static_remote_key(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
26877
26878 /**
26879  * Checks if this feature is required.
26880  */
26881 MUST_USE_RES bool InitFeatures_requires_static_remote_key(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26882
26883 /**
26884  * Checks if this feature is required.
26885  */
26886 MUST_USE_RES bool NodeFeatures_requires_static_remote_key(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26887
26888 /**
26889  * Checks if this feature is required.
26890  */
26891 MUST_USE_RES bool ChannelTypeFeatures_requires_static_remote_key(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
26892
26893 /**
26894  * Set this feature as optional.
26895  */
26896 void InitFeatures_set_payment_secret_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26897
26898 /**
26899  * Set this feature as required.
26900  */
26901 void InitFeatures_set_payment_secret_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26902
26903 /**
26904  * Checks if this feature is supported.
26905  */
26906 MUST_USE_RES bool InitFeatures_supports_payment_secret(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26907
26908 /**
26909  * Set this feature as optional.
26910  */
26911 void NodeFeatures_set_payment_secret_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26912
26913 /**
26914  * Set this feature as required.
26915  */
26916 void NodeFeatures_set_payment_secret_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26917
26918 /**
26919  * Checks if this feature is supported.
26920  */
26921 MUST_USE_RES bool NodeFeatures_supports_payment_secret(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26922
26923 /**
26924  * Set this feature as optional.
26925  */
26926 void InvoiceFeatures_set_payment_secret_optional(struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26927
26928 /**
26929  * Set this feature as required.
26930  */
26931 void InvoiceFeatures_set_payment_secret_required(struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26932
26933 /**
26934  * Checks if this feature is supported.
26935  */
26936 MUST_USE_RES bool InvoiceFeatures_supports_payment_secret(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26937
26938 /**
26939  * Checks if this feature is required.
26940  */
26941 MUST_USE_RES bool InitFeatures_requires_payment_secret(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26942
26943 /**
26944  * Checks if this feature is required.
26945  */
26946 MUST_USE_RES bool NodeFeatures_requires_payment_secret(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26947
26948 /**
26949  * Checks if this feature is required.
26950  */
26951 MUST_USE_RES bool InvoiceFeatures_requires_payment_secret(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26952
26953 /**
26954  * Set this feature as optional.
26955  */
26956 void InitFeatures_set_basic_mpp_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
26957
26958 /**
26959  * Set this feature as required.
26960  */
26961 void InitFeatures_set_basic_mpp_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
26962
26963 /**
26964  * Checks if this feature is supported.
26965  */
26966 MUST_USE_RES bool InitFeatures_supports_basic_mpp(const struct LDKInitFeatures *NONNULL_PTR this_arg);
26967
26968 /**
26969  * Set this feature as optional.
26970  */
26971 void NodeFeatures_set_basic_mpp_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26972
26973 /**
26974  * Set this feature as required.
26975  */
26976 void NodeFeatures_set_basic_mpp_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
26977
26978 /**
26979  * Checks if this feature is supported.
26980  */
26981 MUST_USE_RES bool NodeFeatures_supports_basic_mpp(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
26982
26983 /**
26984  * Set this feature as optional.
26985  */
26986 void InvoiceFeatures_set_basic_mpp_optional(struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26987
26988 /**
26989  * Set this feature as required.
26990  */
26991 void InvoiceFeatures_set_basic_mpp_required(struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26992
26993 /**
26994  * Checks if this feature is supported.
26995  */
26996 MUST_USE_RES bool InvoiceFeatures_supports_basic_mpp(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
26997
26998 /**
26999  * Checks if this feature is required.
27000  */
27001 MUST_USE_RES bool InitFeatures_requires_basic_mpp(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27002
27003 /**
27004  * Checks if this feature is required.
27005  */
27006 MUST_USE_RES bool NodeFeatures_requires_basic_mpp(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27007
27008 /**
27009  * Checks if this feature is required.
27010  */
27011 MUST_USE_RES bool InvoiceFeatures_requires_basic_mpp(const struct LDKInvoiceFeatures *NONNULL_PTR this_arg);
27012
27013 /**
27014  * Set this feature as optional.
27015  */
27016 void InitFeatures_set_wumbo_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
27017
27018 /**
27019  * Set this feature as required.
27020  */
27021 void InitFeatures_set_wumbo_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
27022
27023 /**
27024  * Checks if this feature is supported.
27025  */
27026 MUST_USE_RES bool InitFeatures_supports_wumbo(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27027
27028 /**
27029  * Set this feature as optional.
27030  */
27031 void NodeFeatures_set_wumbo_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27032
27033 /**
27034  * Set this feature as required.
27035  */
27036 void NodeFeatures_set_wumbo_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27037
27038 /**
27039  * Checks if this feature is supported.
27040  */
27041 MUST_USE_RES bool NodeFeatures_supports_wumbo(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27042
27043 /**
27044  * Checks if this feature is required.
27045  */
27046 MUST_USE_RES bool InitFeatures_requires_wumbo(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27047
27048 /**
27049  * Checks if this feature is required.
27050  */
27051 MUST_USE_RES bool NodeFeatures_requires_wumbo(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27052
27053 /**
27054  * Set this feature as optional.
27055  */
27056 void InitFeatures_set_shutdown_any_segwit_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
27057
27058 /**
27059  * Set this feature as required.
27060  */
27061 void InitFeatures_set_shutdown_any_segwit_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
27062
27063 /**
27064  * Checks if this feature is supported.
27065  */
27066 MUST_USE_RES bool InitFeatures_supports_shutdown_anysegwit(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27067
27068 /**
27069  * Set this feature as optional.
27070  */
27071 void NodeFeatures_set_shutdown_any_segwit_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27072
27073 /**
27074  * Set this feature as required.
27075  */
27076 void NodeFeatures_set_shutdown_any_segwit_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27077
27078 /**
27079  * Checks if this feature is supported.
27080  */
27081 MUST_USE_RES bool NodeFeatures_supports_shutdown_anysegwit(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27082
27083 /**
27084  * Checks if this feature is required.
27085  */
27086 MUST_USE_RES bool InitFeatures_requires_shutdown_anysegwit(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27087
27088 /**
27089  * Checks if this feature is required.
27090  */
27091 MUST_USE_RES bool NodeFeatures_requires_shutdown_anysegwit(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27092
27093 /**
27094  * Set this feature as optional.
27095  */
27096 void InitFeatures_set_onion_messages_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
27097
27098 /**
27099  * Set this feature as required.
27100  */
27101 void InitFeatures_set_onion_messages_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
27102
27103 /**
27104  * Checks if this feature is supported.
27105  */
27106 MUST_USE_RES bool InitFeatures_supports_onion_messages(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27107
27108 /**
27109  * Set this feature as optional.
27110  */
27111 void NodeFeatures_set_onion_messages_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27112
27113 /**
27114  * Set this feature as required.
27115  */
27116 void NodeFeatures_set_onion_messages_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27117
27118 /**
27119  * Checks if this feature is supported.
27120  */
27121 MUST_USE_RES bool NodeFeatures_supports_onion_messages(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27122
27123 /**
27124  * Checks if this feature is required.
27125  */
27126 MUST_USE_RES bool InitFeatures_requires_onion_messages(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27127
27128 /**
27129  * Checks if this feature is required.
27130  */
27131 MUST_USE_RES bool NodeFeatures_requires_onion_messages(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27132
27133 /**
27134  * Set this feature as optional.
27135  */
27136 void InitFeatures_set_channel_type_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
27137
27138 /**
27139  * Set this feature as required.
27140  */
27141 void InitFeatures_set_channel_type_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
27142
27143 /**
27144  * Checks if this feature is supported.
27145  */
27146 MUST_USE_RES bool InitFeatures_supports_channel_type(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27147
27148 /**
27149  * Set this feature as optional.
27150  */
27151 void NodeFeatures_set_channel_type_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27152
27153 /**
27154  * Set this feature as required.
27155  */
27156 void NodeFeatures_set_channel_type_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27157
27158 /**
27159  * Checks if this feature is supported.
27160  */
27161 MUST_USE_RES bool NodeFeatures_supports_channel_type(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27162
27163 /**
27164  * Checks if this feature is required.
27165  */
27166 MUST_USE_RES bool InitFeatures_requires_channel_type(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27167
27168 /**
27169  * Checks if this feature is required.
27170  */
27171 MUST_USE_RES bool NodeFeatures_requires_channel_type(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27172
27173 /**
27174  * Set this feature as optional.
27175  */
27176 void InitFeatures_set_scid_privacy_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
27177
27178 /**
27179  * Set this feature as required.
27180  */
27181 void InitFeatures_set_scid_privacy_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
27182
27183 /**
27184  * Checks if this feature is supported.
27185  */
27186 MUST_USE_RES bool InitFeatures_supports_scid_privacy(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27187
27188 /**
27189  * Set this feature as optional.
27190  */
27191 void NodeFeatures_set_scid_privacy_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27192
27193 /**
27194  * Set this feature as required.
27195  */
27196 void NodeFeatures_set_scid_privacy_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27197
27198 /**
27199  * Checks if this feature is supported.
27200  */
27201 MUST_USE_RES bool NodeFeatures_supports_scid_privacy(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27202
27203 /**
27204  * Set this feature as optional.
27205  */
27206 void ChannelTypeFeatures_set_scid_privacy_optional(struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27207
27208 /**
27209  * Set this feature as required.
27210  */
27211 void ChannelTypeFeatures_set_scid_privacy_required(struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27212
27213 /**
27214  * Checks if this feature is supported.
27215  */
27216 MUST_USE_RES bool ChannelTypeFeatures_supports_scid_privacy(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27217
27218 /**
27219  * Checks if this feature is required.
27220  */
27221 MUST_USE_RES bool InitFeatures_requires_scid_privacy(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27222
27223 /**
27224  * Checks if this feature is required.
27225  */
27226 MUST_USE_RES bool NodeFeatures_requires_scid_privacy(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27227
27228 /**
27229  * Checks if this feature is required.
27230  */
27231 MUST_USE_RES bool ChannelTypeFeatures_requires_scid_privacy(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27232
27233 /**
27234  * Set this feature as optional.
27235  */
27236 void InitFeatures_set_zero_conf_optional(struct LDKInitFeatures *NONNULL_PTR this_arg);
27237
27238 /**
27239  * Set this feature as required.
27240  */
27241 void InitFeatures_set_zero_conf_required(struct LDKInitFeatures *NONNULL_PTR this_arg);
27242
27243 /**
27244  * Checks if this feature is supported.
27245  */
27246 MUST_USE_RES bool InitFeatures_supports_zero_conf(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27247
27248 /**
27249  * Set this feature as optional.
27250  */
27251 void NodeFeatures_set_zero_conf_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27252
27253 /**
27254  * Set this feature as required.
27255  */
27256 void NodeFeatures_set_zero_conf_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27257
27258 /**
27259  * Checks if this feature is supported.
27260  */
27261 MUST_USE_RES bool NodeFeatures_supports_zero_conf(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27262
27263 /**
27264  * Set this feature as optional.
27265  */
27266 void ChannelTypeFeatures_set_zero_conf_optional(struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27267
27268 /**
27269  * Set this feature as required.
27270  */
27271 void ChannelTypeFeatures_set_zero_conf_required(struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27272
27273 /**
27274  * Checks if this feature is supported.
27275  */
27276 MUST_USE_RES bool ChannelTypeFeatures_supports_zero_conf(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27277
27278 /**
27279  * Checks if this feature is required.
27280  */
27281 MUST_USE_RES bool InitFeatures_requires_zero_conf(const struct LDKInitFeatures *NONNULL_PTR this_arg);
27282
27283 /**
27284  * Checks if this feature is required.
27285  */
27286 MUST_USE_RES bool NodeFeatures_requires_zero_conf(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27287
27288 /**
27289  * Checks if this feature is required.
27290  */
27291 MUST_USE_RES bool ChannelTypeFeatures_requires_zero_conf(const struct LDKChannelTypeFeatures *NONNULL_PTR this_arg);
27292
27293 /**
27294  * Set this feature as optional.
27295  */
27296 void NodeFeatures_set_keysend_optional(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27297
27298 /**
27299  * Set this feature as required.
27300  */
27301 void NodeFeatures_set_keysend_required(struct LDKNodeFeatures *NONNULL_PTR this_arg);
27302
27303 /**
27304  * Checks if this feature is supported.
27305  */
27306 MUST_USE_RES bool NodeFeatures_supports_keysend(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27307
27308 /**
27309  * Checks if this feature is required.
27310  */
27311 MUST_USE_RES bool NodeFeatures_requires_keysend(const struct LDKNodeFeatures *NONNULL_PTR this_arg);
27312
27313 /**
27314  * Frees any resources used by the ShutdownScript, if is_owned is set and inner is non-NULL.
27315  */
27316 void ShutdownScript_free(struct LDKShutdownScript this_obj);
27317
27318 /**
27319  * Creates a copy of the ShutdownScript
27320  */
27321 struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
27322
27323 /**
27324  * Frees any resources used by the InvalidShutdownScript, if is_owned is set and inner is non-NULL.
27325  */
27326 void InvalidShutdownScript_free(struct LDKInvalidShutdownScript this_obj);
27327
27328 /**
27329  * The script that did not meet the requirements from [BOLT #2].
27330  *
27331  * [BOLT #2]: https://github.com/lightning/bolts/blob/master/02-peer-protocol.md
27332  */
27333 struct LDKu8slice InvalidShutdownScript_get_script(const struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr);
27334
27335 /**
27336  * The script that did not meet the requirements from [BOLT #2].
27337  *
27338  * [BOLT #2]: https://github.com/lightning/bolts/blob/master/02-peer-protocol.md
27339  */
27340 void InvalidShutdownScript_set_script(struct LDKInvalidShutdownScript *NONNULL_PTR this_ptr, struct LDKCVec_u8Z val);
27341
27342 /**
27343  * Constructs a new InvalidShutdownScript given each field
27344  */
27345 MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
27346
27347 /**
27348  * Creates a copy of the InvalidShutdownScript
27349  */
27350 struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
27351
27352 /**
27353  * Serialize the ShutdownScript object into a byte array which can be read by ShutdownScript_read
27354  */
27355 struct LDKCVec_u8Z ShutdownScript_write(const struct LDKShutdownScript *NONNULL_PTR obj);
27356
27357 /**
27358  * Read a ShutdownScript from a byte array, created by ShutdownScript_write
27359  */
27360 struct LDKCResult_ShutdownScriptDecodeErrorZ ShutdownScript_read(struct LDKu8slice ser);
27361
27362 /**
27363  * Generates a P2WPKH script pubkey from the given [`WPubkeyHash`].
27364  */
27365 MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wpkh(const uint8_t (*pubkey_hash)[20]);
27366
27367 /**
27368  * Generates a P2WSH script pubkey from the given [`WScriptHash`].
27369  */
27370 MUST_USE_RES struct LDKShutdownScript ShutdownScript_new_p2wsh(const uint8_t (*script_hash)[32]);
27371
27372 /**
27373  * Generates a witness script pubkey from the given segwit version and program.
27374  *
27375  * Note for version-zero witness scripts you must use [`ShutdownScript::new_p2wpkh`] or
27376  * [`ShutdownScript::new_p2wsh`] instead.
27377  *
27378  * # Errors
27379  *
27380  * This function may return an error if `program` is invalid for the segwit `version`.
27381  */
27382 MUST_USE_RES struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ ShutdownScript_new_witness_program(struct LDKWitnessVersion version, struct LDKu8slice program);
27383
27384 /**
27385  * Converts the shutdown script into the underlying [`Script`].
27386  */
27387 MUST_USE_RES struct LDKCVec_u8Z ShutdownScript_into_inner(struct LDKShutdownScript this_arg);
27388
27389 /**
27390  * Returns the [`PublicKey`] used for a P2WPKH shutdown script if constructed directly from it.
27391  *
27392  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27393  */
27394 MUST_USE_RES struct LDKPublicKey ShutdownScript_as_legacy_pubkey(const struct LDKShutdownScript *NONNULL_PTR this_arg);
27395
27396 /**
27397  * Returns whether the shutdown script is compatible with the features as defined by BOLT #2.
27398  *
27399  * Specifically, checks for compliance with feature `option_shutdown_anysegwit`.
27400  */
27401 MUST_USE_RES bool ShutdownScript_is_compatible(const struct LDKShutdownScript *NONNULL_PTR this_arg, const struct LDKInitFeatures *NONNULL_PTR features);
27402
27403 /**
27404  * Calls the free function if one is set
27405  */
27406 void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
27407
27408 /**
27409  * Calls the free function if one is set
27410  */
27411 void Type_free(struct LDKType this_ptr);
27412
27413 /**
27414  * Frees any resources used by the NodeId, if is_owned is set and inner is non-NULL.
27415  */
27416 void NodeId_free(struct LDKNodeId this_obj);
27417
27418 /**
27419  * Creates a copy of the NodeId
27420  */
27421 struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
27422
27423 /**
27424  * Create a new NodeId from a public key
27425  */
27426 MUST_USE_RES struct LDKNodeId NodeId_from_pubkey(struct LDKPublicKey pubkey);
27427
27428 /**
27429  * Get the public key slice from this NodeId
27430  */
27431 MUST_USE_RES struct LDKu8slice NodeId_as_slice(const struct LDKNodeId *NONNULL_PTR this_arg);
27432
27433 /**
27434  * Checks if two NodeIds contain equal inner contents.
27435  */
27436 uint64_t NodeId_hash(const struct LDKNodeId *NONNULL_PTR o);
27437
27438 /**
27439  * Serialize the NodeId object into a byte array which can be read by NodeId_read
27440  */
27441 struct LDKCVec_u8Z NodeId_write(const struct LDKNodeId *NONNULL_PTR obj);
27442
27443 /**
27444  * Read a NodeId from a byte array, created by NodeId_write
27445  */
27446 struct LDKCResult_NodeIdDecodeErrorZ NodeId_read(struct LDKu8slice ser);
27447
27448 /**
27449  * Frees any resources used by the NetworkGraph, if is_owned is set and inner is non-NULL.
27450  */
27451 void NetworkGraph_free(struct LDKNetworkGraph this_obj);
27452
27453 /**
27454  * Frees any resources used by the ReadOnlyNetworkGraph, if is_owned is set and inner is non-NULL.
27455  */
27456 void ReadOnlyNetworkGraph_free(struct LDKReadOnlyNetworkGraph this_obj);
27457
27458 /**
27459  * Frees any resources used by the NetworkUpdate
27460  */
27461 void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
27462
27463 /**
27464  * Creates a copy of the NetworkUpdate
27465  */
27466 struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
27467
27468 /**
27469  * Utility method to constructs a new ChannelUpdateMessage-variant NetworkUpdate
27470  */
27471 struct LDKNetworkUpdate NetworkUpdate_channel_update_message(struct LDKChannelUpdate msg);
27472
27473 /**
27474  * Utility method to constructs a new ChannelFailure-variant NetworkUpdate
27475  */
27476 struct LDKNetworkUpdate NetworkUpdate_channel_failure(uint64_t short_channel_id, bool is_permanent);
27477
27478 /**
27479  * Utility method to constructs a new NodeFailure-variant NetworkUpdate
27480  */
27481 struct LDKNetworkUpdate NetworkUpdate_node_failure(struct LDKPublicKey node_id, bool is_permanent);
27482
27483 /**
27484  * Serialize the NetworkUpdate object into a byte array which can be read by NetworkUpdate_read
27485  */
27486 struct LDKCVec_u8Z NetworkUpdate_write(const struct LDKNetworkUpdate *NONNULL_PTR obj);
27487
27488 /**
27489  * Read a NetworkUpdate from a byte array, created by NetworkUpdate_write
27490  */
27491 struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ NetworkUpdate_read(struct LDKu8slice ser);
27492
27493 /**
27494  * Frees any resources used by the P2PGossipSync, if is_owned is set and inner is non-NULL.
27495  */
27496 void P2PGossipSync_free(struct LDKP2PGossipSync this_obj);
27497
27498 /**
27499  * Creates a new tracker of the actual state of the network of channels and nodes,
27500  * assuming an existing Network Graph.
27501  * Chain monitor is used to make sure announced channels exist on-chain,
27502  * channel data is correct, and that the announcement is signed with
27503  * channel owners' keys.
27504  */
27505 MUST_USE_RES struct LDKP2PGossipSync P2PGossipSync_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKCOption_AccessZ chain_access, struct LDKLogger logger);
27506
27507 /**
27508  * Adds a provider used to check new announcements. Does not affect
27509  * existing announcements unless they are updated.
27510  * Add, update or remove the provider would replace the current one.
27511  */
27512 void P2PGossipSync_add_chain_access(struct LDKP2PGossipSync *NONNULL_PTR this_arg, struct LDKCOption_AccessZ chain_access);
27513
27514 /**
27515  * Constructs a new EventHandler which calls the relevant methods on this_arg.
27516  * This copies the `inner` pointer in this_arg and thus the returned EventHandler must be freed before this_arg is
27517  */
27518 struct LDKEventHandler NetworkGraph_as_EventHandler(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
27519
27520 /**
27521  * Constructs a new RoutingMessageHandler which calls the relevant methods on this_arg.
27522  * This copies the `inner` pointer in this_arg and thus the returned RoutingMessageHandler must be freed before this_arg is
27523  */
27524 struct LDKRoutingMessageHandler P2PGossipSync_as_RoutingMessageHandler(const struct LDKP2PGossipSync *NONNULL_PTR this_arg);
27525
27526 /**
27527  * Constructs a new MessageSendEventsProvider which calls the relevant methods on this_arg.
27528  * This copies the `inner` pointer in this_arg and thus the returned MessageSendEventsProvider must be freed before this_arg is
27529  */
27530 struct LDKMessageSendEventsProvider P2PGossipSync_as_MessageSendEventsProvider(const struct LDKP2PGossipSync *NONNULL_PTR this_arg);
27531
27532 /**
27533  * Frees any resources used by the ChannelUpdateInfo, if is_owned is set and inner is non-NULL.
27534  */
27535 void ChannelUpdateInfo_free(struct LDKChannelUpdateInfo this_obj);
27536
27537 /**
27538  * When the last update to the channel direction was issued.
27539  * Value is opaque, as set in the announcement.
27540  */
27541 uint32_t ChannelUpdateInfo_get_last_update(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27542
27543 /**
27544  * When the last update to the channel direction was issued.
27545  * Value is opaque, as set in the announcement.
27546  */
27547 void ChannelUpdateInfo_set_last_update(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint32_t val);
27548
27549 /**
27550  * Whether the channel can be currently used for payments (in this one direction).
27551  */
27552 bool ChannelUpdateInfo_get_enabled(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27553
27554 /**
27555  * Whether the channel can be currently used for payments (in this one direction).
27556  */
27557 void ChannelUpdateInfo_set_enabled(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, bool val);
27558
27559 /**
27560  * The difference in CLTV values that you must have when routing through this channel.
27561  */
27562 uint16_t ChannelUpdateInfo_get_cltv_expiry_delta(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27563
27564 /**
27565  * The difference in CLTV values that you must have when routing through this channel.
27566  */
27567 void ChannelUpdateInfo_set_cltv_expiry_delta(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint16_t val);
27568
27569 /**
27570  * The minimum value, which must be relayed to the next hop via the channel
27571  */
27572 uint64_t ChannelUpdateInfo_get_htlc_minimum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27573
27574 /**
27575  * The minimum value, which must be relayed to the next hop via the channel
27576  */
27577 void ChannelUpdateInfo_set_htlc_minimum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint64_t val);
27578
27579 /**
27580  * The maximum value which may be relayed to the next hop via the channel.
27581  */
27582 uint64_t ChannelUpdateInfo_get_htlc_maximum_msat(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27583
27584 /**
27585  * The maximum value which may be relayed to the next hop via the channel.
27586  */
27587 void ChannelUpdateInfo_set_htlc_maximum_msat(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, uint64_t val);
27588
27589 /**
27590  * Fees charged when the channel is used for routing
27591  */
27592 struct LDKRoutingFees ChannelUpdateInfo_get_fees(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27593
27594 /**
27595  * Fees charged when the channel is used for routing
27596  */
27597 void ChannelUpdateInfo_set_fees(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
27598
27599 /**
27600  * Most recent update for the channel received from the network
27601  * Mostly redundant with the data we store in fields explicitly.
27602  * Everything else is useful only for sending out for initial routing sync.
27603  * Not stored if contains excess data to prevent DoS.
27604  *
27605  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27606  */
27607 struct LDKChannelUpdate ChannelUpdateInfo_get_last_update_message(const struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr);
27608
27609 /**
27610  * Most recent update for the channel received from the network
27611  * Mostly redundant with the data we store in fields explicitly.
27612  * Everything else is useful only for sending out for initial routing sync.
27613  * Not stored if contains excess data to prevent DoS.
27614  *
27615  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
27616  */
27617 void ChannelUpdateInfo_set_last_update_message(struct LDKChannelUpdateInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdate val);
27618
27619 /**
27620  * Constructs a new ChannelUpdateInfo given each field
27621  */
27622 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, uint64_t htlc_maximum_msat_arg, struct LDKRoutingFees fees_arg, struct LDKChannelUpdate last_update_message_arg);
27623
27624 /**
27625  * Creates a copy of the ChannelUpdateInfo
27626  */
27627 struct LDKChannelUpdateInfo ChannelUpdateInfo_clone(const struct LDKChannelUpdateInfo *NONNULL_PTR orig);
27628
27629 /**
27630  * Serialize the ChannelUpdateInfo object into a byte array which can be read by ChannelUpdateInfo_read
27631  */
27632 struct LDKCVec_u8Z ChannelUpdateInfo_write(const struct LDKChannelUpdateInfo *NONNULL_PTR obj);
27633
27634 /**
27635  * Read a ChannelUpdateInfo from a byte array, created by ChannelUpdateInfo_write
27636  */
27637 struct LDKCResult_ChannelUpdateInfoDecodeErrorZ ChannelUpdateInfo_read(struct LDKu8slice ser);
27638
27639 /**
27640  * Frees any resources used by the ChannelInfo, if is_owned is set and inner is non-NULL.
27641  */
27642 void ChannelInfo_free(struct LDKChannelInfo this_obj);
27643
27644 /**
27645  * Protocol features of a channel communicated during its announcement
27646  */
27647 struct LDKChannelFeatures ChannelInfo_get_features(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27648
27649 /**
27650  * Protocol features of a channel communicated during its announcement
27651  */
27652 void ChannelInfo_set_features(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
27653
27654 /**
27655  * Source node of the first direction of a channel
27656  */
27657 struct LDKNodeId ChannelInfo_get_node_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27658
27659 /**
27660  * Source node of the first direction of a channel
27661  */
27662 void ChannelInfo_set_node_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
27663
27664 /**
27665  * Details about the first direction of a channel
27666  *
27667  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27668  */
27669 struct LDKChannelUpdateInfo ChannelInfo_get_one_to_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27670
27671 /**
27672  * Details about the first direction of a channel
27673  *
27674  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
27675  */
27676 void ChannelInfo_set_one_to_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
27677
27678 /**
27679  * Source node of the second direction of a channel
27680  */
27681 struct LDKNodeId ChannelInfo_get_node_two(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27682
27683 /**
27684  * Source node of the second direction of a channel
27685  */
27686 void ChannelInfo_set_node_two(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKNodeId val);
27687
27688 /**
27689  * Details about the second direction of a channel
27690  *
27691  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27692  */
27693 struct LDKChannelUpdateInfo ChannelInfo_get_two_to_one(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27694
27695 /**
27696  * Details about the second direction of a channel
27697  *
27698  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
27699  */
27700 void ChannelInfo_set_two_to_one(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelUpdateInfo val);
27701
27702 /**
27703  * The channel capacity as seen on-chain, if chain lookup is available.
27704  */
27705 struct LDKCOption_u64Z ChannelInfo_get_capacity_sats(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27706
27707 /**
27708  * The channel capacity as seen on-chain, if chain lookup is available.
27709  */
27710 void ChannelInfo_set_capacity_sats(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
27711
27712 /**
27713  * An initial announcement of the channel
27714  * Mostly redundant with the data we store in fields explicitly.
27715  * Everything else is useful only for sending out for initial routing sync.
27716  * Not stored if contains excess data to prevent DoS.
27717  *
27718  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27719  */
27720 struct LDKChannelAnnouncement ChannelInfo_get_announcement_message(const struct LDKChannelInfo *NONNULL_PTR this_ptr);
27721
27722 /**
27723  * An initial announcement of the channel
27724  * Mostly redundant with the data we store in fields explicitly.
27725  * Everything else is useful only for sending out for initial routing sync.
27726  * Not stored if contains excess data to prevent DoS.
27727  *
27728  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
27729  */
27730 void ChannelInfo_set_announcement_message(struct LDKChannelInfo *NONNULL_PTR this_ptr, struct LDKChannelAnnouncement val);
27731
27732 /**
27733  * Creates a copy of the ChannelInfo
27734  */
27735 struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
27736
27737 /**
27738  * Returns a [`ChannelUpdateInfo`] based on the direction implied by the channel_flag.
27739  *
27740  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27741  */
27742 MUST_USE_RES struct LDKChannelUpdateInfo ChannelInfo_get_directional_info(const struct LDKChannelInfo *NONNULL_PTR this_arg, uint8_t channel_flags);
27743
27744 /**
27745  * Serialize the ChannelInfo object into a byte array which can be read by ChannelInfo_read
27746  */
27747 struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
27748
27749 /**
27750  * Read a ChannelInfo from a byte array, created by ChannelInfo_write
27751  */
27752 struct LDKCResult_ChannelInfoDecodeErrorZ ChannelInfo_read(struct LDKu8slice ser);
27753
27754 /**
27755  * Frees any resources used by the DirectedChannelInfo, if is_owned is set and inner is non-NULL.
27756  */
27757 void DirectedChannelInfo_free(struct LDKDirectedChannelInfo this_obj);
27758
27759 /**
27760  * Creates a copy of the DirectedChannelInfo
27761  */
27762 struct LDKDirectedChannelInfo DirectedChannelInfo_clone(const struct LDKDirectedChannelInfo *NONNULL_PTR orig);
27763
27764 /**
27765  * Returns information for the channel.
27766  */
27767 MUST_USE_RES struct LDKChannelInfo DirectedChannelInfo_channel(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
27768
27769 /**
27770  * Returns information for the direction.
27771  *
27772  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27773  */
27774 MUST_USE_RES struct LDKChannelUpdateInfo DirectedChannelInfo_direction(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
27775
27776 /**
27777  * Returns the maximum HTLC amount allowed over the channel in the direction.
27778  */
27779 MUST_USE_RES uint64_t DirectedChannelInfo_htlc_maximum_msat(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
27780
27781 /**
27782  * Returns the [`EffectiveCapacity`] of the channel in the direction.
27783  *
27784  * This is either the total capacity from the funding transaction, if known, or the
27785  * `htlc_maximum_msat` for the direction as advertised by the gossip network, if known,
27786  * otherwise.
27787  */
27788 MUST_USE_RES struct LDKEffectiveCapacity DirectedChannelInfo_effective_capacity(const struct LDKDirectedChannelInfo *NONNULL_PTR this_arg);
27789
27790 /**
27791  * Frees any resources used by the EffectiveCapacity
27792  */
27793 void EffectiveCapacity_free(struct LDKEffectiveCapacity this_ptr);
27794
27795 /**
27796  * Creates a copy of the EffectiveCapacity
27797  */
27798 struct LDKEffectiveCapacity EffectiveCapacity_clone(const struct LDKEffectiveCapacity *NONNULL_PTR orig);
27799
27800 /**
27801  * Utility method to constructs a new ExactLiquidity-variant EffectiveCapacity
27802  */
27803 struct LDKEffectiveCapacity EffectiveCapacity_exact_liquidity(uint64_t liquidity_msat);
27804
27805 /**
27806  * Utility method to constructs a new MaximumHTLC-variant EffectiveCapacity
27807  */
27808 struct LDKEffectiveCapacity EffectiveCapacity_maximum_htlc(uint64_t amount_msat);
27809
27810 /**
27811  * Utility method to constructs a new Total-variant EffectiveCapacity
27812  */
27813 struct LDKEffectiveCapacity EffectiveCapacity_total(uint64_t capacity_msat, struct LDKCOption_u64Z htlc_maximum_msat);
27814
27815 /**
27816  * Utility method to constructs a new Infinite-variant EffectiveCapacity
27817  */
27818 struct LDKEffectiveCapacity EffectiveCapacity_infinite(void);
27819
27820 /**
27821  * Utility method to constructs a new Unknown-variant EffectiveCapacity
27822  */
27823 struct LDKEffectiveCapacity EffectiveCapacity_unknown(void);
27824
27825 /**
27826  * Returns the effective capacity denominated in millisatoshi.
27827  */
27828 MUST_USE_RES uint64_t EffectiveCapacity_as_msat(const struct LDKEffectiveCapacity *NONNULL_PTR this_arg);
27829
27830 /**
27831  * Frees any resources used by the RoutingFees, if is_owned is set and inner is non-NULL.
27832  */
27833 void RoutingFees_free(struct LDKRoutingFees this_obj);
27834
27835 /**
27836  * Flat routing fee in satoshis
27837  */
27838 uint32_t RoutingFees_get_base_msat(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
27839
27840 /**
27841  * Flat routing fee in satoshis
27842  */
27843 void RoutingFees_set_base_msat(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
27844
27845 /**
27846  * Liquidity-based routing fee in millionths of a routed amount.
27847  * In other words, 10000 is 1%.
27848  */
27849 uint32_t RoutingFees_get_proportional_millionths(const struct LDKRoutingFees *NONNULL_PTR this_ptr);
27850
27851 /**
27852  * Liquidity-based routing fee in millionths of a routed amount.
27853  * In other words, 10000 is 1%.
27854  */
27855 void RoutingFees_set_proportional_millionths(struct LDKRoutingFees *NONNULL_PTR this_ptr, uint32_t val);
27856
27857 /**
27858  * Constructs a new RoutingFees given each field
27859  */
27860 MUST_USE_RES struct LDKRoutingFees RoutingFees_new(uint32_t base_msat_arg, uint32_t proportional_millionths_arg);
27861
27862 /**
27863  * Checks if two RoutingFeess contain equal inner contents.
27864  * This ignores pointers and is_owned flags and looks at the values in fields.
27865  * Two objects with NULL inner values will be considered "equal" here.
27866  */
27867 bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
27868
27869 /**
27870  * Creates a copy of the RoutingFees
27871  */
27872 struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
27873
27874 /**
27875  * Checks if two RoutingFeess contain equal inner contents.
27876  */
27877 uint64_t RoutingFees_hash(const struct LDKRoutingFees *NONNULL_PTR o);
27878
27879 /**
27880  * Serialize the RoutingFees object into a byte array which can be read by RoutingFees_read
27881  */
27882 struct LDKCVec_u8Z RoutingFees_write(const struct LDKRoutingFees *NONNULL_PTR obj);
27883
27884 /**
27885  * Read a RoutingFees from a byte array, created by RoutingFees_write
27886  */
27887 struct LDKCResult_RoutingFeesDecodeErrorZ RoutingFees_read(struct LDKu8slice ser);
27888
27889 /**
27890  * Frees any resources used by the NodeAnnouncementInfo, if is_owned is set and inner is non-NULL.
27891  */
27892 void NodeAnnouncementInfo_free(struct LDKNodeAnnouncementInfo this_obj);
27893
27894 /**
27895  * Protocol features the node announced support for
27896  */
27897 struct LDKNodeFeatures NodeAnnouncementInfo_get_features(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
27898
27899 /**
27900  * Protocol features the node announced support for
27901  */
27902 void NodeAnnouncementInfo_set_features(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
27903
27904 /**
27905  * When the last known update to the node state was issued.
27906  * Value is opaque, as set in the announcement.
27907  */
27908 uint32_t NodeAnnouncementInfo_get_last_update(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
27909
27910 /**
27911  * When the last known update to the node state was issued.
27912  * Value is opaque, as set in the announcement.
27913  */
27914 void NodeAnnouncementInfo_set_last_update(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, uint32_t val);
27915
27916 /**
27917  * Color assigned to the node
27918  */
27919 const uint8_t (*NodeAnnouncementInfo_get_rgb(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr))[3];
27920
27921 /**
27922  * Color assigned to the node
27923  */
27924 void NodeAnnouncementInfo_set_rgb(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKThreeBytes val);
27925
27926 /**
27927  * Moniker assigned to the node.
27928  * May be invalid or malicious (eg control chars),
27929  * should not be exposed to the user.
27930  */
27931 struct LDKNodeAlias NodeAnnouncementInfo_get_alias(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
27932
27933 /**
27934  * Moniker assigned to the node.
27935  * May be invalid or malicious (eg control chars),
27936  * should not be exposed to the user.
27937  */
27938 void NodeAnnouncementInfo_set_alias(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAlias val);
27939
27940 /**
27941  * Internet-level addresses via which one can connect to the node
27942  *
27943  * Returns a copy of the field.
27944  */
27945 struct LDKCVec_NetAddressZ NodeAnnouncementInfo_get_addresses(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
27946
27947 /**
27948  * Internet-level addresses via which one can connect to the node
27949  */
27950 void NodeAnnouncementInfo_set_addresses(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
27951
27952 /**
27953  * An initial announcement of the node
27954  * Mostly redundant with the data we store in fields explicitly.
27955  * Everything else is useful only for sending out for initial routing sync.
27956  * Not stored if contains excess data to prevent DoS.
27957  *
27958  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
27959  */
27960 struct LDKNodeAnnouncement NodeAnnouncementInfo_get_announcement_message(const struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr);
27961
27962 /**
27963  * An initial announcement of the node
27964  * Mostly redundant with the data we store in fields explicitly.
27965  * Everything else is useful only for sending out for initial routing sync.
27966  * Not stored if contains excess data to prevent DoS.
27967  *
27968  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
27969  */
27970 void NodeAnnouncementInfo_set_announcement_message(struct LDKNodeAnnouncementInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncement val);
27971
27972 /**
27973  * Constructs a new NodeAnnouncementInfo given each field
27974  */
27975 MUST_USE_RES struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_new(struct LDKNodeFeatures features_arg, uint32_t last_update_arg, struct LDKThreeBytes rgb_arg, struct LDKNodeAlias alias_arg, struct LDKCVec_NetAddressZ addresses_arg, struct LDKNodeAnnouncement announcement_message_arg);
27976
27977 /**
27978  * Creates a copy of the NodeAnnouncementInfo
27979  */
27980 struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
27981
27982 /**
27983  * Serialize the NodeAnnouncementInfo object into a byte array which can be read by NodeAnnouncementInfo_read
27984  */
27985 struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
27986
27987 /**
27988  * Read a NodeAnnouncementInfo from a byte array, created by NodeAnnouncementInfo_write
27989  */
27990 struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ NodeAnnouncementInfo_read(struct LDKu8slice ser);
27991
27992 /**
27993  * Frees any resources used by the NodeAlias, if is_owned is set and inner is non-NULL.
27994  */
27995 void NodeAlias_free(struct LDKNodeAlias this_obj);
27996
27997 const uint8_t (*NodeAlias_get_a(const struct LDKNodeAlias *NONNULL_PTR this_ptr))[32];
27998
27999 void NodeAlias_set_a(struct LDKNodeAlias *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
28000
28001 /**
28002  * Constructs a new NodeAlias given each field
28003  */
28004 MUST_USE_RES struct LDKNodeAlias NodeAlias_new(struct LDKThirtyTwoBytes a_arg);
28005
28006 /**
28007  * Creates a copy of the NodeAlias
28008  */
28009 struct LDKNodeAlias NodeAlias_clone(const struct LDKNodeAlias *NONNULL_PTR orig);
28010
28011 /**
28012  * Serialize the NodeAlias object into a byte array which can be read by NodeAlias_read
28013  */
28014 struct LDKCVec_u8Z NodeAlias_write(const struct LDKNodeAlias *NONNULL_PTR obj);
28015
28016 /**
28017  * Read a NodeAlias from a byte array, created by NodeAlias_write
28018  */
28019 struct LDKCResult_NodeAliasDecodeErrorZ NodeAlias_read(struct LDKu8slice ser);
28020
28021 /**
28022  * Frees any resources used by the NodeInfo, if is_owned is set and inner is non-NULL.
28023  */
28024 void NodeInfo_free(struct LDKNodeInfo this_obj);
28025
28026 /**
28027  * All valid channels a node has announced
28028  *
28029  * Returns a copy of the field.
28030  */
28031 struct LDKCVec_u64Z NodeInfo_get_channels(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
28032
28033 /**
28034  * All valid channels a node has announced
28035  */
28036 void NodeInfo_set_channels(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
28037
28038 /**
28039  * Lowest fees enabling routing via any of the enabled, known channels to a node.
28040  * The two fields (flat and proportional fee) are independent,
28041  * meaning they don't have to refer to the same channel.
28042  *
28043  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
28044  */
28045 struct LDKRoutingFees NodeInfo_get_lowest_inbound_channel_fees(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
28046
28047 /**
28048  * Lowest fees enabling routing via any of the enabled, known channels to a node.
28049  * The two fields (flat and proportional fee) are independent,
28050  * meaning they don't have to refer to the same channel.
28051  *
28052  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
28053  */
28054 void NodeInfo_set_lowest_inbound_channel_fees(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
28055
28056 /**
28057  * More information about a node from node_announcement.
28058  * Optional because we store a Node entry after learning about it from
28059  * a channel announcement, but before receiving a node announcement.
28060  *
28061  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
28062  */
28063 struct LDKNodeAnnouncementInfo NodeInfo_get_announcement_info(const struct LDKNodeInfo *NONNULL_PTR this_ptr);
28064
28065 /**
28066  * More information about a node from node_announcement.
28067  * Optional because we store a Node entry after learning about it from
28068  * a channel announcement, but before receiving a node announcement.
28069  *
28070  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
28071  */
28072 void NodeInfo_set_announcement_info(struct LDKNodeInfo *NONNULL_PTR this_ptr, struct LDKNodeAnnouncementInfo val);
28073
28074 /**
28075  * Constructs a new NodeInfo given each field
28076  */
28077 MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
28078
28079 /**
28080  * Creates a copy of the NodeInfo
28081  */
28082 struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
28083
28084 /**
28085  * Serialize the NodeInfo object into a byte array which can be read by NodeInfo_read
28086  */
28087 struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
28088
28089 /**
28090  * Read a NodeInfo from a byte array, created by NodeInfo_write
28091  */
28092 struct LDKCResult_NodeInfoDecodeErrorZ NodeInfo_read(struct LDKu8slice ser);
28093
28094 /**
28095  * Serialize the NetworkGraph object into a byte array which can be read by NetworkGraph_read
28096  */
28097 struct LDKCVec_u8Z NetworkGraph_write(const struct LDKNetworkGraph *NONNULL_PTR obj);
28098
28099 /**
28100  * Read a NetworkGraph from a byte array, created by NetworkGraph_write
28101  */
28102 struct LDKCResult_NetworkGraphDecodeErrorZ NetworkGraph_read(struct LDKu8slice ser, struct LDKLogger arg);
28103
28104 /**
28105  * Creates a new, empty, network graph.
28106  */
28107 MUST_USE_RES struct LDKNetworkGraph NetworkGraph_new(struct LDKThirtyTwoBytes genesis_hash, struct LDKLogger logger);
28108
28109 /**
28110  * Returns a read-only view of the network graph.
28111  */
28112 MUST_USE_RES struct LDKReadOnlyNetworkGraph NetworkGraph_read_only(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
28113
28114 /**
28115  * The unix timestamp provided by the most recent rapid gossip sync.
28116  * It will be set by the rapid sync process after every sync completion.
28117  */
28118 MUST_USE_RES struct LDKCOption_u32Z NetworkGraph_get_last_rapid_gossip_sync_timestamp(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
28119
28120 /**
28121  * Update the unix timestamp provided by the most recent rapid gossip sync.
28122  * This should be done automatically by the rapid sync process after every sync completion.
28123  */
28124 void NetworkGraph_set_last_rapid_gossip_sync_timestamp(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint32_t last_rapid_gossip_sync_timestamp);
28125
28126 /**
28127  * For an already known node (from channel announcements), update its stored properties from a
28128  * given node announcement.
28129  *
28130  * You probably don't want to call this directly, instead relying on a P2PGossipSync's
28131  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
28132  * routing messages from a source using a protocol other than the lightning P2P protocol.
28133  */
28134 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_node_from_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeAnnouncement *NONNULL_PTR msg);
28135
28136 /**
28137  * For an already known node (from channel announcements), update its stored properties from a
28138  * given node announcement without verifying the associated signatures. Because we aren't
28139  * given the associated signatures here we cannot relay the node announcement to any of our
28140  * peers.
28141  */
28142 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);
28143
28144 /**
28145  * Store or update channel info from a channel announcement.
28146  *
28147  * You probably don't want to call this directly, instead relying on a P2PGossipSync's
28148  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
28149  * routing messages from a source using a protocol other than the lightning P2P protocol.
28150  *
28151  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
28152  * the corresponding UTXO exists on chain and is correctly-formatted.
28153  */
28154 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);
28155
28156 /**
28157  * Store or update channel info from a channel announcement without verifying the associated
28158  * signatures. Because we aren't given the associated signatures here we cannot relay the
28159  * channel announcement to any of our peers.
28160  *
28161  * If a `chain::Access` object is provided via `chain_access`, it will be called to verify
28162  * the corresponding UTXO exists on chain and is correctly-formatted.
28163  */
28164 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);
28165
28166 /**
28167  * Update channel from partial announcement data received via rapid gossip sync
28168  *
28169  * `timestamp: u64`: Timestamp emulating the backdated original announcement receipt (by the
28170  * rapid gossip sync server)
28171  *
28172  * All other parameters as used in [`msgs::UnsignedChannelAnnouncement`] fields.
28173  */
28174 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_add_channel_from_partial_announcement(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, uint64_t timestamp, struct LDKChannelFeatures features, struct LDKPublicKey node_id_1, struct LDKPublicKey node_id_2);
28175
28176 /**
28177  * Marks a channel in the graph as failed if a corresponding HTLC fail was sent.
28178  * If permanent, removes a channel from the local storage.
28179  * May cause the removal of nodes too, if this was their last channel.
28180  * If not permanent, makes channels unavailable for routing.
28181  */
28182 void NetworkGraph_channel_failed(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id, bool is_permanent);
28183
28184 /**
28185  * Marks a node in the graph as failed.
28186  */
28187 void NetworkGraph_node_failed(const struct LDKNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey _node_id, bool is_permanent);
28188
28189 /**
28190  * Removes information about channels that we haven't heard any updates about in some time.
28191  * This can be used regularly to prune the network graph of channels that likely no longer
28192  * exist.
28193  *
28194  * While there is no formal requirement that nodes regularly re-broadcast their channel
28195  * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
28196  * pruning occur for updates which are at least two weeks old, which we implement here.
28197  *
28198  * Note that for users of the `lightning-background-processor` crate this method may be
28199  * automatically called regularly for you.
28200  *
28201  * This method is only available with the `std` feature. See
28202  * [`NetworkGraph::remove_stale_channels_with_time`] for `no-std` use.
28203  */
28204 void NetworkGraph_remove_stale_channels(const struct LDKNetworkGraph *NONNULL_PTR this_arg);
28205
28206 /**
28207  * Removes information about channels that we haven't heard any updates about in some time.
28208  * This can be used regularly to prune the network graph of channels that likely no longer
28209  * exist.
28210  *
28211  * While there is no formal requirement that nodes regularly re-broadcast their channel
28212  * updates every two weeks, the non-normative section of BOLT 7 currently suggests that
28213  * pruning occur for updates which are at least two weeks old, which we implement here.
28214  *
28215  * This function takes the current unix time as an argument. For users with the `std` feature
28216  * enabled, [`NetworkGraph::remove_stale_channels`] may be preferable.
28217  */
28218 void NetworkGraph_remove_stale_channels_with_time(const struct LDKNetworkGraph *NONNULL_PTR this_arg, uint64_t current_time_unix);
28219
28220 /**
28221  * For an already known (from announcement) channel, update info about one of the directions
28222  * of the channel.
28223  *
28224  * You probably don't want to call this directly, instead relying on a P2PGossipSync's
28225  * RoutingMessageHandler implementation to call it indirectly. This may be useful to accept
28226  * routing messages from a source using a protocol other than the lightning P2P protocol.
28227  *
28228  * If built with `no-std`, any updates with a timestamp more than two weeks in the past or
28229  * materially in the future will be rejected.
28230  */
28231 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKChannelUpdate *NONNULL_PTR msg);
28232
28233 /**
28234  * For an already known (from announcement) channel, update info about one of the directions
28235  * of the channel without verifying the associated signatures. Because we aren't given the
28236  * associated signatures here we cannot relay the channel update to any of our peers.
28237  *
28238  * If built with `no-std`, any updates with a timestamp more than two weeks in the past or
28239  * materially in the future will be rejected.
28240  */
28241 MUST_USE_RES struct LDKCResult_NoneLightningErrorZ NetworkGraph_update_channel_unsigned(const struct LDKNetworkGraph *NONNULL_PTR this_arg, const struct LDKUnsignedChannelUpdate *NONNULL_PTR msg);
28242
28243 /**
28244  * Returns information on a channel with the given id.
28245  *
28246  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
28247  */
28248 MUST_USE_RES struct LDKChannelInfo ReadOnlyNetworkGraph_channel(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, uint64_t short_channel_id);
28249
28250 /**
28251  * Returns the list of channels in the graph
28252  */
28253 MUST_USE_RES struct LDKCVec_u64Z ReadOnlyNetworkGraph_list_channels(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg);
28254
28255 /**
28256  * Returns information on a node with the given id.
28257  *
28258  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
28259  */
28260 MUST_USE_RES struct LDKNodeInfo ReadOnlyNetworkGraph_node(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, const struct LDKNodeId *NONNULL_PTR node_id);
28261
28262 /**
28263  * Returns the list of nodes in the graph
28264  */
28265 MUST_USE_RES struct LDKCVec_NodeIdZ ReadOnlyNetworkGraph_list_nodes(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg);
28266
28267 /**
28268  * Get network addresses by node id.
28269  * Returns None if the requested node is completely unknown,
28270  * or if node announcement for the node was never received.
28271  */
28272 MUST_USE_RES struct LDKCOption_CVec_NetAddressZZ ReadOnlyNetworkGraph_get_addresses(const struct LDKReadOnlyNetworkGraph *NONNULL_PTR this_arg, struct LDKPublicKey pubkey);
28273
28274 /**
28275  * Frees any resources used by the RouteHop, if is_owned is set and inner is non-NULL.
28276  */
28277 void RouteHop_free(struct LDKRouteHop this_obj);
28278
28279 /**
28280  * The node_id of the node at this hop.
28281  */
28282 struct LDKPublicKey RouteHop_get_pubkey(const struct LDKRouteHop *NONNULL_PTR this_ptr);
28283
28284 /**
28285  * The node_id of the node at this hop.
28286  */
28287 void RouteHop_set_pubkey(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
28288
28289 /**
28290  * The node_announcement features of the node at this hop. For the last hop, these may be
28291  * amended to match the features present in the invoice this node generated.
28292  */
28293 struct LDKNodeFeatures RouteHop_get_node_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
28294
28295 /**
28296  * The node_announcement features of the node at this hop. For the last hop, these may be
28297  * amended to match the features present in the invoice this node generated.
28298  */
28299 void RouteHop_set_node_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKNodeFeatures val);
28300
28301 /**
28302  * The channel that should be used from the previous hop to reach this node.
28303  */
28304 uint64_t RouteHop_get_short_channel_id(const struct LDKRouteHop *NONNULL_PTR this_ptr);
28305
28306 /**
28307  * The channel that should be used from the previous hop to reach this node.
28308  */
28309 void RouteHop_set_short_channel_id(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
28310
28311 /**
28312  * The channel_announcement features of the channel that should be used from the previous hop
28313  * to reach this node.
28314  */
28315 struct LDKChannelFeatures RouteHop_get_channel_features(const struct LDKRouteHop *NONNULL_PTR this_ptr);
28316
28317 /**
28318  * The channel_announcement features of the channel that should be used from the previous hop
28319  * to reach this node.
28320  */
28321 void RouteHop_set_channel_features(struct LDKRouteHop *NONNULL_PTR this_ptr, struct LDKChannelFeatures val);
28322
28323 /**
28324  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
28325  * For the last hop, this should be the full value of the payment (might be more than
28326  * requested if we had to match htlc_minimum_msat).
28327  */
28328 uint64_t RouteHop_get_fee_msat(const struct LDKRouteHop *NONNULL_PTR this_ptr);
28329
28330 /**
28331  * The fee taken on this hop (for paying for the use of the *next* channel in the path).
28332  * For the last hop, this should be the full value of the payment (might be more than
28333  * requested if we had to match htlc_minimum_msat).
28334  */
28335 void RouteHop_set_fee_msat(struct LDKRouteHop *NONNULL_PTR this_ptr, uint64_t val);
28336
28337 /**
28338  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
28339  * expected at the destination, in excess of the current block height.
28340  */
28341 uint32_t RouteHop_get_cltv_expiry_delta(const struct LDKRouteHop *NONNULL_PTR this_ptr);
28342
28343 /**
28344  * The CLTV delta added for this hop. For the last hop, this should be the full CLTV value
28345  * expected at the destination, in excess of the current block height.
28346  */
28347 void RouteHop_set_cltv_expiry_delta(struct LDKRouteHop *NONNULL_PTR this_ptr, uint32_t val);
28348
28349 /**
28350  * Constructs a new RouteHop given each field
28351  */
28352 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);
28353
28354 /**
28355  * Creates a copy of the RouteHop
28356  */
28357 struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
28358
28359 /**
28360  * Checks if two RouteHops contain equal inner contents.
28361  */
28362 uint64_t RouteHop_hash(const struct LDKRouteHop *NONNULL_PTR o);
28363
28364 /**
28365  * Checks if two RouteHops contain equal inner contents.
28366  * This ignores pointers and is_owned flags and looks at the values in fields.
28367  * Two objects with NULL inner values will be considered "equal" here.
28368  */
28369 bool RouteHop_eq(const struct LDKRouteHop *NONNULL_PTR a, const struct LDKRouteHop *NONNULL_PTR b);
28370
28371 /**
28372  * Serialize the RouteHop object into a byte array which can be read by RouteHop_read
28373  */
28374 struct LDKCVec_u8Z RouteHop_write(const struct LDKRouteHop *NONNULL_PTR obj);
28375
28376 /**
28377  * Read a RouteHop from a byte array, created by RouteHop_write
28378  */
28379 struct LDKCResult_RouteHopDecodeErrorZ RouteHop_read(struct LDKu8slice ser);
28380
28381 /**
28382  * Frees any resources used by the Route, if is_owned is set and inner is non-NULL.
28383  */
28384 void Route_free(struct LDKRoute this_obj);
28385
28386 /**
28387  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
28388  * last RouteHop in each path must be the same. Each entry represents a list of hops, NOT
28389  * INCLUDING our own, where the last hop is the destination. Thus, this must always be at
28390  * least length one. While the maximum length of any given path is variable, keeping the length
28391  * of any path less or equal to 19 should currently ensure it is viable.
28392  */
28393 struct LDKCVec_CVec_RouteHopZZ Route_get_paths(const struct LDKRoute *NONNULL_PTR this_ptr);
28394
28395 /**
28396  * The list of routes taken for a single (potentially-)multi-part payment. The pubkey of the
28397  * last RouteHop in each path must be the same. Each entry represents a list of hops, NOT
28398  * INCLUDING our own, where the last hop is the destination. Thus, this must always be at
28399  * least length one. While the maximum length of any given path is variable, keeping the length
28400  * of any path less or equal to 19 should currently ensure it is viable.
28401  */
28402 void Route_set_paths(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKCVec_CVec_RouteHopZZ val);
28403
28404 /**
28405  * The `payment_params` parameter passed to [`find_route`].
28406  * This is used by `ChannelManager` to track information which may be required for retries,
28407  * provided back to you via [`Event::PaymentPathFailed`].
28408  *
28409  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
28410  *
28411  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
28412  */
28413 struct LDKPaymentParameters Route_get_payment_params(const struct LDKRoute *NONNULL_PTR this_ptr);
28414
28415 /**
28416  * The `payment_params` parameter passed to [`find_route`].
28417  * This is used by `ChannelManager` to track information which may be required for retries,
28418  * provided back to you via [`Event::PaymentPathFailed`].
28419  *
28420  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
28421  *
28422  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
28423  */
28424 void Route_set_payment_params(struct LDKRoute *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
28425
28426 /**
28427  * Constructs a new Route given each field
28428  */
28429 MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPaymentParameters payment_params_arg);
28430
28431 /**
28432  * Creates a copy of the Route
28433  */
28434 struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
28435
28436 /**
28437  * Checks if two Routes contain equal inner contents.
28438  */
28439 uint64_t Route_hash(const struct LDKRoute *NONNULL_PTR o);
28440
28441 /**
28442  * Checks if two Routes contain equal inner contents.
28443  * This ignores pointers and is_owned flags and looks at the values in fields.
28444  * Two objects with NULL inner values will be considered "equal" here.
28445  */
28446 bool Route_eq(const struct LDKRoute *NONNULL_PTR a, const struct LDKRoute *NONNULL_PTR b);
28447
28448 /**
28449  * Returns the total amount of fees paid on this [`Route`].
28450  *
28451  * This doesn't include any extra payment made to the recipient, which can happen in excess of
28452  * the amount passed to [`find_route`]'s `params.final_value_msat`.
28453  */
28454 MUST_USE_RES uint64_t Route_get_total_fees(const struct LDKRoute *NONNULL_PTR this_arg);
28455
28456 /**
28457  * Returns the total amount paid on this [`Route`], excluding the fees.
28458  */
28459 MUST_USE_RES uint64_t Route_get_total_amount(const struct LDKRoute *NONNULL_PTR this_arg);
28460
28461 /**
28462  * Serialize the Route object into a byte array which can be read by Route_read
28463  */
28464 struct LDKCVec_u8Z Route_write(const struct LDKRoute *NONNULL_PTR obj);
28465
28466 /**
28467  * Read a Route from a byte array, created by Route_write
28468  */
28469 struct LDKCResult_RouteDecodeErrorZ Route_read(struct LDKu8slice ser);
28470
28471 /**
28472  * Frees any resources used by the RouteParameters, if is_owned is set and inner is non-NULL.
28473  */
28474 void RouteParameters_free(struct LDKRouteParameters this_obj);
28475
28476 /**
28477  * The parameters of the failed payment path.
28478  */
28479 struct LDKPaymentParameters RouteParameters_get_payment_params(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
28480
28481 /**
28482  * The parameters of the failed payment path.
28483  */
28484 void RouteParameters_set_payment_params(struct LDKRouteParameters *NONNULL_PTR this_ptr, struct LDKPaymentParameters val);
28485
28486 /**
28487  * The amount in msats sent on the failed payment path.
28488  */
28489 uint64_t RouteParameters_get_final_value_msat(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
28490
28491 /**
28492  * The amount in msats sent on the failed payment path.
28493  */
28494 void RouteParameters_set_final_value_msat(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint64_t val);
28495
28496 /**
28497  * The CLTV on the final hop of the failed payment path.
28498  */
28499 uint32_t RouteParameters_get_final_cltv_expiry_delta(const struct LDKRouteParameters *NONNULL_PTR this_ptr);
28500
28501 /**
28502  * The CLTV on the final hop of the failed payment path.
28503  */
28504 void RouteParameters_set_final_cltv_expiry_delta(struct LDKRouteParameters *NONNULL_PTR this_ptr, uint32_t val);
28505
28506 /**
28507  * Constructs a new RouteParameters given each field
28508  */
28509 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);
28510
28511 /**
28512  * Creates a copy of the RouteParameters
28513  */
28514 struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
28515
28516 /**
28517  * Serialize the RouteParameters object into a byte array which can be read by RouteParameters_read
28518  */
28519 struct LDKCVec_u8Z RouteParameters_write(const struct LDKRouteParameters *NONNULL_PTR obj);
28520
28521 /**
28522  * Read a RouteParameters from a byte array, created by RouteParameters_write
28523  */
28524 struct LDKCResult_RouteParametersDecodeErrorZ RouteParameters_read(struct LDKu8slice ser);
28525
28526 /**
28527  * Frees any resources used by the PaymentParameters, if is_owned is set and inner is non-NULL.
28528  */
28529 void PaymentParameters_free(struct LDKPaymentParameters this_obj);
28530
28531 /**
28532  * The node id of the payee.
28533  */
28534 struct LDKPublicKey PaymentParameters_get_payee_pubkey(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28535
28536 /**
28537  * The node id of the payee.
28538  */
28539 void PaymentParameters_set_payee_pubkey(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKPublicKey val);
28540
28541 /**
28542  * Features supported by the payee.
28543  *
28544  * May be set from the payee's invoice or via [`for_keysend`]. May be `None` if the invoice
28545  * does not contain any features.
28546  *
28547  * [`for_keysend`]: Self::for_keysend
28548  *
28549  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
28550  */
28551 struct LDKInvoiceFeatures PaymentParameters_get_features(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28552
28553 /**
28554  * Features supported by the payee.
28555  *
28556  * May be set from the payee's invoice or via [`for_keysend`]. May be `None` if the invoice
28557  * does not contain any features.
28558  *
28559  * [`for_keysend`]: Self::for_keysend
28560  *
28561  * Note that val (or a relevant inner pointer) may be NULL or all-0s to represent None
28562  */
28563 void PaymentParameters_set_features(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKInvoiceFeatures val);
28564
28565 /**
28566  * Hints for routing to the payee, containing channels connecting the payee to public nodes.
28567  */
28568 struct LDKCVec_RouteHintZ PaymentParameters_get_route_hints(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28569
28570 /**
28571  * Hints for routing to the payee, containing channels connecting the payee to public nodes.
28572  */
28573 void PaymentParameters_set_route_hints(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintZ val);
28574
28575 /**
28576  * Expiration of a payment to the payee, in seconds relative to the UNIX epoch.
28577  */
28578 struct LDKCOption_u64Z PaymentParameters_get_expiry_time(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28579
28580 /**
28581  * Expiration of a payment to the payee, in seconds relative to the UNIX epoch.
28582  */
28583 void PaymentParameters_set_expiry_time(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
28584
28585 /**
28586  * The maximum total CLTV delta we accept for the route.
28587  * Defaults to [`DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA`].
28588  */
28589 uint32_t PaymentParameters_get_max_total_cltv_expiry_delta(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28590
28591 /**
28592  * The maximum total CLTV delta we accept for the route.
28593  * Defaults to [`DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA`].
28594  */
28595 void PaymentParameters_set_max_total_cltv_expiry_delta(struct LDKPaymentParameters *NONNULL_PTR this_ptr, uint32_t val);
28596
28597 /**
28598  * The maximum number of paths that may be used by (MPP) payments.
28599  * Defaults to [`DEFAULT_MAX_PATH_COUNT`].
28600  */
28601 uint8_t PaymentParameters_get_max_path_count(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28602
28603 /**
28604  * The maximum number of paths that may be used by (MPP) payments.
28605  * Defaults to [`DEFAULT_MAX_PATH_COUNT`].
28606  */
28607 void PaymentParameters_set_max_path_count(struct LDKPaymentParameters *NONNULL_PTR this_ptr, uint8_t val);
28608
28609 /**
28610  * Selects the maximum share of a channel's total capacity which will be sent over a channel,
28611  * as a power of 1/2. A higher value prefers to send the payment using more MPP parts whereas
28612  * a lower value prefers to send larger MPP parts, potentially saturating channels and
28613  * increasing failure probability for those paths.
28614  *
28615  * Note that this restriction will be relaxed during pathfinding after paths which meet this
28616  * restriction have been found. While paths which meet this criteria will be searched for, it
28617  * is ultimately up to the scorer to select them over other paths.
28618  *
28619  * A value of 0 will allow payments up to and including a channel's total announced usable
28620  * capacity, a value of one will only use up to half its capacity, two 1/4, etc.
28621  *
28622  * Default value: 2
28623  */
28624 uint8_t PaymentParameters_get_max_channel_saturation_power_of_half(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28625
28626 /**
28627  * Selects the maximum share of a channel's total capacity which will be sent over a channel,
28628  * as a power of 1/2. A higher value prefers to send the payment using more MPP parts whereas
28629  * a lower value prefers to send larger MPP parts, potentially saturating channels and
28630  * increasing failure probability for those paths.
28631  *
28632  * Note that this restriction will be relaxed during pathfinding after paths which meet this
28633  * restriction have been found. While paths which meet this criteria will be searched for, it
28634  * is ultimately up to the scorer to select them over other paths.
28635  *
28636  * A value of 0 will allow payments up to and including a channel's total announced usable
28637  * capacity, a value of one will only use up to half its capacity, two 1/4, etc.
28638  *
28639  * Default value: 2
28640  */
28641 void PaymentParameters_set_max_channel_saturation_power_of_half(struct LDKPaymentParameters *NONNULL_PTR this_ptr, uint8_t val);
28642
28643 /**
28644  * A list of SCIDs which this payment was previously attempted over and which caused the
28645  * payment to fail. Future attempts for the same payment shouldn't be relayed through any of
28646  * these SCIDs.
28647  *
28648  * Returns a copy of the field.
28649  */
28650 struct LDKCVec_u64Z PaymentParameters_get_previously_failed_channels(const struct LDKPaymentParameters *NONNULL_PTR this_ptr);
28651
28652 /**
28653  * A list of SCIDs which this payment was previously attempted over and which caused the
28654  * payment to fail. Future attempts for the same payment shouldn't be relayed through any of
28655  * these SCIDs.
28656  */
28657 void PaymentParameters_set_previously_failed_channels(struct LDKPaymentParameters *NONNULL_PTR this_ptr, struct LDKCVec_u64Z val);
28658
28659 /**
28660  * Constructs a new PaymentParameters given each field
28661  */
28662 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, uint8_t max_path_count_arg, uint8_t max_channel_saturation_power_of_half_arg, struct LDKCVec_u64Z previously_failed_channels_arg);
28663
28664 /**
28665  * Creates a copy of the PaymentParameters
28666  */
28667 struct LDKPaymentParameters PaymentParameters_clone(const struct LDKPaymentParameters *NONNULL_PTR orig);
28668
28669 /**
28670  * Checks if two PaymentParameterss contain equal inner contents.
28671  */
28672 uint64_t PaymentParameters_hash(const struct LDKPaymentParameters *NONNULL_PTR o);
28673
28674 /**
28675  * Checks if two PaymentParameterss contain equal inner contents.
28676  * This ignores pointers and is_owned flags and looks at the values in fields.
28677  * Two objects with NULL inner values will be considered "equal" here.
28678  */
28679 bool PaymentParameters_eq(const struct LDKPaymentParameters *NONNULL_PTR a, const struct LDKPaymentParameters *NONNULL_PTR b);
28680
28681 /**
28682  * Serialize the PaymentParameters object into a byte array which can be read by PaymentParameters_read
28683  */
28684 struct LDKCVec_u8Z PaymentParameters_write(const struct LDKPaymentParameters *NONNULL_PTR obj);
28685
28686 /**
28687  * Read a PaymentParameters from a byte array, created by PaymentParameters_write
28688  */
28689 struct LDKCResult_PaymentParametersDecodeErrorZ PaymentParameters_read(struct LDKu8slice ser);
28690
28691 /**
28692  * Creates a payee with the node id of the given `pubkey`.
28693  */
28694 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_from_node_id(struct LDKPublicKey payee_pubkey);
28695
28696 /**
28697  * Creates a payee with the node id of the given `pubkey` to use for keysend payments.
28698  */
28699 MUST_USE_RES struct LDKPaymentParameters PaymentParameters_for_keysend(struct LDKPublicKey payee_pubkey);
28700
28701 /**
28702  * Frees any resources used by the RouteHint, if is_owned is set and inner is non-NULL.
28703  */
28704 void RouteHint_free(struct LDKRouteHint this_obj);
28705
28706 struct LDKCVec_RouteHintHopZ RouteHint_get_a(const struct LDKRouteHint *NONNULL_PTR this_ptr);
28707
28708 void RouteHint_set_a(struct LDKRouteHint *NONNULL_PTR this_ptr, struct LDKCVec_RouteHintHopZ val);
28709
28710 /**
28711  * Constructs a new RouteHint given each field
28712  */
28713 MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
28714
28715 /**
28716  * Creates a copy of the RouteHint
28717  */
28718 struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
28719
28720 /**
28721  * Checks if two RouteHints contain equal inner contents.
28722  */
28723 uint64_t RouteHint_hash(const struct LDKRouteHint *NONNULL_PTR o);
28724
28725 /**
28726  * Checks if two RouteHints contain equal inner contents.
28727  * This ignores pointers and is_owned flags and looks at the values in fields.
28728  * Two objects with NULL inner values will be considered "equal" here.
28729  */
28730 bool RouteHint_eq(const struct LDKRouteHint *NONNULL_PTR a, const struct LDKRouteHint *NONNULL_PTR b);
28731
28732 /**
28733  * Serialize the RouteHint object into a byte array which can be read by RouteHint_read
28734  */
28735 struct LDKCVec_u8Z RouteHint_write(const struct LDKRouteHint *NONNULL_PTR obj);
28736
28737 /**
28738  * Read a RouteHint from a byte array, created by RouteHint_write
28739  */
28740 struct LDKCResult_RouteHintDecodeErrorZ RouteHint_read(struct LDKu8slice ser);
28741
28742 /**
28743  * Frees any resources used by the RouteHintHop, if is_owned is set and inner is non-NULL.
28744  */
28745 void RouteHintHop_free(struct LDKRouteHintHop this_obj);
28746
28747 /**
28748  * The node_id of the non-target end of the route
28749  */
28750 struct LDKPublicKey RouteHintHop_get_src_node_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
28751
28752 /**
28753  * The node_id of the non-target end of the route
28754  */
28755 void RouteHintHop_set_src_node_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKPublicKey val);
28756
28757 /**
28758  * The short_channel_id of this channel
28759  */
28760 uint64_t RouteHintHop_get_short_channel_id(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
28761
28762 /**
28763  * The short_channel_id of this channel
28764  */
28765 void RouteHintHop_set_short_channel_id(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint64_t val);
28766
28767 /**
28768  * The fees which must be paid to use this channel
28769  */
28770 struct LDKRoutingFees RouteHintHop_get_fees(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
28771
28772 /**
28773  * The fees which must be paid to use this channel
28774  */
28775 void RouteHintHop_set_fees(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKRoutingFees val);
28776
28777 /**
28778  * The difference in CLTV values between this node and the next node.
28779  */
28780 uint16_t RouteHintHop_get_cltv_expiry_delta(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
28781
28782 /**
28783  * The difference in CLTV values between this node and the next node.
28784  */
28785 void RouteHintHop_set_cltv_expiry_delta(struct LDKRouteHintHop *NONNULL_PTR this_ptr, uint16_t val);
28786
28787 /**
28788  * The minimum value, in msat, which must be relayed to the next hop.
28789  */
28790 struct LDKCOption_u64Z RouteHintHop_get_htlc_minimum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
28791
28792 /**
28793  * The minimum value, in msat, which must be relayed to the next hop.
28794  */
28795 void RouteHintHop_set_htlc_minimum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
28796
28797 /**
28798  * The maximum value in msat available for routing with a single HTLC.
28799  */
28800 struct LDKCOption_u64Z RouteHintHop_get_htlc_maximum_msat(const struct LDKRouteHintHop *NONNULL_PTR this_ptr);
28801
28802 /**
28803  * The maximum value in msat available for routing with a single HTLC.
28804  */
28805 void RouteHintHop_set_htlc_maximum_msat(struct LDKRouteHintHop *NONNULL_PTR this_ptr, struct LDKCOption_u64Z val);
28806
28807 /**
28808  * Constructs a new RouteHintHop given each field
28809  */
28810 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);
28811
28812 /**
28813  * Creates a copy of the RouteHintHop
28814  */
28815 struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
28816
28817 /**
28818  * Checks if two RouteHintHops contain equal inner contents.
28819  */
28820 uint64_t RouteHintHop_hash(const struct LDKRouteHintHop *NONNULL_PTR o);
28821
28822 /**
28823  * Checks if two RouteHintHops contain equal inner contents.
28824  * This ignores pointers and is_owned flags and looks at the values in fields.
28825  * Two objects with NULL inner values will be considered "equal" here.
28826  */
28827 bool RouteHintHop_eq(const struct LDKRouteHintHop *NONNULL_PTR a, const struct LDKRouteHintHop *NONNULL_PTR b);
28828
28829 /**
28830  * Serialize the RouteHintHop object into a byte array which can be read by RouteHintHop_read
28831  */
28832 struct LDKCVec_u8Z RouteHintHop_write(const struct LDKRouteHintHop *NONNULL_PTR obj);
28833
28834 /**
28835  * Read a RouteHintHop from a byte array, created by RouteHintHop_write
28836  */
28837 struct LDKCResult_RouteHintHopDecodeErrorZ RouteHintHop_read(struct LDKu8slice ser);
28838
28839 /**
28840  * Finds a route from us (payer) to the given target node (payee).
28841  *
28842  * If the payee provided features in their invoice, they should be provided via `params.payee`.
28843  * Without this, MPP will only be used if the payee's features are available in the network graph.
28844  *
28845  * Private routing paths between a public node and the target may be included in `params.payee`.
28846  *
28847  * If some channels aren't announced, it may be useful to fill in `first_hops` with the results
28848  * from [`ChannelManager::list_usable_channels`]. If it is filled in, the view of these channels
28849  * from `network_graph` will be ignored, and only those in `first_hops` will be used.
28850  *
28851  * The fees on channels from us to the next hop are ignored as they are assumed to all be equal.
28852  * However, the enabled/disabled bit on such channels as well as the `htlc_minimum_msat` /
28853  * `htlc_maximum_msat` *are* checked as they may change based on the receiving node.
28854  *
28855  * # Note
28856  *
28857  * May be used to re-compute a [`Route`] when handling a [`Event::PaymentPathFailed`]. Any
28858  * adjustments to the [`NetworkGraph`] and channel scores should be made prior to calling this
28859  * function.
28860  *
28861  * # Panics
28862  *
28863  * Panics if first_hops contains channels without short_channel_ids;
28864  * [`ChannelManager::list_usable_channels`] will never include such channels.
28865  *
28866  * [`ChannelManager::list_usable_channels`]: crate::ln::channelmanager::ChannelManager::list_usable_channels
28867  * [`Event::PaymentPathFailed`]: crate::util::events::Event::PaymentPathFailed
28868  * [`NetworkGraph`]: crate::routing::gossip::NetworkGraph
28869  *
28870  * Note that first_hops (or a relevant inner pointer) may be NULL or all-0s to represent None
28871  */
28872 struct LDKCResult_RouteLightningErrorZ find_route(struct LDKPublicKey our_node_pubkey, const struct LDKRouteParameters *NONNULL_PTR route_params, const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKCVec_ChannelDetailsZ *first_hops, struct LDKLogger logger, const struct LDKScore *NONNULL_PTR scorer, const uint8_t (*random_seed_bytes)[32]);
28873
28874 /**
28875  * Construct a route from us (payer) to the target node (payee) via the given hops (which should
28876  * exclude the payer, but include the payee). This may be useful, e.g., for probing the chosen path.
28877  *
28878  * Re-uses logic from `find_route`, so the restrictions described there also apply here.
28879  */
28880 struct LDKCResult_RouteLightningErrorZ build_route_from_hops(struct LDKPublicKey our_node_pubkey, struct LDKCVec_PublicKeyZ hops, const struct LDKRouteParameters *NONNULL_PTR route_params, const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger, const uint8_t (*random_seed_bytes)[32]);
28881
28882 /**
28883  * Calls the free function if one is set
28884  */
28885 void Score_free(struct LDKScore this_ptr);
28886
28887 /**
28888  * Calls the free function if one is set
28889  */
28890 void LockableScore_free(struct LDKLockableScore this_ptr);
28891
28892 /**
28893  * Calls the free function if one is set
28894  */
28895 void WriteableScore_free(struct LDKWriteableScore this_ptr);
28896
28897 /**
28898  * Frees any resources used by the MultiThreadedLockableScore, if is_owned is set and inner is non-NULL.
28899  */
28900 void MultiThreadedLockableScore_free(struct LDKMultiThreadedLockableScore this_obj);
28901
28902 /**
28903  * Frees any resources used by the MultiThreadedScoreLock, if is_owned is set and inner is non-NULL.
28904  */
28905 void MultiThreadedScoreLock_free(struct LDKMultiThreadedScoreLock this_obj);
28906
28907 /**
28908  * Constructs a new Score which calls the relevant methods on this_arg.
28909  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
28910  */
28911 struct LDKScore MultiThreadedScoreLock_as_Score(const struct LDKMultiThreadedScoreLock *NONNULL_PTR this_arg);
28912
28913 /**
28914  * Serialize the MultiThreadedScoreLock object into a byte array which can be read by MultiThreadedScoreLock_read
28915  */
28916 struct LDKCVec_u8Z MultiThreadedScoreLock_write(const struct LDKMultiThreadedScoreLock *NONNULL_PTR obj);
28917
28918 /**
28919  * Constructs a new LockableScore which calls the relevant methods on this_arg.
28920  * This copies the `inner` pointer in this_arg and thus the returned LockableScore must be freed before this_arg is
28921  */
28922 struct LDKLockableScore MultiThreadedLockableScore_as_LockableScore(const struct LDKMultiThreadedLockableScore *NONNULL_PTR this_arg);
28923
28924 /**
28925  * Creates a new [`MultiThreadedLockableScore`] given an underlying [`Score`].
28926  */
28927 MUST_USE_RES struct LDKMultiThreadedLockableScore MultiThreadedLockableScore_new(struct LDKScore score);
28928
28929 /**
28930  * Frees any resources used by the ChannelUsage, if is_owned is set and inner is non-NULL.
28931  */
28932 void ChannelUsage_free(struct LDKChannelUsage this_obj);
28933
28934 /**
28935  * The amount to send through the channel, denominated in millisatoshis.
28936  */
28937 uint64_t ChannelUsage_get_amount_msat(const struct LDKChannelUsage *NONNULL_PTR this_ptr);
28938
28939 /**
28940  * The amount to send through the channel, denominated in millisatoshis.
28941  */
28942 void ChannelUsage_set_amount_msat(struct LDKChannelUsage *NONNULL_PTR this_ptr, uint64_t val);
28943
28944 /**
28945  * Total amount, denominated in millisatoshis, already allocated to send through the channel
28946  * as part of a multi-path payment.
28947  */
28948 uint64_t ChannelUsage_get_inflight_htlc_msat(const struct LDKChannelUsage *NONNULL_PTR this_ptr);
28949
28950 /**
28951  * Total amount, denominated in millisatoshis, already allocated to send through the channel
28952  * as part of a multi-path payment.
28953  */
28954 void ChannelUsage_set_inflight_htlc_msat(struct LDKChannelUsage *NONNULL_PTR this_ptr, uint64_t val);
28955
28956 /**
28957  * The effective capacity of the channel.
28958  */
28959 struct LDKEffectiveCapacity ChannelUsage_get_effective_capacity(const struct LDKChannelUsage *NONNULL_PTR this_ptr);
28960
28961 /**
28962  * The effective capacity of the channel.
28963  */
28964 void ChannelUsage_set_effective_capacity(struct LDKChannelUsage *NONNULL_PTR this_ptr, struct LDKEffectiveCapacity val);
28965
28966 /**
28967  * Constructs a new ChannelUsage given each field
28968  */
28969 MUST_USE_RES struct LDKChannelUsage ChannelUsage_new(uint64_t amount_msat_arg, uint64_t inflight_htlc_msat_arg, struct LDKEffectiveCapacity effective_capacity_arg);
28970
28971 /**
28972  * Creates a copy of the ChannelUsage
28973  */
28974 struct LDKChannelUsage ChannelUsage_clone(const struct LDKChannelUsage *NONNULL_PTR orig);
28975
28976 /**
28977  * Frees any resources used by the FixedPenaltyScorer, if is_owned is set and inner is non-NULL.
28978  */
28979 void FixedPenaltyScorer_free(struct LDKFixedPenaltyScorer this_obj);
28980
28981 /**
28982  * Creates a copy of the FixedPenaltyScorer
28983  */
28984 struct LDKFixedPenaltyScorer FixedPenaltyScorer_clone(const struct LDKFixedPenaltyScorer *NONNULL_PTR orig);
28985
28986 /**
28987  * Creates a new scorer using `penalty_msat`.
28988  */
28989 MUST_USE_RES struct LDKFixedPenaltyScorer FixedPenaltyScorer_with_penalty(uint64_t penalty_msat);
28990
28991 /**
28992  * Constructs a new Score which calls the relevant methods on this_arg.
28993  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
28994  */
28995 struct LDKScore FixedPenaltyScorer_as_Score(const struct LDKFixedPenaltyScorer *NONNULL_PTR this_arg);
28996
28997 /**
28998  * Serialize the FixedPenaltyScorer object into a byte array which can be read by FixedPenaltyScorer_read
28999  */
29000 struct LDKCVec_u8Z FixedPenaltyScorer_write(const struct LDKFixedPenaltyScorer *NONNULL_PTR obj);
29001
29002 /**
29003  * Read a FixedPenaltyScorer from a byte array, created by FixedPenaltyScorer_write
29004  */
29005 struct LDKCResult_FixedPenaltyScorerDecodeErrorZ FixedPenaltyScorer_read(struct LDKu8slice ser, uint64_t arg);
29006
29007 /**
29008  * Frees any resources used by the ProbabilisticScorer, if is_owned is set and inner is non-NULL.
29009  */
29010 void ProbabilisticScorer_free(struct LDKProbabilisticScorer this_obj);
29011
29012 /**
29013  * Frees any resources used by the ProbabilisticScoringParameters, if is_owned is set and inner is non-NULL.
29014  */
29015 void ProbabilisticScoringParameters_free(struct LDKProbabilisticScoringParameters this_obj);
29016
29017 /**
29018  * A fixed penalty in msats to apply to each channel.
29019  *
29020  * Default value: 500 msat
29021  */
29022 uint64_t ProbabilisticScoringParameters_get_base_penalty_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29023
29024 /**
29025  * A fixed penalty in msats to apply to each channel.
29026  *
29027  * Default value: 500 msat
29028  */
29029 void ProbabilisticScoringParameters_set_base_penalty_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29030
29031 /**
29032  * A multiplier used with the payment amount to calculate a fixed penalty applied to each
29033  * channel, in excess of the [`base_penalty_msat`].
29034  *
29035  * The purpose of the amount penalty is to avoid having fees dominate the channel cost (i.e.,
29036  * fees plus penalty) for large payments. The penalty is computed as the product of this
29037  * multiplier and `2^30`ths of the payment amount.
29038  *
29039  * ie `base_penalty_amount_multiplier_msat * amount_msat / 2^30`
29040  *
29041  * Default value: 8,192 msat
29042  *
29043  * [`base_penalty_msat`]: Self::base_penalty_msat
29044  */
29045 uint64_t ProbabilisticScoringParameters_get_base_penalty_amount_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29046
29047 /**
29048  * A multiplier used with the payment amount to calculate a fixed penalty applied to each
29049  * channel, in excess of the [`base_penalty_msat`].
29050  *
29051  * The purpose of the amount penalty is to avoid having fees dominate the channel cost (i.e.,
29052  * fees plus penalty) for large payments. The penalty is computed as the product of this
29053  * multiplier and `2^30`ths of the payment amount.
29054  *
29055  * ie `base_penalty_amount_multiplier_msat * amount_msat / 2^30`
29056  *
29057  * Default value: 8,192 msat
29058  *
29059  * [`base_penalty_msat`]: Self::base_penalty_msat
29060  */
29061 void ProbabilisticScoringParameters_set_base_penalty_amount_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29062
29063 /**
29064  * A multiplier used in conjunction with the negative `log10` of the channel's success
29065  * probability for a payment to determine the liquidity penalty.
29066  *
29067  * The penalty is based in part on the knowledge learned from prior successful and unsuccessful
29068  * payments. This knowledge is decayed over time based on [`liquidity_offset_half_life`]. The
29069  * penalty is effectively limited to `2 * liquidity_penalty_multiplier_msat` (corresponding to
29070  * lower bounding the success probability to `0.01`) when the amount falls within the
29071  * uncertainty bounds of the channel liquidity balance. Amounts above the upper bound will
29072  * result in a `u64::max_value` penalty, however.
29073  *
29074  * Default value: 40,000 msat
29075  *
29076  * [`liquidity_offset_half_life`]: Self::liquidity_offset_half_life
29077  */
29078 uint64_t ProbabilisticScoringParameters_get_liquidity_penalty_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29079
29080 /**
29081  * A multiplier used in conjunction with the negative `log10` of the channel's success
29082  * probability for a payment to determine the liquidity penalty.
29083  *
29084  * The penalty is based in part on the knowledge learned from prior successful and unsuccessful
29085  * payments. This knowledge is decayed over time based on [`liquidity_offset_half_life`]. The
29086  * penalty is effectively limited to `2 * liquidity_penalty_multiplier_msat` (corresponding to
29087  * lower bounding the success probability to `0.01`) when the amount falls within the
29088  * uncertainty bounds of the channel liquidity balance. Amounts above the upper bound will
29089  * result in a `u64::max_value` penalty, however.
29090  *
29091  * Default value: 40,000 msat
29092  *
29093  * [`liquidity_offset_half_life`]: Self::liquidity_offset_half_life
29094  */
29095 void ProbabilisticScoringParameters_set_liquidity_penalty_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29096
29097 /**
29098  * The time required to elapse before any knowledge learned about channel liquidity balances is
29099  * cut in half.
29100  *
29101  * The bounds are defined in terms of offsets and are initially zero. Increasing the offsets
29102  * gives tighter bounds on the channel liquidity balance. Thus, halving the offsets decreases
29103  * the certainty of the channel liquidity balance.
29104  *
29105  * Default value: 1 hour
29106  *
29107  * # Note
29108  *
29109  * When built with the `no-std` feature, time will never elapse. Therefore, the channel
29110  * liquidity knowledge will never decay except when the bounds cross.
29111  */
29112 uint64_t ProbabilisticScoringParameters_get_liquidity_offset_half_life(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29113
29114 /**
29115  * The time required to elapse before any knowledge learned about channel liquidity balances is
29116  * cut in half.
29117  *
29118  * The bounds are defined in terms of offsets and are initially zero. Increasing the offsets
29119  * gives tighter bounds on the channel liquidity balance. Thus, halving the offsets decreases
29120  * the certainty of the channel liquidity balance.
29121  *
29122  * Default value: 1 hour
29123  *
29124  * # Note
29125  *
29126  * When built with the `no-std` feature, time will never elapse. Therefore, the channel
29127  * liquidity knowledge will never decay except when the bounds cross.
29128  */
29129 void ProbabilisticScoringParameters_set_liquidity_offset_half_life(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29130
29131 /**
29132  * A multiplier used in conjunction with a payment amount and the negative `log10` of the
29133  * channel's success probability for the payment to determine the amount penalty.
29134  *
29135  * The purpose of the amount penalty is to avoid having fees dominate the channel cost (i.e.,
29136  * fees plus penalty) for large payments. The penalty is computed as the product of this
29137  * multiplier and `2^20`ths of the payment amount, weighted by the negative `log10` of the
29138  * success probability.
29139  *
29140  * `-log10(success_probability) * liquidity_penalty_amount_multiplier_msat * amount_msat / 2^20`
29141  *
29142  * In practice, this means for 0.1 success probability (`-log10(0.1) == 1`) each `2^20`th of
29143  * the amount will result in a penalty of the multiplier. And, as the success probability
29144  * decreases, the negative `log10` weighting will increase dramatically. For higher success
29145  * probabilities, the multiplier will have a decreasing effect as the negative `log10` will
29146  * fall below `1`.
29147  *
29148  * Default value: 256 msat
29149  */
29150 uint64_t ProbabilisticScoringParameters_get_liquidity_penalty_amount_multiplier_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29151
29152 /**
29153  * A multiplier used in conjunction with a payment amount and the negative `log10` of the
29154  * channel's success probability for the payment to determine the amount penalty.
29155  *
29156  * The purpose of the amount penalty is to avoid having fees dominate the channel cost (i.e.,
29157  * fees plus penalty) for large payments. The penalty is computed as the product of this
29158  * multiplier and `2^20`ths of the payment amount, weighted by the negative `log10` of the
29159  * success probability.
29160  *
29161  * `-log10(success_probability) * liquidity_penalty_amount_multiplier_msat * amount_msat / 2^20`
29162  *
29163  * In practice, this means for 0.1 success probability (`-log10(0.1) == 1`) each `2^20`th of
29164  * the amount will result in a penalty of the multiplier. And, as the success probability
29165  * decreases, the negative `log10` weighting will increase dramatically. For higher success
29166  * probabilities, the multiplier will have a decreasing effect as the negative `log10` will
29167  * fall below `1`.
29168  *
29169  * Default value: 256 msat
29170  */
29171 void ProbabilisticScoringParameters_set_liquidity_penalty_amount_multiplier_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29172
29173 /**
29174  * This penalty is applied when `htlc_maximum_msat` is equal to or larger than half of the
29175  * channel's capacity, which makes us prefer nodes with a smaller `htlc_maximum_msat`. We
29176  * treat such nodes preferentially as this makes balance discovery attacks harder to execute,
29177  * thereby creating an incentive to restrict `htlc_maximum_msat` and improve privacy.
29178  *
29179  * Default value: 250 msat
29180  */
29181 uint64_t ProbabilisticScoringParameters_get_anti_probing_penalty_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29182
29183 /**
29184  * This penalty is applied when `htlc_maximum_msat` is equal to or larger than half of the
29185  * channel's capacity, which makes us prefer nodes with a smaller `htlc_maximum_msat`. We
29186  * treat such nodes preferentially as this makes balance discovery attacks harder to execute,
29187  * thereby creating an incentive to restrict `htlc_maximum_msat` and improve privacy.
29188  *
29189  * Default value: 250 msat
29190  */
29191 void ProbabilisticScoringParameters_set_anti_probing_penalty_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29192
29193 /**
29194  * This penalty is applied when the amount we're attempting to send over a channel exceeds our
29195  * current estimate of the channel's available liquidity.
29196  *
29197  * Note that in this case all other penalties, including the
29198  * [`liquidity_penalty_multiplier_msat`] and [`liquidity_penalty_amount_multiplier_msat`]-based
29199  * penalties, as well as the [`base_penalty_msat`] and the [`anti_probing_penalty_msat`], if
29200  * applicable, are still included in the overall penalty.
29201  *
29202  * If you wish to avoid creating paths with such channels entirely, setting this to a value of
29203  * `u64::max_value()` will guarantee that.
29204  *
29205  * Default value: 1_0000_0000_000 msat (1 Bitcoin)
29206  *
29207  * [`liquidity_penalty_multiplier_msat`]: Self::liquidity_penalty_multiplier_msat
29208  * [`liquidity_penalty_amount_multiplier_msat`]: Self::liquidity_penalty_amount_multiplier_msat
29209  * [`base_penalty_msat`]: Self::base_penalty_msat
29210  * [`anti_probing_penalty_msat`]: Self::anti_probing_penalty_msat
29211  */
29212 uint64_t ProbabilisticScoringParameters_get_considered_impossible_penalty_msat(const struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr);
29213
29214 /**
29215  * This penalty is applied when the amount we're attempting to send over a channel exceeds our
29216  * current estimate of the channel's available liquidity.
29217  *
29218  * Note that in this case all other penalties, including the
29219  * [`liquidity_penalty_multiplier_msat`] and [`liquidity_penalty_amount_multiplier_msat`]-based
29220  * penalties, as well as the [`base_penalty_msat`] and the [`anti_probing_penalty_msat`], if
29221  * applicable, are still included in the overall penalty.
29222  *
29223  * If you wish to avoid creating paths with such channels entirely, setting this to a value of
29224  * `u64::max_value()` will guarantee that.
29225  *
29226  * Default value: 1_0000_0000_000 msat (1 Bitcoin)
29227  *
29228  * [`liquidity_penalty_multiplier_msat`]: Self::liquidity_penalty_multiplier_msat
29229  * [`liquidity_penalty_amount_multiplier_msat`]: Self::liquidity_penalty_amount_multiplier_msat
29230  * [`base_penalty_msat`]: Self::base_penalty_msat
29231  * [`anti_probing_penalty_msat`]: Self::anti_probing_penalty_msat
29232  */
29233 void ProbabilisticScoringParameters_set_considered_impossible_penalty_msat(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_ptr, uint64_t val);
29234
29235 /**
29236  * Creates a copy of the ProbabilisticScoringParameters
29237  */
29238 struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_clone(const struct LDKProbabilisticScoringParameters *NONNULL_PTR orig);
29239
29240 /**
29241  * Creates a new scorer using the given scoring parameters for sending payments from a node
29242  * through a network graph.
29243  */
29244 MUST_USE_RES struct LDKProbabilisticScorer ProbabilisticScorer_new(struct LDKProbabilisticScoringParameters params, const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger);
29245
29246 /**
29247  * Dump the contents of this scorer into the configured logger.
29248  *
29249  * Note that this writes roughly one line per channel for which we have a liquidity estimate,
29250  * which may be a substantial amount of log output.
29251  */
29252 void ProbabilisticScorer_debug_log_liquidity_stats(const struct LDKProbabilisticScorer *NONNULL_PTR this_arg);
29253
29254 /**
29255  * Query the estimated minimum and maximum liquidity available for sending a payment over the
29256  * channel with `scid` towards the given `target` node.
29257  */
29258 MUST_USE_RES struct LDKCOption_C2Tuple_u64u64ZZ ProbabilisticScorer_estimated_channel_liquidity_range(const struct LDKProbabilisticScorer *NONNULL_PTR this_arg, uint64_t scid, const struct LDKNodeId *NONNULL_PTR target);
29259
29260 /**
29261  * Marks the node with the given `node_id` as banned, i.e.,
29262  * it will be avoided during path finding.
29263  */
29264 void ProbabilisticScorer_add_banned(struct LDKProbabilisticScorer *NONNULL_PTR this_arg, const struct LDKNodeId *NONNULL_PTR node_id);
29265
29266 /**
29267  * Removes the node with the given `node_id` from the list of nodes to avoid.
29268  */
29269 void ProbabilisticScorer_remove_banned(struct LDKProbabilisticScorer *NONNULL_PTR this_arg, const struct LDKNodeId *NONNULL_PTR node_id);
29270
29271 /**
29272  * Sets a manual penalty for the given node.
29273  */
29274 void ProbabilisticScorer_set_manual_penalty(struct LDKProbabilisticScorer *NONNULL_PTR this_arg, const struct LDKNodeId *NONNULL_PTR node_id, uint64_t penalty);
29275
29276 /**
29277  * Removes the node with the given `node_id` from the list of manual penalties.
29278  */
29279 void ProbabilisticScorer_remove_manual_penalty(struct LDKProbabilisticScorer *NONNULL_PTR this_arg, const struct LDKNodeId *NONNULL_PTR node_id);
29280
29281 /**
29282  * Clears the list of manual penalties that are applied during path finding.
29283  */
29284 void ProbabilisticScorer_clear_manual_penalties(struct LDKProbabilisticScorer *NONNULL_PTR this_arg);
29285
29286 /**
29287  * Marks all nodes in the given list as banned, i.e.,
29288  * they will be avoided during path finding.
29289  */
29290 void ProbabilisticScoringParameters_add_banned_from_list(struct LDKProbabilisticScoringParameters *NONNULL_PTR this_arg, struct LDKCVec_NodeIdZ node_ids);
29291
29292 /**
29293  * Creates a "default" ProbabilisticScoringParameters. See struct and individual field documentaiton for details on which values are used.
29294  */
29295 MUST_USE_RES struct LDKProbabilisticScoringParameters ProbabilisticScoringParameters_default(void);
29296
29297 /**
29298  * Constructs a new Score which calls the relevant methods on this_arg.
29299  * This copies the `inner` pointer in this_arg and thus the returned Score must be freed before this_arg is
29300  */
29301 struct LDKScore ProbabilisticScorer_as_Score(const struct LDKProbabilisticScorer *NONNULL_PTR this_arg);
29302
29303 /**
29304  * Serialize the ProbabilisticScorer object into a byte array which can be read by ProbabilisticScorer_read
29305  */
29306 struct LDKCVec_u8Z ProbabilisticScorer_write(const struct LDKProbabilisticScorer *NONNULL_PTR obj);
29307
29308 /**
29309  * Read a ProbabilisticScorer from a byte array, created by ProbabilisticScorer_write
29310  */
29311 struct LDKCResult_ProbabilisticScorerDecodeErrorZ ProbabilisticScorer_read(struct LDKu8slice ser, struct LDKProbabilisticScoringParameters arg_a, const struct LDKNetworkGraph *NONNULL_PTR arg_b, struct LDKLogger arg_c);
29312
29313 /**
29314  * Frees any resources used by the BlindedRoute, if is_owned is set and inner is non-NULL.
29315  */
29316 void BlindedRoute_free(struct LDKBlindedRoute this_obj);
29317
29318 /**
29319  * Frees any resources used by the BlindedHop, if is_owned is set and inner is non-NULL.
29320  */
29321 void BlindedHop_free(struct LDKBlindedHop this_obj);
29322
29323 /**
29324  * Create a blinded route to be forwarded along `node_pks`. The last node pubkey in `node_pks`
29325  * will be the destination node.
29326  *
29327  * Errors if less than two hops are provided or if `node_pk`(s) are invalid.
29328  */
29329 MUST_USE_RES struct LDKCResult_BlindedRouteNoneZ BlindedRoute_new(struct LDKCVec_PublicKeyZ node_pks, const struct LDKKeysInterface *NONNULL_PTR keys_manager);
29330
29331 /**
29332  * Serialize the BlindedRoute object into a byte array which can be read by BlindedRoute_read
29333  */
29334 struct LDKCVec_u8Z BlindedRoute_write(const struct LDKBlindedRoute *NONNULL_PTR obj);
29335
29336 /**
29337  * Read a BlindedRoute from a byte array, created by BlindedRoute_write
29338  */
29339 struct LDKCResult_BlindedRouteDecodeErrorZ BlindedRoute_read(struct LDKu8slice ser);
29340
29341 /**
29342  * Serialize the BlindedHop object into a byte array which can be read by BlindedHop_read
29343  */
29344 struct LDKCVec_u8Z BlindedHop_write(const struct LDKBlindedHop *NONNULL_PTR obj);
29345
29346 /**
29347  * Read a BlindedHop from a byte array, created by BlindedHop_write
29348  */
29349 struct LDKCResult_BlindedHopDecodeErrorZ BlindedHop_read(struct LDKu8slice ser);
29350
29351 /**
29352  * Frees any resources used by the OnionMessenger, if is_owned is set and inner is non-NULL.
29353  */
29354 void OnionMessenger_free(struct LDKOnionMessenger this_obj);
29355
29356 /**
29357  * Frees any resources used by the Destination
29358  */
29359 void Destination_free(struct LDKDestination this_ptr);
29360
29361 /**
29362  * Utility method to constructs a new Node-variant Destination
29363  */
29364 struct LDKDestination Destination_node(struct LDKPublicKey a);
29365
29366 /**
29367  * Utility method to constructs a new BlindedRoute-variant Destination
29368  */
29369 struct LDKDestination Destination_blinded_route(struct LDKBlindedRoute a);
29370
29371 /**
29372  * Frees any resources used by the SendError
29373  */
29374 void SendError_free(struct LDKSendError this_ptr);
29375
29376 /**
29377  * Creates a copy of the SendError
29378  */
29379 struct LDKSendError SendError_clone(const struct LDKSendError *NONNULL_PTR orig);
29380
29381 /**
29382  * Utility method to constructs a new Secp256k1-variant SendError
29383  */
29384 struct LDKSendError SendError_secp256k1(enum LDKSecp256k1Error a);
29385
29386 /**
29387  * Utility method to constructs a new TooBigPacket-variant SendError
29388  */
29389 struct LDKSendError SendError_too_big_packet(void);
29390
29391 /**
29392  * Utility method to constructs a new TooFewBlindedHops-variant SendError
29393  */
29394 struct LDKSendError SendError_too_few_blinded_hops(void);
29395
29396 /**
29397  * Utility method to constructs a new InvalidFirstHop-variant SendError
29398  */
29399 struct LDKSendError SendError_invalid_first_hop(void);
29400
29401 /**
29402  * Utility method to constructs a new BufferFull-variant SendError
29403  */
29404 struct LDKSendError SendError_buffer_full(void);
29405
29406 /**
29407  * Constructs a new `OnionMessenger` to send, forward, and delegate received onion messages to
29408  * their respective handlers.
29409  */
29410 MUST_USE_RES struct LDKOnionMessenger OnionMessenger_new(struct LDKKeysInterface keys_manager, struct LDKLogger logger);
29411
29412 /**
29413  * Send an empty onion message to `destination`, routing it through `intermediate_nodes`.
29414  * See [`OnionMessenger`] for example usage.
29415  *
29416  * Note that reply_path (or a relevant inner pointer) may be NULL or all-0s to represent None
29417  */
29418 MUST_USE_RES struct LDKCResult_NoneSendErrorZ OnionMessenger_send_onion_message(const struct LDKOnionMessenger *NONNULL_PTR this_arg, struct LDKCVec_PublicKeyZ intermediate_nodes, struct LDKDestination destination, struct LDKBlindedRoute reply_path);
29419
29420 /**
29421  * Constructs a new OnionMessageHandler which calls the relevant methods on this_arg.
29422  * This copies the `inner` pointer in this_arg and thus the returned OnionMessageHandler must be freed before this_arg is
29423  */
29424 struct LDKOnionMessageHandler OnionMessenger_as_OnionMessageHandler(const struct LDKOnionMessenger *NONNULL_PTR this_arg);
29425
29426 /**
29427  * Constructs a new OnionMessageProvider which calls the relevant methods on this_arg.
29428  * This copies the `inner` pointer in this_arg and thus the returned OnionMessageProvider must be freed before this_arg is
29429  */
29430 struct LDKOnionMessageProvider OnionMessenger_as_OnionMessageProvider(const struct LDKOnionMessenger *NONNULL_PTR this_arg);
29431
29432 /**
29433  * Frees any resources used by the FilesystemPersister, if is_owned is set and inner is non-NULL.
29434  */
29435 void FilesystemPersister_free(struct LDKFilesystemPersister this_obj);
29436
29437 /**
29438  * Initialize a new FilesystemPersister and set the path to the individual channels'
29439  * files.
29440  */
29441 MUST_USE_RES struct LDKFilesystemPersister FilesystemPersister_new(struct LDKStr path_to_channel_data);
29442
29443 /**
29444  * Get the directory which was provided when this persister was initialized.
29445  */
29446 MUST_USE_RES struct LDKStr FilesystemPersister_get_data_dir(const struct LDKFilesystemPersister *NONNULL_PTR this_arg);
29447
29448 /**
29449  * Read `ChannelMonitor`s from disk.
29450  */
29451 MUST_USE_RES struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ FilesystemPersister_read_channelmonitors(const struct LDKFilesystemPersister *NONNULL_PTR this_arg, struct LDKKeysInterface keys_manager);
29452
29453 /**
29454  * Frees any resources used by the BackgroundProcessor, if is_owned is set and inner is non-NULL.
29455  */
29456 void BackgroundProcessor_free(struct LDKBackgroundProcessor this_obj);
29457
29458 /**
29459  * Frees any resources used by the GossipSync
29460  */
29461 void GossipSync_free(struct LDKGossipSync this_ptr);
29462
29463 /**
29464  * Utility method to constructs a new P2P-variant GossipSync
29465  */
29466 struct LDKGossipSync GossipSync_p2_p(const struct LDKP2PGossipSync *NONNULL_PTR a);
29467
29468 /**
29469  * Utility method to constructs a new Rapid-variant GossipSync
29470  */
29471 struct LDKGossipSync GossipSync_rapid(const struct LDKRapidGossipSync *NONNULL_PTR a);
29472
29473 /**
29474  * Utility method to constructs a new None-variant GossipSync
29475  */
29476 struct LDKGossipSync GossipSync_none(void);
29477
29478 /**
29479  * Start a background thread that takes care of responsibilities enumerated in the [top-level
29480  * documentation].
29481  *
29482  * The thread runs indefinitely unless the object is dropped, [`stop`] is called, or
29483  * [`Persister::persist_manager`] returns an error. In case of an error, the error is retrieved by calling
29484  * either [`join`] or [`stop`].
29485  *
29486  * # Data Persistence
29487  *
29488  * [`Persister::persist_manager`] is responsible for writing out the [`ChannelManager`] to disk, and/or
29489  * uploading to one or more backup services. See [`ChannelManager::write`] for writing out a
29490  * [`ChannelManager`]. See the `lightning-persister` crate for LDK's
29491  * provided implementation.
29492  *
29493  * [`Persister::persist_graph`] is responsible for writing out the [`NetworkGraph`] to disk, if
29494  * [`GossipSync`] is supplied. See [`NetworkGraph::write`] for writing out a [`NetworkGraph`].
29495  * See the `lightning-persister` crate for LDK's provided implementation.
29496  *
29497  * Typically, users should either implement [`Persister::persist_manager`] to never return an
29498  * error or call [`join`] and handle any error that may arise. For the latter case,
29499  * `BackgroundProcessor` must be restarted by calling `start` again after handling the error.
29500  *
29501  * # Event Handling
29502  *
29503  * `event_handler` is responsible for handling events that users should be notified of (e.g.,
29504  * payment failed). [`BackgroundProcessor`] may decorate the given [`EventHandler`] with common
29505  * functionality implemented by other handlers.
29506  * * [`P2PGossipSync`] if given will update the [`NetworkGraph`] based on payment failures.
29507  *
29508  * # Rapid Gossip Sync
29509  *
29510  * If rapid gossip sync is meant to run at startup, pass [`RapidGossipSync`] via `gossip_sync`
29511  * to indicate that the [`BackgroundProcessor`] should not prune the [`NetworkGraph`] instance
29512  * until the [`RapidGossipSync`] instance completes its first sync.
29513  *
29514  * [top-level documentation]: BackgroundProcessor
29515  * [`join`]: Self::join
29516  * [`stop`]: Self::stop
29517  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
29518  * [`ChannelManager::write`]: lightning::ln::channelmanager::ChannelManager#impl-Writeable
29519  * [`Persister::persist_manager`]: lightning::util::persist::Persister::persist_manager
29520  * [`Persister::persist_graph`]: lightning::util::persist::Persister::persist_graph
29521  * [`NetworkGraph`]: lightning::routing::gossip::NetworkGraph
29522  * [`NetworkGraph::write`]: lightning::routing::gossip::NetworkGraph#impl-Writeable
29523  */
29524 MUST_USE_RES struct LDKBackgroundProcessor BackgroundProcessor_start(struct LDKPersister persister, struct LDKEventHandler event_handler, const struct LDKChainMonitor *NONNULL_PTR chain_monitor, const struct LDKChannelManager *NONNULL_PTR channel_manager, struct LDKGossipSync gossip_sync, const struct LDKPeerManager *NONNULL_PTR peer_manager, struct LDKLogger logger, struct LDKCOption_WriteableScoreZ scorer);
29525
29526 /**
29527  * Join `BackgroundProcessor`'s thread, returning any error that occurred while persisting
29528  * [`ChannelManager`].
29529  *
29530  * # Panics
29531  *
29532  * This function panics if the background thread has panicked such as while persisting or
29533  * handling events.
29534  *
29535  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
29536  */
29537 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_join(struct LDKBackgroundProcessor this_arg);
29538
29539 /**
29540  * Stop `BackgroundProcessor`'s thread, returning any error that occurred while persisting
29541  * [`ChannelManager`].
29542  *
29543  * # Panics
29544  *
29545  * This function panics if the background thread has panicked such as while persisting or
29546  * handling events.
29547  *
29548  * [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
29549  */
29550 MUST_USE_RES struct LDKCResult_NoneErrorZ BackgroundProcessor_stop(struct LDKBackgroundProcessor this_arg);
29551
29552 /**
29553  * Frees any resources used by the ParseError
29554  */
29555 void ParseError_free(struct LDKParseError this_ptr);
29556
29557 /**
29558  * Creates a copy of the ParseError
29559  */
29560 struct LDKParseError ParseError_clone(const struct LDKParseError *NONNULL_PTR orig);
29561
29562 /**
29563  * Utility method to constructs a new Bech32Error-variant ParseError
29564  */
29565 struct LDKParseError ParseError_bech32_error(struct LDKBech32Error a);
29566
29567 /**
29568  * Utility method to constructs a new ParseAmountError-variant ParseError
29569  */
29570 struct LDKParseError ParseError_parse_amount_error(struct LDKError a);
29571
29572 /**
29573  * Utility method to constructs a new MalformedSignature-variant ParseError
29574  */
29575 struct LDKParseError ParseError_malformed_signature(enum LDKSecp256k1Error a);
29576
29577 /**
29578  * Utility method to constructs a new BadPrefix-variant ParseError
29579  */
29580 struct LDKParseError ParseError_bad_prefix(void);
29581
29582 /**
29583  * Utility method to constructs a new UnknownCurrency-variant ParseError
29584  */
29585 struct LDKParseError ParseError_unknown_currency(void);
29586
29587 /**
29588  * Utility method to constructs a new UnknownSiPrefix-variant ParseError
29589  */
29590 struct LDKParseError ParseError_unknown_si_prefix(void);
29591
29592 /**
29593  * Utility method to constructs a new MalformedHRP-variant ParseError
29594  */
29595 struct LDKParseError ParseError_malformed_hrp(void);
29596
29597 /**
29598  * Utility method to constructs a new TooShortDataPart-variant ParseError
29599  */
29600 struct LDKParseError ParseError_too_short_data_part(void);
29601
29602 /**
29603  * Utility method to constructs a new UnexpectedEndOfTaggedFields-variant ParseError
29604  */
29605 struct LDKParseError ParseError_unexpected_end_of_tagged_fields(void);
29606
29607 /**
29608  * Utility method to constructs a new DescriptionDecodeError-variant ParseError
29609  */
29610 struct LDKParseError ParseError_description_decode_error(struct LDKError a);
29611
29612 /**
29613  * Utility method to constructs a new PaddingError-variant ParseError
29614  */
29615 struct LDKParseError ParseError_padding_error(void);
29616
29617 /**
29618  * Utility method to constructs a new IntegerOverflowError-variant ParseError
29619  */
29620 struct LDKParseError ParseError_integer_overflow_error(void);
29621
29622 /**
29623  * Utility method to constructs a new InvalidSegWitProgramLength-variant ParseError
29624  */
29625 struct LDKParseError ParseError_invalid_seg_wit_program_length(void);
29626
29627 /**
29628  * Utility method to constructs a new InvalidPubKeyHashLength-variant ParseError
29629  */
29630 struct LDKParseError ParseError_invalid_pub_key_hash_length(void);
29631
29632 /**
29633  * Utility method to constructs a new InvalidScriptHashLength-variant ParseError
29634  */
29635 struct LDKParseError ParseError_invalid_script_hash_length(void);
29636
29637 /**
29638  * Utility method to constructs a new InvalidRecoveryId-variant ParseError
29639  */
29640 struct LDKParseError ParseError_invalid_recovery_id(void);
29641
29642 /**
29643  * Utility method to constructs a new InvalidSliceLength-variant ParseError
29644  */
29645 struct LDKParseError ParseError_invalid_slice_length(struct LDKStr a);
29646
29647 /**
29648  * Utility method to constructs a new Skip-variant ParseError
29649  */
29650 struct LDKParseError ParseError_skip(void);
29651
29652 /**
29653  * Frees any resources used by the ParseOrSemanticError
29654  */
29655 void ParseOrSemanticError_free(struct LDKParseOrSemanticError this_ptr);
29656
29657 /**
29658  * Creates a copy of the ParseOrSemanticError
29659  */
29660 struct LDKParseOrSemanticError ParseOrSemanticError_clone(const struct LDKParseOrSemanticError *NONNULL_PTR orig);
29661
29662 /**
29663  * Utility method to constructs a new ParseError-variant ParseOrSemanticError
29664  */
29665 struct LDKParseOrSemanticError ParseOrSemanticError_parse_error(struct LDKParseError a);
29666
29667 /**
29668  * Utility method to constructs a new SemanticError-variant ParseOrSemanticError
29669  */
29670 struct LDKParseOrSemanticError ParseOrSemanticError_semantic_error(enum LDKSemanticError a);
29671
29672 /**
29673  * Frees any resources used by the Invoice, if is_owned is set and inner is non-NULL.
29674  */
29675 void Invoice_free(struct LDKInvoice this_obj);
29676
29677 /**
29678  * Checks if two Invoices contain equal inner contents.
29679  * This ignores pointers and is_owned flags and looks at the values in fields.
29680  * Two objects with NULL inner values will be considered "equal" here.
29681  */
29682 bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
29683
29684 /**
29685  * Creates a copy of the Invoice
29686  */
29687 struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
29688
29689 /**
29690  * Checks if two Invoices contain equal inner contents.
29691  */
29692 uint64_t Invoice_hash(const struct LDKInvoice *NONNULL_PTR o);
29693
29694 /**
29695  * Frees any resources used by the SignedRawInvoice, if is_owned is set and inner is non-NULL.
29696  */
29697 void SignedRawInvoice_free(struct LDKSignedRawInvoice this_obj);
29698
29699 /**
29700  * Checks if two SignedRawInvoices contain equal inner contents.
29701  * This ignores pointers and is_owned flags and looks at the values in fields.
29702  * Two objects with NULL inner values will be considered "equal" here.
29703  */
29704 bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
29705
29706 /**
29707  * Creates a copy of the SignedRawInvoice
29708  */
29709 struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
29710
29711 /**
29712  * Checks if two SignedRawInvoices contain equal inner contents.
29713  */
29714 uint64_t SignedRawInvoice_hash(const struct LDKSignedRawInvoice *NONNULL_PTR o);
29715
29716 /**
29717  * Frees any resources used by the RawInvoice, if is_owned is set and inner is non-NULL.
29718  */
29719 void RawInvoice_free(struct LDKRawInvoice this_obj);
29720
29721 /**
29722  * data part
29723  */
29724 struct LDKRawDataPart RawInvoice_get_data(const struct LDKRawInvoice *NONNULL_PTR this_ptr);
29725
29726 /**
29727  * data part
29728  */
29729 void RawInvoice_set_data(struct LDKRawInvoice *NONNULL_PTR this_ptr, struct LDKRawDataPart val);
29730
29731 /**
29732  * Checks if two RawInvoices contain equal inner contents.
29733  * This ignores pointers and is_owned flags and looks at the values in fields.
29734  * Two objects with NULL inner values will be considered "equal" here.
29735  */
29736 bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
29737
29738 /**
29739  * Creates a copy of the RawInvoice
29740  */
29741 struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
29742
29743 /**
29744  * Checks if two RawInvoices contain equal inner contents.
29745  */
29746 uint64_t RawInvoice_hash(const struct LDKRawInvoice *NONNULL_PTR o);
29747
29748 /**
29749  * Frees any resources used by the RawDataPart, if is_owned is set and inner is non-NULL.
29750  */
29751 void RawDataPart_free(struct LDKRawDataPart this_obj);
29752
29753 /**
29754  * generation time of the invoice
29755  */
29756 struct LDKPositiveTimestamp RawDataPart_get_timestamp(const struct LDKRawDataPart *NONNULL_PTR this_ptr);
29757
29758 /**
29759  * generation time of the invoice
29760  */
29761 void RawDataPart_set_timestamp(struct LDKRawDataPart *NONNULL_PTR this_ptr, struct LDKPositiveTimestamp val);
29762
29763 /**
29764  * Checks if two RawDataParts contain equal inner contents.
29765  * This ignores pointers and is_owned flags and looks at the values in fields.
29766  * Two objects with NULL inner values will be considered "equal" here.
29767  */
29768 bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
29769
29770 /**
29771  * Creates a copy of the RawDataPart
29772  */
29773 struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
29774
29775 /**
29776  * Checks if two RawDataParts contain equal inner contents.
29777  */
29778 uint64_t RawDataPart_hash(const struct LDKRawDataPart *NONNULL_PTR o);
29779
29780 /**
29781  * Frees any resources used by the PositiveTimestamp, if is_owned is set and inner is non-NULL.
29782  */
29783 void PositiveTimestamp_free(struct LDKPositiveTimestamp this_obj);
29784
29785 /**
29786  * Checks if two PositiveTimestamps contain equal inner contents.
29787  * This ignores pointers and is_owned flags and looks at the values in fields.
29788  * Two objects with NULL inner values will be considered "equal" here.
29789  */
29790 bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
29791
29792 /**
29793  * Creates a copy of the PositiveTimestamp
29794  */
29795 struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
29796
29797 /**
29798  * Checks if two PositiveTimestamps contain equal inner contents.
29799  */
29800 uint64_t PositiveTimestamp_hash(const struct LDKPositiveTimestamp *NONNULL_PTR o);
29801
29802 /**
29803  * Creates a copy of the SiPrefix
29804  */
29805 enum LDKSiPrefix SiPrefix_clone(const enum LDKSiPrefix *NONNULL_PTR orig);
29806
29807 /**
29808  * Utility method to constructs a new Milli-variant SiPrefix
29809  */
29810 enum LDKSiPrefix SiPrefix_milli(void);
29811
29812 /**
29813  * Utility method to constructs a new Micro-variant SiPrefix
29814  */
29815 enum LDKSiPrefix SiPrefix_micro(void);
29816
29817 /**
29818  * Utility method to constructs a new Nano-variant SiPrefix
29819  */
29820 enum LDKSiPrefix SiPrefix_nano(void);
29821
29822 /**
29823  * Utility method to constructs a new Pico-variant SiPrefix
29824  */
29825 enum LDKSiPrefix SiPrefix_pico(void);
29826
29827 /**
29828  * Checks if two SiPrefixs contain equal inner contents.
29829  * This ignores pointers and is_owned flags and looks at the values in fields.
29830  */
29831 bool SiPrefix_eq(const enum LDKSiPrefix *NONNULL_PTR a, const enum LDKSiPrefix *NONNULL_PTR b);
29832
29833 /**
29834  * Checks if two SiPrefixs contain equal inner contents.
29835  */
29836 uint64_t SiPrefix_hash(const enum LDKSiPrefix *NONNULL_PTR o);
29837
29838 /**
29839  * Returns the multiplier to go from a BTC value to picoBTC implied by this SiPrefix.
29840  * This is effectively 10^12 * the prefix multiplier
29841  */
29842 MUST_USE_RES uint64_t SiPrefix_multiplier(const enum LDKSiPrefix *NONNULL_PTR this_arg);
29843
29844 /**
29845  * Creates a copy of the Currency
29846  */
29847 enum LDKCurrency Currency_clone(const enum LDKCurrency *NONNULL_PTR orig);
29848
29849 /**
29850  * Utility method to constructs a new Bitcoin-variant Currency
29851  */
29852 enum LDKCurrency Currency_bitcoin(void);
29853
29854 /**
29855  * Utility method to constructs a new BitcoinTestnet-variant Currency
29856  */
29857 enum LDKCurrency Currency_bitcoin_testnet(void);
29858
29859 /**
29860  * Utility method to constructs a new Regtest-variant Currency
29861  */
29862 enum LDKCurrency Currency_regtest(void);
29863
29864 /**
29865  * Utility method to constructs a new Simnet-variant Currency
29866  */
29867 enum LDKCurrency Currency_simnet(void);
29868
29869 /**
29870  * Utility method to constructs a new Signet-variant Currency
29871  */
29872 enum LDKCurrency Currency_signet(void);
29873
29874 /**
29875  * Checks if two Currencys contain equal inner contents.
29876  */
29877 uint64_t Currency_hash(const enum LDKCurrency *NONNULL_PTR o);
29878
29879 /**
29880  * Checks if two Currencys contain equal inner contents.
29881  * This ignores pointers and is_owned flags and looks at the values in fields.
29882  */
29883 bool Currency_eq(const enum LDKCurrency *NONNULL_PTR a, const enum LDKCurrency *NONNULL_PTR b);
29884
29885 /**
29886  * Frees any resources used by the Sha256, if is_owned is set and inner is non-NULL.
29887  */
29888 void Sha256_free(struct LDKSha256 this_obj);
29889
29890 /**
29891  * Creates a copy of the Sha256
29892  */
29893 struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
29894
29895 /**
29896  * Checks if two Sha256s contain equal inner contents.
29897  */
29898 uint64_t Sha256_hash(const struct LDKSha256 *NONNULL_PTR o);
29899
29900 /**
29901  * Checks if two Sha256s contain equal inner contents.
29902  * This ignores pointers and is_owned flags and looks at the values in fields.
29903  * Two objects with NULL inner values will be considered "equal" here.
29904  */
29905 bool Sha256_eq(const struct LDKSha256 *NONNULL_PTR a, const struct LDKSha256 *NONNULL_PTR b);
29906
29907 /**
29908  * Frees any resources used by the Description, if is_owned is set and inner is non-NULL.
29909  */
29910 void Description_free(struct LDKDescription this_obj);
29911
29912 /**
29913  * Creates a copy of the Description
29914  */
29915 struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
29916
29917 /**
29918  * Checks if two Descriptions contain equal inner contents.
29919  */
29920 uint64_t Description_hash(const struct LDKDescription *NONNULL_PTR o);
29921
29922 /**
29923  * Checks if two Descriptions contain equal inner contents.
29924  * This ignores pointers and is_owned flags and looks at the values in fields.
29925  * Two objects with NULL inner values will be considered "equal" here.
29926  */
29927 bool Description_eq(const struct LDKDescription *NONNULL_PTR a, const struct LDKDescription *NONNULL_PTR b);
29928
29929 /**
29930  * Frees any resources used by the PayeePubKey, if is_owned is set and inner is non-NULL.
29931  */
29932 void PayeePubKey_free(struct LDKPayeePubKey this_obj);
29933
29934 struct LDKPublicKey PayeePubKey_get_a(const struct LDKPayeePubKey *NONNULL_PTR this_ptr);
29935
29936 void PayeePubKey_set_a(struct LDKPayeePubKey *NONNULL_PTR this_ptr, struct LDKPublicKey val);
29937
29938 /**
29939  * Constructs a new PayeePubKey given each field
29940  */
29941 MUST_USE_RES struct LDKPayeePubKey PayeePubKey_new(struct LDKPublicKey a_arg);
29942
29943 /**
29944  * Creates a copy of the PayeePubKey
29945  */
29946 struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
29947
29948 /**
29949  * Checks if two PayeePubKeys contain equal inner contents.
29950  */
29951 uint64_t PayeePubKey_hash(const struct LDKPayeePubKey *NONNULL_PTR o);
29952
29953 /**
29954  * Checks if two PayeePubKeys contain equal inner contents.
29955  * This ignores pointers and is_owned flags and looks at the values in fields.
29956  * Two objects with NULL inner values will be considered "equal" here.
29957  */
29958 bool PayeePubKey_eq(const struct LDKPayeePubKey *NONNULL_PTR a, const struct LDKPayeePubKey *NONNULL_PTR b);
29959
29960 /**
29961  * Frees any resources used by the ExpiryTime, if is_owned is set and inner is non-NULL.
29962  */
29963 void ExpiryTime_free(struct LDKExpiryTime this_obj);
29964
29965 /**
29966  * Creates a copy of the ExpiryTime
29967  */
29968 struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
29969
29970 /**
29971  * Checks if two ExpiryTimes contain equal inner contents.
29972  */
29973 uint64_t ExpiryTime_hash(const struct LDKExpiryTime *NONNULL_PTR o);
29974
29975 /**
29976  * Checks if two ExpiryTimes contain equal inner contents.
29977  * This ignores pointers and is_owned flags and looks at the values in fields.
29978  * Two objects with NULL inner values will be considered "equal" here.
29979  */
29980 bool ExpiryTime_eq(const struct LDKExpiryTime *NONNULL_PTR a, const struct LDKExpiryTime *NONNULL_PTR b);
29981
29982 /**
29983  * Frees any resources used by the MinFinalCltvExpiry, if is_owned is set and inner is non-NULL.
29984  */
29985 void MinFinalCltvExpiry_free(struct LDKMinFinalCltvExpiry this_obj);
29986
29987 uint64_t MinFinalCltvExpiry_get_a(const struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr);
29988
29989 void MinFinalCltvExpiry_set_a(struct LDKMinFinalCltvExpiry *NONNULL_PTR this_ptr, uint64_t val);
29990
29991 /**
29992  * Constructs a new MinFinalCltvExpiry given each field
29993  */
29994 MUST_USE_RES struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_new(uint64_t a_arg);
29995
29996 /**
29997  * Creates a copy of the MinFinalCltvExpiry
29998  */
29999 struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
30000
30001 /**
30002  * Checks if two MinFinalCltvExpirys contain equal inner contents.
30003  */
30004 uint64_t MinFinalCltvExpiry_hash(const struct LDKMinFinalCltvExpiry *NONNULL_PTR o);
30005
30006 /**
30007  * Checks if two MinFinalCltvExpirys contain equal inner contents.
30008  * This ignores pointers and is_owned flags and looks at the values in fields.
30009  * Two objects with NULL inner values will be considered "equal" here.
30010  */
30011 bool MinFinalCltvExpiry_eq(const struct LDKMinFinalCltvExpiry *NONNULL_PTR a, const struct LDKMinFinalCltvExpiry *NONNULL_PTR b);
30012
30013 /**
30014  * Frees any resources used by the Fallback
30015  */
30016 void Fallback_free(struct LDKFallback this_ptr);
30017
30018 /**
30019  * Creates a copy of the Fallback
30020  */
30021 struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
30022
30023 /**
30024  * Utility method to constructs a new SegWitProgram-variant Fallback
30025  */
30026 struct LDKFallback Fallback_seg_wit_program(struct LDKu5 version, struct LDKCVec_u8Z program);
30027
30028 /**
30029  * Utility method to constructs a new PubKeyHash-variant Fallback
30030  */
30031 struct LDKFallback Fallback_pub_key_hash(struct LDKTwentyBytes a);
30032
30033 /**
30034  * Utility method to constructs a new ScriptHash-variant Fallback
30035  */
30036 struct LDKFallback Fallback_script_hash(struct LDKTwentyBytes a);
30037
30038 /**
30039  * Checks if two Fallbacks contain equal inner contents.
30040  */
30041 uint64_t Fallback_hash(const struct LDKFallback *NONNULL_PTR o);
30042
30043 /**
30044  * Checks if two Fallbacks contain equal inner contents.
30045  * This ignores pointers and is_owned flags and looks at the values in fields.
30046  */
30047 bool Fallback_eq(const struct LDKFallback *NONNULL_PTR a, const struct LDKFallback *NONNULL_PTR b);
30048
30049 /**
30050  * Frees any resources used by the InvoiceSignature, if is_owned is set and inner is non-NULL.
30051  */
30052 void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
30053
30054 /**
30055  * Creates a copy of the InvoiceSignature
30056  */
30057 struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
30058
30059 /**
30060  * Checks if two InvoiceSignatures contain equal inner contents.
30061  */
30062 uint64_t InvoiceSignature_hash(const struct LDKInvoiceSignature *NONNULL_PTR o);
30063
30064 /**
30065  * Checks if two InvoiceSignatures contain equal inner contents.
30066  * This ignores pointers and is_owned flags and looks at the values in fields.
30067  * Two objects with NULL inner values will be considered "equal" here.
30068  */
30069 bool InvoiceSignature_eq(const struct LDKInvoiceSignature *NONNULL_PTR a, const struct LDKInvoiceSignature *NONNULL_PTR b);
30070
30071 /**
30072  * Frees any resources used by the PrivateRoute, if is_owned is set and inner is non-NULL.
30073  */
30074 void PrivateRoute_free(struct LDKPrivateRoute this_obj);
30075
30076 /**
30077  * Creates a copy of the PrivateRoute
30078  */
30079 struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
30080
30081 /**
30082  * Checks if two PrivateRoutes contain equal inner contents.
30083  */
30084 uint64_t PrivateRoute_hash(const struct LDKPrivateRoute *NONNULL_PTR o);
30085
30086 /**
30087  * Checks if two PrivateRoutes contain equal inner contents.
30088  * This ignores pointers and is_owned flags and looks at the values in fields.
30089  * Two objects with NULL inner values will be considered "equal" here.
30090  */
30091 bool PrivateRoute_eq(const struct LDKPrivateRoute *NONNULL_PTR a, const struct LDKPrivateRoute *NONNULL_PTR b);
30092
30093 /**
30094  * Disassembles the `SignedRawInvoice` into its three parts:
30095  *  1. raw invoice
30096  *  2. hash of the raw invoice
30097  *  3. signature
30098  */
30099 MUST_USE_RES struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ SignedRawInvoice_into_parts(struct LDKSignedRawInvoice this_arg);
30100
30101 /**
30102  * The `RawInvoice` which was signed.
30103  */
30104 MUST_USE_RES struct LDKRawInvoice SignedRawInvoice_raw_invoice(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
30105
30106 /**
30107  * The hash of the `RawInvoice` that was signed.
30108  */
30109 MUST_USE_RES const uint8_t (*SignedRawInvoice_signable_hash(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg))[32];
30110
30111 /**
30112  * InvoiceSignature for the invoice.
30113  */
30114 MUST_USE_RES struct LDKInvoiceSignature SignedRawInvoice_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
30115
30116 /**
30117  * Recovers the public key used for signing the invoice from the recoverable signature.
30118  */
30119 MUST_USE_RES struct LDKCResult_PayeePubKeyErrorZ SignedRawInvoice_recover_payee_pub_key(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
30120
30121 /**
30122  * Checks if the signature is valid for the included payee public key or if none exists if it's
30123  * valid for the recovered signature (which should always be true?).
30124  */
30125 MUST_USE_RES bool SignedRawInvoice_check_signature(const struct LDKSignedRawInvoice *NONNULL_PTR this_arg);
30126
30127 /**
30128  * Calculate the hash of the encoded `RawInvoice` which should be signed.
30129  */
30130 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_signable_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30131
30132 /**
30133  *
30134  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30135  */
30136 MUST_USE_RES struct LDKSha256 RawInvoice_payment_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30137
30138 /**
30139  *
30140  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30141  */
30142 MUST_USE_RES struct LDKDescription RawInvoice_description(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30143
30144 /**
30145  *
30146  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30147  */
30148 MUST_USE_RES struct LDKPayeePubKey RawInvoice_payee_pub_key(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30149
30150 /**
30151  *
30152  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30153  */
30154 MUST_USE_RES struct LDKSha256 RawInvoice_description_hash(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30155
30156 /**
30157  *
30158  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30159  */
30160 MUST_USE_RES struct LDKExpiryTime RawInvoice_expiry_time(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30161
30162 /**
30163  *
30164  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30165  */
30166 MUST_USE_RES struct LDKMinFinalCltvExpiry RawInvoice_min_final_cltv_expiry(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30167
30168 /**
30169  *
30170  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30171  */
30172 MUST_USE_RES struct LDKThirtyTwoBytes RawInvoice_payment_secret(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30173
30174 /**
30175  *
30176  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30177  */
30178 MUST_USE_RES struct LDKInvoiceFeatures RawInvoice_features(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30179
30180 MUST_USE_RES struct LDKCVec_PrivateRouteZ RawInvoice_private_routes(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30181
30182 MUST_USE_RES struct LDKCOption_u64Z RawInvoice_amount_pico_btc(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30183
30184 MUST_USE_RES enum LDKCurrency RawInvoice_currency(const struct LDKRawInvoice *NONNULL_PTR this_arg);
30185
30186 /**
30187  * Creates a `PositiveTimestamp` from a Unix timestamp in the range `0..=MAX_TIMESTAMP`.
30188  *
30189  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
30190  */
30191 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_unix_timestamp(uint64_t unix_seconds);
30192
30193 /**
30194  * Creates a `PositiveTimestamp` from a [`SystemTime`] with a corresponding Unix timestamp in
30195  * the range `0..=MAX_TIMESTAMP`.
30196  *
30197  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
30198  */
30199 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_system_time(uint64_t time);
30200
30201 /**
30202  * Creates a `PositiveTimestamp` from a [`Duration`] since the Unix epoch in the range
30203  * `0..=MAX_TIMESTAMP`.
30204  *
30205  * Otherwise, returns a [`CreationError::TimestampOutOfBounds`].
30206  */
30207 MUST_USE_RES struct LDKCResult_PositiveTimestampCreationErrorZ PositiveTimestamp_from_duration_since_epoch(uint64_t duration);
30208
30209 /**
30210  * Returns the Unix timestamp representing the stored time
30211  */
30212 MUST_USE_RES uint64_t PositiveTimestamp_as_unix_timestamp(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
30213
30214 /**
30215  * Returns the duration of the stored time since the Unix epoch
30216  */
30217 MUST_USE_RES uint64_t PositiveTimestamp_as_duration_since_epoch(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
30218
30219 /**
30220  * Returns the [`SystemTime`] representing the stored time
30221  */
30222 MUST_USE_RES uint64_t PositiveTimestamp_as_time(const struct LDKPositiveTimestamp *NONNULL_PTR this_arg);
30223
30224 /**
30225  * Transform the `Invoice` into it's unchecked version
30226  */
30227 MUST_USE_RES struct LDKSignedRawInvoice Invoice_into_signed_raw(struct LDKInvoice this_arg);
30228
30229 /**
30230  * Check that the invoice is signed correctly and that key recovery works
30231  */
30232 MUST_USE_RES struct LDKCResult_NoneSemanticErrorZ Invoice_check_signature(const struct LDKInvoice *NONNULL_PTR this_arg);
30233
30234 /**
30235  * Constructs an `Invoice` from a `SignedRawInvoice` by checking all its invariants.
30236  * ```
30237  * use lightning_invoice::*;
30238  *
30239  * let invoice = \"lnbc100p1psj9jhxdqud3jxktt5w46x7unfv9kz6mn0v3jsnp4q0d3p2sfluzdx45tqcs\\
30240  * h2pu5qc7lgq0xs578ngs6s0s68ua4h7cvspp5q6rmq35js88zp5dvwrv9m459tnk2zunwj5jalqtyxqulh0l\\
30241  * 5gflssp5nf55ny5gcrfl30xuhzj3nphgj27rstekmr9fw3ny5989s300gyus9qyysgqcqpcrzjqw2sxwe993\\
30242  * h5pcm4dxzpvttgza8zhkqxpgffcrf5v25nwpr3cmfg7z54kuqq8rgqqqqqqqq2qqqqq9qq9qrzjqd0ylaqcl\\
30243  * j9424x9m8h2vcukcgnm6s56xfgu3j78zyqzhgs4hlpzvznlugqq9vsqqqqqqqlgqqqqqeqq9qrzjqwldmj9d\\
30244  * ha74df76zhx6l9we0vjdquygcdt3kssupehe64g6yyp5yz5rhuqqwccqqyqqqqlgqqqqjcqq9qrzjqf9e58a\\
30245  * guqr0rcun0ajlvmzq3ek63cw2w282gv3z5uupmuwvgjtq2z55qsqqg6qqqyqqqrtnqqqzq3cqygrzjqvphms\\
30246  * ywntrrhqjcraumvc4y6r8v4z5v593trte429v4hredj7ms5z52usqq9ngqqqqqqqlgqqqqqqgq9qrzjq2v0v\\
30247  * p62g49p7569ev48cmulecsxe59lvaw3wlxm7r982zxa9zzj7z5l0cqqxusqqyqqqqlgqqqqqzsqygarl9fh3\\
30248  * 8s0gyuxjjgux34w75dnc6xp2l35j7es3jd4ugt3lu0xzre26yg5m7ke54n2d5sym4xcmxtl8238xxvw5h5h5\\
30249  * j5r6drg6k6zcqj0fcwg\";
30250  *
30251  * let signed = invoice.parse::<SignedRawInvoice>().unwrap();
30252  *
30253  * assert!(Invoice::from_signed(signed).is_ok());
30254  * ```
30255  */
30256 MUST_USE_RES struct LDKCResult_InvoiceSemanticErrorZ Invoice_from_signed(struct LDKSignedRawInvoice signed_invoice);
30257
30258 /**
30259  * Returns the `Invoice`'s timestamp (should equal its creation time)
30260  */
30261 MUST_USE_RES uint64_t Invoice_timestamp(const struct LDKInvoice *NONNULL_PTR this_arg);
30262
30263 /**
30264  * Returns the `Invoice`'s timestamp as a duration since the Unix epoch
30265  */
30266 MUST_USE_RES uint64_t Invoice_duration_since_epoch(const struct LDKInvoice *NONNULL_PTR this_arg);
30267
30268 /**
30269  * Returns the hash to which we will receive the preimage on completion of the payment
30270  */
30271 MUST_USE_RES const uint8_t (*Invoice_payment_hash(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
30272
30273 /**
30274  * Get the payee's public key if one was included in the invoice
30275  *
30276  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30277  */
30278 MUST_USE_RES struct LDKPublicKey Invoice_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
30279
30280 /**
30281  * Get the payment secret if one was included in the invoice
30282  */
30283 MUST_USE_RES const uint8_t (*Invoice_payment_secret(const struct LDKInvoice *NONNULL_PTR this_arg))[32];
30284
30285 /**
30286  * Get the invoice features if they were included in the invoice
30287  *
30288  * Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
30289  */
30290 MUST_USE_RES struct LDKInvoiceFeatures Invoice_features(const struct LDKInvoice *NONNULL_PTR this_arg);
30291
30292 /**
30293  * Recover the payee's public key (only to be used if none was included in the invoice)
30294  */
30295 MUST_USE_RES struct LDKPublicKey Invoice_recover_payee_pub_key(const struct LDKInvoice *NONNULL_PTR this_arg);
30296
30297 /**
30298  * Returns the invoice's expiry time, if present, otherwise [`DEFAULT_EXPIRY_TIME`].
30299  */
30300 MUST_USE_RES uint64_t Invoice_expiry_time(const struct LDKInvoice *NONNULL_PTR this_arg);
30301
30302 /**
30303  * Returns whether the invoice has expired.
30304  */
30305 MUST_USE_RES bool Invoice_is_expired(const struct LDKInvoice *NONNULL_PTR this_arg);
30306
30307 /**
30308  * Returns whether the expiry time would pass at the given point in time.
30309  * `at_time` is the timestamp as a duration since the Unix epoch.
30310  */
30311 MUST_USE_RES bool Invoice_would_expire(const struct LDKInvoice *NONNULL_PTR this_arg, uint64_t at_time);
30312
30313 /**
30314  * Returns the invoice's `min_final_cltv_expiry` time, if present, otherwise
30315  * [`DEFAULT_MIN_FINAL_CLTV_EXPIRY`].
30316  */
30317 MUST_USE_RES uint64_t Invoice_min_final_cltv_expiry(const struct LDKInvoice *NONNULL_PTR this_arg);
30318
30319 /**
30320  * Returns a list of all routes included in the invoice
30321  */
30322 MUST_USE_RES struct LDKCVec_PrivateRouteZ Invoice_private_routes(const struct LDKInvoice *NONNULL_PTR this_arg);
30323
30324 /**
30325  * Returns a list of all routes included in the invoice as the underlying hints
30326  */
30327 MUST_USE_RES struct LDKCVec_RouteHintZ Invoice_route_hints(const struct LDKInvoice *NONNULL_PTR this_arg);
30328
30329 /**
30330  * Returns the currency for which the invoice was issued
30331  */
30332 MUST_USE_RES enum LDKCurrency Invoice_currency(const struct LDKInvoice *NONNULL_PTR this_arg);
30333
30334 /**
30335  * Returns the amount if specified in the invoice as millisatoshis.
30336  */
30337 MUST_USE_RES struct LDKCOption_u64Z Invoice_amount_milli_satoshis(const struct LDKInvoice *NONNULL_PTR this_arg);
30338
30339 /**
30340  * Creates a new `Description` if `description` is at most 1023 __bytes__ long,
30341  * returns `CreationError::DescriptionTooLong` otherwise
30342  *
30343  * Please note that single characters may use more than one byte due to UTF8 encoding.
30344  */
30345 MUST_USE_RES struct LDKCResult_DescriptionCreationErrorZ Description_new(struct LDKStr description);
30346
30347 /**
30348  * Returns the underlying description `String`
30349  */
30350 MUST_USE_RES struct LDKStr Description_into_inner(struct LDKDescription this_arg);
30351
30352 /**
30353  * Construct an `ExpiryTime` from seconds.
30354  */
30355 MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_seconds(uint64_t seconds);
30356
30357 /**
30358  * Construct an `ExpiryTime` from a `Duration`.
30359  */
30360 MUST_USE_RES struct LDKExpiryTime ExpiryTime_from_duration(uint64_t duration);
30361
30362 /**
30363  * Returns the expiry time in seconds
30364  */
30365 MUST_USE_RES uint64_t ExpiryTime_as_seconds(const struct LDKExpiryTime *NONNULL_PTR this_arg);
30366
30367 /**
30368  * Returns a reference to the underlying `Duration` (=expiry time)
30369  */
30370 MUST_USE_RES uint64_t ExpiryTime_as_duration(const struct LDKExpiryTime *NONNULL_PTR this_arg);
30371
30372 /**
30373  * Creates a new (partial) route from a list of hops
30374  */
30375 MUST_USE_RES struct LDKCResult_PrivateRouteCreationErrorZ PrivateRoute_new(struct LDKRouteHint hops);
30376
30377 /**
30378  * Returns the underlying list of hops
30379  */
30380 MUST_USE_RES struct LDKRouteHint PrivateRoute_into_inner(struct LDKPrivateRoute this_arg);
30381
30382 /**
30383  * Creates a copy of the CreationError
30384  */
30385 enum LDKCreationError CreationError_clone(const enum LDKCreationError *NONNULL_PTR orig);
30386
30387 /**
30388  * Utility method to constructs a new DescriptionTooLong-variant CreationError
30389  */
30390 enum LDKCreationError CreationError_description_too_long(void);
30391
30392 /**
30393  * Utility method to constructs a new RouteTooLong-variant CreationError
30394  */
30395 enum LDKCreationError CreationError_route_too_long(void);
30396
30397 /**
30398  * Utility method to constructs a new TimestampOutOfBounds-variant CreationError
30399  */
30400 enum LDKCreationError CreationError_timestamp_out_of_bounds(void);
30401
30402 /**
30403  * Utility method to constructs a new InvalidAmount-variant CreationError
30404  */
30405 enum LDKCreationError CreationError_invalid_amount(void);
30406
30407 /**
30408  * Utility method to constructs a new MissingRouteHints-variant CreationError
30409  */
30410 enum LDKCreationError CreationError_missing_route_hints(void);
30411
30412 /**
30413  * Checks if two CreationErrors contain equal inner contents.
30414  * This ignores pointers and is_owned flags and looks at the values in fields.
30415  */
30416 bool CreationError_eq(const enum LDKCreationError *NONNULL_PTR a, const enum LDKCreationError *NONNULL_PTR b);
30417
30418 /**
30419  * Get the string representation of a CreationError object
30420  */
30421 struct LDKStr CreationError_to_str(const enum LDKCreationError *NONNULL_PTR o);
30422
30423 /**
30424  * Creates a copy of the SemanticError
30425  */
30426 enum LDKSemanticError SemanticError_clone(const enum LDKSemanticError *NONNULL_PTR orig);
30427
30428 /**
30429  * Utility method to constructs a new NoPaymentHash-variant SemanticError
30430  */
30431 enum LDKSemanticError SemanticError_no_payment_hash(void);
30432
30433 /**
30434  * Utility method to constructs a new MultiplePaymentHashes-variant SemanticError
30435  */
30436 enum LDKSemanticError SemanticError_multiple_payment_hashes(void);
30437
30438 /**
30439  * Utility method to constructs a new NoDescription-variant SemanticError
30440  */
30441 enum LDKSemanticError SemanticError_no_description(void);
30442
30443 /**
30444  * Utility method to constructs a new MultipleDescriptions-variant SemanticError
30445  */
30446 enum LDKSemanticError SemanticError_multiple_descriptions(void);
30447
30448 /**
30449  * Utility method to constructs a new NoPaymentSecret-variant SemanticError
30450  */
30451 enum LDKSemanticError SemanticError_no_payment_secret(void);
30452
30453 /**
30454  * Utility method to constructs a new MultiplePaymentSecrets-variant SemanticError
30455  */
30456 enum LDKSemanticError SemanticError_multiple_payment_secrets(void);
30457
30458 /**
30459  * Utility method to constructs a new InvalidFeatures-variant SemanticError
30460  */
30461 enum LDKSemanticError SemanticError_invalid_features(void);
30462
30463 /**
30464  * Utility method to constructs a new InvalidRecoveryId-variant SemanticError
30465  */
30466 enum LDKSemanticError SemanticError_invalid_recovery_id(void);
30467
30468 /**
30469  * Utility method to constructs a new InvalidSignature-variant SemanticError
30470  */
30471 enum LDKSemanticError SemanticError_invalid_signature(void);
30472
30473 /**
30474  * Utility method to constructs a new ImpreciseAmount-variant SemanticError
30475  */
30476 enum LDKSemanticError SemanticError_imprecise_amount(void);
30477
30478 /**
30479  * Checks if two SemanticErrors contain equal inner contents.
30480  * This ignores pointers and is_owned flags and looks at the values in fields.
30481  */
30482 bool SemanticError_eq(const enum LDKSemanticError *NONNULL_PTR a, const enum LDKSemanticError *NONNULL_PTR b);
30483
30484 /**
30485  * Get the string representation of a SemanticError object
30486  */
30487 struct LDKStr SemanticError_to_str(const enum LDKSemanticError *NONNULL_PTR o);
30488
30489 /**
30490  * Frees any resources used by the SignOrCreationError
30491  */
30492 void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
30493
30494 /**
30495  * Creates a copy of the SignOrCreationError
30496  */
30497 struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
30498
30499 /**
30500  * Utility method to constructs a new SignError-variant SignOrCreationError
30501  */
30502 struct LDKSignOrCreationError SignOrCreationError_sign_error(void);
30503
30504 /**
30505  * Utility method to constructs a new CreationError-variant SignOrCreationError
30506  */
30507 struct LDKSignOrCreationError SignOrCreationError_creation_error(enum LDKCreationError a);
30508
30509 /**
30510  * Checks if two SignOrCreationErrors contain equal inner contents.
30511  * This ignores pointers and is_owned flags and looks at the values in fields.
30512  */
30513 bool SignOrCreationError_eq(const struct LDKSignOrCreationError *NONNULL_PTR a, const struct LDKSignOrCreationError *NONNULL_PTR b);
30514
30515 /**
30516  * Get the string representation of a SignOrCreationError object
30517  */
30518 struct LDKStr SignOrCreationError_to_str(const struct LDKSignOrCreationError *NONNULL_PTR o);
30519
30520 /**
30521  * Frees any resources used by the InvoicePayer, if is_owned is set and inner is non-NULL.
30522  */
30523 void InvoicePayer_free(struct LDKInvoicePayer this_obj);
30524
30525 /**
30526  * Calls the free function if one is set
30527  */
30528 void Payer_free(struct LDKPayer this_ptr);
30529
30530 /**
30531  * Calls the free function if one is set
30532  */
30533 void Router_free(struct LDKRouter this_ptr);
30534
30535 /**
30536  * Frees any resources used by the Retry
30537  */
30538 void Retry_free(struct LDKRetry this_ptr);
30539
30540 /**
30541  * Creates a copy of the Retry
30542  */
30543 struct LDKRetry Retry_clone(const struct LDKRetry *NONNULL_PTR orig);
30544
30545 /**
30546  * Utility method to constructs a new Attempts-variant Retry
30547  */
30548 struct LDKRetry Retry_attempts(uintptr_t a);
30549
30550 /**
30551  * Utility method to constructs a new Timeout-variant Retry
30552  */
30553 struct LDKRetry Retry_timeout(uint64_t a);
30554
30555 /**
30556  * Checks if two Retrys contain equal inner contents.
30557  * This ignores pointers and is_owned flags and looks at the values in fields.
30558  */
30559 bool Retry_eq(const struct LDKRetry *NONNULL_PTR a, const struct LDKRetry *NONNULL_PTR b);
30560
30561 /**
30562  * Checks if two Retrys contain equal inner contents.
30563  */
30564 uint64_t Retry_hash(const struct LDKRetry *NONNULL_PTR o);
30565
30566 /**
30567  * Frees any resources used by the PaymentError
30568  */
30569 void PaymentError_free(struct LDKPaymentError this_ptr);
30570
30571 /**
30572  * Creates a copy of the PaymentError
30573  */
30574 struct LDKPaymentError PaymentError_clone(const struct LDKPaymentError *NONNULL_PTR orig);
30575
30576 /**
30577  * Utility method to constructs a new Invoice-variant PaymentError
30578  */
30579 struct LDKPaymentError PaymentError_invoice(struct LDKStr a);
30580
30581 /**
30582  * Utility method to constructs a new Routing-variant PaymentError
30583  */
30584 struct LDKPaymentError PaymentError_routing(struct LDKLightningError a);
30585
30586 /**
30587  * Utility method to constructs a new Sending-variant PaymentError
30588  */
30589 struct LDKPaymentError PaymentError_sending(struct LDKPaymentSendFailure a);
30590
30591 /**
30592  * Creates an invoice payer that retries failed payment paths.
30593  *
30594  * Will forward any [`Event::PaymentPathFailed`] events to the decorated `event_handler` once
30595  * `retry` has been exceeded for a given [`Invoice`].
30596  */
30597 MUST_USE_RES struct LDKInvoicePayer InvoicePayer_new(struct LDKPayer payer, struct LDKRouter router, struct LDKLogger logger, struct LDKEventHandler event_handler, struct LDKRetry retry);
30598
30599 /**
30600  * Pays the given [`Invoice`], caching it for later use in case a retry is needed.
30601  *
30602  * You should ensure that the `invoice.payment_hash()` is unique and the same payment_hash has
30603  * never been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so
30604  * for you.
30605  */
30606 MUST_USE_RES struct LDKCResult_PaymentIdPaymentErrorZ InvoicePayer_pay_invoice(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const struct LDKInvoice *NONNULL_PTR invoice);
30607
30608 /**
30609  * Pays the given zero-value [`Invoice`] using the given amount, caching it for later use in
30610  * case a retry is needed.
30611  *
30612  * You should ensure that the `invoice.payment_hash()` is unique and the same payment_hash has
30613  * never been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so
30614  * for you.
30615  */
30616 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);
30617
30618 /**
30619  * Pays `pubkey` an amount using the hash of the given preimage, caching it for later use in
30620  * case a retry is needed.
30621  *
30622  * You should ensure that `payment_preimage` is unique and that its `payment_hash` has never
30623  * been paid before. Because [`InvoicePayer`] is stateless no effort is made to do so for you.
30624  */
30625 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);
30626
30627 /**
30628  * Removes the payment cached by the given payment hash.
30629  *
30630  * Should be called once a payment has failed or succeeded if not using [`InvoicePayer`] as an
30631  * [`EventHandler`]. Otherwise, calling this method is unnecessary.
30632  */
30633 void InvoicePayer_remove_cached_payment(const struct LDKInvoicePayer *NONNULL_PTR this_arg, const uint8_t (*payment_hash)[32]);
30634
30635 /**
30636  * Constructs a new EventHandler which calls the relevant methods on this_arg.
30637  * This copies the `inner` pointer in this_arg and thus the returned EventHandler must be freed before this_arg is
30638  */
30639 struct LDKEventHandler InvoicePayer_as_EventHandler(const struct LDKInvoicePayer *NONNULL_PTR this_arg);
30640
30641 /**
30642  * Frees any resources used by the InFlightHtlcs, if is_owned is set and inner is non-NULL.
30643  */
30644 void InFlightHtlcs_free(struct LDKInFlightHtlcs this_obj);
30645
30646 /**
30647  * Returns liquidity in msat given the public key of the HTLC source, target, and short channel
30648  * id.
30649  */
30650 MUST_USE_RES struct LDKCOption_u64Z InFlightHtlcs_used_liquidity_msat(const struct LDKInFlightHtlcs *NONNULL_PTR this_arg, const struct LDKNodeId *NONNULL_PTR source, const struct LDKNodeId *NONNULL_PTR target, uint64_t channel_scid);
30651
30652 /**
30653  * Serialize the InFlightHtlcs object into a byte array which can be read by InFlightHtlcs_read
30654  */
30655 struct LDKCVec_u8Z InFlightHtlcs_write(const struct LDKInFlightHtlcs *NONNULL_PTR obj);
30656
30657 /**
30658  * Read a InFlightHtlcs from a byte array, created by InFlightHtlcs_write
30659  */
30660 struct LDKCResult_InFlightHtlcsDecodeErrorZ InFlightHtlcs_read(struct LDKu8slice ser);
30661
30662 /**
30663  * Utility to create an invoice that can be paid to one of multiple nodes, or a \"phantom invoice.\"
30664  * See [`PhantomKeysManager`] for more information on phantom node payments.
30665  *
30666  * `phantom_route_hints` parameter:
30667  * * Contains channel info for all nodes participating in the phantom invoice
30668  * * Entries are retrieved from a call to [`ChannelManager::get_phantom_route_hints`] on each
30669  *   participating node
30670  * * It is fine to cache `phantom_route_hints` and reuse it across invoices, as long as the data is
30671  *   updated when a channel becomes disabled or closes
30672  * * Note that if too many channels are included in [`PhantomRouteHints::channels`], the invoice
30673  *   may be too long for QR code scanning. To fix this, `PhantomRouteHints::channels` may be pared
30674  *   down
30675  *
30676  * `payment_hash` can be specified if you have a specific need for a custom payment hash (see the difference
30677  * between [`ChannelManager::create_inbound_payment`] and [`ChannelManager::create_inbound_payment_for_hash`]).
30678  * If `None` is provided for `payment_hash`, then one will be created.
30679  *
30680  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
30681  * in excess of the current time.
30682  *
30683  * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
30684  * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
30685  * requirement).
30686  *
30687  * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
30688  * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
30689  * [`ChannelManager::create_inbound_payment`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment
30690  * [`ChannelManager::create_inbound_payment_for_hash`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
30691  * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
30692  *
30693  * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
30694  */
30695 struct LDKCResult_InvoiceSignOrCreationErrorZ create_phantom_invoice(struct LDKCOption_u64Z amt_msat, struct LDKThirtyTwoBytes payment_hash, struct LDKStr description, uint32_t invoice_expiry_delta_secs, struct LDKCVec_PhantomRouteHintsZ phantom_route_hints, struct LDKKeysInterface keys_manager, enum LDKCurrency network);
30696
30697 /**
30698  * Utility to create an invoice that can be paid to one of multiple nodes, or a \"phantom invoice.\"
30699  * See [`PhantomKeysManager`] for more information on phantom node payments.
30700  *
30701  * `phantom_route_hints` parameter:
30702  * * Contains channel info for all nodes participating in the phantom invoice
30703  * * Entries are retrieved from a call to [`ChannelManager::get_phantom_route_hints`] on each
30704  *   participating node
30705  * * It is fine to cache `phantom_route_hints` and reuse it across invoices, as long as the data is
30706  *   updated when a channel becomes disabled or closes
30707  * * Note that if too many channels are included in [`PhantomRouteHints::channels`], the invoice
30708  *   may be too long for QR code scanning. To fix this, `PhantomRouteHints::channels` may be pared
30709  *   down
30710  *
30711  * `description_hash` is a SHA-256 hash of the description text
30712  *
30713  * `payment_hash` can be specified if you have a specific need for a custom payment hash (see the difference
30714  * between [`ChannelManager::create_inbound_payment`] and [`ChannelManager::create_inbound_payment_for_hash`]).
30715  * If `None` is provided for `payment_hash`, then one will be created.
30716  *
30717  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
30718  * in excess of the current time.
30719  *
30720  * Note that the provided `keys_manager`'s `KeysInterface` implementation must support phantom
30721  * invoices in its `sign_invoice` implementation ([`PhantomKeysManager`] satisfies this
30722  * requirement).
30723  *
30724  * [`PhantomKeysManager`]: lightning::chain::keysinterface::PhantomKeysManager
30725  * [`ChannelManager::get_phantom_route_hints`]: lightning::ln::channelmanager::ChannelManager::get_phantom_route_hints
30726  * [`ChannelManager::create_inbound_payment`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment
30727  * [`ChannelManager::create_inbound_payment_for_hash`]: lightning::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
30728  * [`PhantomRouteHints::channels`]: lightning::ln::channelmanager::PhantomRouteHints::channels
30729  *
30730  * Note that payment_hash (or a relevant inner pointer) may be NULL or all-0s to represent None
30731  */
30732 struct LDKCResult_InvoiceSignOrCreationErrorZ create_phantom_invoice_with_description_hash(struct LDKCOption_u64Z amt_msat, struct LDKThirtyTwoBytes payment_hash, uint32_t invoice_expiry_delta_secs, struct LDKSha256 description_hash, struct LDKCVec_PhantomRouteHintsZ phantom_route_hints, struct LDKKeysInterface keys_manager, enum LDKCurrency network);
30733
30734 /**
30735  * Utility to construct an invoice. Generally, unless you want to do something like a custom
30736  * cltv_expiry, this is what you should be using to create an invoice. The reason being, this
30737  * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
30738  * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
30739  * that the payment secret is valid when the invoice is paid.
30740  *
30741  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
30742  * in excess of the current time.
30743  */
30744 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, uint32_t invoice_expiry_delta_secs);
30745
30746 /**
30747  * Utility to construct an invoice. Generally, unless you want to do something like a custom
30748  * cltv_expiry, this is what you should be using to create an invoice. The reason being, this
30749  * method stores the invoice's payment secret and preimage in `ChannelManager`, so (a) the user
30750  * doesn't have to store preimage/payment secret information and (b) `ChannelManager` can verify
30751  * that the payment secret is valid when the invoice is paid.
30752  * Use this variant if you want to pass the `description_hash` to the invoice.
30753  *
30754  * `invoice_expiry_delta_secs` describes the number of seconds that the invoice is valid for
30755  * in excess of the current time.
30756  */
30757 struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash, uint32_t invoice_expiry_delta_secs);
30758
30759 /**
30760  * See [`create_invoice_from_channelmanager_with_description_hash`]
30761  * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
30762  * available and the current time is supplied by the caller.
30763  */
30764 struct LDKCResult_InvoiceSignOrCreationErrorZ create_invoice_from_channelmanager_with_description_hash_and_duration_since_epoch(const struct LDKChannelManager *NONNULL_PTR channelmanager, struct LDKKeysInterface keys_manager, enum LDKCurrency network, struct LDKCOption_u64Z amt_msat, struct LDKSha256 description_hash, uint64_t duration_since_epoch, uint32_t invoice_expiry_delta_secs);
30765
30766 /**
30767  * See [`create_invoice_from_channelmanager`]
30768  * This version can be used in a `no_std` environment, where [`std::time::SystemTime`] is not
30769  * available and the current time is supplied by the caller.
30770  */
30771 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, uint32_t invoice_expiry_delta_secs);
30772
30773 /**
30774  * Frees any resources used by the DefaultRouter, if is_owned is set and inner is non-NULL.
30775  */
30776 void DefaultRouter_free(struct LDKDefaultRouter this_obj);
30777
30778 /**
30779  * Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source
30780  * `random_seed_bytes`.
30781  */
30782 MUST_USE_RES struct LDKDefaultRouter DefaultRouter_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph, struct LDKLogger logger, struct LDKThirtyTwoBytes random_seed_bytes, struct LDKLockableScore scorer);
30783
30784 /**
30785  * Constructs a new Router which calls the relevant methods on this_arg.
30786  * This copies the `inner` pointer in this_arg and thus the returned Router must be freed before this_arg is
30787  */
30788 struct LDKRouter DefaultRouter_as_Router(const struct LDKDefaultRouter *NONNULL_PTR this_arg);
30789
30790 /**
30791  * Constructs a new Payer which calls the relevant methods on this_arg.
30792  * This copies the `inner` pointer in this_arg and thus the returned Payer must be freed before this_arg is
30793  */
30794 struct LDKPayer ChannelManager_as_Payer(const struct LDKChannelManager *NONNULL_PTR this_arg);
30795
30796 /**
30797  * Read a SiPrefix object from a string
30798  */
30799 struct LDKCResult_SiPrefixParseErrorZ SiPrefix_from_str(struct LDKStr s);
30800
30801 /**
30802  * Read a Invoice object from a string
30803  */
30804 struct LDKCResult_InvoiceParseOrSemanticErrorZ Invoice_from_str(struct LDKStr s);
30805
30806 /**
30807  * Read a SignedRawInvoice object from a string
30808  */
30809 struct LDKCResult_SignedRawInvoiceParseErrorZ SignedRawInvoice_from_str(struct LDKStr s);
30810
30811 /**
30812  * Get the string representation of a ParseError object
30813  */
30814 struct LDKStr ParseError_to_str(const struct LDKParseError *NONNULL_PTR o);
30815
30816 /**
30817  * Get the string representation of a ParseOrSemanticError object
30818  */
30819 struct LDKStr ParseOrSemanticError_to_str(const struct LDKParseOrSemanticError *NONNULL_PTR o);
30820
30821 /**
30822  * Get the string representation of a Invoice object
30823  */
30824 struct LDKStr Invoice_to_str(const struct LDKInvoice *NONNULL_PTR o);
30825
30826 /**
30827  * Get the string representation of a SignedRawInvoice object
30828  */
30829 struct LDKStr SignedRawInvoice_to_str(const struct LDKSignedRawInvoice *NONNULL_PTR o);
30830
30831 /**
30832  * Get the string representation of a Currency object
30833  */
30834 struct LDKStr Currency_to_str(const enum LDKCurrency *NONNULL_PTR o);
30835
30836 /**
30837  * Get the string representation of a SiPrefix object
30838  */
30839 struct LDKStr SiPrefix_to_str(const enum LDKSiPrefix *NONNULL_PTR o);
30840
30841 /**
30842  * Frees any resources used by the RapidGossipSync, if is_owned is set and inner is non-NULL.
30843  */
30844 void RapidGossipSync_free(struct LDKRapidGossipSync this_obj);
30845
30846 /**
30847  * Instantiate a new [`RapidGossipSync`] instance.
30848  */
30849 MUST_USE_RES struct LDKRapidGossipSync RapidGossipSync_new(const struct LDKNetworkGraph *NONNULL_PTR network_graph);
30850
30851 /**
30852  * Update network graph from binary data.
30853  * Returns the last sync timestamp to be used the next time rapid sync data is queried.
30854  *
30855  * `network_graph`: network graph to be updated
30856  *
30857  * `update_data`: `&[u8]` binary stream that comprises the update data
30858  */
30859 MUST_USE_RES struct LDKCResult_u32GraphSyncErrorZ RapidGossipSync_update_network_graph(const struct LDKRapidGossipSync *NONNULL_PTR this_arg, struct LDKu8slice update_data);
30860
30861 /**
30862  * Returns whether a rapid gossip sync has completed at least once.
30863  */
30864 MUST_USE_RES bool RapidGossipSync_is_initial_sync_complete(const struct LDKRapidGossipSync *NONNULL_PTR this_arg);
30865
30866 /**
30867  * Frees any resources used by the GraphSyncError
30868  */
30869 void GraphSyncError_free(struct LDKGraphSyncError this_ptr);
30870
30871 /**
30872  * Creates a copy of the GraphSyncError
30873  */
30874 struct LDKGraphSyncError GraphSyncError_clone(const struct LDKGraphSyncError *NONNULL_PTR orig);
30875
30876 /**
30877  * Utility method to constructs a new DecodeError-variant GraphSyncError
30878  */
30879 struct LDKGraphSyncError GraphSyncError_decode_error(struct LDKDecodeError a);
30880
30881 /**
30882  * Utility method to constructs a new LightningError-variant GraphSyncError
30883  */
30884 struct LDKGraphSyncError GraphSyncError_lightning_error(struct LDKLightningError a);
30885
30886 #endif /* LDK_C_BINDINGS_H */
30887
30888 #include "ldk_ver.h"