[package]
name = "ark-circom"
version = "0.1.0"
edition = "2018"
description = "Arkworks bindings to Circom's R1CS, for Groth16 Proof and Witness generation in Rust"
license = "MIT OR Apache-2.0"

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
# WASM operations
wasmer = "4.3.0"
wasmer-wasix = { version = "0.20.0" }
fnv = { version = "=1.0.7", default-features = false }
num = { version = "=0.4.0" }
num-traits = { version = "=0.2.15", default-features = false }
num-bigint = { version = "=0.4.3", default-features = false, features = ["rand"] }

# ZKP Generation
ark-crypto-primitives = { version = "0.5.0-alpha" }
ark-ff = { version = "0.5.0-alpha", default-features = false, features = ["parallel", "asm"] }
ark-ec = { version = "0.5.0-alpha", default-features = false, features = ["parallel"] }
ark-std = { version = "0.5.0-alpha", default-features = false, features = ["parallel"] }
ark-bn254 = { version = "0.5.0-alpha" }
ark-groth16 = { version = "0.5.0-alpha", default-features = false, features = ["parallel"] }
ark-poly = { version = "0.5.0-alpha", default-features = false, features = ["parallel"] }
ark-relations = { version = "0.5.0-alpha", default-features = false }
ark-serialize = { version = "0.5.0-alpha", default-features = false }

# decoding of data
hex = "=0.4.3"
byteorder = "=1.4.3"

# ethereum compat
ethers-core = { version = "=2.0.7", default-features = false, optional = true }

# error handling
thiserror = "=1.0.39"
color-eyre = "=0.6.2"
criterion = "=0.3.6"

cfg-if = "=1.0.0"

[dev-dependencies]
hex-literal = "=0.2.2"
tokio = { version = "=1.29.1", features = ["macros"] }
serde_json = "=1.0.94"
ethers = "=2.0.7"

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

[features]
default = ["wasmer/default", "ethereum"]
wasm = ["wasmer/js-default"]
bench-complex-all = []
ethereum = ["ethers-core"]
