[package]
name = "rangebar-providers"
documentation = "https://docs.rs/rangebar-providers"
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
readme = "README.md"
description = "Data providers for rangebar: Binance, Exness"
keywords = ["binance", "exness", "trading", "data-provider"]
categories = ["finance", "api-bindings"]

[dependencies]
rangebar-core = { path = "../rangebar-core", version = "12.30.0" }

# Serialization
serde.workspace = true
serde_json.workspace = true

# HTTP client
reqwest.workspace = true

# Async runtime
tokio.workspace = true
tokio-tungstenite = { version = "0.23", default-features = false, features = ["connect", "rustls-tls-native-roots"], optional = true }
tokio-stream = { version = "0.1", optional = true }
tokio-util = { workspace = true, optional = true }
futures-util = { version = "0.3", optional = true }

# Data formats
csv.workspace = true

# Compression
zip.workspace = true

# Time handling
chrono.workspace = true

# Error handling
thiserror.workspace = true

# Data integrity (Issue #43)
sha2.workspace = true

# Observability
tracing.workspace = true

# TCP keepalive for half-open connection detection (Issue #107)
socket2 = { version = "0.5", optional = true }

[dev-dependencies]
tokio = { workspace = true, features = ["full"] }
tokio-util = { workspace = true }
tracing-subscriber = { workspace = true }
serde_json = { workspace = true }
chrono = { workspace = true }
rangebar-core = { path = "../rangebar-core", version = "12.30.0" }

[features]
default = ["binance"]
binance = ["tokio-tungstenite", "tokio-stream", "tokio-util", "futures-util", "socket2"]
exness = []
all-providers = ["binance", "exness"]
