use std::time::Duration;
use one_inch::client::{self, SupportedNetworks};
use one_inch::swap::{QuoteDetailsBuilder};
#[tokio::main]
async fn main() {
let network_id = SupportedNetworks::BSC;
let src = "0x55d398326f99059ff775485246999027b3197955".to_string(); let dst = "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE".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 simple_quote_details = QuoteDetailsBuilder::new()
.amount(bnb_in_wei.clone())
.src(src.clone())
.dst(dst.clone())
.fee(2).unwrap()
.build().unwrap();
let basic_quote = client.quote(simple_quote_details).await
.map_err(|e| {
eprintln!("Error while making quote request: {}", e)
}).unwrap();
println!("Response for perfoming basic quote request: {:#?}", basic_quote);
println!("Sleeping 5 seconds before making a second request..");
tokio::time::sleep(Duration::from_secs(5)).await;
let extended_quote_details = QuoteDetailsBuilder::new()
.amount(bnb_in_wei.clone())
.src(src.clone())
.dst(dst.clone())
.fee(2).unwrap()
.include_gas(true)
.include_protocols(true)
.include_tokens_info(true)
.build().unwrap();
let extented_quote = client.quote(extended_quote_details).await
.map_err(|e| {
eprintln!("Error while making quote request: {}", e)
}).unwrap();
println!("Response for perfoming extented quote request: {:#?}", extented_quote);
let error_swap_details = QuoteDetailsBuilder::new()
.amount(bnb_in_wei)
.src(dst)
.dst(src)
.build().unwrap();
let error_quote = client.quote(error_swap_details).await;
println!("Got error(which is good!) for third quote request : {:#?}", error_quote.unwrap_err());
}