[package]
name = "reth"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
description = "Reth node implementation"
default-run = "reth"

[lints]
workspace = true

[dependencies]
# reth
reth-cli.workspace = true
reth-ethereum-cli.workspace = true
reth-chainspec.workspace = true
reth-config.workspace = true
reth-primitives.workspace = true
reth-primitives-traits.workspace = true
reth-fs-util.workspace = true
reth-db = { workspace = true, features = ["mdbx"] }
reth-db-api.workspace = true
reth-exex.workspace = true
reth-provider.workspace = true
reth-evm.workspace = true
reth-revm.workspace = true
reth-stages.workspace = true
reth-execution-types.workspace = true
reth-errors.workspace = true
reth-transaction-pool.workspace = true
reth-cli-runner.workspace = true
reth-cli-commands.workspace = true
reth-cli-util.workspace = true
reth-consensus-common.workspace = true
reth-hlfs.workspace = true
reth-rpc-builder.workspace = true
reth-rpc.workspace = true
reth-rpc-types-compat.workspace = true
reth-rpc-api = { workspace = true, features = ["client"] }
reth-rpc-eth-types.workspace = true
reth-rpc-server-types.workspace = true
reth-network = { workspace = true, features = ["serde"] }
reth-network-p2p.workspace = true
reth-network-api.workspace = true
reth-downloaders.workspace = true
reth-tracing.workspace = true
reth-tasks.workspace = true
reth-payload-builder.workspace = true
reth-payload-primitives.workspace = true
reth-payload-validator.workspace = true
reth-basic-payload-builder.workspace = true
reth-static-file.workspace = true
reth-trie = { workspace = true, features = ["metrics"] }
reth-trie-db = { workspace = true, features = ["metrics"] }
reth-node-api.workspace = true
reth-node-core.workspace = true
reth-ethereum-payload-builder.workspace = true
reth-ethereum-primitives.workspace = true
reth-node-ethereum = { workspace = true, features = ["js-tracer"] }
reth-node-builder.workspace = true
reth-node-events.workspace = true
reth-node-metrics.workspace = true
reth-consensus.workspace = true
reth-prune.workspace = true
reth-hyperliquid-types.workspace = true

# crypto
alloy-eips = { workspace = true, features = ["kzg"] }
alloy-rlp.workspace = true
alloy-rpc-types = { workspace = true, features = ["engine"] }
alloy-consensus.workspace = true
alloy-primitives.workspace = true
alloy-rpc-types-eth.workspace = true

# tracing
tracing.workspace = true

# io
serde_json.workspace = true

# async
tokio = { workspace = true, features = ["sync", "macros", "time", "rt-multi-thread", "net", "fs"] }
futures.workspace = true
futures-util.workspace = true

# time
time = { workspace = true }

# misc
aquamarine.workspace = true
eyre.workspace = true
clap = { workspace = true, features = ["derive", "env"] }
backon.workspace = true
similar-asserts.workspace = true

parking_lot.workspace = true
serde = { workspace = true, features = ["derive"] }
reth-e2e-test-utils.workspace = true
once_cell.workspace = true
reth-ethereum-forks.workspace = true
jsonrpsee.workspace = true
jsonrpsee-core.workspace = true
reth-rpc-layer.workspace = true

lz4_flex.workspace = true
rmp-serde.workspace = true
reqwest.workspace = true

[dev-dependencies]
tempfile.workspace = true

[features]
default = ["jemalloc"]

dev = ["reth-cli-commands/arbitrary"]

asm-keccak = [
    "reth-node-core/asm-keccak",
    "reth-primitives/asm-keccak",
    "alloy-primitives/asm-keccak",
]

jemalloc = [
    "reth-cli-util/jemalloc",
    "reth-node-core/jemalloc",
    "reth-node-metrics/jemalloc",
]
jemalloc-prof = [
    "reth-cli-util/jemalloc",
    "reth-cli-util/jemalloc-prof",
]
tracy-allocator = ["reth-cli-util/tracy-allocator"]

# Because jemalloc is default and preferred over snmalloc when both features are
# enabled, `--no-default-features` should be used when enabling snmalloc or
# snmalloc-native.
snmalloc = ["reth-cli-util/snmalloc"]
snmalloc-native = ["reth-cli-util/snmalloc-native"]

min-error-logs = ["tracing/release_max_level_error"]
min-warn-logs = ["tracing/release_max_level_warn"]
min-info-logs = ["tracing/release_max_level_info"]
min-debug-logs = ["tracing/release_max_level_debug"]
min-trace-logs = ["tracing/release_max_level_trace"]

[[bin]]
name = "reth"
path = "src/main.rs"
