[package]
name = "chia"
version.workspace = true
edition = "2024"
license = "Apache-2.0"
description = "A meta-crate that exports all of the Chia crates in the workspace."
authors = [
    "Richard Kiss <him@richardkiss.com>",
    "Arvid Norberg <arvid@chia.net>",
    "Brandon Haggstrom <b.haggstrom@chia.net>"
]
homepage = "https://github.com/Chia-Network/chia_rs"
repository = "https://github.com/Chia-Network/chia_rs"

[workspace]
members = ["crates/*", "crates/*/fuzz", "wasm", "wheel"]

[workspace.package]
version = "0.45.0"

[workspace.lints.rust]
rust_2018_idioms = { level = "deny", priority = -1 }
rust_2021_compatibility = { level = "deny", priority = -1 }
future_incompatible = { level = "deny", priority = -1 }
nonstandard_style = { level = "deny", priority = -1 }
unsafe_code = "deny"
non_ascii_idents = "deny"
unused_imports = "warn"
unused_import_braces = "deny"
unreachable_code = "deny"
unreachable_patterns = "deny"
dead_code = "deny"
deprecated = "deny"
deprecated_in_future = "deny"
trivial_casts = "deny"
trivial_numeric_casts = "deny"

[workspace.lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "warn", priority = -1 }
must_use_candidate = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
wildcard_imports = "allow"
too_many_lines = "allow"
module_name_repetitions = "allow"
doc_markdown = "allow"
cast_possible_truncation = "allow"
cast_sign_loss = "allow"
cast_precision_loss = "allow"
cast_possible_wrap = "allow"
cast_lossless = "allow"
similar_names = "allow"
implicit_hasher = "allow"

# TODO: This will be cleaned up separately
collapsible_if = "allow"

[dependencies]
chia-bls = { workspace = true, optional = true }
chia-secp = { workspace = true, optional = true }
chia-client = { workspace = true, optional = true }
chia-consensus = { workspace = true, optional = true }
chia-datalayer = { workspace = true, optional = true }
chia-protocol = { workspace = true, optional = true }
chia-ssl = { workspace = true, optional = true }
chia-serde = { workspace = true, optional = true }
chia-traits = { workspace = true, optional = true }
chia-puzzle-types = { workspace = true, optional = true }
chia-sha2 = { workspace = true, optional = true }
clvm-traits = { workspace = true, optional = true }
clvm-utils = { workspace = true, optional = true }
clvmr = { workspace = true }

# This is required since clvmr is only added here to provide the openssl feature conditionally.
# In the future we could pass the openssl feature to each of the relevant workspace crates instead.
[package.metadata.cargo-machete]
ignored = ["clvmr"]

[features]
default = [
    "bls",
    "secp",
    "client",
    "consensus",
    "datalayer",
    "protocol",
    "ssl",
    "serde",
    "traits",
    "puzzle-types",
    "sha2",
    "clvm-traits",
    "clvm-utils"
]

bls = ["dep:chia-bls", "clvm-traits/chia-bls"]
secp = ["dep:chia-secp", "clvm-traits/chia-secp"]
client = ["dep:chia-client"]
consensus = ["dep:chia-consensus"]
datalayer = ["dep:chia-datalayer"]
protocol = ["dep:chia-protocol"]
ssl = ["dep:chia-ssl"]
serde = ["dep:chia-serde", "chia-protocol/serde", "chia-bls/serde"]
traits = ["dep:chia-traits"]
puzzle-types = ["dep:chia-puzzle-types"]
sha2 = ["dep:chia-sha2"]
clvm-traits = ["dep:clvm-traits"]
clvm-utils = ["dep:clvm-utils"]

openssl = ["chia-sha2/openssl", "clvmr/openssl"]

[profile.release]
lto = "thin"

[lib]
bench = false

