[package]
name = "synor"
version = "0.1.0"
edition = "2021"
description = "Synor Blockchain - Quantum-secure decentralized cloud computing platform"
license = "MIT OR Apache-2.0"
repository = "https://github.com/synorcc/synor"

[workspace]
resolver = "2"
members = [
    "crates/synor-types",
    "crates/synor-crypto",
    "crates/synor-dag",
    "crates/synor-consensus",
    "crates/synor-network",
    "crates/synor-storage",
    "crates/synor-hosting",
    "crates/synor-database",
    "crates/synor-compute",
    "crates/synor-governance",
    "crates/synor-rpc",
    "crates/synor-vm",
    "crates/synor-mining",
    "crates/synor-zk",
    "crates/synor-ibc",
    "crates/synor-bridge",
    "crates/synor-privacy",
    "crates/synor-sharding",
    "crates/synor-verifier",
    "crates/synor-economics",
    "crates/synor-sdk",
    "crates/synor-contract-test",
    "crates/synor-compiler",
    "crates/synor-gateway",
    "apps/synord",
    "apps/cli",
    "apps/faucet",
    "apps/explorer",
]
exclude = [
    "contracts/token",
    "contracts/nft",
    "contracts/dex",
    "contracts/staking",
    "contracts/confidential-token",
    "contracts/perps",
    "contracts/oracle",
    "contracts/aggregator",
    "contracts/ibc-bridge",
    "crates/synor-crypto-wasm",
    "apps/desktop-wallet/src-tauri",
]

# WASM modules are not part of workspace as they target wasm32
# Build crypto-wasm with: cd crates/synor-crypto-wasm && wasm-pack build --target web
# Contract examples are not part of workspace as they target wasm32
# Build them separately with:
# cargo build --manifest-path contracts/token/Cargo.toml --target wasm32-unknown-unknown --release
# cargo build --manifest-path contracts/nft/Cargo.toml --target wasm32-unknown-unknown --release

# Root package dependencies for integration tests
# Note: Some crates excluded due to external dependencies (rocksdb, etc.)
[dependencies]
synor-types = { path = "crates/synor-types" }
synor-mining = { path = "crates/synor-mining" }
synor-bridge = { path = "crates/synor-bridge" }
synor-crypto = { path = "crates/synor-crypto" }
synor-consensus = { path = "crates/synor-consensus" }
synor-dag = { path = "crates/synor-dag" }
synor-rpc = { path = "crates/synor-rpc" }
synor-vm = { path = "crates/synor-vm" }
synor-zk = { path = "crates/synor-zk" }
synor-storage = { path = "crates/synor-storage" }
serde = { version = "1.0", features = ["derive"] }

[dev-dependencies]
serde_json = "1.0"
reqwest = { version = "0.11", features = ["blocking", "json"] }

[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Synor Team <team@synor.cc>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/synorcc/synor"
homepage = "https://synor.cc"
description = "Quantum-secure decentralized cloud computing platform"
rust-version = "1.75"

[workspace.dependencies]
# Async runtime
tokio = { version = "1.35", features = ["full"] }
async-trait = "0.1"
futures = "0.3"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
bincode = "1.3"
borsh = { version = "1.3", features = ["derive"] }

# Cryptography - Classical
ed25519-dalek = { version = "2.1", features = ["serde", "rand_core"] }
x25519-dalek = { version = "2.0", features = ["serde"] }
curve25519-dalek = { version = "4.1", features = ["alloc", "zeroize", "precomputed-tables"] }
sha3 = "0.10"
sha2 = "0.10"
blake3 = "1.5"
rand = "0.8"
rand_core = "0.6"
zeroize = { version = "1.7", features = ["derive"] }

# Privacy - Fiat-Shamir transcript
merlin = "3.0"

# Cryptography - Post-Quantum (NIST standards)
pqcrypto-dilithium = "0.5"       # FIPS 204 (ML-DSA) - primary signatures
pqcrypto-kyber = "0.8"           # FIPS 203 (ML-KEM) - key encapsulation
pqcrypto-sphincsplus = "0.7"     # FIPS 205 (SLH-DSA) - hash-based backup
pqcrypto-falcon = "0.3"          # FIPS 206 (FN-DSA) - compact lattice
pqcrypto-traits = "0.3"

# Hashing
tiny-keccak = { version = "2.0", features = ["sha3"] }

# Networking
libp2p = { version = "0.53", features = ["tokio", "gossipsub", "kad", "identify", "noise", "yamux", "tcp", "dns", "websocket", "macros"] }

# Storage
rocksdb = "0.22"

# CLI
clap = { version = "4.4", features = ["derive"] }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# Error handling
thiserror = "1.0"
anyhow = "1.0"

# Utilities
hex = "0.4"
bs58 = "0.5"
bech32 = "0.11"
parking_lot = "0.12"
dashmap = "5.5"
once_cell = "1.19"
derive_more = "0.99"
smallvec = "1.13"
hashbrown = "0.14"
chrono = { version = "0.4", features = ["serde"] }

# WASM runtime (for smart contracts)
wasmtime = "17.0"

# RPC
jsonrpsee = { version = "0.21", features = ["server", "client", "macros"] }
tower = "0.4"
axum = "0.7"

# Testing
criterion = "0.5"
lru = "0.12"
proptest = "1.4"
tempfile = "3.9"

[profile.release]
lto = "thin"
codegen-units = 1
opt-level = 3

[profile.dev]
opt-level = 1

[profile.dev.package."*"]
opt-level = 3

# Profiling profile - optimized but with debug symbols for flamegraphs
[profile.profiling]
inherits = "release"
debug = true
strip = false

# Benchmark profile - maximum optimization
[profile.bench]
lto = "thin"
codegen-units = 1
opt-level = 3
