[package]
name = "synor-network"
version = "0.1.0"
edition = "2021"
description = "P2P networking layer for Synor blockchain"
license = "MIT OR Apache-2.0"

[dependencies]
# Internal crates
synor-types = { path = "../synor-types" }
synor-crypto = { path = "../synor-crypto" }

# libp2p for P2P networking
libp2p = { version = "0.54", features = [
    "tokio",
    "tcp",
    "noise",
    "yamux",
    "gossipsub",
    "kad",
    "identify",
    "ping",
    "mdns",
    "request-response",
    "macros",
    "dns",
    "quic",
] }

# Async runtime
tokio = { version = "1.35", features = ["full", "sync", "time", "macros", "rt-multi-thread"] }
futures = "0.3"
async-trait = "0.1"

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

# Crypto
sha2 = "0.10"

# Utilities
thiserror = "1.0"
tracing = "0.1"
parking_lot = "0.12"
hashbrown = "0.14"
smallvec = { version = "1.11", features = ["serde"] }
bytes = "1.5"
rand = "0.8"

# Time
chrono = { version = "0.4", features = ["serde"] }

[dev-dependencies]
tempfile = "3.9"
tokio-test = "0.4"
tracing-subscriber = "0.3"
