[package]
name = "ethers-core"
authors = ["Georgios Konstantopoulos <me@gakonst.com>"]
readme = "README.md"
description = "Ethereum data types, cryptography and utilities"

version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
documentation.workspace = true
repository.workspace = true
homepage.workspace = true
categories.workspace = true
keywords.workspace = true
exclude.workspace = true

[package.metadata.docs.rs]
all-features = true
rustc-args = ["--cfg", "docsrs"]
rustdoc-args = ["--cfg", "docsrs"]

[package.metadata.playground]
all-features = true

[dependencies]
# abi
open-fastrlp = { version = "0.1.4", features = ["std", "derive", "ethereum-types"] }
rlp = { version = "0.5", features = ["derive"] }
ethabi = { version = "18.0.0", default-features = false, features = ["full-serde", "rlp"] }
arrayvec = { version = "0.7", default-features = false }

# crypto
elliptic-curve.workspace = true
generic-array.workspace = true
k256 = { workspace = true, features = ["ecdsa", "std"] }
tiny-keccak.workspace = true
rand.workspace = true

# misc
chrono = { version = "0.4", default-features = false }
serde.workspace = true
serde_json = { workspace = true, features = ["arbitrary_precision"] }
thiserror.workspace = true
bytes = { workspace = true, features = ["serde"] }
hex.workspace = true
once_cell = { workspace = true, optional = true }
unicode-xid = "0.2"
strum = { version = "0.24", features = ["derive"] }
num_enum = "0.5"

# macros feature enabled dependencies
cargo_metadata = { version = "0.15.3", optional = true }

# eip712 feature enabled dependencies
convert_case = { version = "0.6.0", optional = true }
syn = { workspace = true, optional = true }
proc-macro2 = { workspace = true, optional = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tempfile.workspace = true

[target.'cfg(target_arch = "wasm32")'.dependencies]
# NOTE: this enables wasm compatibility for getrandom indirectly
getrandom.workspace = true

[dev-dependencies]
bincode = { version = "1.3.3", default-features = false }
once_cell.workspace = true
hex-literal.workspace = true
rand.workspace = true

[features]
celo = ["legacy"] # celo support extends the transaction format with extra fields
legacy = []
eip712 = ["convert_case", "syn", "proc-macro2"]
macros = ["syn", "cargo_metadata", "once_cell"]
