polyfill2 0.3.0

Polymarket CLOB V2 Rust client (fork of polyfill-rs). High-performance, EIP-712 signing, WebSocket streaming.
Documentation
[package]
name = "polyfill2"
version = "0.3.0"
edition = "2021"
authors = [
    "Andrey Kuznetsov <andrey@onsails.com>",
    "Julius Tranquilli <jtranqs@gmail.com>",
]
description = "Polymarket CLOB V2 Rust client (fork of polyfill-rs). High-performance, EIP-712 signing, WebSocket streaming."
license = "MIT OR Apache-2.0"
repository = "https://github.com/onsails/polyfill2-rs"
readme = "README.md"
keywords = ["polymarket", "clob", "trading", "prediction-market", "crypto"]
categories = ["api-bindings", "network-programming"]
documentation = "https://docs.rs/polyfill2"
homepage = "https://github.com/onsails/polyfill2-rs"

[lib]
name = "polyfill2"
path = "src/lib.rs"

[dependencies]
# Pin base64ct to avoid Edition 2024 requirement
base64ct = "=1.8.3"
# Async runtime and futures
tokio = { version = "1.41", features = ["full"] }
futures = "0.3"
futures-util = "0.3"

# HTTP client
reqwest = { version = "0.13", features = ["json", "stream", "gzip", "query"] }
hickory-resolver = "0.26"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
simd-json = "0.17"
dotenvy = "0.15"

# Ethereum and crypto
alloy-primitives = "1"
alloy-sol-types = { version = "1", features = ["eip712-serde", "json"] }
alloy-signer = { version = "1", features = ["eip712"] }
alloy-signer-local = { version = "1", features = ["eip712"] }

# Numeric types
rust_decimal = { version = "1.36", features = ["serde-with-str"] }
rust_decimal_macros = "1.36"

# Error handling
anyhow = "1.0"
thiserror = "2.0"

# Crypto and encoding
base64 = "0.22"
hmac = "0.13"
sha2 = "0.11"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# Time handling
chrono = { version = "0.4", features = ["serde"] }

# Utilities
uuid = { version = "1.0", features = ["v4", "serde"] }
url = "2.5"
bytes = "1.11.1"
rand = "0.10"

# Optional WebSocket support for streaming
tokio-tungstenite = { version = "0.29", optional = true, features = ["native-tls"] }

[dev-dependencies]
criterion = { version = "0.8", features = ["html_reports"] }
tokio-test = "0.4"
mockito = "1.0"
proptest = "1.0"
env_logger = "0.11"

[features]
default = ["stream"]
stream = ["tokio-tungstenite"]
side-by-side-benchmark = []
# Opt-in feature that enables network integration tests against
# clob-v2.polymarket.com staging. Not part of `default` — run with
# `cargo test --features integration-v2 --test integration_v2` or
# `cargo test --all-features --test integration_v2`.
integration-v2 = []

[[example]]
name = "side_by_side_benchmark"
required-features = ["side-by-side-benchmark"]

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

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

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

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

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

[profile.release]
# Optimizations for HFT performance
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"

[profile.dev]
# Faster compilation for development
opt-level = 1

[profile.test]
# Optimizations for test performance
opt-level = 2
debug = true