[package]
name = "ethrex-vm"
version.workspace = true
edition.workspace = true
authors.workspace = true
documentation.workspace = true
license.workspace = true
description = "EVM execution backend and database abstraction for the ethrex Ethereum execution client"
repository.workspace = true

[dependencies]
ethrex-common = { workspace = true, default-features = false }
ethrex-crypto.workspace = true
ethrex-levm = { path = "./levm", version = "17.0.0", default-features = false }
ethrex-rlp.workspace = true

derive_more = { version = "1.0.0", features = ["full"] }
bytes.workspace = true
thiserror.workspace = true
tracing.workspace = true
serde.workspace = true
rayon = { workspace = true, optional = true }
rustc-hash.workspace = true

dyn-clone = "1.0"

[dev-dependencies]
hex.workspace = true

[lib]
path = "./lib.rs"

[features]
default = ["secp256k1"]

rayon = ["dep:rayon", "ethrex-levm/rayon"]
secp256k1 = ["ethrex-levm/secp256k1", "ethrex-common/secp256k1", "rayon"]
c-kzg = ["ethrex-levm/c-kzg", "ethrex-common/c-kzg"]
eip-8025 = ["ethrex-levm/eip-8025", "ethrex-common/eip-8025"]

sp1 = ["ethrex-levm/sp1", "ethrex-common/sp1"]
risc0 = ["ethrex-levm/risc0", "ethrex-common/risc0", "c-kzg"]
zisk = ["ethrex-levm/zisk", "ethrex-common/zisk"]
openvm = ["ethrex-levm/openvm", "ethrex-common/openvm"]
perf_opcode_timings = ["ethrex-levm/perf_opcode_timings"]

debug = ["ethrex-levm/debug"]

[lints.clippy]
unwrap_used = "deny"
redundant_clone = "warn"
