OdosRouterSelection

Trait OdosRouterSelection 

Source
pub trait OdosRouterSelection: OdosChain {
    // Provided methods
    fn recommended_router_address(&self) -> OdosChainResult<Address> { ... }
    fn router_address_with_fallback(&self) -> OdosChainResult<Address> { ... }
    fn router_address_by_preference(
        &self,
        prefer_v3: bool,
    ) -> OdosChainResult<Address> { ... }
}
Expand description

Extension trait for easy router selection

This trait provides convenient methods for choosing between V2 and V3 routers based on your requirements.

Provided Methods§

Source

fn recommended_router_address(&self) -> OdosChainResult<Address>

Get the recommended router address for this chain

Currently defaults to V3 for enhanced features, but this may change based on performance characteristics.

§Returns
  • Ok(Address) - The recommended router address
  • Err(OdosChainError) - If the chain is not supported
§Example
use odos_sdk::{OdosChain, OdosRouterSelection};
use alloy_chains::NamedChain;

let address = NamedChain::Base.recommended_router_address()?;
Source

fn router_address_with_fallback(&self) -> OdosChainResult<Address>

Get router address with fallback strategy

Tries V3 first, falls back to V2 if needed. This is useful for maximum compatibility.

§Returns
  • Ok(Address) - V3 address if available, otherwise V2 address
  • Err(OdosChainError) - If neither version is supported
§Example
use odos_sdk::{OdosChain, OdosRouterSelection};
use alloy_chains::NamedChain;

let address = NamedChain::Mainnet.router_address_with_fallback()?;
Source

fn router_address_by_preference( &self, prefer_v3: bool, ) -> OdosChainResult<Address>

Get router address based on preference

§Arguments
  • prefer_v3 - Whether to prefer V3 when both are available
§Returns
  • Ok(Address) - The appropriate router address based on preference
  • Err(OdosChainError) - If the preferred version is not supported
§Example
use odos_sdk::{OdosChain, OdosRouterSelection};
use alloy_chains::NamedChain;

let v3_address = NamedChain::Mainnet.router_address_by_preference(true)?;
let v2_address = NamedChain::Mainnet.router_address_by_preference(false)?;

Implementors§