[package]
name = "ethers-contract-abigen"
authors = [
    "Nicholas Rodrigues Lordello <nlordell@gmail.com>",
    "Georgios Konstantopoulos <me@gakonst.com>",
]
readme = "README.md"
description = "Code generation for type-safe bindings to Ethereum smart contracts"

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

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

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

[dependencies]
ethers-core = { workspace = true, features = ["macros"] }

proc-macro2.workspace = true
quote.workspace = true
syn.workspace = true
prettyplease = "0.1.25"

Inflector = "0.11"
serde.workspace = true
serde_json.workspace = true
hex.workspace = true
dunce.workspace = true
walkdir.workspace = true
eyre.workspace = true
regex.workspace = true
toml.workspace = true

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
# online
ethers-etherscan = { workspace = true, optional = true }
reqwest = { workspace = true, features = ["blocking"], optional = true }
tokio = { workspace = true, optional = true }
url = { workspace = true, optional = true }

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

[features]
online = ["reqwest", "ethers-etherscan", "url", "tokio"]
openssl = ["online", "reqwest/native-tls", "ethers-etherscan/openssl"]
rustls = ["online", "reqwest/rustls-tls", "ethers-etherscan/rustls"]

[dev-dependencies]
tempfile.workspace = true
ethers-solc = { workspace = true, features = ["project-util", "svm-solc"] }
