[package]
name = "ethers-providers"
version = "1.0.0"
edition = "2018"
rust-version = "1.62"
authors = ["Georgios Konstantopoulos <me@gakonst.com>"]
license = "MIT OR Apache-2.0"
description = "Provider implementations for the ethers-rs crate"
homepage = "https://docs.rs/ethers"
repository = "https://github.com/gakonst/ethers-rs"
keywords = ["ethereum", "web3", "celo", "ethers"]

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

[dependencies]
ethers-core = { version = "^1.0.0", path = "../ethers-core", default-features = false }

async-trait = { version = "0.1.50", default-features = false }
hex = { version = "0.4.3", default-features = false, features = ["std"] }
reqwest = { version = "0.11.12", default-features = false, features = ["json"] }
serde = { version = "1.0.124", default-features = false, features = ["derive"] }
serde_json = { version = "1.0.64", default-features = false, features = ["raw_value"] }
thiserror = { version = "1.0", default-features = false }
url = { version = "2.3.1", default-features = false }
auto_impl = { version = "1.0.1", default-features = false }
http = { version = "0.2" }
base64 = "0.13"

# required for implementing stream on the filters
futures-core = { version = "0.3.16", default-features = false }
futures-util = { version = "^0.3" }
futures-timer = { version = "3.0.2", default-features = false }
futures-channel = { version = "0.3.16", default-features = false, optional = true }
pin-project = { version = "1.0.11", default-features = false }

# tracing
tracing = { version = "0.1.37", default-features = false }
tracing-futures = { version = "0.2.5", default-features = false, features = ["std-future"] }

bytes = { version = "1.2.1", default-features = false, optional = true }
once_cell = "1.15.0"
hashers = "1.0.1"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
# tokio
tokio = { version = "1.18", features = ["time"] }
tokio-tungstenite = { version = "0.17.2", default-features = false, features = [
    "connect",
], optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
ws_stream_wasm = "0.7"
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
web-sys = { version = "0.3", features = ["console"] }
wasm-timer = "0.2"
# this is currently necessary for `wasm-timer::Delay` to work
parking_lot = { version = "0.11", features = ["wasm-bindgen"] }
# NOTE: this enables wasm compatibility for getrandom indirectly
getrandom = { version = "0.2", features = ["js"] }

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
tokio = { version = "1.18", default-features = false, features = ["rt", "macros", "time"] }
tempfile = "3.3.0"

[features]
default = ["ws", "rustls"]
celo = ["ethers-core/celo"]
ws = ["tokio-tungstenite", "futures-channel"]
ipc = ["tokio/io-util", "bytes", "futures-channel"]

openssl = ["tokio-tungstenite/native-tls", "reqwest/native-tls"]
# we use the webpki roots so we can build static binaries w/o any root cert dependencies
# on the host
rustls = ["tokio-tungstenite/rustls-tls-webpki-roots", "reqwest/rustls-tls"]
dev-rpc = []
