[package]
name = "types"
version = "0.2.1"
authors = ["Paul Hauner <paul@paulhauner.com>", "Age Manning <Age@AgeManning.com>"]
edition = { workspace = true }

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

[dependencies]
merkle_proof = { workspace = true }
bls = { workspace = true, features = ["arbitrary"] }
kzg = { workspace = true }
compare_fields = { workspace = true }
compare_fields_derive = { workspace = true }
eth2_interop_keypairs = { path = "../../common/eth2_interop_keypairs" }
ethereum-types = { workspace = true, features = ["arbitrary"] }
ethereum_hashing = { workspace = true }
hex = { workspace = true }
int_to_bytes = { workspace = true }
log = { workspace = true }
rayon = { workspace = true }
rand = { workspace = true }
safe_arith = { workspace = true }
serde = { workspace = true, features = ["rc"] }
slog = { workspace = true }
ethereum_ssz = { workspace = true, features = ["arbitrary"] }
ethereum_ssz_derive = { workspace = true }
ssz_types = { workspace = true, features = ["arbitrary"] }
swap_or_not_shuffle = { workspace = true, features = ["arbitrary"] }
test_random_derive = { path = "../../common/test_random_derive" }
tree_hash = { workspace = true, features = ["arbitrary"] }
tree_hash_derive = { workspace = true }
rand_xorshift = "0.3.0"
cached_tree_hash = { workspace = true }
serde_yaml = { workspace = true }
tempfile = { workspace = true }
derivative = { workspace = true }
rusqlite = { workspace = true }
# The arbitrary dependency is enabled by default since Capella to avoid complexity introduced by
# `AbstractExecPayload`
arbitrary = { workspace = true, features = ["derive"] }
ethereum_serde_utils = { workspace = true }
regex = { workspace = true }
lazy_static = { workspace = true }
parking_lot = { workspace = true }
itertools = { workspace = true }
superstruct = { workspace = true }
metastruct = "0.1.0"
serde_json = { workspace = true }
smallvec = { workspace = true }
maplit = { workspace = true }
milhouse = { workspace = true }
rpds = { workspace = true }

[dev-dependencies]
criterion = { workspace = true }
beacon_chain = { workspace = true }
state_processing = { workspace = true }
tokio = { workspace = true }
paste = { workspace = true }

[features]
default = ["sqlite", "legacy-arith"]
# Allow saturating arithmetic on slots and epochs. Enabled by default, but deprecated.
legacy-arith = []
sqlite = []
# The `arbitrary-fuzz` feature is a no-op provided for backwards compatibility.
# For simplicity `Arbitrary` is now derived regardless of the feature's presence.
arbitrary-fuzz = []
portable = ["bls/supranational-portable"]
