crypto_contract_value/
lib.rs1use crypto_market_type::MarketType;
2
3mod exchanges;
4
5pub fn get_contract_value(exchange: &str, market_type: MarketType, pair: &str) -> Option<f64> {
6 if market_type == MarketType::Spot {
7 return Some(1.0);
8 }
9
10 match exchange {
11 "binance" => exchanges::binance::get_contract_value(market_type, pair),
12 "bitfinex" => exchanges::bitfinex::get_contract_value(market_type, pair),
13 "bitget" => exchanges::bitget::get_contract_value(market_type, pair),
14 "bitmex" => exchanges::bitmex::get_contract_value(market_type, pair),
15 "bybit" => exchanges::bybit::get_contract_value(market_type, pair),
16 "deribit" => exchanges::deribit::get_contract_value(market_type, pair),
17 "dydx" => Some(1.0),
18 "ftx" => Some(1.0),
19 "gate" => exchanges::gate::get_contract_value(market_type, pair),
20 "huobi" => exchanges::huobi::get_contract_value(market_type, pair),
21 "kraken" => exchanges::kraken::get_contract_value(market_type, pair),
22 "kucoin" => exchanges::kucoin::get_contract_value(market_type, pair),
23 "mxc" | "mexc" => exchanges::mexc::get_contract_value(market_type, pair),
24 "okex" | "okx" => exchanges::okx::get_contract_value(market_type, pair),
25 "zb" => Some(1.0),
26 "zbg" => exchanges::zbg::get_contract_value(market_type, pair),
27 _ => panic!("Unknown exchange {exchange}"),
28 }
29}