[package]
name = "reth-optimism-node"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true

[lints]
workspace = true

[dependencies]
# reth
reth-chainspec.workspace = true
reth-db = { workspace = true, features = ["op"] }
reth-engine-local = { workspace = true, features = ["op"] }
reth-primitives.workspace = true
reth-primitives-traits.workspace = true
reth-payload-builder.workspace = true
reth-payload-util.workspace = true
reth-payload-validator.workspace = true
reth-consensus.workspace = true
reth-node-api.workspace = true
reth-node-builder.workspace = true
reth-tracing.workspace = true
reth-provider.workspace = true
reth-transaction-pool.workspace = true
reth-network.workspace = true
reth-evm.workspace = true
reth-revm = { workspace = true, features = ["std"] }
reth-trie-db.workspace = true
reth-rpc-server-types.workspace = true
reth-rpc-eth-api.workspace = true
reth-rpc-eth-types.workspace = true
reth-tasks = { workspace = true, optional = true }

# op-reth
reth-optimism-payload-builder.workspace = true
reth-optimism-evm.workspace = true
reth-optimism-rpc.workspace = true
reth-optimism-txpool.workspace = true
reth-optimism-chainspec.workspace = true
reth-optimism-consensus.workspace = true
reth-optimism-forks.workspace = true
reth-optimism-primitives = { workspace = true, features = ["serde", "serde-bincode-compat", "reth-codec"] }

# revm with required optimism features
revm = { workspace = true, features = ["secp256k1", "blst", "c-kzg"] }
revm-optimism.workspace = true

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

# misc
clap.workspace = true
serde.workspace = true
eyre.workspace = true

# rpc
serde_json.workspace = true

# test-utils dependencies
reth-e2e-test-utils = { workspace = true, optional = true }
alloy-genesis = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }

[dev-dependencies]
reth-optimism-node = { workspace = true, features = ["test-utils"] }
reth-db.workspace = true
reth-node-core.workspace = true
reth-node-builder = { workspace = true, features = ["test-utils"] }
reth-provider = { workspace = true, features = ["test-utils"] }
reth-revm = { workspace = true, features = ["test-utils"] }
reth-tasks.workspace = true

alloy-primitives.workspace = true
op-alloy-consensus.workspace = true
alloy-network.workspace = true
alloy-consensus.workspace = true
futures.workspace = true

[features]
default = ["reth-codec"]
asm-keccak = [
    "reth-primitives/asm-keccak",
    "alloy-primitives/asm-keccak",
    "revm/asm-keccak",
    "reth-optimism-node/asm-keccak",
    "reth-node-core/asm-keccak",
]
js-tracer = [
    "reth-node-builder/js-tracer",
]
test-utils = [
    "reth-tasks",
    "reth-e2e-test-utils",
    "alloy-genesis",
    "tokio",
    "reth-node-builder/test-utils",
    "reth-chainspec/test-utils",
    "reth-consensus/test-utils",
    "reth-evm/test-utils",
    "reth-network/test-utils",
    "reth-payload-builder/test-utils",
    "reth-primitives/test-utils",
    "reth-revm/test-utils",
    "reth-db/test-utils",
    "reth-provider/test-utils",
    "reth-transaction-pool/test-utils",
    "reth-trie-db/test-utils",
    "revm/test-utils",
    "reth-optimism-node/test-utils",
    "reth-optimism-primitives/arbitrary",
    "reth-primitives-traits/test-utils",
]
reth-codec = [
    "reth-primitives/reth-codec",
    "reth-optimism-primitives/reth-codec",
]
