[package]
name = "qcs-api-client-grpc"
version = "0.18.2-dev.0"
license = "Apache-2.0"
readme = "README.md"
homepage = "https://github.com/rigetti/qcs-api-client-rust"
categories = ["api-bindings", "authentication"]
keywords = ["qcs", "quantum", "rigetti", "api"]
description = "gRPC client for the QCS API"
publish = ["crates-io"]
repository = "https://github.com/rigetti/qcs-api-client-rust"

edition.workspace = true
authors.workspace = true
rust-version.workspace = true

[features]
server = []
regen = []
# Can be used to provide HTTP/1.1 support.
grpc-web = ["qcs-dependencies-client/tonic-web"]
tracing-opentelemetry = [
    "qcs-api-client-common/tracing-config",
    "tracing-config",
    "tracing",
]
tracing = ["qcs-api-client-common/tracing-config", "dep:tracing", "dep:urlpattern"]
tracing-config = ["qcs-api-client-common/tracing-config", "tracing"]

[dependencies]
backoff = { workspace = true, features = ["tokio"] }
futures-util = { workspace = true }
http-body = { workspace = true }
http-body-util = { workspace = true }
hyper = { workspace = true }
hyper-socks2 = { workspace = true, default-features = false }
hyper-util = { workspace = true, features = ["client-legacy"] }
qcs-api-client-common = { workspace = true }
qcs-dependencies-client = { workspace = true, features = ["grpc", "http", "tonic-health", "tower-http"] }
rigetti-hyper-proxy = { workspace = true, default-features = false, features = ["rustls"] }
serde = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["time"] }
tracing = { workspace = true, optional = true }
url = { workspace = true }
urlpattern = { workspace = true, optional = true }
uuid = { workspace = true, features = ["v4"] }

[build-dependencies]
qcs-dependencies-client = { workspace = true, features = ["codegen-proto", "grpc"] }

[dev-dependencies]
async-std = { workspace = true, features = ["attributes"] }
jsonwebtoken = { workspace = true }
once_cell = { workspace = true }
qcs-dependencies-client = { workspace = true, features = ["grpc", "tonic-health"] }
rstest = { workspace = true }
serde_json = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true, features = ["parking_lot", "rt-multi-thread"] }
tokio-stream = { workspace = true, features = ["net"] }
tracing-subscriber = { workspace = true }
