| Crates.io | enso-api |
| lib.rs | enso-api |
| version | 0.1.0 |
| created_at | 2026-01-17 09:03:11.398259+00 |
| updated_at | 2026-01-17 09:03:11.398259+00 |
| description | Unofficial Rust client for the Enso Finance DeFi aggregator API |
| homepage | |
| repository | https://github.com/yldfi/yldfi-rs/tree/main/crates/enso-api |
| max_upload_size | |
| id | 2050167 |
| size | 68,045 |
Unofficial Rust client for the Enso Finance DeFi Aggregator API
Enso Finance is a DeFi infrastructure platform that provides:
use enso_api::{Client, Chain, RouteRequest};
#[tokio::main]
async fn main() -> Result<(), enso_api::Error> {
let client = Client::with_api_key("your-api-key")?;
// Get route for swapping tokens
let request = RouteRequest::new(
Chain::Ethereum.chain_id(),
"0xYourAddress",
"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", // ETH
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
"1000000000000000000", // 1 ETH
100, // 1% slippage in basis points
);
let response = client.get_route(&request).await?;
println!("Output: {}", response.amount_out);
// Execute the swap
if let Some(tx) = &response.tx {
println!("Send to: {}", tx.to);
println!("Data: {}", tx.data);
}
Ok(())
}
Enso's killer feature is bundling multiple DeFi actions:
use enso_api::{Client, BundleRequest, BundleAction};
let client = Client::with_api_key("your-key")?;
// Bundle: Swap ETH -> USDC, then deposit USDC to Aave
let actions = vec![
BundleAction::swap(
"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"1000000000000000000",
),
BundleAction::deposit("aave-v3", "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),
];
let request = BundleRequest::new(1, "0xYourAddress", actions);
let bundle = client.bundle(&request).await?;
println!("Execute bundled tx to: {}", bundle.tx.to);
use enso_api::Client;
let client = Client::with_api_key("your-key")?;
let price = client.get_token_price(
1, // Ethereum
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
).await?;
println!("USDC price: ${}", price.price);
use enso_api::Client;
let client = Client::with_api_key("your-key")?;
let balances = client.get_balances(1, "0xYourAddress").await?;
for balance in balances {
println!("{}: {}", balance.symbol, balance.balance);
}
| Chain | Chain ID |
|---|---|
| Ethereum | 1 |
| Polygon | 137 |
| Arbitrum | 42161 |
| Optimism | 10 |
| Base | 8453 |
| BSC | 56 |
use enso_api::{Client, Config};
use std::time::Duration;
// API key is required
let client = Client::with_api_key("your-api-key")?;
// With custom configuration
let config = Config::new()
.api_key("your-api-key")
.timeout(Duration::from_secs(30));
let client = Client::with_config(config)?;
MIT