[package]
name = "reth-provider"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
description = "Reth storage provider."

[lints]
workspace = true

[dependencies]
# reth
reth-chainspec.workspace = true
reth-execution-types.workspace = true
reth-primitives = { workspace = true, features = ["reth-codec", "secp256k1"] }
reth-primitives-traits = { workspace = true, features = ["reth-codec"] }
reth-fs-util.workspace = true
reth-errors.workspace = true
reth-storage-errors.workspace = true
reth-storage-api.workspace = true
reth-network-p2p.workspace = true
reth-db = { workspace = true, features = ["mdbx"] }
reth-db-api.workspace = true
reth-prune-types.workspace = true
reth-stages-types.workspace = true
reth-trie = { workspace = true, features = ["metrics"] }
reth-trie-db = { workspace = true, features = ["metrics"] }
reth-nippy-jar.workspace = true
reth-codecs.workspace = true
reth-evm.workspace = true
reth-chain-state.workspace = true
reth-node-types.workspace = true

# ethereum
alloy-eips.workspace = true
alloy-primitives.workspace = true
alloy-rpc-types-engine.workspace = true
alloy-consensus.workspace = true
revm.workspace = true

# async
tokio = { workspace = true, features = ["sync", "macros", "rt-multi-thread"] }

# tracing
tracing.workspace = true

# metrics
reth-metrics.workspace = true
metrics.workspace = true

# misc
auto_impl.workspace = true
itertools.workspace = true
notify = { workspace = true, default-features = false, features = ["macos_fsevent"] }
parking_lot.workspace = true
dashmap = { workspace = true, features = ["inline"] }
strum.workspace = true
eyre.workspace = true

# test-utils
reth-ethereum-engine-primitives = { workspace = true, optional = true }

# parallel utils
rayon.workspace = true

[dev-dependencies]
reth-db = { workspace = true, features = ["test-utils"] }
reth-primitives = { workspace = true, features = ["arbitrary", "test-utils"] }
reth-chain-state = { workspace = true, features = ["test-utils"] }
reth-trie = { workspace = true, features = ["test-utils"] }
reth-testing-utils.workspace = true
reth-ethereum-engine-primitives.workspace = true
reth-ethereum-primitives.workspace = true

parking_lot.workspace = true
tempfile.workspace = true
assert_matches.workspace = true
rand.workspace = true
eyre.workspace = true

alloy-consensus.workspace = true

[features]
serde = [
    "dashmap/serde",
    "notify/serde",
    "parking_lot/serde",
    "rand/serde",
    "alloy-primitives/serde",
    "alloy-consensus/serde",
    "alloy-eips/serde",
    "alloy-rpc-types-engine/serde",
    "revm/serde",
    "reth-codecs/serde",
    "reth-primitives-traits/serde",
    "reth-execution-types/serde",
    "reth-trie-db/serde",
    "reth-trie/serde",
]
test-utils = [
    "reth-db/test-utils",
    "reth-nippy-jar/test-utils",
    "reth-trie/test-utils",
    "reth-chain-state/test-utils",
    "reth-ethereum-engine-primitives",
    "reth-ethereum-primitives/test-utils",
    "reth-chainspec/test-utils",
    "reth-evm/test-utils",
    "reth-network-p2p/test-utils",
    "reth-primitives/test-utils",
    "reth-primitives-traits/test-utils",
    "reth-codecs/test-utils",
    "reth-db-api/test-utils",
    "reth-trie-db/test-utils",
    "revm/test-utils",
    "reth-prune-types/test-utils",
    "reth-stages-types/test-utils",
]
