UNPKG

@coinset/bitmart

Version:

Universal BitMart API client

113 lines (90 loc) 2.35 kB
import { jsonFetch, Reviver, SuccessResponse } from "./_utils.js"; import { BASE_URL } from "./constants.js"; import { isString } from "../deps.js"; export type TickerOptions = { /** Trading pair symbol */ symbol: `${string}_${string}`; }; type TickerData = { /** Trading pair */ symbol: `${string}_${string}`; /** Latest price */ last_price: number; /** 24-hour trade volume in quote currency */ quote_volume_24h: number; /** 24-hour trade volume in base currency */ base_volume_24h: number; /** 24-hour highest price */ high_24h: number; /** 24-hour lowest price */ low_24h: number; /** 24-hour open price */ open_24h: number; /** 24-hour close price */ close_24h: number; /** Top ask price */ best_ask: number; /** Size of top ask order */ best_ask_size: number; /** Top bid price */ best_bid: number; /** Size of top bid order */ best_bid_size: number; fluctuation: number; /** Link to the trading page on BitMart */ url: string; }; const reviver: Reviver = (key, value) => { if ( [ "last_price", "quote_volume_24h", "base_volume_24h", "high_24h", "low_24h", "open_24h", "close_24h", "best_ask", "best_ask_size", "best_bid", "best_bid_size", "fluctuation", ] .includes(key) && isString(value) ) { return Number(value); } return value; }; export type TickerResponse = SuccessResponse<{ ticker: TickerData; }>; /** Ticker is an overview of the market status of a trading pair, including the latest trade price, top bid and ask prices and 24-hour trading volume. * ```ts * import { fetchTicker } from "https://deno.land/x/bitmart@$VERSION/mod.ts" * await fetchTicker({symbol: "BTC_USDT" }) * ``` * @see https://developer-pro.bitmart.com/en/spot/quotation/ticker.html */ export async function fetchTicker( { symbol }: TickerOptions, init?: RequestInit, ): Promise<TickerResponse> { const url = new URL("spot/v1/ticker", BASE_URL); url.searchParams.set("symbol", symbol); const { data: { tickers: [ticker] }, ...rest } = await jsonFetch< SuccessResponse<{ tickers: TickerData[]; }> >(url, init, { parseJson: reviver, }); return { ...rest, data: { ticker, }, }; } export type { TickerData }; export { reviver };