use core::fmt;
use strum_macros::{Display, FromRepr};
pub struct OneInchClient {
pub http_client: reqwest::Client,
pub(crate) token: String,
pub(crate) network_id: SupportedNetworks,
}
pub fn new_with_default_http(token: String, network_id: SupportedNetworks) -> OneInchClient {
OneInchClient {
http_client: reqwest::Client::default(),
token,
network_id,
}
}
#[derive(FromRepr, Debug, Copy, Clone)]
#[repr(u32)]
pub enum SupportedNetworks {
Ethereum = 1,
Optimism = 10,
BSC = 56,
Gnosis = 100,
Polygon = 137,
Fantom = 250,
ZkSync = 324,
Klaytn = 8217,
Base = 8453,
Arbitrum = 42161,
Avalanche = 43114,
Aurora = 1313161554,
}
impl fmt::Display for SupportedNetworks {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", *self as u32)
}
}
#[derive(Debug, Display, Clone)]
pub enum SupportedCurrencies {
USD, AED, ARS, AUD, BDT, BHD, BMD, BRL, CAD, CHF, CLP, CNY, CZK, DKK, EUR, GBP,
HKD, HUF, IDR, ILS, INR, JPY, KRW, KWD, LKR, MMK, MXN, MYR, NGN, NOK, NZD,
PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, UAH, VEF, VND, ZAR
}