Skip to main content

FyndClientBuilder

Struct FyndClientBuilder 

Source
pub struct FyndClientBuilder { /* private fields */ }
Expand description

Builder for FyndClient.

Call FyndClientBuilder::new with the Fynd base URL, configure optional settings, then call build or build_quote_only.

build validates the RPC URL and fetches chain_id from the Ethereum node. It does not connect to the Fynd API.

Implementations§

Source§

impl FyndClientBuilder

Source

pub fn new(base_url: impl Into<String>) -> Self

Create a new builder.

  • base_url: Base URL of the Fynd RPC server (e.g. "https://rpc.fynd.exchange"). Must use http or https scheme.

Call with_rpc_url before build to enable on-chain operations (swap_payload, execute_swap, approval). For quote-only use, call build_quote_only directly — no RPC URL required.

Source

pub fn with_api_key(self, api_key: impl Into<String>) -> Self

Authenticate against the hosted Fynd gateway.

The key is sent as the raw Authorization header value (no Bearer prefix) on every Fynd API request, matching what the deployed gateway expects. The Tycho API key issued by the keygen bot also authenticates Fynd. Not needed for self-hosted instances.

Source

pub fn with_chain(self, chain: impl Into<String>) -> Self

Route requests through the hosted gateway’s per-chain paths, e.g. /v1/base/quote.

Accepts ethereum, base, arbitrum, bsc, polygon, or unichain; an unknown slug fails at build / build_quote_only time. When unset, requests go to {base_url}/v1/… without a chain segment, which is what self-hosted Fynd expects.

Source

pub fn with_rpc_url(self, rpc_url: impl Into<String>) -> Self

Set the Ethereum JSON-RPC endpoint for nonce/fee queries and receipt polling.

Required before calling build. Not needed for build_quote_only.

Source

pub fn with_timeout(self, timeout: Duration) -> Self

Set the HTTP request timeout for Fynd API calls (default: 30 s).

Source

pub fn with_retry(self, retry: RetryConfig) -> Self

Override the retry configuration (default: 3 attempts, 100 ms / 2 s back-off).

Source

pub fn with_submit_url(self, url: impl Into<String>) -> Self

Use a separate RPC URL for transaction submission and receipt polling.

If not set, the URL from with_rpc_url is used for both.

Source

pub fn with_sender(self, sender: Address) -> Self

Set the default sender address used when SigningHints::sender is None.

Source

pub fn build_quote_only(self) -> Result<FyndClient, FyndError>

Build a FyndClient without connecting to an Ethereum RPC node.

Suitable for FyndClient::quote and FyndClient::health calls only. FyndClient::swap_payload and FyndClient::execute_swap require a live RPC URL and will fail if called on a client built this way.

The chain ID used to sign transactions is derived from with_chain; without it, it defaults to Ethereum mainnet (1).

Returns FyndError::Config if base_url is invalid or the chain slug is unknown.

Source

pub async fn build(self) -> Result<FyndClient, FyndError>

Connect to the Ethereum RPC node and build the FyndClient.

Requires with_rpc_url to have been called. Validates the URLs and fetches the chain ID. Returns FyndError::Config if any URL is invalid, rpc_url was not set, the chain ID cannot be fetched, or the chain set via with_chain disagrees with the chain the RPC node is on.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more