pub struct FyndBuilder { /* private fields */ }Expand description
Builder for assembling the full solver pipeline. Configures the Tycho market-data feed, gas price fetcher, derived-data computation manager, one or more worker pools, encoder, and router.
Implementations§
Source§impl FyndBuilder
impl FyndBuilder
Sourcepub fn new(
chain: Chain,
tycho_url: impl Into<String>,
rpc_url: impl Into<String>,
protocols: Vec<String>,
min_tvl: f64,
) -> Self
pub fn new( chain: Chain, tycho_url: impl Into<String>, rpc_url: impl Into<String>, protocols: Vec<String>, min_tvl: f64, ) -> Self
Creates a new builder with the required parameters.
pub fn chain(&self) -> Chain
Sourcepub fn tycho_api_key(self, key: impl Into<String>) -> Self
pub fn tycho_api_key(self, key: impl Into<String>) -> Self
Sets the Tycho API key.
Sourcepub fn min_tvl(self, min_tvl: f64) -> Self
pub fn min_tvl(self, min_tvl: f64) -> Self
Overrides the minimum TVL filter set in FyndBuilder::new.
Sourcepub fn tycho_use_tls(self, use_tls: bool) -> Self
pub fn tycho_use_tls(self, use_tls: bool) -> Self
Enables or disables TLS for the Tycho WebSocket connection (default: true).
Sourcepub fn min_token_quality(self, quality: i32) -> Self
pub fn min_token_quality(self, quality: i32) -> Self
Sets the minimum token quality score; tokens below this threshold are excluded (default: 100).
Sourcepub fn traded_n_days_ago(self, days: u64) -> Self
pub fn traded_n_days_ago(self, days: u64) -> Self
Filters out pools whose last trade is older than days days (default: 3).
Sourcepub fn tvl_buffer_ratio(self, ratio: f64) -> Self
pub fn tvl_buffer_ratio(self, ratio: f64) -> Self
Multiplies reported TVL by ratio before applying the min_tvl filter (default: 1.1).
Sourcepub fn gas_refresh_interval(self, interval: Duration) -> Self
pub fn gas_refresh_interval(self, interval: Duration) -> Self
Sets how often the gas price is refreshed from the RPC node (default: 30 s).
Sourcepub fn reconnect_delay(self, delay: Duration) -> Self
pub fn reconnect_delay(self, delay: Duration) -> Self
Sets the delay before reconnecting to Tycho after a disconnection (default: 5 s).
Sourcepub fn blacklisted_components(self, components: HashSet<String>) -> Self
pub fn blacklisted_components(self, components: HashSet<String>) -> Self
Replaces the set of component addresses that are excluded from routing.
Sourcepub fn worker_router_timeout(self, timeout: Duration) -> Self
pub fn worker_router_timeout(self, timeout: Duration) -> Self
Sets the worker router timeout (default: 10s).
Sourcepub fn worker_router_min_responses(self, min: usize) -> Self
pub fn worker_router_min_responses(self, min: usize) -> Self
Sets the minimum number of solver responses before early return (default: 0).
Sourcepub fn algorithm(self, algorithm: impl Into<String>) -> Self
pub fn algorithm(self, algorithm: impl Into<String>) -> Self
Shorthand: adds a single pool named "default" using a built-in algorithm by name.
Sourcepub fn with_algorithm<A, F>(self, name: impl Into<String>, factory: F) -> Selfwhere
A: Algorithm + 'static,
A::GraphManager: MarketEventHandler + EdgeWeightUpdaterWithDerived + 'static,
F: Fn(AlgorithmConfig) -> A + Clone + Send + Sync + 'static,
pub fn with_algorithm<A, F>(self, name: impl Into<String>, factory: F) -> Selfwhere
A: Algorithm + 'static,
A::GraphManager: MarketEventHandler + EdgeWeightUpdaterWithDerived + 'static,
F: Fn(AlgorithmConfig) -> A + Clone + Send + Sync + 'static,
Shorthand: adds a single pool with a custom Algorithm implementation.
The factory closure is called once per worker thread.
Sourcepub fn add_pool(self, name: impl Into<String>, config: &PoolConfig) -> Self
pub fn add_pool(self, name: impl Into<String>, config: &PoolConfig) -> Self
Adds a named pool using the given PoolConfig.
Sourcepub fn build(self) -> Result<Solver, SolverBuildError>
pub fn build(self) -> Result<Solver, SolverBuildError>
Assembles and starts all solver components.
§Errors
Returns SolverBuildError if any component fails to initialize.
Auto Trait Implementations§
impl !Freeze for FyndBuilder
impl !RefUnwindSafe for FyndBuilder
impl Send for FyndBuilder
impl !Sync for FyndBuilder
impl Unpin for FyndBuilder
impl UnsafeUnpin for FyndBuilder
impl !UnwindSafe for FyndBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.