[package]
name = "riverctl"
version = "0.1.61"
edition = "2021"
authors = ["Freenet Project"]
description = "Command-line interface for River decentralized chat on Freenet"
homepage = "https://github.com/freenet/river"
repository = "https://github.com/freenet/river"
license = "LGPL-3.0-only"
readme = "README.md"
keywords = ["freenet", "chat", "cli", "p2p", "decentralized"]
categories = ["command-line-utilities", "network-programming"]
include = ["src/**/*", "Cargo.toml", "README.md", "LICENSE*", "contracts/room_contract.wasm", "build.rs"]

[lib]
name = "riverctl"
path = "src/lib.rs"

[[bin]]
name = "riverctl"
path = "src/main.rs"

[dependencies]
# CLI argument parsing
clap = { version = "4.5", features = ["derive", "env"] }

# Async runtime
tokio = { version = "1.42", features = ["full"] }

# WebSocket client
tokio-tungstenite = { version = "0.27", features = ["rustls-tls-webpki-roots"] }

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

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

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

# Terminal output
colored = "2.1"
indicatif = "0.17"
dialoguer = "0.11"
atty = "0.2"

# Internal dependencies
river-core = { version = "0.1.6", path = "../common", features = ["ecies", "ecies-randomized"] }
freenet-stdlib = { workspace = true, features = ["net"] }
freenet-scaffold = "0.2.2"

# Serialization (for contract state)
ciborium = "0.2.2"

# Cryptography (for signing operations)
blake3.workspace = true
ed25519-dalek = "2.1.1"
rand = "0.8.5"
base64 = "0.22.1"
bs58 = "0.5.1"
redb = "3.1"

# Futures
futures = "0.3"

# URL handling
url = "2.5"

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

# Configuration
toml = "0.8"
directories = "5.0"

[dev-dependencies]
freenet-test-network = "0.1.23"
tempfile = "3"
assert_cmd = "2"
