rustrade-data 0.2.0

High performance & normalised WebSocket intergration for leading cryptocurrency exchanges - batteries included.
Documentation
[package]
name = "rustrade-data"
version = "0.2.0"
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
documentation = "https://docs.rs/rustrade-data"
readme = "README.md"
description = "High performance & normalised WebSocket intergration for leading cryptocurrency exchanges - batteries included."

[features]
default = []
ibkr = ["dep:ibapi", "dep:time", "rustrade-instrument/ibkr"]
hyperliquid = ["dep:hyperliquid_rust_sdk"]
alpaca = []
databento = ["dep:databento"]
massive = ["dep:tokio-tungstenite", "dep:async-stream", "dep:urlencoding", "rust_decimal/serde-float", "serde_json/raw_value"]

[dev-dependencies]
tracing-subscriber = { workspace = true, features = ["env-filter", "json"] }
rust_decimal_macros = { workspace = true }
time = { version = "0.3", features = ["macros"] }  # For ibkr tests and databento examples
temp-env = { workspace = true }
serial_test = { workspace = true }  # For Massive WebSocket tests (1 connection limit)

[dependencies]
# Rustrade Ecosystem
rustrade-integration = { workspace = true, features = ["channel", "collection", "error", "protocol", "serde", "subscription", "stream"] }
rustrade-instrument = { workspace = true }
rustrade-macro = { workspace = true }

# Logging
tracing = { workspace = true }

# Async
tokio = { workspace = true, features = ["sync", "macros", "rt-multi-thread"] }
tokio-stream = { workspace = true, features = ["sync"] }
futures = { workspace = true }
futures-util = { workspace = true }
async-stream = { workspace = true, optional = true }

# Protocol
url = { workspace = true }
reqwest = { workspace = true}

# Error
thiserror = { workspace = true }

# SerDe
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }

# Data Structures
parking_lot = { workspace = true }
rust_decimal = { workspace = true, features = ["serde-with-str"] }
smol_str = { workspace = true, features = ["serde"] }

# Misc
chrono = { workspace = true, features = ["serde"] }
derive_more = { workspace = true }
itertools = { workspace = true }
vecmap-rs = { workspace = true }
fnv = { workspace = true }

# IBKR (optional, behind "ibkr" feature)
ibapi = { version = "=2.12.0", optional = true, default-features = false, features = ["sync"] }
time = { version = "0.3", optional = true, features = ["macros"] }

# Hyperliquid (optional, behind "hyperliquid" feature)
hyperliquid_rust_sdk = { version = "0.6", optional = true }

# Databento (optional, behind "databento" feature)
# Note: databento re-exports dbn, so we don't need a separate dbn dependency
databento = { version = "0.50", optional = true }

# Massive (optional, behind "massive" feature)
tokio-tungstenite = { version = "0.29", optional = true, features = ["native-tls"] }
urlencoding = { version = "2.1", optional = true }

# Examples that depend on optional features. Without `required-features`,
# `cargo check --all-targets` (default features) fails to compile them.

[[example]]
name = "download_databento_fixtures"
required-features = ["databento"]

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

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

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

[[example]]
name = "ibkr_historical"
required-features = ["ibkr"]

[[example]]
name = "ibkr_market_data"
required-features = ["ibkr"]