[package]
name = "arkworks-utils"
version = "0.4.10"
authors = ["Webb Developers"]
edition = "2018"
description = "Webb protocol's utils for zero-knowledge gadgets written using Arkworks"
license = "MIT/Apache-2.0"
repository = "https://github.com/webb-tools/arkworks-gadgets"
homepage = "https://webb.tools"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
ark-crypto-primitives = { version = "^0.3.0", features = ["r1cs"], default-features = false }
ark-ff = { version = "^0.3.0", default-features = false }
ark-std = { version = "^0.3.0", default-features = false }
ark-r1cs-std = { version = "^0.3.0", default-features = false }
ark-relations = { version = "^0.3.0", default-features = false }

ark-marlin = {version = "^0.3.0", default-features = false }
ark-groth16 = {version = "^0.3.0", default-features = false }
blake2 = { version = "0.9", default-features = false }
ark-poly-commit = { version = "^0.3.0", default-features = false }
ark-poly = { version = "^0.3.0", default-features = false }
ark-snark = { version = "^0.3.0", default-features = false }
ark-ec = { version = "^0.3.0", default-features = false }
ark-serialize = {version = "^0.3.0", default-features = false }
digest = { version = "0.9" }

# curves
ark-ed-on-bls12-381 = { version = "^0.3.0", default-features = false, features = [ "r1cs" ] }
ark-ed-on-bn254 = { version = "^0.3.0", default-features = false, features = [ "r1cs" ] }
ark-bls12-381 = { version = "^0.3.0", default-features = false, features = [ "curve" ] }
ark-bn254 = { version = "^0.3.0", default-features = false, features = [ "curve" ] }

paste = { version = "1.0.5" }
ethabi = { version = "15.0.0", default-features = false }
hex-literal = { version = "0.3.4" }
tiny-keccak = { version = "2.0.2", features = ["keccak"] }

[features]
default = ["std", "default_poseidon", "r1cs", "default_mimc"]
default_mimc = ["mimc_220_ed_on_bn254"]
default_poseidon = [
    "poseidon_bls381_x3_3",
    "poseidon_bls381_x3_5",
    "poseidon_bls381_x5_5",
    "poseidon_bls381_x5_3",
    "poseidon_bn254_x5_5",
    "poseidon_bn254_x5_4",
    "poseidon_bn254_x5_3",
    "poseidon_bn254_x5_2",
    "poseidon_bls381_x17_5",
    "poseidon_bls381_x17_3",
    "poseidon_bn254_x17_5",
    "poseidon_bn254_x17_3",
    "poseidon_bn254_x3_3",
    "poseidon_bn254_x3_5",
]

test = ["poseidon_bn254_x5_5", "poseidon_bn254_x5_3"]
r1cs = []
std = ["ark-std/std"]
all = [
    "poseidon_bls381_x3_5",
    "poseidon_bls381_x3_3",
    "poseidon_bls381_x5_5",
    "poseidon_bls381_x5_3",
    "poseidon_bls381_x17_5",
    "poseidon_bls381_x17_3",
    "poseidon_bn254_x3_5",
    "poseidon_bn254_x3_3",
    "poseidon_bn254_x5_5",
    "poseidon_bn254_x5_4",
    "poseidon_bn254_x5_3",
    "poseidon_bn254_x5_2",
    "poseidon_bn254_x17_5",
    "poseidon_bn254_x17_3",
]
poseidon_bls381_x3_5 = []
poseidon_bls381_x3_3 = []
poseidon_bls381_x5_5 = []
poseidon_bls381_x5_3 = []
poseidon_bls381_x17_5 = []
poseidon_bls381_x17_3 = []

poseidon_bn254_x3_5 = []
poseidon_bn254_x3_3 = []
poseidon_bn254_x5_5 = []
poseidon_bn254_x5_4 = []
poseidon_bn254_x5_3 = []
poseidon_bn254_x5_2 = []
poseidon_bn254_x17_5 = []
poseidon_bn254_x17_3 = []

mimc_220_ed_on_bn254 = []