digdigdig3 0.1.8

Multi-exchange connector library — unified async Rust API for 40+ crypto exchanges, stock brokers, forex providers, and 88 intelligence feeds
Documentation
[package]
name = "digdigdig3"
version = "0.1.8"
exclude = ["**/research/**", "contributing/**"]
edition = "2021"
description = "Multi-exchange connector library — unified async Rust API for 40+ crypto exchanges, stock brokers, forex providers, and 88 intelligence feeds"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ZENG3LD/digdigdig3"
homepage = "https://github.com/ZENG3LD/digdigdig3"
documentation = "https://docs.rs/digdigdig3"
readme = "README.md"
keywords = ["exchange", "trading", "crypto", "websocket", "connector"]
categories = ["api-bindings", "asynchronous", "web-programming"]

[features]
default = ["onchain-evm"]
websocket = []
# Canonical on-chain feature flags
onchain-evm = ["dep:alloy"]
onchain-solana = ["dep:solana-sdk", "dep:solana-client", "dep:solana-account-decoder"]
onchain-cosmos = ["dep:cosmrs"]
onchain-starknet = ["dep:starknet-crypto"]
onchain-bitcoin = ["dep:bitcoin"]
# Sui — pure reqwest JSON-RPC, no extra deps needed
onchain-sui = []
# TON (Telegram Open Network) — pure reqwest REST, no tonlib-rs / C++ FFI
onchain-ton = []
# Aptos L1 — pure reqwest REST, no aptos-sdk (avoids tokio_unstable requirement)
onchain-aptos = []
# Backward-compat alias — onchain-ethereum is now onchain-evm
onchain-ethereum = ["onchain-evm"]
grpc = ["dep:tonic", "dep:prost"]
k256-signing = ["dep:k256"]
# Legacy alias — starknet feature now maps to onchain-starknet
starknet = ["onchain-starknet"]

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

# Async
tokio = { version = "1.0", features = ["full"] }
async-trait = "0.1"
futures-util = "0.3"

# HTTP/WebSocket
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
tokio-stream = { version = "0.1", features = ["sync"] }

# Error handling
thiserror = "1.0"

# Logging
tracing = "0.1"

# Crypto (for HMAC signatures)
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"
base64 = "0.22"

# Time (for OKX ISO timestamps)
chrono = "0.4"

# Binary parsing (for Dhan WebSocket binary format - Little Endian)
byteorder = "1.5"

# UUID generation (for client order IDs)
uuid = { version = "1.0", features = ["v4"] }

# Compression (for BingX and HTX WebSocket, Dukascopy binary files)
flate2 = "1.0"
lzma-rs = "0.3"

# URL encoding (for HTX authentication and Polygon)
url = "2.5"
urlencoding = "2.1"

# JWT (for Coinbase authentication)
jsonwebtoken = "9.3"
# ring: explicit dep for manual JWT signing (Coinbase nonce-in-header);
# already a transitive dep via jsonwebtoken, pinned to the same major version
ring = "0.17"
rand = "0.8"

# Base58 encoding (for Raydium pubkey parsing)
bs58 = "0.5"

# Solana (for Raydium WebSocket via Solana RPC)
# Implemented using raw WebSocket to avoid OpenSSL dependency
# Uses tokio-tungstenite with native-tls (already available via reqwest)
# No additional dependencies needed

# Ethereum (for Uniswap WebSocket) — gated behind onchain-ethereum feature
alloy = { version = "1", features = ["provider-ws", "rpc-types"], optional = true }
tracing-subscriber = "0.3.22"

# TOTP (for Angel One 2FA)
totp-rs = "5.6"

# Concurrent hashmap (for ConnectorPool)
dashmap = "5.5"

# gRPC transport (feature-gated behind `grpc`)
tonic = { version = "0.12", features = ["tls", "tls-native-roots"], optional = true }
prost = { version = "0.13", optional = true }

# Cryptographic signing (feature-gated)
k256 = { version = "0.13", features = ["ecdsa-core", "ecdsa"], optional = true }
starknet-crypto = { version = "0.6", optional = true }

# Bitcoin on-chain provider (raw JSON-RPC via reqwest)
bitcoin = { version = "0.32", optional = true, default-features = false, features = ["serde", "std"] }

# Solana on-chain SDK — gated behind onchain-solana feature
# default-features = false minimises compile-time
# nonblocking RPC is a built-in module in solana-client v2 (not a cargo feature)
solana-sdk = { version = "2", optional = true, default-features = false }
solana-client = { version = "2", optional = true, default-features = false }
# Provides UiAccountData for decoded account parsing (token balances etc.)
solana-account-decoder = { version = "2", optional = true, default-features = false }

# Cosmos SDK transaction builder + signer (for dYdX, Osmosis, etc.)
cosmrs = { version = "0.22", optional = true, default-features = false, features = ["bip32"] }

# Decimal arithmetic (f64 → Decimal conversion for safe price/qty rounding)
rust_decimal = "1"