[workspace]
members = ["crates/betex-macros"]
resolver = "3"

[workspace.package]
authors = ["Denis Tsai <denistsai@aetheras.io>"]
edition = "2024"
homepage = "https://github.com/dt665m/betex"
license-file = "LICENSE"
readme = "README.md"
repository = "https://github.com/dt665m/betex"

[package]
name = "betex"
version = "0.19.2"
description = "Betfair / Prediction Market Exchange"
authors.workspace = true
edition.workspace = true
homepage.workspace = true
license-file.workspace = true
readme.workspace = true
repository.workspace = true

[features]
default = ["metrics"]
metrics = []

[dependencies]
betex-macros = { version = "0.2.0" }
lucidstream = "1.2.0"
thiserror = "2"
anyhow = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
postcard = { version = "1", features = ["alloc"] }

# disruptor = "3.6.1"
flume = "0.12"
disrupt-rs = "1.1.0"
# walrus = "0.24"
heed = { version = "0.22.0", default-features = false }

bytes = "1"
crc32fast = "1"
rkyv = { version = "0.8", features = ["bytecheck"] }
bytecheck = "0.8"
parking_lot = "0.12"
hashbrown = { version = "0.16", features = ["serde"] }
smallvec = { version = "1", features = ["serde"] }
slab = "0.4"
rust_decimal = "1"
rand = "0.10"
strum = { version = "0.28", features = ["derive"] }
tracing = "0.1"

signal-hook = "0.4"
core_affinity = "0.8"
chrono = { version = "0.4.42", features = ["serde"] }
uuid = { version = "1.19.0", features = ["v4", "v7", "serde"] }
crossbeam-utils = "0.8.21"
dashmap = "6"
futures = "0.3"
async-trait = "0.1"
tokio = { version = "1", features = ["rt", "time"] }

[dev-dependencies]
criterion = "0.8"
proptest = "1"
clap = { version = "4", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
axum = { version = "0.8", features = ["ws"] }
axum-extra = { version = "0.12", features = ["typed-header"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "trace"] }
tokio-stream = "0.1"
ratatui = "0.30"
crossterm = "0.29"
tokio-tungstenite = "0.28"

[[bench]]
name = "book_bench"
harness = false

[[example]]
name = "live"
