[package]
name = "blueprint-core"
version = "0.2.0-alpha.2"
description = "Blueprint SDK Core functionality"
authors.workspace = true
edition.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
rust-version.workspace = true

[dependencies]
bytes.workspace = true
futures-util.workspace = true
pin-project-lite.workspace = true
tower = { workspace = true, features = ["util"] }
hashbrown = { workspace = true, default-features = false, features = ["default-hasher", "inline-more"] }
tiny-keccak = { workspace = true, features = ["keccak"] }
tracing = { workspace = true }

[dev-dependencies]
# Path-only dev-dep on the umbrella SDK. The workspace declares
# `blueprint-sdk = { version = "...", path = "./crates/sdk" }`, but a
# circular dev-dep on the umbrella crate breaks `cargo publish`: cargo
# would carry the version constraint into this published manifest and
# then fail to resolve `blueprint-sdk = "^0.2.0-alpha.X"` against
# crates.io (the umbrella depends on this crate, so the umbrella can
# never be on crates.io before this crate is). The path-only form is
# stripped from the published manifest entirely, while local doctests
# and tests still resolve via the workspace path.
blueprint-sdk = { path = "../sdk", features = ["std"] }
serde_json = { workspace = true, features = ["alloc"] }
tower = { workspace = true, features = ["util", "timeout", "limit", "load-shed", "steer", "filter"] }
tokio = { workspace = true, features = ["full"] }

[features]
default = ["std", "tracing"]
std = ["futures-util/std"]
tracing = []

[lints]
workspace = true
