From c336a28905a1829da78997ea2126849fdabbcfc6 Mon Sep 17 00:00:00 2001 From: TAMARA LIPOWSKI Date: Wed, 2 Apr 2025 01:12:02 +0200 Subject: [PATCH] feat: Support manual router address setting in builder --- src/encoding/evm/encoder_builder.rs | 30 ++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/encoding/evm/encoder_builder.rs b/src/encoding/evm/encoder_builder.rs index f39d6e6..e20c148 100644 --- a/src/encoding/evm/encoder_builder.rs +++ b/src/encoding/evm/encoder_builder.rs @@ -1,4 +1,4 @@ -use tycho_common::models::Chain; +use tycho_common::{models::Chain, Bytes}; use crate::encoding::{ errors::EncodingError, @@ -17,6 +17,7 @@ pub struct EVMEncoderBuilder { strategy: Option>, chain: Option, executors_file_path: Option, + router_address: Option, } impl Default for EVMEncoderBuilder { @@ -27,7 +28,12 @@ impl Default for EVMEncoderBuilder { impl EVMEncoderBuilder { pub fn new() -> Self { - EVMEncoderBuilder { chain: None, strategy: None, executors_file_path: None } + EVMEncoderBuilder { + chain: None, + strategy: None, + executors_file_path: None, + router_address: None, + } } pub fn chain(mut self, chain: Chain) -> Self { self.chain = Some(chain); @@ -41,6 +47,13 @@ impl EVMEncoderBuilder { self } + /// Sets the `router_address` manually. + /// If it's not set, the default router address will be used (config/router_addresses.json) + pub fn router_address(mut self, router_address: Bytes) -> Self { + self.router_address = Some(router_address); + self + } + /// Sets the `strategy_encoder` manually. /// /// **Note**: This method should not be used in combination with `tycho_router` or @@ -56,12 +69,17 @@ impl EVMEncoderBuilder { if let Some(chain) = self.chain { let swap_encoder_registry = SwapEncoderRegistry::new(self.executors_file_path.clone(), chain)?; - let strategy = - Box::new(SplitSwapStrategyEncoder::new(chain, swap_encoder_registry, None, None)?); + let strategy = Box::new(SplitSwapStrategyEncoder::new( + chain, + swap_encoder_registry, + None, + self.router_address.clone(), + )?); Ok(EVMEncoderBuilder { chain: Some(chain), strategy: Some(strategy), executors_file_path: self.executors_file_path, + router_address: self.router_address, }) } else { Err(EncodingError::FatalError( @@ -83,12 +101,13 @@ impl EVMEncoderBuilder { chain, swap_encoder_registry, Some(swapper_pk), - None, + self.router_address.clone(), )?); Ok(EVMEncoderBuilder { chain: Some(chain), strategy: Some(strategy), executors_file_path: self.executors_file_path, + router_address: self.router_address, }) } else { Err(EncodingError::FatalError( @@ -108,6 +127,7 @@ impl EVMEncoderBuilder { chain: Some(chain), strategy: Some(strategy), executors_file_path: self.executors_file_path, + router_address: self.router_address, }) } else { Err(EncodingError::FatalError(