[workspace]
default-members = [".", "rpc", "cli"]
members = [".", "rpc", "cli"]

[package]
name = "lnp_node"
description = "LNP node"
version = "0.9.1"
authors = ["Dr. Maxim Orlovsky <orlovsky@pandoracore.com>"]
license = "MIT"
keywords = ["bitcoin", "bifi", "lightning-network", "smart-contracts", "lnp"]
edition = "2021"
rust-version = "1.59.0"
readme = "README.md"
build = "build.rs"
exclude = [".github", "Dockerfile", ".dockerignore", "contrib", "doc"]

[lib]
name = "lnp_node"

[[bin]]
name = "lnpd"
required-features = ["server"]

[[bin]]
name = "peerd"
required-features = ["server"]

[[bin]]
name = "watchd"
required-features = ["server"]

[[bin]]
name = "routed"
required-features = ["server"]

[[bin]]
name = "channeld"
required-features = ["server"]

[[bin]]
name = "signd"
required-features = ["server"]

[dependencies]
# LNP/BP crates
amplify = "3.14.1"
strict_encoding = { version = "0.9.0-rc.2", features = ["miniscript"] }
bitcoin_scripts = "0.9.0"
bitcoin_blockchain = "0.9.0"
descriptor-wallet = { version = "0.9.0", features = ["keygen", "miniscript", "electrum", "sign", "construct"] }
lnpbp = "0.9.0"
lnp-core = "0.9.1"
lnp_rpc = { version = "0.9.1", path = "./rpc" }
internet2 = { version = "0.9.0", features = ["keygen"] }
microservices = { version = "0.9.0", default-features = false, features = ["node", "peer"] }
# Bitcoin
bitcoin = { version = "0.29.2", features = ["rand"] }
miniscript = "9.0.0"
electrum-client = "0.12.0"
lightning-invoice = "0.21.0"
# OS
serde = "1"
serde_json = "1"
chrono = "0.4"
nix = "0.24"
log = { version = "0.4", features = ["max_level_trace", "release_max_level_debug"] }
env_logger = "0.7"
clap = { version = "~3.2.23", optional = true, features = ["env", "derive"] }
settings = { version = "0.10", package = "config", optional = true }
configure_me = { version = "0.4", optional = true }
dotenv = { version = "0.15", optional = true }
colored = "2.0.0"
shellexpand = { version = "2", optional = true }
rpassword = { version = "5.0.1", optional = true }
# IPC
zmq = { package = "zmq2", version = "0.5.0" }

[dev-dependencies]
strict_encoding_test = "0.9.0"

[build-dependencies]
amplify = "3.13.0"
lnpbp = "0.9.0"
bitcoin = "0.29.2"
lightning-invoice = "0.21.0"
lnp-core = "0.9.1"
lnp_rpc = { version = "0.9.1", path = "./rpc" }
internet2 = "0.9.0"
microservices = { version = "0.9.0", default-features = false, features = ["peer", "shell"] }
clap = { version = "~3.2.23", features = ["env", "derive"] }
clap_complete = "~3.2.5"
log = { version = "0.4", features = ["max_level_trace", "release_max_level_debug"] }
shellexpand = "2"
configure_me_codegen = "0.4"

# Recommended set of features:
# 1. Standalone node: `server` (=`node`+`shell`)
# 2. Cli to remote node: `cli` (auto includes `shell` and `integration`)
# 3. Mobile app talking to a server: `client`
# 4. Mobile app with embedded node: `embedded` (auto includes `client` + `node`)
# 5. Simple cli utility app: `shell`
[features]
default = ["server", "bolt", "bifrost"]
all = ["server", "tor"] # "rgb"

bolt = ["lnp-core/bolt", "lnp_rpc/bolt"]
bifrost = ["lnp-core/bifrost", "lnp_rpc/bifrost"]

# Server is a standalone application that runs daemons.
# Required for all apps that can be launched from command-line shell as binaries
# (i.e. both servers and cli)
server = ["microservices/server", "microservices/cli", "dotenv", "clap", "settings", "configure_me",
          "amplify/parse_arg", "shellexpand", "rpassword"]
# Embedded is an app that contains embedded node and that talks to it through
# integration layer
embedded = ["microservices/embedded"]

tor = ["microservices/tor", "internet2/tor"]

[package.metadata.configure_me]
spec = "config_spec.toml"