[package]
name = "reticulum-sdk"
version = "2.0.8"
edition = "2024"
license = "MIT"
readme = "README.md"
repository = "https://github.com/ReticulaLabs/reticulum-sdk"
categories = ["network-programming"]
keywords = ["reticulum", "mesh", "radio", "async"]

description = """
reticulum-sdk is a Rust implementation of the Reticulum Network Stack - a cryptographic,
decentralised, and resilient mesh networking protocol designed for communication over any physical 
layer.

This project brings Reticulum's capabilities to the Rust ecosystem, enabling embedded, and 
constrained deployments with maximum performance and minimal dependencies.
"""

[dependencies]

# Protobuf and gRPC
tonic = "0.13.0"
prost = "0.13.5"

# Crypto
crypto-common = { version = "0.1.6", features = ["rand_core"] }
aes = "0.8.4"
cbc = "0.1.2"
x25519-dalek = { version = "2.0.1", features = ["static_secrets"] }
ed25519-dalek = { version = "2.1.1", features = ["rand_core"] }
hkdf = "0.12.4"

subtle = "2"

# Hash
hmac = "0.12.1"
sha2 = "0.10.8"

# Random Number generator
rand_core = { version = "0.6.4", features = ["getrandom"] }

# Async IO
tokio = { version = "1.44.2", features = ["full"] }
tokio-stream = "0.1.17"
tokio-util = "0.7.15"
tokio-serial = "5.4.5"
libc = "0.2.172"

rmp = "0.8.14"
rmpv = "1.3.0"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"

# Logging
log = "0.4.27"
env_logger = "0.10"

[features]
default = ["alloc"]
alloc = []
fernet-aes128 = []

[build-dependencies]
tonic-build = "0.13.0"

[dev-dependencies]
tokio = { version = "1.44.2", features = ["test-util"] }

[[example]]
name = "tcp_server"
path = "examples/tcp_server.rs"

[[example]]
name = "tcp_client"
path = "examples/tcp_client.rs"

[[example]]
name = "udp_link"
path = "examples/udp_link.rs"

[[example]]
name = "link_client"
path = "examples/link_client.rs"

[[example]]
name = "testnet_client"
path = "examples/testnet_client.rs"

[[example]]
name = "multihop"
path = "examples/multihop.rs"
