digdigdig3 0.3.3

Unified async Rust API for 47 exchange connectors (REST + WebSocket). The core layer — pure ExchangeHub + connectors. Higher-level builder, persistence, replay, OB tracker live in `digdigdig3-station`.
Documentation
[package]

name = "digdigdig3"

version.workspace = true

edition.workspace = true

license.workspace = true

repository.workspace = true

homepage.workspace = true

keywords.workspace = true

categories.workspace = true

description = "Unified async Rust API for 47 exchange connectors (REST + WebSocket). The core layer — pure ExchangeHub + connectors. Higher-level builder, persistence, replay, OB tracker live in `digdigdig3-station`."

documentation = "https://docs.rs/digdigdig3"

readme = "../../README.md"

exclude = [

    # Internal research / workflow / audit notes — never ship to crates.io

    "**/research/**",

    "contributing/**",

    "**/AUDIT*.md",

    "**/ARCHITECTURE_AUDIT.md",

    "**/IMPLEMENTATION*.md",

    "**/FIX_SUMMARY.md",

    "**/PROBLEM_ANALYSIS.md",

    "**/API_TESTING_REPORT.md",

    "**/AUTHENTICATION_SETUP.md",

    "**/CRYPTO_NO_AUTH.md",

    "**/QUICK_START.md",

    "**/integration_test_guide.md",

    # Local harness artefacts — already gitignored, defence in depth

    "e2e_smoke_*.txt", "deep_smoke_*.txt", "smoke_*.txt", "*.log",

    "e2e_trace*/", "liq_capture/", "liq_trace_new/",

    "dig3_storage/", "target/",

]



[lib]

name = "digdigdig3"

path = "src/lib.rs"



[features]

default = ["onchain-evm"]

websocket = []

# Canonical on-chain feature flags

# onchain-evm: EIP-712 signing via k256+sha3 (HyperLiquid auth)

onchain-evm = ["dep:k256", "dep:sha3"]

onchain-cosmos = ["dep:cosmrs"]

onchain-starknet = ["dep:starknet-crypto"]

# Backward-compat alias — onchain-ethereum is now onchain-evm

onchain-ethereum = ["onchain-evm"]

grpc = ["dep:tonic", "dep:prost"]

k256-signing = ["dep:k256", "dep:sha3"]

# 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"] }

# Explicit rustls dep to pin ring as the process-level CryptoProvider.

# reqwest pulls ring; we pin ring here to avoid provider conflicts.

rustls = { version = "0.23", default-features = false, features = ["ring"] }

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



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 }

sha3 = { version = "0.10", optional = true }

starknet-crypto = { version = "0.6", optional = true }



# 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"



# TOML config parsing (for dig3-catcher, now in dig3-cli)

toml = "0.8"