[workspace.package] version = "0.234.0" [package] name = "tycho-simulation" version.workspace = true edition = "2021" description = "Provides tools for interacting with protocol states, calculating spot prices, and quoting token swaps." repository = "https://github.com/propeller-heads/tycho-simulation" homepage = "https://www.propellerheads.xyz/tycho" documentation = "https://docs.propellerheads.xyz/tycho" keywords = ["propellerheads", "solver", "defi", "dex", "mev"] license = "MIT" categories = ["finance", "cryptography::cryptocurrencies"] readme = "README.md" [workspace] members = ["tycho-integration-test", "tycho-test", "tycho_simulation_py"] [workspace.dependencies] # Serialization/Deserialization serde = { version = "1.0", features = ["rc", "derive"] } serde_json = "1.0.105" # Async & concurrency tokio = { version = "1.47.1", features = ["full"] } futures = "0.3.31" # Logging & Tracing tracing = "0.1.41" tracing-subscriber = { version = "0.3.17", default-features = false } # Utility ruint = { version = "1.17.0", features = ["num-traits"] } num-traits = "0.2.17" num-bigint = { version = "0.4.6", features = ["serde"] } dotenv = "0.15.0" itertools = "0.10.5" hex-literal = "0.4.1" hex = "0.4.3" async-trait = "0.1.88" # Tycho dependencies tycho-client = ">=0.123.0" tycho-common = ">=0.123.0" tycho-ethereum = ">=0.123.0" tycho-execution = ">=0.154.0" # EVM dependencies # Alloy's dyn-abi 1.4.0 has a security vulnerability, so we require at least 1.4.1 alloy-dyn-abi = ">=1.4.1" alloy = { version = "1.0.30", features = ["providers", "signer-local", "rpc-types-eth", "rand", "eip712"] } [dependencies] # Serialization/Deserialization serde = { workspace = true } serde_json = { workspace = true } uuid = { version = "1.4.1", features = ["serde", "v4", "fast-rng", "macro-diagnostics"] } hex = { workspace = true } chrono = { version = "0.4.26", features = ["serde"] } # Error handling thiserror = "1" # Async & concurrency tokio = { workspace = true } futures = { workspace = true } # Logging & Tracing tracing = { workspace = true } # Utility num-traits = { workspace = true } dotenv = { workspace = true } itertools = { workspace = true } enum_delegate = "0.2.0" # Enum utilities strum = "0.25.0" strum_macros = "0.25.2" # Caching mini-moka = "0.10" lazy_static = "1.4.0" # Tycho dependencies tycho-client = { workspace = true } tycho-common = { workspace = true } tycho-ethereum = { workspace = true } # EVM dependencies foundry-block-explorers = { version = "0.22.0", optional = true } alloy = { workspace = true, features = ["sol-types", "rand"], optional = true } ruint.workspace = true revm = { version = "29.0.1", features = ["alloydb", "serde", "optional_eip3607"], optional = true } revm-inspectors = { version = "0.30.0", features = ["serde"], optional = true } num-bigint = { workspace = true } tokio-stream = "0.1.16" # Dialoguer dialoguer = "0.10.4" # Ekubo evm_ekubo_sdk = "0.6.2" # rfq reqwest = { version = "0.12.22", optional = true } async-trait = { workspace = true, optional = true } tokio-tungstenite = { version = "0.28.0", features = ["native-tls"], optional = true } async-stream = { version = "0.3.6", optional = true } http = { version = "1.0", optional = true } prost = { version = "0.13", optional = true } alloy-chains = "0.2.18" hex-literal.workspace = true [dev-dependencies] # tycho execution for quickstart tycho-execution = { workspace = true } tokio-test = "0.4.4" approx = "0.5.1" rstest = "0.23.0" rstest_reuse = "0.7.0" tracing-subscriber = { workspace = true, default-features = false, features = [ "env-filter", "fmt", ] } tempfile = "3.13.0" # testing mockall = "0.13" # price_printer example clap = { version = "4.5.48", features = ["derive"] } anyhow = "1.0.76" ratatui = "0.29.0" crossterm = { version = "0.28.1", features = ["event-stream"] } unicode-width = "0.1.13" tracing-appender = "0.2.3" [features] default = ["evm", "rfq"] network_tests = [] evm = [ "dep:foundry-block-explorers", "dep:revm", "dep:revm-inspectors", "dep:alloy", "dep:reqwest" ] rfq = ["dep:reqwest", "dep:async-trait", "dep:tokio-tungstenite", "dep:async-stream", "dep:http", "dep:prost"] [profile.bench] debug = true