debot_ether_ether_utils/dex/
baseswap.rs1use 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}