pub mod client;
pub mod error;
pub mod types;
pub use client::{Client, Config, DEFAULT_BASE_URL};
pub use error::{Error, Result};
pub use types::{
AllowanceResponse, ApiErrorResponse, ApprovalTransaction, Chain, LiquiditySource,
LiquiditySourcesResponse, ParseChainError, ProtocolInfo, QuoteRequest, QuoteResponse,
SpenderResponse, SwapRequest, SwapResponse, TokenInfo, TokenListResponse, TransactionData,
};
pub use yldfi_common::http::HttpClientConfig;
pub use yldfi_common::{with_retry, with_simple_retry, RetryConfig, RetryError, RetryableError};
#[must_use]
pub fn config_with_api_key(api_key: impl Into<String>) -> Config {
Config::new(api_key)
}
pub mod tokens {
pub const NATIVE: &str = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
pub mod ethereum {
pub const ETH: &str = super::NATIVE;
pub const USDC: &str = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
pub const USDT: &str = "0xdAC17F958D2ee523a2206206994597C13D831ec7";
pub const WETH: &str = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
pub const DAI: &str = "0x6B175474E89094C44Da98b954EedeAC495271d0F";
pub const WBTC: &str = "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599";
}
pub mod polygon {
pub const MATIC: &str = super::NATIVE;
pub const USDC: &str = "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359";
pub const USDC_E: &str = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174";
pub const USDT: &str = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F";
pub const WMATIC: &str = "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270";
pub const WETH: &str = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619";
}
pub mod arbitrum {
pub const ETH: &str = super::NATIVE;
pub const USDC: &str = "0xaf88d065e77c8cC2239327C5EDb3A432268e5831";
pub const USDC_E: &str = "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8";
pub const USDT: &str = "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9";
pub const WETH: &str = "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1";
pub const ARB: &str = "0x912CE59144191C1204E64559FE8253a0e49E6548";
}
pub mod base {
pub const ETH: &str = super::NATIVE;
pub const USDC: &str = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
pub const USDBC: &str = "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA";
pub const WETH: &str = "0x4200000000000000000000000000000000000006";
}
pub mod bsc {
pub const BNB: &str = super::NATIVE;
pub const USDC: &str = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d";
pub const USDT: &str = "0x55d398326f99059fF775485246999027B3197955";
pub const WBNB: &str = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
pub const BUSD: &str = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56";
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_reexports() {
let _chain = Chain::Ethereum;
let _request = QuoteRequest::new("0x", "0x", "1000");
let _swap_request = SwapRequest::new("0x", "0x", "1000", "0x", 1.0);
}
#[test]
fn test_token_constants() {
assert_eq!(tokens::NATIVE, "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE");
assert_eq!(tokens::ethereum::ETH, tokens::NATIVE);
assert_eq!(
tokens::ethereum::USDC,
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
);
}
}