run: |
apt-get update
apt-get -y dist-upgrade
- apt-get -y install cargo valgrind lld git g++ clang
+ apt-get -y install cargo libstd-rust-dev-wasm32 valgrind lld git g++ clang
- name: Checkout source code
uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
- name: Sanity test bindings against Cargo.toml RL
working-directory: lightning-c-bindings
- run: cargo check
+ run: |
+ # Note that the version tags aren't checked into git
+ touch src/version.rs
+ cargo check
- name: Install cbindgen
run: cargo install --force cbindgen
- name: Checkout Rust-Lightning git
writeln!(out, "#![allow(unused_braces)]").unwrap();
// TODO: We need to map deny(missing_docs) in the source crate(s)
//writeln!(out, "#![deny(missing_docs)]").unwrap();
+ writeln!(out, "pub mod version;").unwrap();
writeln!(out, "pub mod c_types;").unwrap();
writeln!(out, "pub mod bitcoin;").unwrap();
} else {
ORIG_PWD="$(pwd)"
cd "$1"
LIGHTNING_PATH="$(pwd)"
+LIGHTNING_GIT="$(git describe --tag --dirty)"
cd "$ORIG_PWD"
# Generate (and reasonably test) C bindings
mv lightning-c-bindings/src/c_types/mod.rs ./
mv lightning-c-bindings/src/bitcoin ./
+# Before we try to sed the Cargo.toml, generate version define tags
+# (ignoring any files that we're about to generate)
+
+git checkout lightning-c-bindings/src
+git checkout lightning-c-bindings/include
+BINDINGS_GIT="$(git describe --tag --dirty)"
+echo -e "#ifndef _LDK_HEADER_VER" > lightning-c-bindings/include/ldk_ver.h
+echo -e "static inline int _ldk_strncmp(const char *s1, const char *s2, uint64_t n) {" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\tif (n && *s1 != *s2) return 1;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\twhile (n && *s1 != 0 && *s2 != 0) {" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t\ts1++; s2++; n--;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t\tif (n && *s1 != *s2) return 1;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t}" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\treturn 0;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "}" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "#define _LDK_HEADER_VER \"$LIGHTNING_GIT\"" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "#define _LDK_C_BINDINGS_HEADER_VER \"$BINDINGS_GIT\"" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "static inline const char* check_get_ldk_version() {" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\tLDKStr bin_ver = _ldk_get_compiled_version();" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\tif (_ldk_strncmp(_LDK_HEADER_VER, (const char*)bin_ver.chars, bin_ver.len) != 0) {" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t// Version mismatch, we don't know what we're running!" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t\treturn 0;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t}" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\treturn _LDK_HEADER_VER;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "}" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "static inline const char* check_get_ldk_bindings_version() {" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\tLDKStr bin_ver = _ldk_c_bindings_get_compiled_version();" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\tif (_ldk_strncmp(_LDK_C_BINDINGS_HEADER_VER, (const char*)bin_ver.chars, bin_ver.len) != 0) {" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t// Version mismatch, we don't know what we're running!" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t\treturn 0;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\t}" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "\treturn _LDK_C_BINDINGS_HEADER_VER;" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "}" >> lightning-c-bindings/include/ldk_ver.h
+echo -e "#endif /* _LDK_HEADER_VER */" >> lightning-c-bindings/include/ldk_ver.h
+
rm -rf lightning-c-bindings/src
mkdir -p lightning-c-bindings/src/{c_types,lightning}
# Finally, run the c-bindings-gen binary, building fresh bindings.
OUT="$(pwd)/lightning-c-bindings/src"
OUT_TEMPL="$(pwd)/lightning-c-bindings/src/c_types/derived.rs"
-OUT_F="$(pwd)/lightning-c-bindings/include/rust_types.h"
+OUT_F="$(pwd)/lightning-c-bindings/include/ldk_rust_types.h"
OUT_CPP="$(pwd)/lightning-c-bindings/include/lightningpp.hpp"
BIN="$(pwd)/c-bindings-gen/target/release/c-bindings-gen"
cat /tmp/crate-source.txt | RUST_BACKTRACE=1 "$BIN" "$OUT/" "$OUT_TEMPL" "$OUT_F" "$OUT_CPP"
+echo -e '#[no_mangle]' >> lightning-c-bindings/src/version.rs
+echo -e 'pub extern "C" fn _ldk_get_compiled_version() -> crate::c_types::Str {' >> lightning-c-bindings/src/version.rs
+echo -e '\t"'"$LIGHTNING_GIT"'".into()' >> lightning-c-bindings/src/version.rs
+echo -e '}' >> lightning-c-bindings/src/version.rs
+echo -e '#[no_mangle]' >> lightning-c-bindings/src/version.rs
+echo -e 'pub extern "C" fn _ldk_c_bindings_get_compiled_version() -> crate::c_types::Str {' >> lightning-c-bindings/src/version.rs
+echo -e '\t"'"$BINDINGS_GIT"'".into()' >> lightning-c-bindings/src/version.rs
+echo -e '}' >> lightning-c-bindings/src/version.rs
+
# Set path to include our rustc wrapper as well as cbindgen
PATH="$(pwd)/deterministic-build-wrappers:$PATH:~/.cargo/bin"
# Now cd to lightning-c-bindings, build the generated bindings, and call cbindgen to build a C header file
# stdlib.h doesn't exist in clang's wasm sysroot, and cbindgen
# doesn't actually use it anyway, so drop the import.
- sed -i '' 's/#include <stdlib.h>//g' include/lightning.h
+ sed -i '' 's/#include <stdlib.h>/#include <ldk_rust_types.h>/g' include/lightning.h
else
sed -i 's/typedef LDKnative.*Import.*LDKnative.*;//g' include/lightning.h
# stdlib.h doesn't exist in clang's wasm sysroot, and cbindgen
# doesn't actually use it anyway, so drop the import.
- sed -i 's/#include <stdlib.h>//g' include/lightning.h
+ sed -i 's/#include <stdlib.h>/#include <ldk_rust_types.h>/g' include/lightning.h
fi
# Finally, sanity-check the generated C and C++ bindings with demo apps:
-LOCAL_CFLAGS="-Wall -Wno-nullability-completeness -pthread"
+LOCAL_CFLAGS="-Wall -Wno-nullability-completeness -pthread -Iinclude/"
# Naively run the C demo app:
gcc $LOCAL_CFLAGS -Wall -g -pthread demo.c target/debug/libldk.a -ldl
if [ "$HOST_PLATFORM" != "host: x86_64-apple-darwin" -a "$CLANGPP" != "" ]; then
# If we can use cross-language LTO, use it for building C dependencies (i.e. libsecp256k1) as well
export CC="$CLANG"
- export CFLAGS_wasm32_wasi="-target wasm32"
+ export CFLAGS_wasm32_wasi="-target wasm32 -flto"
fi
if [ "$2" = "false" -a "$(rustc --print target-list | grep wasm32-wasi)" != "" ]; then
clang -nostdlib -o /dev/null --target=wasm32-wasi -Wl,--no-entry genbindings_wasm_test_file.c > /dev/null 2>&1 &&
# And if it does, build a WASM binary without capturing errors
cargo rustc -v --target=wasm32-wasi -- -C embed-bitcode=yes &&
- # Now that we've done our last non-LTO build, turn on LTO in CFLAGS as well
- export CFLAGS="$CFLAGS -flto" &&
CARGO_PROFILE_RELEASE_LTO=true cargo rustc -v --release --target=wasm32-wasi -- -C opt-level=s -C linker-plugin-lto -C lto ||
echo "Cannot build WASM lib as clang does not seem to support the wasm32-wasi target"
rm genbindings_wasm_test_file.c
language = "C"
include_guard = "LDK_C_BINDINGS_H"
autogen_warning = "/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */"
+trailer = "#include <ldk_ver.h>"
include_version = true
namespace = "LDK"
-#include "include/rust_types.h"
-#include "include/lightning.h"
+#include <lightning.h>
#include <assert.h>
#include <stdio.h>
extern "C" {
-#include "include/rust_types.h"
-#include "include/lightning.h"
+#include <lightning.h>
}
#include "include/lightningpp.hpp"
--- /dev/null
+#if defined(__GNUC__)
+#define MUST_USE_STRUCT __attribute__((warn_unused))
+#define MUST_USE_RES __attribute__((warn_unused_result))
+#else
+#define MUST_USE_STRUCT
+#define MUST_USE_RES
+#endif
+#if defined(__clang__)
+#define NONNULL_PTR _Nonnull
+#else
+#define NONNULL_PTR
+#endif
+struct nativeChannelHandshakeConfigOpaque;
+typedef struct nativeChannelHandshakeConfigOpaque LDKnativeChannelHandshakeConfig;
+struct nativeChannelHandshakeLimitsOpaque;
+typedef struct nativeChannelHandshakeLimitsOpaque LDKnativeChannelHandshakeLimits;
+struct nativeChannelConfigOpaque;
+typedef struct nativeChannelConfigOpaque LDKnativeChannelConfig;
+struct nativeUserConfigOpaque;
+typedef struct nativeUserConfigOpaque LDKnativeUserConfig;
+struct nativeOutPointOpaque;
+typedef struct nativeOutPointOpaque LDKnativeOutPoint;
+struct nativeTxCreationKeysOpaque;
+typedef struct nativeTxCreationKeysOpaque LDKnativeTxCreationKeys;
+struct nativeChannelPublicKeysOpaque;
+typedef struct nativeChannelPublicKeysOpaque LDKnativeChannelPublicKeys;
+struct nativeHTLCOutputInCommitmentOpaque;
+typedef struct nativeHTLCOutputInCommitmentOpaque LDKnativeHTLCOutputInCommitment;
+struct nativeChannelTransactionParametersOpaque;
+typedef struct nativeChannelTransactionParametersOpaque LDKnativeChannelTransactionParameters;
+struct nativeCounterpartyChannelTransactionParametersOpaque;
+typedef struct nativeCounterpartyChannelTransactionParametersOpaque LDKnativeCounterpartyChannelTransactionParameters;
+struct nativeDirectedChannelTransactionParametersOpaque;
+typedef struct nativeDirectedChannelTransactionParametersOpaque LDKnativeDirectedChannelTransactionParameters;
+struct nativeHolderCommitmentTransactionOpaque;
+typedef struct nativeHolderCommitmentTransactionOpaque LDKnativeHolderCommitmentTransaction;
+struct nativeBuiltCommitmentTransactionOpaque;
+typedef struct nativeBuiltCommitmentTransactionOpaque LDKnativeBuiltCommitmentTransaction;
+struct nativeCommitmentTransactionOpaque;
+typedef struct nativeCommitmentTransactionOpaque LDKnativeCommitmentTransaction;
+struct nativeTrustedCommitmentTransactionOpaque;
+typedef struct nativeTrustedCommitmentTransactionOpaque LDKnativeTrustedCommitmentTransaction;
+struct nativeInvoiceOpaque;
+typedef struct nativeInvoiceOpaque LDKnativeInvoice;
+struct nativeSignedRawInvoiceOpaque;
+typedef struct nativeSignedRawInvoiceOpaque LDKnativeSignedRawInvoice;
+struct nativeRawInvoiceOpaque;
+typedef struct nativeRawInvoiceOpaque LDKnativeRawInvoice;
+struct nativeRawDataPartOpaque;
+typedef struct nativeRawDataPartOpaque LDKnativeRawDataPart;
+struct nativePositiveTimestampOpaque;
+typedef struct nativePositiveTimestampOpaque LDKnativePositiveTimestamp;
+struct nativeSha256Opaque;
+typedef struct nativeSha256Opaque LDKnativeSha256;
+struct nativeDescriptionOpaque;
+typedef struct nativeDescriptionOpaque LDKnativeDescription;
+struct nativePayeePubKeyOpaque;
+typedef struct nativePayeePubKeyOpaque LDKnativePayeePubKey;
+struct nativeExpiryTimeOpaque;
+typedef struct nativeExpiryTimeOpaque LDKnativeExpiryTime;
+struct nativeMinFinalCltvExpiryOpaque;
+typedef struct nativeMinFinalCltvExpiryOpaque LDKnativeMinFinalCltvExpiry;
+struct nativeInvoiceSignatureOpaque;
+typedef struct nativeInvoiceSignatureOpaque LDKnativeInvoiceSignature;
+struct nativeRouteHintOpaque;
+typedef struct nativeRouteHintOpaque LDKnativeRouteHint;
+struct nativeChannelMonitorUpdateOpaque;
+typedef struct nativeChannelMonitorUpdateOpaque LDKnativeChannelMonitorUpdate;
+struct nativeMonitorUpdateErrorOpaque;
+typedef struct nativeMonitorUpdateErrorOpaque LDKnativeMonitorUpdateError;
+struct nativeHTLCUpdateOpaque;
+typedef struct nativeHTLCUpdateOpaque LDKnativeHTLCUpdate;
+struct nativeChannelMonitorOpaque;
+typedef struct nativeChannelMonitorOpaque LDKnativeChannelMonitor;
+struct nativeRouteHopOpaque;
+typedef struct nativeRouteHopOpaque LDKnativeRouteHop;
+struct nativeRouteOpaque;
+typedef struct nativeRouteOpaque LDKnativeRoute;
+struct nativeRouteHintHopOpaque;
+typedef struct nativeRouteHintHopOpaque LDKnativeRouteHintHop;
+struct nativeIgnoringMessageHandlerOpaque;
+typedef struct nativeIgnoringMessageHandlerOpaque LDKnativeIgnoringMessageHandler;
+struct nativeErroringMessageHandlerOpaque;
+typedef struct nativeErroringMessageHandlerOpaque LDKnativeErroringMessageHandler;
+struct nativeMessageHandlerOpaque;
+typedef struct nativeMessageHandlerOpaque LDKnativeMessageHandler;
+typedef struct LDKSocketDescriptor LDKSocketDescriptor;
+struct nativePeerHandleErrorOpaque;
+typedef struct nativePeerHandleErrorOpaque LDKnativePeerHandleError;
+struct nativePeerManagerOpaque;
+typedef struct nativePeerManagerOpaque LDKnativePeerManager;
+struct nativeWatchedOutputOpaque;
+typedef struct nativeWatchedOutputOpaque LDKnativeWatchedOutput;
+struct nativeNetworkGraphOpaque;
+typedef struct nativeNetworkGraphOpaque LDKnativeNetworkGraph;
+struct nativeLockedNetworkGraphOpaque;
+typedef struct nativeLockedNetworkGraphOpaque LDKnativeLockedNetworkGraph;
+struct nativeNetGraphMsgHandlerOpaque;
+typedef struct nativeNetGraphMsgHandlerOpaque LDKnativeNetGraphMsgHandler;
+struct nativeDirectionalChannelInfoOpaque;
+typedef struct nativeDirectionalChannelInfoOpaque LDKnativeDirectionalChannelInfo;
+struct nativeChannelInfoOpaque;
+typedef struct nativeChannelInfoOpaque LDKnativeChannelInfo;
+struct nativeRoutingFeesOpaque;
+typedef struct nativeRoutingFeesOpaque LDKnativeRoutingFees;
+struct nativeNodeAnnouncementInfoOpaque;
+typedef struct nativeNodeAnnouncementInfoOpaque LDKnativeNodeAnnouncementInfo;
+struct nativeNodeInfoOpaque;
+typedef struct nativeNodeInfoOpaque LDKnativeNodeInfo;
+struct nativeInitFeaturesOpaque;
+typedef struct nativeInitFeaturesOpaque LDKnativeInitFeatures;
+struct nativeNodeFeaturesOpaque;
+typedef struct nativeNodeFeaturesOpaque LDKnativeNodeFeatures;
+struct nativeChannelFeaturesOpaque;
+typedef struct nativeChannelFeaturesOpaque LDKnativeChannelFeatures;
+struct nativeInvoiceFeaturesOpaque;
+typedef struct nativeInvoiceFeaturesOpaque LDKnativeInvoiceFeatures;
+struct nativeDecodeErrorOpaque;
+typedef struct nativeDecodeErrorOpaque LDKnativeDecodeError;
+struct nativeInitOpaque;
+typedef struct nativeInitOpaque LDKnativeInit;
+struct nativeErrorMessageOpaque;
+typedef struct nativeErrorMessageOpaque LDKnativeErrorMessage;
+struct nativePingOpaque;
+typedef struct nativePingOpaque LDKnativePing;
+struct nativePongOpaque;
+typedef struct nativePongOpaque LDKnativePong;
+struct nativeOpenChannelOpaque;
+typedef struct nativeOpenChannelOpaque LDKnativeOpenChannel;
+struct nativeAcceptChannelOpaque;
+typedef struct nativeAcceptChannelOpaque LDKnativeAcceptChannel;
+struct nativeFundingCreatedOpaque;
+typedef struct nativeFundingCreatedOpaque LDKnativeFundingCreated;
+struct nativeFundingSignedOpaque;
+typedef struct nativeFundingSignedOpaque LDKnativeFundingSigned;
+struct nativeFundingLockedOpaque;
+typedef struct nativeFundingLockedOpaque LDKnativeFundingLocked;
+struct nativeShutdownOpaque;
+typedef struct nativeShutdownOpaque LDKnativeShutdown;
+struct nativeClosingSignedOpaque;
+typedef struct nativeClosingSignedOpaque LDKnativeClosingSigned;
+struct nativeUpdateAddHTLCOpaque;
+typedef struct nativeUpdateAddHTLCOpaque LDKnativeUpdateAddHTLC;
+struct nativeUpdateFulfillHTLCOpaque;
+typedef struct nativeUpdateFulfillHTLCOpaque LDKnativeUpdateFulfillHTLC;
+struct nativeUpdateFailHTLCOpaque;
+typedef struct nativeUpdateFailHTLCOpaque LDKnativeUpdateFailHTLC;
+struct nativeUpdateFailMalformedHTLCOpaque;
+typedef struct nativeUpdateFailMalformedHTLCOpaque LDKnativeUpdateFailMalformedHTLC;
+struct nativeCommitmentSignedOpaque;
+typedef struct nativeCommitmentSignedOpaque LDKnativeCommitmentSigned;
+struct nativeRevokeAndACKOpaque;
+typedef struct nativeRevokeAndACKOpaque LDKnativeRevokeAndACK;
+struct nativeUpdateFeeOpaque;
+typedef struct nativeUpdateFeeOpaque LDKnativeUpdateFee;
+struct nativeDataLossProtectOpaque;
+typedef struct nativeDataLossProtectOpaque LDKnativeDataLossProtect;
+struct nativeChannelReestablishOpaque;
+typedef struct nativeChannelReestablishOpaque LDKnativeChannelReestablish;
+struct nativeAnnouncementSignaturesOpaque;
+typedef struct nativeAnnouncementSignaturesOpaque LDKnativeAnnouncementSignatures;
+struct nativeUnsignedNodeAnnouncementOpaque;
+typedef struct nativeUnsignedNodeAnnouncementOpaque LDKnativeUnsignedNodeAnnouncement;
+struct nativeNodeAnnouncementOpaque;
+typedef struct nativeNodeAnnouncementOpaque LDKnativeNodeAnnouncement;
+struct nativeUnsignedChannelAnnouncementOpaque;
+typedef struct nativeUnsignedChannelAnnouncementOpaque LDKnativeUnsignedChannelAnnouncement;
+struct nativeChannelAnnouncementOpaque;
+typedef struct nativeChannelAnnouncementOpaque LDKnativeChannelAnnouncement;
+struct nativeUnsignedChannelUpdateOpaque;
+typedef struct nativeUnsignedChannelUpdateOpaque LDKnativeUnsignedChannelUpdate;
+struct nativeChannelUpdateOpaque;
+typedef struct nativeChannelUpdateOpaque LDKnativeChannelUpdate;
+struct nativeQueryChannelRangeOpaque;
+typedef struct nativeQueryChannelRangeOpaque LDKnativeQueryChannelRange;
+struct nativeReplyChannelRangeOpaque;
+typedef struct nativeReplyChannelRangeOpaque LDKnativeReplyChannelRange;
+struct nativeQueryShortChannelIdsOpaque;
+typedef struct nativeQueryShortChannelIdsOpaque LDKnativeQueryShortChannelIds;
+struct nativeReplyShortChannelIdsEndOpaque;
+typedef struct nativeReplyShortChannelIdsEndOpaque LDKnativeReplyShortChannelIdsEnd;
+struct nativeGossipTimestampFilterOpaque;
+typedef struct nativeGossipTimestampFilterOpaque LDKnativeGossipTimestampFilter;
+struct nativeLightningErrorOpaque;
+typedef struct nativeLightningErrorOpaque LDKnativeLightningError;
+struct nativeCommitmentUpdateOpaque;
+typedef struct nativeCommitmentUpdateOpaque LDKnativeCommitmentUpdate;
+struct nativeDelayedPaymentOutputDescriptorOpaque;
+typedef struct nativeDelayedPaymentOutputDescriptorOpaque LDKnativeDelayedPaymentOutputDescriptor;
+struct nativeStaticPaymentOutputDescriptorOpaque;
+typedef struct nativeStaticPaymentOutputDescriptorOpaque LDKnativeStaticPaymentOutputDescriptor;
+struct LDKBaseSign;
+typedef struct LDKBaseSign LDKBaseSign;
+struct nativeInMemorySignerOpaque;
+typedef struct nativeInMemorySignerOpaque LDKnativeInMemorySigner;
+struct nativeKeysManagerOpaque;
+typedef struct nativeKeysManagerOpaque LDKnativeKeysManager;
+struct nativeChainMonitorOpaque;
+typedef struct nativeChainMonitorOpaque LDKnativeChainMonitor;
+struct nativeFilesystemPersisterOpaque;
+typedef struct nativeFilesystemPersisterOpaque LDKnativeFilesystemPersister;
+struct nativeChannelManagerOpaque;
+typedef struct nativeChannelManagerOpaque LDKnativeChannelManager;
+struct nativeChainParametersOpaque;
+typedef struct nativeChainParametersOpaque LDKnativeChainParameters;
+struct nativeBestBlockOpaque;
+typedef struct nativeBestBlockOpaque LDKnativeBestBlock;
+struct nativeChannelDetailsOpaque;
+typedef struct nativeChannelDetailsOpaque LDKnativeChannelDetails;
+struct nativeChannelManagerReadArgsOpaque;
+typedef struct nativeChannelManagerReadArgsOpaque LDKnativeChannelManagerReadArgs;
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
-
+#include <ldk_rust_types.h>
/**
* An error when accessing the chain via [`Access`].
LDKSiPrefix_Sentinel,
} LDKSiPrefix;
+/**
+ * A Rust str object, ie a reference to a UTF8-valid string.
+ * This is *not* null-terminated so cannot be used directly as a C string!
+ */
+typedef struct LDKStr {
+ /**
+ * A pointer to the string's bytes, in UTF8 encoding
+ */
+ const uint8_t *chars;
+ /**
+ * The number of bytes (not characters!) pointed to by `chars`
+ */
+ uintptr_t len;
+ /**
+ * Whether the data pointed to by `chars` should be freed or not.
+ */
+ bool chars_is_owned;
+} LDKStr;
+
/**
* A serialized transaction, in (pointer, length) form.
*
uint64_t value;
} LDKTxOut;
-/**
- * A Rust str object, ie a reference to a UTF8-valid string.
- * This is *not* null-terminated so cannot be used directly as a C string!
- */
-typedef struct LDKStr {
- /**
- * A pointer to the string's bytes, in UTF8 encoding
- */
- const uint8_t *chars;
- /**
- * The number of bytes (not characters!) pointed to by `chars`
- */
- uintptr_t len;
- /**
- * Whether the data pointed to by `chars` should be freed or not.
- */
- bool chars_is_owned;
-} LDKStr;
-
/**
extern const uint8_t TAG_FEATURES;
+struct LDKStr _ldk_get_compiled_version(void);
+
+struct LDKStr _ldk_c_bindings_get_compiled_version(void);
+
/**
* Frees the data buffer, if data_is_owned is set and datalen > 0.
*/
struct LDKStr SiPrefix_to_str(const enum LDKSiPrefix *NONNULL_PTR o);
#endif /* LDK_C_BINDINGS_H */
+
+#include <ldk_ver.h>
+++ /dev/null
-#if defined(__GNUC__)
-#define MUST_USE_STRUCT __attribute__((warn_unused))
-#define MUST_USE_RES __attribute__((warn_unused_result))
-#else
-#define MUST_USE_STRUCT
-#define MUST_USE_RES
-#endif
-#if defined(__clang__)
-#define NONNULL_PTR _Nonnull
-#else
-#define NONNULL_PTR
-#endif
-struct nativeChannelHandshakeConfigOpaque;
-typedef struct nativeChannelHandshakeConfigOpaque LDKnativeChannelHandshakeConfig;
-struct nativeChannelHandshakeLimitsOpaque;
-typedef struct nativeChannelHandshakeLimitsOpaque LDKnativeChannelHandshakeLimits;
-struct nativeChannelConfigOpaque;
-typedef struct nativeChannelConfigOpaque LDKnativeChannelConfig;
-struct nativeUserConfigOpaque;
-typedef struct nativeUserConfigOpaque LDKnativeUserConfig;
-struct nativeOutPointOpaque;
-typedef struct nativeOutPointOpaque LDKnativeOutPoint;
-struct nativeTxCreationKeysOpaque;
-typedef struct nativeTxCreationKeysOpaque LDKnativeTxCreationKeys;
-struct nativeChannelPublicKeysOpaque;
-typedef struct nativeChannelPublicKeysOpaque LDKnativeChannelPublicKeys;
-struct nativeHTLCOutputInCommitmentOpaque;
-typedef struct nativeHTLCOutputInCommitmentOpaque LDKnativeHTLCOutputInCommitment;
-struct nativeChannelTransactionParametersOpaque;
-typedef struct nativeChannelTransactionParametersOpaque LDKnativeChannelTransactionParameters;
-struct nativeCounterpartyChannelTransactionParametersOpaque;
-typedef struct nativeCounterpartyChannelTransactionParametersOpaque LDKnativeCounterpartyChannelTransactionParameters;
-struct nativeDirectedChannelTransactionParametersOpaque;
-typedef struct nativeDirectedChannelTransactionParametersOpaque LDKnativeDirectedChannelTransactionParameters;
-struct nativeHolderCommitmentTransactionOpaque;
-typedef struct nativeHolderCommitmentTransactionOpaque LDKnativeHolderCommitmentTransaction;
-struct nativeBuiltCommitmentTransactionOpaque;
-typedef struct nativeBuiltCommitmentTransactionOpaque LDKnativeBuiltCommitmentTransaction;
-struct nativeCommitmentTransactionOpaque;
-typedef struct nativeCommitmentTransactionOpaque LDKnativeCommitmentTransaction;
-struct nativeTrustedCommitmentTransactionOpaque;
-typedef struct nativeTrustedCommitmentTransactionOpaque LDKnativeTrustedCommitmentTransaction;
-struct nativeInvoiceOpaque;
-typedef struct nativeInvoiceOpaque LDKnativeInvoice;
-struct nativeSignedRawInvoiceOpaque;
-typedef struct nativeSignedRawInvoiceOpaque LDKnativeSignedRawInvoice;
-struct nativeRawInvoiceOpaque;
-typedef struct nativeRawInvoiceOpaque LDKnativeRawInvoice;
-struct nativeRawDataPartOpaque;
-typedef struct nativeRawDataPartOpaque LDKnativeRawDataPart;
-struct nativePositiveTimestampOpaque;
-typedef struct nativePositiveTimestampOpaque LDKnativePositiveTimestamp;
-struct nativeSha256Opaque;
-typedef struct nativeSha256Opaque LDKnativeSha256;
-struct nativeDescriptionOpaque;
-typedef struct nativeDescriptionOpaque LDKnativeDescription;
-struct nativePayeePubKeyOpaque;
-typedef struct nativePayeePubKeyOpaque LDKnativePayeePubKey;
-struct nativeExpiryTimeOpaque;
-typedef struct nativeExpiryTimeOpaque LDKnativeExpiryTime;
-struct nativeMinFinalCltvExpiryOpaque;
-typedef struct nativeMinFinalCltvExpiryOpaque LDKnativeMinFinalCltvExpiry;
-struct nativeInvoiceSignatureOpaque;
-typedef struct nativeInvoiceSignatureOpaque LDKnativeInvoiceSignature;
-struct nativeRouteHintOpaque;
-typedef struct nativeRouteHintOpaque LDKnativeRouteHint;
-struct nativeChannelMonitorUpdateOpaque;
-typedef struct nativeChannelMonitorUpdateOpaque LDKnativeChannelMonitorUpdate;
-struct nativeMonitorUpdateErrorOpaque;
-typedef struct nativeMonitorUpdateErrorOpaque LDKnativeMonitorUpdateError;
-struct nativeHTLCUpdateOpaque;
-typedef struct nativeHTLCUpdateOpaque LDKnativeHTLCUpdate;
-struct nativeChannelMonitorOpaque;
-typedef struct nativeChannelMonitorOpaque LDKnativeChannelMonitor;
-struct nativeRouteHopOpaque;
-typedef struct nativeRouteHopOpaque LDKnativeRouteHop;
-struct nativeRouteOpaque;
-typedef struct nativeRouteOpaque LDKnativeRoute;
-struct nativeRouteHintHopOpaque;
-typedef struct nativeRouteHintHopOpaque LDKnativeRouteHintHop;
-struct nativeIgnoringMessageHandlerOpaque;
-typedef struct nativeIgnoringMessageHandlerOpaque LDKnativeIgnoringMessageHandler;
-struct nativeErroringMessageHandlerOpaque;
-typedef struct nativeErroringMessageHandlerOpaque LDKnativeErroringMessageHandler;
-struct nativeMessageHandlerOpaque;
-typedef struct nativeMessageHandlerOpaque LDKnativeMessageHandler;
-typedef struct LDKSocketDescriptor LDKSocketDescriptor;
-struct nativePeerHandleErrorOpaque;
-typedef struct nativePeerHandleErrorOpaque LDKnativePeerHandleError;
-struct nativePeerManagerOpaque;
-typedef struct nativePeerManagerOpaque LDKnativePeerManager;
-struct nativeWatchedOutputOpaque;
-typedef struct nativeWatchedOutputOpaque LDKnativeWatchedOutput;
-struct nativeNetworkGraphOpaque;
-typedef struct nativeNetworkGraphOpaque LDKnativeNetworkGraph;
-struct nativeLockedNetworkGraphOpaque;
-typedef struct nativeLockedNetworkGraphOpaque LDKnativeLockedNetworkGraph;
-struct nativeNetGraphMsgHandlerOpaque;
-typedef struct nativeNetGraphMsgHandlerOpaque LDKnativeNetGraphMsgHandler;
-struct nativeDirectionalChannelInfoOpaque;
-typedef struct nativeDirectionalChannelInfoOpaque LDKnativeDirectionalChannelInfo;
-struct nativeChannelInfoOpaque;
-typedef struct nativeChannelInfoOpaque LDKnativeChannelInfo;
-struct nativeRoutingFeesOpaque;
-typedef struct nativeRoutingFeesOpaque LDKnativeRoutingFees;
-struct nativeNodeAnnouncementInfoOpaque;
-typedef struct nativeNodeAnnouncementInfoOpaque LDKnativeNodeAnnouncementInfo;
-struct nativeNodeInfoOpaque;
-typedef struct nativeNodeInfoOpaque LDKnativeNodeInfo;
-struct nativeInitFeaturesOpaque;
-typedef struct nativeInitFeaturesOpaque LDKnativeInitFeatures;
-struct nativeNodeFeaturesOpaque;
-typedef struct nativeNodeFeaturesOpaque LDKnativeNodeFeatures;
-struct nativeChannelFeaturesOpaque;
-typedef struct nativeChannelFeaturesOpaque LDKnativeChannelFeatures;
-struct nativeInvoiceFeaturesOpaque;
-typedef struct nativeInvoiceFeaturesOpaque LDKnativeInvoiceFeatures;
-struct nativeDecodeErrorOpaque;
-typedef struct nativeDecodeErrorOpaque LDKnativeDecodeError;
-struct nativeInitOpaque;
-typedef struct nativeInitOpaque LDKnativeInit;
-struct nativeErrorMessageOpaque;
-typedef struct nativeErrorMessageOpaque LDKnativeErrorMessage;
-struct nativePingOpaque;
-typedef struct nativePingOpaque LDKnativePing;
-struct nativePongOpaque;
-typedef struct nativePongOpaque LDKnativePong;
-struct nativeOpenChannelOpaque;
-typedef struct nativeOpenChannelOpaque LDKnativeOpenChannel;
-struct nativeAcceptChannelOpaque;
-typedef struct nativeAcceptChannelOpaque LDKnativeAcceptChannel;
-struct nativeFundingCreatedOpaque;
-typedef struct nativeFundingCreatedOpaque LDKnativeFundingCreated;
-struct nativeFundingSignedOpaque;
-typedef struct nativeFundingSignedOpaque LDKnativeFundingSigned;
-struct nativeFundingLockedOpaque;
-typedef struct nativeFundingLockedOpaque LDKnativeFundingLocked;
-struct nativeShutdownOpaque;
-typedef struct nativeShutdownOpaque LDKnativeShutdown;
-struct nativeClosingSignedOpaque;
-typedef struct nativeClosingSignedOpaque LDKnativeClosingSigned;
-struct nativeUpdateAddHTLCOpaque;
-typedef struct nativeUpdateAddHTLCOpaque LDKnativeUpdateAddHTLC;
-struct nativeUpdateFulfillHTLCOpaque;
-typedef struct nativeUpdateFulfillHTLCOpaque LDKnativeUpdateFulfillHTLC;
-struct nativeUpdateFailHTLCOpaque;
-typedef struct nativeUpdateFailHTLCOpaque LDKnativeUpdateFailHTLC;
-struct nativeUpdateFailMalformedHTLCOpaque;
-typedef struct nativeUpdateFailMalformedHTLCOpaque LDKnativeUpdateFailMalformedHTLC;
-struct nativeCommitmentSignedOpaque;
-typedef struct nativeCommitmentSignedOpaque LDKnativeCommitmentSigned;
-struct nativeRevokeAndACKOpaque;
-typedef struct nativeRevokeAndACKOpaque LDKnativeRevokeAndACK;
-struct nativeUpdateFeeOpaque;
-typedef struct nativeUpdateFeeOpaque LDKnativeUpdateFee;
-struct nativeDataLossProtectOpaque;
-typedef struct nativeDataLossProtectOpaque LDKnativeDataLossProtect;
-struct nativeChannelReestablishOpaque;
-typedef struct nativeChannelReestablishOpaque LDKnativeChannelReestablish;
-struct nativeAnnouncementSignaturesOpaque;
-typedef struct nativeAnnouncementSignaturesOpaque LDKnativeAnnouncementSignatures;
-struct nativeUnsignedNodeAnnouncementOpaque;
-typedef struct nativeUnsignedNodeAnnouncementOpaque LDKnativeUnsignedNodeAnnouncement;
-struct nativeNodeAnnouncementOpaque;
-typedef struct nativeNodeAnnouncementOpaque LDKnativeNodeAnnouncement;
-struct nativeUnsignedChannelAnnouncementOpaque;
-typedef struct nativeUnsignedChannelAnnouncementOpaque LDKnativeUnsignedChannelAnnouncement;
-struct nativeChannelAnnouncementOpaque;
-typedef struct nativeChannelAnnouncementOpaque LDKnativeChannelAnnouncement;
-struct nativeUnsignedChannelUpdateOpaque;
-typedef struct nativeUnsignedChannelUpdateOpaque LDKnativeUnsignedChannelUpdate;
-struct nativeChannelUpdateOpaque;
-typedef struct nativeChannelUpdateOpaque LDKnativeChannelUpdate;
-struct nativeQueryChannelRangeOpaque;
-typedef struct nativeQueryChannelRangeOpaque LDKnativeQueryChannelRange;
-struct nativeReplyChannelRangeOpaque;
-typedef struct nativeReplyChannelRangeOpaque LDKnativeReplyChannelRange;
-struct nativeQueryShortChannelIdsOpaque;
-typedef struct nativeQueryShortChannelIdsOpaque LDKnativeQueryShortChannelIds;
-struct nativeReplyShortChannelIdsEndOpaque;
-typedef struct nativeReplyShortChannelIdsEndOpaque LDKnativeReplyShortChannelIdsEnd;
-struct nativeGossipTimestampFilterOpaque;
-typedef struct nativeGossipTimestampFilterOpaque LDKnativeGossipTimestampFilter;
-struct nativeLightningErrorOpaque;
-typedef struct nativeLightningErrorOpaque LDKnativeLightningError;
-struct nativeCommitmentUpdateOpaque;
-typedef struct nativeCommitmentUpdateOpaque LDKnativeCommitmentUpdate;
-struct nativeDelayedPaymentOutputDescriptorOpaque;
-typedef struct nativeDelayedPaymentOutputDescriptorOpaque LDKnativeDelayedPaymentOutputDescriptor;
-struct nativeStaticPaymentOutputDescriptorOpaque;
-typedef struct nativeStaticPaymentOutputDescriptorOpaque LDKnativeStaticPaymentOutputDescriptor;
-struct LDKBaseSign;
-typedef struct LDKBaseSign LDKBaseSign;
-struct nativeInMemorySignerOpaque;
-typedef struct nativeInMemorySignerOpaque LDKnativeInMemorySigner;
-struct nativeKeysManagerOpaque;
-typedef struct nativeKeysManagerOpaque LDKnativeKeysManager;
-struct nativeChainMonitorOpaque;
-typedef struct nativeChainMonitorOpaque LDKnativeChainMonitor;
-struct nativeFilesystemPersisterOpaque;
-typedef struct nativeFilesystemPersisterOpaque LDKnativeFilesystemPersister;
-struct nativeChannelManagerOpaque;
-typedef struct nativeChannelManagerOpaque LDKnativeChannelManager;
-struct nativeChainParametersOpaque;
-typedef struct nativeChainParametersOpaque LDKnativeChainParameters;
-struct nativeBestBlockOpaque;
-typedef struct nativeBestBlockOpaque LDKnativeBestBlock;
-struct nativeChannelDetailsOpaque;
-typedef struct nativeChannelDetailsOpaque LDKnativeChannelDetails;
-struct nativeChannelManagerReadArgsOpaque;
-typedef struct nativeChannelManagerReadArgsOpaque LDKnativeChannelManagerReadArgs;
#![allow(unused_parens)]
#![allow(unused_unsafe)]
#![allow(unused_braces)]
+pub mod version;
pub mod c_types;
pub mod bitcoin;
pub mod lightning;