debot_ether_ether_utils/dex/
baseswap.rs

1// baseswap.rs
2
3use super::dex::BaseDex;
4use super::Dex;
5use async_trait::async_trait;
6use ethers::{prelude::*, types::Address};
7use std::error::Error;
8use std::sync::Arc;
9
10#[derive(Debug, Clone)]
11pub struct BaseSwap {
12    base_dex: BaseDex,
13}
14
15static BASESWAP_ROUTER_ABI_JSON: &'static [u8] =
16    include_bytes!("../../resources/BaseSwapRouterABI.json");
17
18impl BaseSwap {
19    pub fn new(
20        provider: Arc<NonceManagerMiddleware<SignerMiddleware<Provider<Http>, LocalWallet>>>,
21        router_address: Address,
22    ) -> Self {
23        Self {
24            base_dex: BaseDex::new(provider, router_address),
25        }
26    }
27}
28
29#[async_trait]
30impl Dex for BaseSwap {
31    async fn initialize(&mut self) -> Result<(), Box<dyn Error + Send + Sync>> {
32        self.base_dex
33            .create_router_contract(BASESWAP_ROUTER_ABI_JSON)
34            .await
35    }
36
37    fn clone_box(&self) -> Box<dyn Dex + Send + Sync> {
38        Box::new(self.clone())
39    }
40
41    fn name(&self) -> &str {
42        "BaseSwap"
43    }
44
45    fn router_contract(
46        &self,
47    ) -> Result<
48        &Contract<NonceManagerMiddleware<SignerMiddleware<Provider<Http>, LocalWallet>>>,
49        Box<dyn Error + Send + Sync + 'static>,
50    > {
51        self.base_dex.router_contract()
52    }
53
54    fn provider(
55        &self,
56    ) -> Arc<NonceManagerMiddleware<SignerMiddleware<Provider<Http>, LocalWallet>>> {
57        self.base_dex.provider()
58    }
59
60    fn router_address(&self) -> Address {
61        self.base_dex.router_address()
62    }
63}