use oinch::{Chain, Client, QuoteRequest};
use std::env;
const NATIVE_ETH: &str = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
const USDC: &str = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key =
env::var("ONEINCH_API_KEY").expect("ONEINCH_API_KEY environment variable must be set");
let client = Client::new(&api_key)?;
println!("=== Quote: 1 ETH -> USDC ===");
let request = QuoteRequest::new(
NATIVE_ETH,
USDC,
"1000000000000000000", );
match client.get_quote(Chain::Ethereum, &request).await {
Ok(quote) => {
println!("Output: {} USDC", quote.to_amount);
}
Err(e) => println!("Error: {}", e),
}
println!("\n=== Liquidity Sources ===");
match client.get_liquidity_sources(Chain::Ethereum).await {
Ok(sources) => {
println!("Found {} liquidity sources", sources.len());
for source in sources.iter().take(5) {
println!(" {}: {}", source.id, source.title);
}
}
Err(e) => println!("Error: {}", e),
}
println!("\nDone!");
Ok(())
}