@huangapple/okx-api
Version:
Complete & robust Node.js SDK for OKX's REST APIs and WebSockets, with TypeScript & end-to-end tests.
402 lines (401 loc) • 20.6 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import BaseRestClient from './util/BaseRestClient';
import { ContractGridDirection, GridAlgoOrderType, GridAlgoSubOrderType, InstrumentType, MarginMode, numberInString, Ticker, AlgoOrderRequest, AmendOrderRequest, CancelAlgoOrderRequest, OrderIdRequest, ClosePositionRequest, OrderRequest, OrderHistoryRequest, FillsHistoryRequest, AlgoRecentHistoryRequest, AlgoLongHistoryRequest, PaginatedSymbolRequest, OrderResult, CancelledOrderResult, AmendedOrder, ClosedPositions, OrderDetails, OrderListItem, HistoricOrder, OrderFill, AlgoOrderResult, AlgoOrderListItem, HistoricAlgoOrder, BlockCounterParty, CreateBlockRFQRequest, CreateRFQResult, CancelBlockRFQRequest, CancelBlockQuoteResult, CancelMultipleBlockRFQRequest, TimestampObject, ExecuteBlockQuoteResult, ExecuteBlockQuoteRequest, CreateBlockQuoteRequest, CreateBlockQuoteResult, CancelBlockRFQResult, CancelBlockQuoteRequest, CancelMultipleBlockQuoteRequest, BlockRFQResult, GetBlockRFQSParams, GetBlockQuoteParams, GetBlockQuoteResult, FundingCurrency, FundingBalance, AccountAssetValuation, FundTransferResult, FundTransferState, AssetBillDetails, AccountBalance, GetPositionsParams, AccountPosition, GetHistoricPositionParams, HistoricAccountPosition, AccountPositionRisk, AccountBill, AccountConfiguration, AccountPositionModeResult, AccountLeverageResult, AccountMaxOrderAmount, AccountMaxTradableAmount, AccountChangeMarginResult, AccountLeverage, AccountMaxLoan, AccountFeeRate, AccountIsolatedMode, SubAccount, SubAccountAPIReset, SubAccountBalances, SubAccountTransferResult, IndexTicker, OrderBook, Candle, CandleNoVolume, Trade, Pagination, APIResponse, GetGridAlgoOrdersRequest, FundsTransferRequest, WithdrawRequest, ConvertTradeRequest, ConvertQuoteEstimateRequest, SetLeverageRequest, ChangePositionMarginRequest, SubAccountTransferRequest, GridAlgoOrderRequest, StopGridAlgoOrderRequest, APICredentials, RestClientOptions, APIMarket, Instrument } from './types';
import { ASSET_BILL_TYPE } from './constants';
export declare class RestClient extends BaseRestClient {
/**
* @public Creates an instance of the REST API client.
*/
constructor(credentials?: APICredentials | null, environment?: APIMarket, restClientOptions?: RestClientOptions, requestOptions?: AxiosRequestConfig);
getServerTime(): Promise<number>;
/**
*
* Trade endpoints (private)
*
*/
submitOrder(params: OrderRequest): Promise<OrderResult[]>;
submitMultipleOrders(params: OrderRequest[]): Promise<OrderResult[]>;
cancelOrder(params: OrderIdRequest): Promise<CancelledOrderResult[]>;
cancelMultipleOrders(params: OrderIdRequest[]): Promise<CancelledOrderResult[]>;
amendOrder(params: AmendOrderRequest): Promise<AmendedOrder[]>;
amendMultipleOrders(params: AmendOrderRequest[]): Promise<AmendedOrder[]>;
closePositions(params: ClosePositionRequest): Promise<ClosedPositions[]>;
getOrderDetails(params: OrderIdRequest): Promise<OrderDetails[]>;
getOrderList(params?: OrderHistoryRequest): Promise<OrderListItem[]>;
/**
* Get history for last 7 days
*/
getOrderHistory(params: OrderHistoryRequest): Promise<HistoricOrder[]>;
/**
* Get history for last 3 months
*/
getOrderHistoryArchive(params: OrderHistoryRequest): Promise<HistoricOrder[]>;
/**
* Get history for last 7 days
*/
getFills(params?: FillsHistoryRequest): Promise<OrderFill[]>;
/**
* Get history for last 3 months
*/
getFillsHistory(params: FillsHistoryRequest): Promise<OrderFill[]>;
placeAlgoOrder(params: AlgoOrderRequest): Promise<AlgoOrderResult[]>;
cancelAlgoOrder(params: CancelAlgoOrderRequest[]): Promise<AlgoOrderResult[]>;
cancelAdvanceAlgoOrder(params: CancelAlgoOrderRequest[]): Promise<AlgoOrderResult[]>;
getAlgoOrderList(params: AlgoRecentHistoryRequest): Promise<AlgoOrderListItem[]>;
getAlgoOrderHistory(params: AlgoLongHistoryRequest): Promise<HistoricAlgoOrder[]>;
/** Get easy convert currency list */
getEasyConvertCurrencies(): Promise<any>;
/**
* Place easy convert : Convert small currencies to mainstream currencies.
* Only applicable to the crypto balance less than $10.
*
* Maximum 5 currencies can be selected in one order.
* If there are multiple currencies, separate them with commas in the "from" field.
*/
submitEasyConvert(fromCcys: string[], toCcy: string): Promise<APIResponse<any>>;
/** Get easy convert history : Get the history and status of easy convert trades. */
getEasyConvertHistory(params?: Pagination): Promise<APIResponse<any>>;
/**
* Get one-click repay currency list : Get list of debt currency data and repay currencies.
* Debt currencies include both cross and isolated debts.
*/
getOneClickRepayCurrencyList(debtType?: 'cross' | 'isolated'): Promise<APIResponse<any>>;
/**
* Trade one-click repay to repay cross debts.
* Isolated debts are not applicable.
* The maximum repayment amount is based on the remaining available balance of funding and trading accounts.
*/
submitOneClickRepay(debtCcys: string[], repayCcy: string): Promise<APIResponse<any>>;
/** Get the history and status of one-click repay trades. */
getOneClickRepayHistory(params?: Pagination): Promise<APIResponse<any>>;
/**
*
* Block trading endpoints (private)
*
*/
getBlockCounterParties(): Promise<BlockCounterParty[]>;
createBlockRFQ(params: CreateBlockRFQRequest): Promise<CreateRFQResult[]>;
cancelBlockRFQ(params: CancelBlockRFQRequest): Promise<CancelBlockRFQResult[]>;
cancelMultipleBlockRFQs(params: CancelMultipleBlockRFQRequest): Promise<CancelBlockRFQResult[]>;
cancelAllRFQs(): Promise<TimestampObject[]>;
executeBlockQuote(params: ExecuteBlockQuoteRequest): Promise<ExecuteBlockQuoteResult[]>;
createBlockQuote(params: CreateBlockQuoteRequest): Promise<CreateBlockQuoteResult[]>;
cancelBlockQuote(params: CancelBlockQuoteRequest): Promise<CancelBlockQuoteResult[]>;
cancelMultipleBlockQuotes(params: CancelMultipleBlockQuoteRequest): Promise<CancelBlockQuoteResult[]>;
cancelAllBlockQuotes(): Promise<TimestampObject[]>;
getBlockRFQs(params?: GetBlockRFQSParams): Promise<BlockRFQResult[]>;
getBlockQuotes(params?: GetBlockQuoteParams): Promise<GetBlockQuoteResult[]>;
getBlockTrades(params?: unknown): Promise<unknown[]>;
getPublicRFQBlockTrades(params?: unknown): Promise<unknown[]>;
/**
*
* Funding endpoints (private)
*
*/
getCurrencies(ccy?: string): Promise<FundingCurrency[]>;
getBalances(ccy?: string): Promise<FundingBalance[]>;
getAccountAssetValuation(ccy?: string): Promise<AccountAssetValuation[]>;
fundsTransfer(params: FundsTransferRequest): Promise<FundTransferResult[]>;
/** Either parameter transId or clientId is required. */
getFundsTransferState(params: {
transId?: string;
clientId?: string;
type?: '0' | '1' | '2';
}): Promise<FundTransferState[]>;
getAssetBillsDetails(params?: {
ccy?: string;
type?: `${ASSET_BILL_TYPE}`;
clientId?: string;
after?: numberInString;
before?: numberInString;
limit?: numberInString;
}): Promise<AssetBillDetails[]>;
getLightningDeposits(ccy: string, amt: numberInString, to?: '6' | '18'): Promise<unknown[]>;
getDepositAddress(ccy: string): Promise<unknown[]>;
getDepositHistory(params?: unknown): Promise<unknown[]>;
submitWithdraw(params: WithdrawRequest): Promise<unknown[]>;
submitWithdrawLightning(ccy: string, invoice: string, memo?: string): Promise<unknown[]>;
cancelWithdrawal(wdId: string): Promise<unknown[]>;
getWithdrawalHistory(params?: unknown): Promise<unknown[]>;
smallAssetsConvert(ccy: string[]): Promise<unknown[]>;
getSavingBalance(ccy?: string): Promise<unknown[]>;
savingsPurchaseRedemption(ccy: string, amt: numberInString, side: 'purchase' | 'redempt', rate: numberInString): Promise<unknown[]>;
setLendingRate(ccy: string, rate: numberInString): Promise<unknown[]>;
getLendingHistory(params?: PaginatedSymbolRequest): Promise<unknown[]>;
getPublicBorrowInfo(ccy?: string): Promise<unknown[]>;
getPublicBorrowHistory(params?: PaginatedSymbolRequest): Promise<unknown[]>;
/**
*
* Convert endpoints (private)
*
*/
getConvertCurrencies(): Promise<unknown[]>;
getConvertCurrencyPair(fromCcy: string, toCcy: string): Promise<unknown[]>;
estimateConvertQuote(params: ConvertQuoteEstimateRequest): Promise<unknown[]>;
convertTrade(params: ConvertTradeRequest): Promise<unknown[]>;
getConvertHistory(params?: unknown): Promise<unknown[]>;
/**
*
* Account endpoints (private)
*
*/
getBalance(ccy?: string): Promise<AccountBalance[]>;
getPositions(params?: GetPositionsParams): Promise<AccountPosition[]>;
getPositionsHistory(params?: GetHistoricPositionParams): Promise<HistoricAccountPosition[]>;
getAccountPositionRisk(instType?: Omit<'SPOT', InstrumentType>): Promise<AccountPositionRisk[]>;
/** Up to last 7 days */
getBills(params?: unknown): Promise<AccountBill[]>;
/** Last 3 months */
getBillsArchive(params?: unknown): Promise<AccountBill[]>;
getAccountConfiguration(): Promise<AccountConfiguration[]>;
setPositionMode(posMode: 'long_short_mode' | 'net'): Promise<AccountPositionModeResult[]>;
setLeverage(params: SetLeverageRequest): Promise<AccountLeverageResult[]>;
/** Max buy/sell amount or open amount */
getMaxBuySellAmount(params: {
instId: string;
tdMode: 'cross' | 'isolated' | 'cash';
ccy?: string;
px?: string;
leverage?: string;
unSpotOffset?: boolean;
}): Promise<AccountMaxOrderAmount[]>;
getMaxAvailableTradableAmount(params: {
instId: string;
ccy?: string;
tdMode: 'cross' | 'isolated' | 'cash';
reduceOnly?: boolean;
unSpotOffset?: boolean;
}): Promise<AccountMaxTradableAmount[]>;
changePositionMargin(params: ChangePositionMarginRequest): Promise<AccountChangeMarginResult[]>;
getLeverage(instId: string, mgnMode: MarginMode): Promise<AccountLeverage[]>;
getMaxLoan(instId: string, mgnMode: MarginMode, mgnCcy?: string): Promise<AccountMaxLoan[]>;
getFeeRates(instType: InstrumentType, instId?: string, uly?: string): Promise<AccountFeeRate[]>;
getInterestAccrued(params?: unknown): Promise<unknown[]>;
getInterestRate(ccy?: string): Promise<unknown[]>;
setGreeksDisplayType(greeksType: 'PA' | 'BS'): Promise<unknown[]>;
setIsolatedMode(isoMode: 'automatic' | 'autonomy', type: 'MARGIN' | 'CONTRACTS'): Promise<AccountIsolatedMode[]>;
getMaxWithdrawals(ccy?: string): Promise<unknown[]>;
getAccountRiskState(): Promise<unknown[]>;
borrowRepayVIPLoan(ccy: string, side: 'borrow' | 'repay', amt: numberInString, ordId?: string): Promise<unknown[]>;
getVIPLoanBorrowRepayHistory(params?: unknown): Promise<unknown[]>;
getBorrowInterestLimits(params?: {
type?: '1' | '2';
ccy?: string;
}): Promise<unknown[]>;
positionBuilder(params?: unknown): Promise<unknown[]>;
getGreeks(ccy?: string): Promise<unknown[]>;
getPMLimitation(params: {
instType: 'SWAP' | 'FUTURES' | 'OPTION';
uly?: string;
instFamily?: string;
}): Promise<unknown[]>;
/**
*
* SubAccount endpoints (private)
*
*/
/** View sub-account list */
getSubAccountList(params?: unknown): Promise<SubAccount[]>;
/** Reset the APIKey of a sub-account */
resetSubAccountAPIKey(subAcct: string, apiKey: string, options?: {
label?: string;
perm?: string;
ip?: string;
}): Promise<SubAccountAPIReset[]>;
/** Get sub-account trading balance */
getSubAccountBalances(subAcct: string): Promise<SubAccountBalances[]>;
/** Get sub-account funding balance */
getSubAccountFundingBalances(subAcct: string, ccy?: string): Promise<FundingBalance[]>;
/** History of sub-account transfer */
getSubAccountTransferHistory(params?: {
ccy?: string;
type?: '0' | '1';
subAcct?: string;
after?: string;
before?: string;
limit?: string;
}): Promise<unknown[]>;
/** Master accounts manage the transfers between sub-accounts */
transferSubAccountBalance(params: SubAccountTransferRequest): Promise<SubAccountTransferResult[]>;
/** Set Permission Of Transfer Out */
setSubAccountTransferOutPermission(subAcct: string, canTransOut?: boolean): Promise<unknown[]>;
/** Get custody trading sub-account list */
getSubAccountCustodyTradingList(subAcct?: string): Promise<unknown[]>;
/**
*
* Grid trading endpoints (private)
*
*/
placeGridAlgoOrder(params: GridAlgoOrderRequest): Promise<unknown[]>;
amendGridAlgoOrder(algoId: string, instId: string, triggerPx: {
slTriggerPx?: numberInString;
tpTriggerPx?: numberInString;
}): Promise<unknown[]>;
stopGridAlgoOrder(orders: StopGridAlgoOrderRequest[]): Promise<unknown[]>;
getGridAlgoOrderList(params: GetGridAlgoOrdersRequest): Promise<unknown[]>;
getGridAlgoOrderHistory(params: GetGridAlgoOrdersRequest): Promise<unknown[]>;
getGridAlgoOrderDetails(algoOrdType: GridAlgoOrderType, algoId: string): Promise<unknown[]>;
getGridAlgoSubOrders(algoOrdType: GridAlgoOrderType, algoId: string, type: GridAlgoSubOrderType, groupId?: string, pagination?: {
after?: numberInString;
before?: numberInString;
limit?: number;
}): Promise<unknown[]>;
/** Only contract grid supports this method */
getGridAlgoOrderPositions(algoOrdType: 'contract_grid', algoId: string): Promise<unknown[]>;
spotGridWithdrawIncome(algoId: string): Promise<unknown[]>;
computeGridMarginBalance(algoId: string, type: 'add' | 'reduce', amt?: numberInString): Promise<unknown[]>;
adjustGridMarginBalance(algoId: string, type: 'add' | 'reduce', change: {
amt?: numberInString;
percent?: numberInString;
}): Promise<unknown[]>;
getGridAIParameter(algoOrdType: GridAlgoOrderType, instId: string, direction: ContractGridDirection, duration?: '7D' | '30D' | '180D'): Promise<unknown[]>;
/**
*
* Earn/staking endpoints (private)
*
*/
/** Get earn offers */
getStakingOffers(params?: {
productId?: string;
protocolType?: 'staking' | 'defi';
ccy?: string;
}): Promise<APIResponse<any>>;
/** Earn/staking purchase */
submitStake(productId: string, investData: {
ccy: string;
amt: string;
}[], term?: string): Promise<APIResponse<any>>;
/** Earn/staking redeem */
redeemStake(ordId: string, protocolType: 'staking' | 'defi', allowEarlyRedeem?: boolean): Promise<APIResponse<any>>;
/** Earn/staking cancel purchases/redemptions */
cancelStakingRequest(ordId: string, protocolType: 'staking' | 'defi'): Promise<APIResponse<any>>;
/** Earn/staking get active orders */
getActiveStakingOrders(params?: {
productId?: string;
protocolType?: 'staking' | 'defi';
ccy?: string;
state?: '8' | '13' | '9' | '1' | '2';
}): Promise<APIResponse<any>>;
/** Earn/staking get order history */
getStakingOrderHistory(params?: {
productId?: string;
protocolType?: string;
ccy?: string;
after?: string;
before?: string;
limit?: string;
}): Promise<APIResponse<any>>;
/**
*
* Market data endpoints (public)
*
*/
getTickers(instrumentType: InstrumentType, uly?: string): Promise<Ticker[]>;
getTicker(instId: string): Promise<Ticker[]>;
getIndexTickers(params: {
quoteCcy?: string;
instId?: string;
}): Promise<IndexTicker[]>;
getOrderBook(instId: string, sz?: numberInString): Promise<OrderBook[]>;
getCandles(instId: string, bar?: string, pagination?: Pagination): Promise<Candle[]>;
getHistoricCandles(instId: string, bar?: string, pagination?: Pagination): Promise<Candle[]>;
getIndexCandles(instId: string, bar?: string, pagination?: Pagination): Promise<CandleNoVolume[]>;
getHistoricIndexCandles(instId: string, bar?: string, pagination?: Pagination): Promise<CandleNoVolume[]>;
getMarkPriceCandles(instId: string, bar?: string, pagination?: Pagination): Promise<CandleNoVolume[]>;
getHistoricMarkPriceCandles(instId: string, bar?: string, pagination?: Pagination): Promise<CandleNoVolume[]>;
getTrades(instId: string, limit?: number): Promise<Trade[]>;
getHistoricTrades(instId: string, pagination?: {
after?: numberInString;
before?: numberInString;
limit?: numberInString;
type?: '1' | '2';
}): Promise<Trade[]>;
get24hrTotalVolume(): Promise<unknown[]>;
getOracle(): Promise<unknown[]>;
getExchangeRate(): Promise<unknown[]>;
getIndexComponents(index: string): Promise<unknown[]>;
getBlockTickers(instType: InstrumentType, uly?: string): Promise<unknown[]>;
getBlockTicker(instId: string): Promise<unknown[]>;
getPublicBlockTrades(instId: string): Promise<unknown[]>;
/**
*
* Public data endpoints (public)
*
*/
getInstruments(instType: InstrumentType, uly?: string, instFamily?: string, instId?: string): Promise<Instrument[]>;
getDeliveryExerciseHistory(params: unknown): Promise<unknown[]>;
getOpenInterest(params: unknown): Promise<unknown[]>;
getFundingRate(params: unknown): Promise<unknown[]>;
getFundingRateHistory(params: unknown): Promise<unknown[]>;
getMinMaxLimitPrice(params: unknown): Promise<unknown[]>;
getOptionMarketData(params: unknown): Promise<unknown[]>;
getEstimatedDeliveryExercisePrice(params: unknown): Promise<unknown[]>;
getDiscountRateAndInterestFreeQuota(params: unknown): Promise<unknown[]>;
getSystemTime(params: unknown): Promise<unknown[]>;
getLiquidationOrders(params: unknown): Promise<unknown[]>;
getMarkPrice(params: unknown): Promise<unknown[]>;
getPositionTiers(params: unknown): Promise<unknown[]>;
getInterestRateAndLoanQuota(params: unknown): Promise<unknown[]>;
getVIPInterestRateAndLoanQuota(params: unknown): Promise<unknown[]>;
getUnderlying(params: unknown): Promise<unknown[]>;
getInsuranceFund(params: unknown): Promise<unknown[]>;
getUnitConvert(params: unknown): Promise<unknown[]>;
/**
*
* Trading data endpoints (public)
*
*/
getSupportCoin(): Promise<unknown[]>;
getTakerVolume(): Promise<unknown[]>;
getMarginLendingRatio(params: {
ccy: string;
begin?: numberInString;
end?: numberInString;
period: '5m' | '1H' | '1D';
}): Promise<unknown[]>;
getLongShortRatio(params: {
ccy: string;
begin?: numberInString;
end?: numberInString;
period: '5m' | '1H' | '1D';
}): Promise<unknown[]>;
getContractsOpenInterestAndVolume(params: {
ccy: string;
begin?: numberInString;
end?: numberInString;
period: '5m' | '1H' | '1D';
}): Promise<unknown[]>;
getOptionsOpenInterestAndVolume(params: {
ccy: string;
period: '8H' | '1D';
}): Promise<unknown[]>;
getPutCallRatio(params: {
ccy: string;
period: '8H' | '1D';
}): Promise<unknown[]>;
getOpenInterestAndVolumeExpiry(params: {
ccy: string;
period: '8H' | '1D';
}): Promise<unknown[]>;
getOpenInterestAndVolumeStrike(params: {
ccy: string;
expTime: string;
period: '8H' | '1D';
}): Promise<unknown[]>;
getTakerFlow(params: {
ccy: string;
period: '8H' | '1D';
}): Promise<unknown[]>;
/**
*
* Status endpoints (public)
*
*/
getSystemStatus(state?: 'scheduled' | 'ongoing' | 'pre_open' | 'completed' | 'canceled'): Promise<unknown[]>;
/**
*
* Broker endpoints (private)
*
*/
getBrokerAccountInformation(): Promise<unknown[]>;
}