fynd_core/lib.rs
1//! Fynd Core - Pure solving logic for DEX routing
2//!
3//! This crate provides the core solving algorithms and types for finding optimal
4//! swap routes across multiple DEX protocols. It contains **no HTTP or UI dependencies**,
5//! making it suitable for standalone use in any application.
6//!
7//! # Use Cases
8//!
9//! - **Standalone routing**: Integrate Fynd's routing algorithms into your own application
10//! - **Custom solvers**: Build specialized routing solutions without HTTP overhead
11//! - **Research & testing**: Experiment with routing algorithms in isolation
12//!
13//! # Main Components
14//!
15//! - **algorithm**: Route-finding algorithms (e.g., `MostLiquidAlgorithm`)
16//! - **graph**: Graph management and pathfinding utilities
17//! - **derived**: Derived data computations (spot prices, pool depths, gas prices)
18//! - **types**: Core type definitions (`Order`, `Route`, `Swap`, `OrderQuote`)
19//! - **feed**: Market data structures and event handling
20//! - **encoding**: Encodes solved routes into on-chain transactions via Tycho's router contracts
21//! - **worker_pool**: Multi-threaded solver pool management with algorithm registry
22//! - **worker_pool_router**: Request orchestration across multiple solver pools
23
24// Public modules
25pub mod algorithm;
26pub mod derived;
27pub mod encoding;
28pub mod feed;
29pub(crate) mod graph;
30pub mod price_guard;
31pub mod solver;
32pub mod types;
33pub mod worker_pool;
34pub mod worker_pool_router;
35
36// Re-export commonly used types for convenience
37pub use algorithm::{Algorithm, AlgorithmConfig, AlgorithmError, MostLiquidAlgorithm};
38// Required for implementing the Algorithm trait externally
39pub use derived::computation::ComputationRequirements;
40pub use solver::{FyndBuilder, PoolConfig, Solver, SolverBuildError, SolverParts, WaitReadyError};
41pub use types::{
42 BlockInfo, ClientFeeParams, ComponentId, EncodingOptions, FeeBreakdown, Order, OrderQuote,
43 OrderSide, OrderValidationError, PermitDetails, PermitSingle, Quote, QuoteOptions,
44 QuoteRequest, QuoteStatus, Route, RouteValidationError, SingleOrderQuote, SolveError,
45 SolveResult, Swap, TaskId, Transaction, UserTransferType,
46};
47pub use worker_pool::{
48 pool::{WorkerPool, WorkerPoolBuilder, WorkerPoolConfig},
49 registry::UnknownAlgorithmError,
50 TaskQueueHandle,
51};
52pub use worker_pool_router::{config::WorkerPoolRouterConfig, SolverPoolHandle, WorkerPoolRouter};