[package]
name = "ethers"
version = "1.0.2"
edition = "2021"
rust-version = "1.62"
authors = ["Georgios Konstantopoulos <me@gakonst.com>"]
license = "MIT OR Apache-2.0"
readme = "README.md"
documentation = "https://docs.rs/ethers"
repository = "https://github.com/gakonst/ethers-rs"
homepage = "https://docs.rs/ethers"
description = "Complete Ethereum library and wallet implementation in Rust."

[workspace]
members = [
    "ethers-addressbook",
    "ethers-contract",
    "ethers-providers",
    "ethers-signers",
    "ethers-core",
    "ethers-middleware",
    "ethers-etherscan",
    "ethers-solc",
    "examples/ethers-wasm",
]

default-members = [
    "ethers-addressbook",
    "ethers-contract",
    "ethers-providers",
    "ethers-signers",
    "ethers-core",
    "ethers-middleware",
    "ethers-etherscan",
    "ethers-solc",
]

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

[package.metadata.playground]
features = ["full"]

[features]
default = ["abigen"]

celo = [
    "ethers-core/celo",
    "ethers-providers/celo",
    "ethers-signers/celo",
    "ethers-contract/celo",
    "ethers-middleware/celo",
    "legacy",
]

legacy = ["ethers-core/legacy", "ethers-contract/legacy"]

# individual features per sub-crate
## core
eip712 = ["ethers-contract/eip712", "ethers-core/eip712"]
## providers
ws = ["ethers-providers/ws"]
ipc = ["ethers-providers/ipc"]
rustls = [
    "ethers-providers/rustls",
    "ethers-etherscan/rustls",
    "ethers-contract/rustls",
    "ethers-solc/rustls",
]
openssl = [
    "ethers-providers/openssl",
    "ethers-etherscan/openssl",
    "ethers-contract/openssl",
    "ethers-solc/openssl",
]
dev-rpc = ["ethers-providers/dev-rpc"]
## signers
ledger = ["ethers-signers/ledger"]
trezor = ["ethers-signers/trezor"]
yubi = ["ethers-signers/yubi"]
## contracts
abigen = ["ethers-contract/abigen"]
### abigen without reqwest
abigen-offline = ["ethers-contract/abigen-offline"]
## solc
solc-full = ["ethers-solc", "ethers-solc/full"]
solc-tests = ["ethers-solc", "ethers-solc/tests"]
solc-sha2-asm = ["ethers-solc", "ethers-solc/asm"]

[dependencies]
ethers-addressbook = { version = "^1.0.0", default-features = false, path = "./ethers-addressbook" }
ethers-contract = { version = "^1.0.0", default-features = false, path = "./ethers-contract" }
ethers-core = { version = "^1.0.0", default-features = false, path = "./ethers-core" }
ethers-providers = { version = "^1.0.0", default-features = false, path = "./ethers-providers" }
ethers-signers = { version = "^1.0.0", default-features = false, path = "./ethers-signers" }
ethers-middleware = { version = "^1.0.0", default-features = false, path = "./ethers-middleware" }
ethers-solc = { version = "^1.0.0", default-features = false, path = "./ethers-solc", optional = true }
ethers-etherscan = { version = "^1.0.0", default-features = false, path = "./ethers-etherscan" }

[dev-dependencies]
ethers-contract = { version = "^1.0.0", default-features = false, path = "./ethers-contract", features = [
    "abigen",
    "eip712",
] }
ethers-providers = { version = "^1.0.0", default-features = false, path = "./ethers-providers", features = [
    "ws",
] }

[target.'cfg(target_family = "unix")'.dev-dependencies]
ethers-providers = { version = "^1.0.0", default-features = false, path = "./ethers-providers", features = [
    "ws",
    "ipc",
] }
eyre = "0.6"
rand = "0.8.5"
serde = { version = "1.0.124", features = ["derive"] }
serde_json = "1.0.64"
tokio = { version = "1.18", features = ["macros", "rt-multi-thread"] }
hex = "0.4.3"
bytes = "1.3.0"

# profile for the wasm example
[profile.release.package.ethers-wasm]
# Tell `rustc` to optimize for small code size.
opt-level = "s"

[[example]]
name = "abigen"
path = "examples/abigen.rs"
required-features = ["ethers-solc"]

[[example]]
name = "contract_human_readable"
path = "examples/contract_human_readable.rs"
required-features = ["ethers-solc"]

[[example]]
name = "contract_with_abi"
path = "examples/contract_with_abi.rs"
required-features = ["ethers-solc"]

[[example]]
name = "contract_with_abi_and_bytecode"
path = "examples/contract_with_abi_and_bytecode.rs"
required-features = ["ethers-solc"]

[[example]]
name = "ipc"
path = "examples/ipc.rs"
required-features = ["ipc"]

[[example]]
name = "ledger"
path = "examples/ledger.rs"
required-features = ["ledger"]

[[example]]
name = "moonbeam_with_abi"
path = "examples/moonbeam_with_abi.rs"
required-features = ["legacy", "ethers-solc"]

[[example]]
name = "trezor"
path = "examples/trezor.rs"
required-features = ["trezor"]

[[example]]
name = "yubi"
path = "examples/yubi.rs"
required-features = ["yubi"]

[[example]]
name = "paginated_logs"
path = "examples/paginated_logs.rs"
required-features = ["rustls"]

[[example]]
name = "subscribe_contract_events"
path = "examples/subscribe_contract_events.rs"
required-features = ["rustls", "ws"]

[[example]]
name = "subscribe_contract_events_with_meta"
path = "examples/subscribe_contract_events_with_meta.rs"
required-features = ["rustls", "ws"]
