[package]
name = "tari_core"
description = "Core Tari protocol components"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
repository.workspace = true
license.workspace = true


[features]
default = []
benches = []
metrics = ["tari_metrics"]
sqlite_bundled = ["tari_common_sqlite/bundled"]

[dependencies]
tari_common = { workspace = true }
tari_common_types = { workspace = true }
tari_common_sqlite = { workspace = true }
tari_comms = { workspace = true, features = ["rpc"] }
tari_comms_dht = { workspace = true }
tari_comms_rpc_macros = { workspace = true }
tari_crypto = { workspace = true, features = ["borsh"] }
tari_hashing = { workspace = true }
tari_node_components = { workspace = true }
tari_max_size = { workspace = true }
tari_metrics = { workspace = true, optional = true }
tari_mmr = { workspace = true }
tari_p2p = { workspace = true }
tari_script = { workspace = true }
tari_sidechain = { workspace = true }
tari_service_framework = { workspace = true }
tari_shutdown = { workspace = true }
tari_storage = { workspace = true }
tari_transaction_components = { workspace = true }
tari_test_utils = { workspace = true }
tari_utilities = { workspace = true, features = ["borsh"] }

anyhow = { workspace = true }
async-trait = { version = "0.1.50" }
bincode = "1.1.4"
blake2 = "0.10"
borsh = { workspace = true, features = ["derive"] }
chrono = { version = "0.4", default-features = false, features = ["serde"] }
digest = "0.10"
dirs-next = "1.0.2"
fs2 = "0.4.0"
futures = { version = "^0.3.16", features = ["async-await"] }
hex = "0.4.2"
hickory-proto = { version = "0.26.0" }
integer-encoding = "3.0"
jmt = { version = "0.11.0", features = ["mocks"] }
lmdb-zero = "0.4.4"
log = { workspace = true }
monero = { version = "0.21.0", features = ["serde-crate"] }
once_cell = "1.8.0"
prost = "0.13.3"
rand = { workspace = true }
randomx-rs = { version = "1.4" }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
serde_valid = "1.0.5"
sha3 = "0.10"
sha2 = "0.10"
strum_macros = "0.22"
tiny-keccak = { package = "tari-tiny-keccak", version = "2.0.2", features = [
    "keccak",
] }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["time", "sync", "macros", "net"] }
tracing = "0.1.26"
primitive-types = { version = "0.12", features = ["serde"] }
url = "2.5.4"

[dev-dependencies]
criterion = { version = "0.8" }
tari_p2p = { workspace = true, features = ["test-mocks"] }
tari_test_utils = { workspace = true }
# SQLite required for the integration tests
config = { version = "0.14.0" }
tempfile = "3.1.0"
quickcheck = "1.0"
serial_test = "0.5"
env_logger = "0.11"

[build-dependencies]
tari_common = { workspace = true, features = ["build"] }
tari_features = { workspace = true }

[[bench]]
name = "mempool"
harness = false

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = [
    'cfg(tari_target_network_mainnet)',
    'cfg(tari_target_network_nextnet)',
    'cfg(tari_target_network_testnet)',
] }


[package.metadata.cargo-machete]
ignored = ["hickory-proto"]