[workspace.dependencies]
chia_py_streamable_macro = { path = "./crates/chia_py_streamable_macro", version = "0.45.0" }
chia_streamable_macro = { path = "./crates/chia_streamable_macro", version = "0.45.0" }
chia-bls = { path = "./crates/chia-bls", version = "0.45.0" }
chia-client = { path = "./crates/chia-client", version = "0.45.0" }
chia-consensus = { path = "./crates/chia-consensus", version = "0.45.0" }
chia-datalayer = { path = "./crates/chia-datalayer", version = "0.45.0" }
chia-datalayer-macro = { path = "./crates/chia-datalayer/macro", version = "0.45.0" }
chia-protocol = { path = "./crates/chia-protocol", version = "0.45.0" }
chia-secp = { path = "./crates/chia-secp", version = "0.45.0" }
chia-ssl = { path = "./crates/chia-ssl", version = "0.45.0" }
chia-traits = { path = "./crates/chia-traits", version = "0.45.0" }
chia-puzzle-types = { path = "./crates/chia-puzzle-types", version = "0.45.0" }
chia-sha2 = { path = "./crates/chia-sha2", version = "0.45.0" }
chia-serde = { path = "./crates/chia-serde", version = "0.45.0" }
clvm-traits = { path = "./crates/clvm-traits", version = "0.45.0" }
clvm-utils = { path = "./crates/clvm-utils", version = "0.45.0" }
clvm-derive = { path = "./crates/clvm-derive", version = "0.45.0" }
chia-pos2 = "0.6.0"
chia-consensus-fuzz = { path = "./crates/chia-consensus/fuzz", version = "0.45.0" }
chia-bls-fuzz = { path = "./crates/chia-bls/fuzz", version = "0.45.0" }
chia-datalayer-fuzz = { path = "./crates/chia-datalayer/fuzz", version = "0.45.0" }
chia-protocol-fuzz = { path = "./crates/chia-protocol/fuzz", version = "0.45.0" }
chia-puzzle-types-fuzz = { path = "./crates/chia-puzzle-types/fuzz", version = "0.45.0" }
clvm-traits-fuzz = { path = "./crates/clvm-traits/fuzz", version = "0.45.0" }
clvm-utils-fuzz = { path = "./crates/clvm-utils/fuzz", version = "0.45.0" }
blst = { version = "0.3.16", features = ["portable"] }
clvmr = "0.17.7"
clvm-fuzzing = "0.17.0"
syn = "2.0.101"
quote = "1.0.40"
proc-macro2 = "1.0.95"
proc-macro-crate = "1.3.1"
anyhow = "1.0.97"
sha2 = "0.10.9"
hkdf = "0.12.0"
getrandom = { version = "0.4", features = ["sys_rng"] }
hex = "0.4.3"
thiserror = "2.0.0"
pyo3 = "0.27.1"
arbitrary = "1.4.1"
rand = "0.9"
criterion = "0.5.1"
rstest = "0.22.0"
expect-test = "1.5.0"
tokio = "1.45.0"
tokio-tungstenite = "0.28.0"
futures-util = "0.3.31"
tungstenite = "0.28.0"
hex-literal = "0.4.1"
num-traits = "0.2.15"
num-bigint = "0.4.5"
text-diff = "0.4.0"
lazy_static = "1.4.0"
rcgen = "0.13.2"
rsa = "0.10.0-rc.18"
time = "0.3.47"
rusqlite = "0.31.0"
clap = "4.5.38"
zstd = "0.13.3"
blocking-threadpool = "1.0.1"
bitflags = "2.6"
libfuzzer-sys = "0.4"
wasm-bindgen = "0.2.100"
openssl = "0.10.71"
k256 = "0.14.0-rc"
p256 = "0.14.0-rc"
rand_chacha = "0.9.0"
chia-puzzles = "0.20.1"
serde = "1.0.219"
serde_json = "1.0.140"
bincode = "1.3.3"
indoc = "2.0.6"
linreg = "0.2.0"
gnuplot = "0.0.46"
open = "5.3.0"
url = "2.5.2"
percent-encoding = "2.3.1"
rayon = "1.10.0"
tempfile = "3.19.1"
bitvec = "1.0.1"
indexmap = "2.10.0"
serde_arrays = "0.2.0"
