[package]
name = "rln"
version = "0.7.0"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "APIs to manage, compute and verify zkSNARK proofs and RLN primitives"
documentation = "https://github.com/vacp2p/zerokit"
homepage = "https://vac.dev"
repository = "https://github.com/vacp2p/zerokit"

[lib]
crate-type = ["rlib", "staticlib"]
bench = false

# This flag disable cargo doctests, i.e. testing example code-snippets in documentation
doctest = false

[dependencies]
# ZKP Generation
ark-bn254 = { version = "0.5.0", features = ["std"] }
ark-relations = { version = "0.5.1", features = ["std"] }
ark-ff = { version = "0.5.0", default-features = false, features = [
    "parallel",
] }
ark-ec = { version = "0.5.0", default-features = false, features = [
    "parallel",
] }

ark-std = { version = "0.5.0", default-features = false, features = [
    "parallel",
] }
ark-poly = { version = "0.5.0", default-features = false, features = [
    "parallel",
] }
ark-groth16 = { version = "0.5.0", default-features = false, features = [
    "parallel",
] }
ark-serialize = { version = "0.5.0", default-features = false, features = [
    "parallel",
] }

# error handling
color-eyre = "0.6.3"
thiserror = "2.0.12"

# utilities
byteorder = "1.5.0"
cfg-if = "1.0"
num-bigint = { version = "0.4.6", default-features = false, features = [
    "rand",
    "std",
] }
num-traits = "0.2.19"
once_cell = "1.21.3"
lazy_static = "1.5.0"
rand = "0.8.5"
rand_chacha = "0.3.1"
ruint = { version = "1.14.0", features = ["rand", "serde", "ark-ff-04"] }
tiny-keccak = { version = "2.0.2", features = ["keccak"] }
utils = { package = "zerokit_utils", version = "0.5.2", path = "../utils", default-features = false }

# serialization
prost = "0.13.5"
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }

document-features = { version = "0.2.11", optional = true }

[dev-dependencies]
sled = "0.34.7"
criterion = { version = "0.4.0", features = ["html_reports"] }

[features]
default = ["pmtree-ft"]
fullmerkletree = ["default"]
stateless = []
arkzkey = []

# Note: pmtree feature is still experimental
pmtree-ft = ["utils/pmtree-ft"]

[[bench]]
name = "circuit_loading_arkzkey_benchmark"
harness = false
required-features = ["arkzkey"]

[[bench]]
name = "circuit_loading_benchmark"
harness = false

[[bench]]
name = "pmtree_benchmark"
harness = false

[[bench]]
name = "poseidon_tree_benchmark"
harness = false

[package.metadata.docs.rs]
all-features = true
