use std::time::Duration;
use one_inch::client::{self, SupportedNetworks};
use one_inch::swap::{SwapDetailsBuilder};
#[tokio::main]
async fn main() {
let network_id = SupportedNetworks::BSC;
let src = "0x55d398326f99059ff775485246999027b3197955".to_string(); let dst = "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE".to_string(); let my_address= "0x13961a09bCD42DCC078765286Be746d87f20E82e".to_string();
let bnb_in_wei = "1000000000000000000".to_string();
let token = env!("ONE_INCH_API_TOKEN");
let client = client::new_with_default_http(token.into(), network_id);
let swap_details = SwapDetailsBuilder::new()
.amount(bnb_in_wei.clone())
.from_addr(my_address.clone())
.src(src.clone())
.dst(dst.clone())
.slippage(2).unwrap()
.build().unwrap();
let basic_swap = client.swap(swap_details).await
.map_err(|e| {
eprintln!("Error while getting raw swap tx for first time: {}", e)
}).unwrap();
println!("Response for perfoming basic swap : {:#?}", basic_swap);
tokio::time::sleep(Duration::from_secs(5)).await;
let extended_swap_details = SwapDetailsBuilder::new()
.amount(bnb_in_wei.clone())
.from_addr(my_address.clone())
.src(src.clone())
.dst(dst.clone())
.slippage(2).unwrap()
.include_tokens_info(true)
.include_gas(true)
.include_protocols(true)
.build().unwrap();
let extended_swap = client.swap(extended_swap_details).await
.map_err(|e| {
eprintln!("Error while getting raw swap tx for second time: {}", e)
}).unwrap();
println!("Response for perfoming another swap : {:#?}", extended_swap);
tokio::time::sleep(Duration::from_secs(5)).await;
let error_swap_details = SwapDetailsBuilder::new()
.amount(bnb_in_wei)
.from_addr(my_address)
.src(dst) .dst(src) .slippage(2).unwrap()
.build().unwrap();
let error_swap = client.swap(error_swap_details).await;
println!("Got error(which is good!) for third tx : {:#?}", error_swap.unwrap_err());
}