[package]
name = "extrema_infra"
version = "0.1.5"
edition = "2024"

readme = "README.md"
license = "Apache-2.0"

keywords = ["trading", "crypto", "websocket", "quant", "finance"]
categories = [
    "api-bindings",
    "asynchronous",
    "finance",
]

description = "A quantitative trading environment built in Rust."
repository = "https://github.com/Lqz13Th/extrema_infra"
homepage = "https://github.com/Lqz13Th/extrema_infra"
documentation = "https://docs.rs/extrema_infra"

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

[dependencies]
# Async runtime
tokio = { version = "1.52.3", features = ["full"] }
futures = "0.3.32"
futures-util = "0.3.32"

# HTTP / WebSocket
reqwest = { version = "0.13.3", features = ["json", "gzip"] }
tokio-tungstenite = { version = "0.29.0", features = ["rustls-tls-webpki-roots"] }
tungstenite = "0.29.0"

# Serialization / JSON / Binary encoding
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
simd-json = "0.17.0"
rmp-serde = "1.3.1"

# Cryptography / Signing / Encoding
hmac = "0.13.0"
sha2 = "0.11.0"
sha3 = "0.11.0"
secp256k1 = { version = "0.31.1", features = ["recovery"] }
data-encoding = "2.11.0"

# TLS
rustls = { version = "0.23.40", features = ["aws-lc-rs"] }

# IPC / Model inference / Data processing
zeromq = "0.6.0"
tract-onnx = "0.22.1"
polars = { version = "0.53.0", default-features = false }

# Logging & Tracing
tracing = "0.1.44"
tracing-subscriber = "0.3.23"

# Environment & Error handling
dotenvy = "0.15.7"
thiserror = "2.0.18"

[features]
default = []

all = [
    "hyperliquid",
    "binance",
    "gate",
    "okx",
]

lob_clients = [
    "hyperliquid",
    "binance",
    "gate",
    "okx",
]

hyperliquid = []
binance = []
gate = []
okx = []

[[example]]
name = "empty_strategy_example"

[[example]]
name = "hyperliquid_api_usage_example"
required-features = ["hyperliquid"]

[[example]]
name = "complex_strategy_example"
required-features = ["okx"]

[[example]]
name = "multi_strategy_example"
required-features = ["binance"]

[[example]]
name = "websocket_private_account_example"
required-features = ["binance", "okx"]
