[package]
edition = "2021"
rust-version = "1.85.0"
name = "cdk"
version = "0.15.1"
authors = ["CDK Developers"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Core Cashu Development Kit library implementing the Cashu protocol"
homepage = "https://github.com/cashubtc/cdk"
readme = "README.md"
license = "MIT"
repository = "https://github.com/cashubtc/cdk.git"
[features]
bench = []
bip353 = ["dep:hickory-resolver"]
default = [
"mint",
"wallet",
"nostr",
"bip353",
]
http_subscription = []
mint = [
"dep:futures",
"cdk-common/mint",
"cdk-common/http",
"cdk-signatory",
]
nostr = [
"wallet",
"dep:nostr-sdk",
"cdk-common/nostr",
]
npubcash = [
"wallet",
"nostr",
"dep:cdk-npubcash",
]
prometheus = ["dep:cdk-prometheus"]
swagger = [
"mint",
"dep:utoipa",
"cdk-common/swagger",
]
tor = [
"wallet",
"dep:arti-client",
"dep:arti-hyper",
"dep:hyper",
"dep:http",
"dep:rustls",
"dep:tor-rtcompat",
"dep:tls-api",
"dep:tls-api-native-tls",
]
wallet = [
"dep:futures",
"cdk-common/wallet",
"cdk-common/http",
"dep:rustls",
]
[lib]
name = "cdk"
path = "src/lib.rs"
[[example]]
name = "auth_wallet"
path = "examples/auth_wallet.rs"
required-features = ["wallet"]
[[example]]
name = "bip353"
path = "examples/bip353.rs"
required-features = [
"wallet",
"bip353",
]
[[example]]
name = "configure_wallet"
path = "examples/configure_wallet.rs"
required-features = ["wallet"]
[[example]]
name = "human_readable_payment"
path = "examples/human_readable_payment.rs"
required-features = [
"wallet",
"bip353",
]
[[example]]
name = "melt-token"
path = "examples/melt-token.rs"
required-features = ["wallet"]
[[example]]
name = "mint-token"
path = "examples/mint-token.rs"
required-features = ["wallet"]
[[example]]
name = "mint-token-bolt12"
path = "examples/mint-token-bolt12.rs"
required-features = ["wallet"]
[[example]]
name = "mint-token-bolt12-with-custom-http"
path = "examples/mint-token-bolt12-with-custom-http.rs"
required-features = ["wallet"]
[[example]]
name = "mint-token-bolt12-with-stream"
path = "examples/mint-token-bolt12-with-stream.rs"
required-features = ["wallet"]
[[example]]
name = "multi-mint-wallet"
path = "examples/multi-mint-wallet.rs"
required-features = ["wallet"]
[[example]]
name = "multimint-npubcash"
path = "examples/multimint-npubcash.rs"
required-features = ["npubcash"]
[[example]]
name = "nostr_backup"
path = "examples/nostr_backup.rs"
required-features = [
"wallet",
"nostr",
]
[[example]]
name = "npubcash"
path = "examples/npubcash.rs"
required-features = ["npubcash"]
[[example]]
name = "p2pk"
path = "examples/p2pk.rs"
required-features = ["wallet"]
[[example]]
name = "payment_request"
path = "examples/payment_request.rs"
required-features = [
"wallet",
"nostr",
]
[[example]]
name = "proof-selection"
path = "examples/proof-selection.rs"
required-features = ["wallet"]
[[example]]
name = "receive-token"
path = "examples/receive-token.rs"
required-features = ["wallet"]
[[example]]
name = "restore-wallet"
path = "examples/restore-wallet.rs"
required-features = ["wallet"]
[[example]]
name = "revoke_send"
path = "examples/revoke_send.rs"
required-features = ["wallet"]
[[example]]
name = "token-proofs"
path = "examples/token-proofs.rs"
required-features = ["wallet"]
[[example]]
name = "wallet"
path = "examples/wallet.rs"
required-features = ["wallet"]
[[bench]]
name = "dhke_benchmarks"
path = "benches/dhke_benchmarks.rs"
harness = false
[dependencies.anyhow]
version = "1"
[dependencies.arc-swap]
version = "1.7.1"
[dependencies.async-trait]
version = "0.1"
[dependencies.bitcoin]
version = "0.32.2"
features = [
"base64",
"serde",
"rand",
"rand-std",
]
[dependencies.cbor-diag]
version = "0.1.12"
[dependencies.cdk-common]
version = "=0.15.1"
default-features = false
[dependencies.cdk-npubcash]
version = "=0.15.1"
optional = true
[dependencies.cdk-prometheus]
version = "=0.15.1"
optional = true
default-features = false
[dependencies.ciborium]
version = "0.2.2"
features = ["std"]
default-features = false
[dependencies.futures]
version = "0.3.28"
features = [
"async-await",
"alloc",
]
optional = true
default-features = false
[dependencies.jsonwebtoken]
version = "9.2.0"
[dependencies.lightning]
version = "0.2.0"
features = ["std"]
default-features = false
[dependencies.lightning-invoice]
version = "0.34.0"
features = [
"serde",
"std",
]
[dependencies.nostr-sdk]
version = "0.44.1"
features = [
"nip04",
"nip44",
"nip59",
]
optional = true
default-features = false
[dependencies.regex]
version = "1"
[dependencies.serde]
version = "1"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1"
[dependencies.serde_with]
version = "3"
[dependencies.thiserror]
version = "2"
[dependencies.tokio-util]
version = "0.7.11"
default-features = false
[dependencies.tracing]
version = "0.1"
features = [
"attributes",
"log",
]
default-features = false
[dependencies.url]
version = "2.3"
[dependencies.utoipa]
version = "5.3.1"
features = [
"preserve_order",
"preserve_path_order",
]
optional = true
[dependencies.uuid]
version = "1.17"
features = [
"v4",
"serde",
]
[dependencies.web-time]
version = "1.1.0"
[dependencies.zeroize]
version = "1"
[dev-dependencies.anyhow]
version = "1"
[dev-dependencies.bip39]
version = "2.0"
features = ["rand"]
[dev-dependencies.cdk-fake-wallet]
version = "=0.15.1"
[dev-dependencies.cdk-sqlite]
version = "=0.15.1"
default-features = true
[dev-dependencies.criterion]
version = "0.6.0"
[dev-dependencies.rand]
version = "0.9.1"
[dev-dependencies.tokio]
version = "1"
features = [
"rt",
"macros",
"test-util",
"sync",
"full",
]
default-features = false
[dev-dependencies.tracing-subscriber]
version = "0.3.18"
features = ["env-filter"]
[dev-dependencies.ureq]
version = "3.1.0"
features = ["json"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.arti-client]
version = "0.19.0"
features = [
"tokio",
"rustls",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.arti-hyper]
version = "0.19.0"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.cdk-signatory]
version = "=0.15.1"
features = ["grpc"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.getrandom]
version = "0.2"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.hickory-resolver]
version = "0.25.2"
features = ["dnssec-ring"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.http]
version = "0.2"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.hyper]
version = "0.14"
features = [
"client",
"http1",
"http2",
]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.rustls]
version = "0.23.27"
features = ["ring"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tls-api]
version = "0.9"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tls-api-native-tls]
version = "0.9"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1"
features = [
"rt",
"macros",
"test-util",
"sync",
"rt-multi-thread",
"time",
"macros",
"sync",
]
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio-tungstenite]
version = "0.26.0"
features = [
"rustls",
"rustls-tls-native-roots",
"connect",
]
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tor-rtcompat]
version = "0.19.0"
features = [
"tokio",
"rustls",
]
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.cdk-signatory]
version = "=0.15.1"
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.2"
features = ["js"]
[target.'cfg(target_arch = "wasm32")'.dependencies.gloo-timers]
version = "0.3"
features = ["futures"]
[target.'cfg(target_arch = "wasm32")'.dependencies.ring]
version = "0.17.14"
features = ["wasm32_unknown_unknown_js"]
[target.'cfg(target_arch = "wasm32")'.dependencies.rustls]
version = "0.23.27"
features = ["ring"]
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.tokio]
version = "1"
features = [
"rt",
"macros",
"test-util",
"sync",
"rt",
"macros",
"sync",
"time",
]
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.uuid]
version = "1.17"
features = [
"v4",
"serde",
"js",
]
[lints.clippy]
large_enum_variant = "warn"
missing_panics_doc = "warn"
missing_safety_doc = "warn"
unwrap_used = "deny"
use_debug = "warn"
[lints.rust]
missing_debug_implementations = "warn"
missing_docs = "warn"
unsafe_code = "forbid"
[lints.rustdoc]
bare_urls = "warn"