use crate::client::OkxClient;
use crate::error::Error;
use crate::model::EmptyRequest;
use crate::transport::Transport;
use super::endpoints::*;
use super::requests::*;
use super::responses::*;
pub struct Market<'a, T> {
client: &'a OkxClient<T>,
}
impl<'a, T: Transport> Market<'a, T> {
pub(crate) fn new(client: &'a OkxClient<T>) -> Self {
Self { client }
}
pub async fn get_ticker(&self, request: &InstIdRequest<'_>) -> Result<Vec<Ticker>, Error> {
self.client.get(TICKER, request, false).await
}
pub async fn get_tickers(&self, request: &TickersRequest<'_>) -> Result<Vec<Ticker>, Error> {
self.client.get(TICKERS, request, false).await
}
pub async fn get_index_tickers(
&self,
request: &IndexTickersRequest<'_>,
) -> Result<Vec<IndexTicker>, Error> {
self.client.get(INDEX_TICKERS, request, false).await
}
pub async fn get_orderbook(
&self,
request: &OrderBookRequest<'_>,
) -> Result<Vec<OrderBook>, Error> {
self.client.get(BOOKS, request, false).await
}
pub async fn get_candlesticks(
&self,
request: &CandlesRequest<'_>,
) -> Result<Vec<Candle>, Error> {
self.client.get(CANDLES, request, false).await
}
pub async fn get_history_candlesticks(
&self,
request: &CandlesticksRequest,
) -> Result<Vec<Candle>, Error> {
self.client.get(HISTORY_CANDLES, request, false).await
}
pub async fn get_index_candlesticks(
&self,
request: &CandlesticksRequest,
) -> Result<Vec<IndexCandle>, Error> {
self.client.get(INDEX_CANDLES, request, false).await
}
pub async fn get_mark_price_candlesticks(
&self,
request: &CandlesticksRequest,
) -> Result<Vec<IndexCandle>, Error> {
self.client.get(MARK_PRICE_CANDLES, request, false).await
}
pub async fn get_trades(&self, request: &TradesRequest<'_>) -> Result<Vec<MarketTrade>, Error> {
self.client.get(TRADES, request, false).await
}
pub async fn get_history_trades(
&self,
request: &HistoryTradesRequest,
) -> Result<Vec<MarketTrade>, Error> {
self.client.get(HISTORY_TRADES, request, false).await
}
pub async fn get_platform_24_volume(&self) -> Result<Vec<PlatformVolume>, Error> {
self.client
.get(PLATFORM_24_VOLUME, &EmptyRequest {}, false)
.await
}
pub async fn get_index_components(
&self,
request: &IndexRequest<'_>,
) -> Result<Vec<IndexComponents>, Error> {
self.client.get(INDEX_COMPONENTS, request, false).await
}
pub async fn get_exchange_rate(&self) -> Result<Vec<ExchangeRate>, Error> {
self.client
.get(EXCHANGE_RATE, &EmptyRequest {}, false)
.await
}
pub async fn get_block_ticker(
&self,
request: &InstIdRequest<'_>,
) -> Result<Vec<BlockTicker>, Error> {
self.client.get(BLOCK_TICKER, request, false).await
}
pub async fn get_block_tickers(
&self,
request: &TickersRequest<'_>,
) -> Result<Vec<BlockTicker>, Error> {
self.client.get(BLOCK_TICKERS, request, false).await
}
pub async fn get_option_instrument_family_trades(
&self,
request: &InstFamilyRequest<'_>,
) -> Result<Vec<OptionFamilyTradeGroup>, Error> {
self.client
.get(OPTION_INSTRUMENT_FAMILY_TRADES, request, false)
.await
}
}