[package] name = "trading-service" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true description = "Standalone Trading Service with integrated business logic" [[bin]] name = "trading-service" path = "src/main.rs" [[bin]] name = "latency_validator" path = "src/bin/latency_validator.rs" [dependencies] # Core async and utilities - USE WORKSPACE tokio.workspace = true anyhow.workspace = true tracing.workspace = true tracing-subscriber.workspace = true serde.workspace = true serde_json.workspace = true once_cell.workspace = true clap.workspace = true # gRPC and networking - USE WORKSPACE # NOTE: Tonic 0.14 uses 'tls-ring' instead of 'tls' # NOTE: Tonic 0.14 requires tonic-prost for generated code runtime tonic = { workspace = true, features = ["transport", "server", "tls-ring", "tls-webpki-roots"] } tonic-prost.workspace = true tonic-reflection.workspace = true tonic-health.workspace = true prost.workspace = true tower.workspace = true tower-layer.workspace = true tower-service.workspace = true hyper.workspace = true http-body.workspace = true http-body-util.workspace = true hyper-util.workspace = true bytes.workspace = true # Async streams and futures - USE WORKSPACE tokio-stream.workspace = true async-stream.workspace = true futures.workspace = true futures-util = "0.3" async-trait.workspace = true url = "2.5" fastrand.workspace = true tokio-tungstenite.workspace = true # Performance monitoring hdrhistogram.workspace = true prometheus.workspace = true axum.workspace = true # Cryptography and security sha2.workspace = true x509-parser = "0.16" reqwest = { version = "0.12", features = ["rustls-tls"], default-features = false } base64.workspace = true jsonwebtoken.workspace = true chrono.workspace = true thiserror.workspace = true secrecy.workspace = true # Secure secret handling (still needed for other modules) zeroize.workspace = true # Secure memory zeroing (still needed for other modules) uuid.workspace = true sqlx = { workspace = true, features = ["postgres", "chrono", "uuid", "json", "macros"] } redis = { workspace = true, features = ["tokio-comp", "connection-manager"] } md5.workspace = true hostname = "0.4" num-traits.workspace = true rust_decimal.workspace = true rand.workspace = true sysinfo = "0.33" log.workspace = true dbn.workspace = true # DBN market data for E2E testing # Internal workspace crates trading_engine.workspace = true risk.workspace = true ml = { workspace = true, features = ["financial"] } # Minimal ML for inference only data.workspace = true common = { workspace = true, features = ["database"] } storage = { workspace = true } config = { workspace = true, features = ["postgres"] } database = { path = "../../crates/database" } # Model functionality from storage and ml-data crates ml-data = { path = "../../crates/ml-data" } semver.workspace = true [build-dependencies] # NOTE: Tonic 0.14+ uses tonic-prost-build instead of tonic-build tonic-prost-build.workspace = true prost-build.workspace = true [dev-dependencies] criterion = { workspace = true } redis = { workspace = true, features = ["tokio-comp", "connection-manager"] } api = { path = "../api" } # For auth tests - no cyclic dependency (api doesn't depend on trading-service) base32 = "0.5" serial_test = "3.0" rand = "0.8" [features] default = ["minimal"] # Production default: minimal dependencies cuda = [] # GPU features removed - use ML training service for GPU operations gpu = ["cuda"] minimal = [] database = []