UNPKG

okx-api

Version:

Complete Node.js SDK for OKX's REST APIs and WebSockets, with TypeScript & end-to-end tests

140 lines (138 loc) 5.37 kB
import { WS_KEY_MAP, WsKey } from '../../util/websocket-util.js'; import { OrderIdRequest } from '../rest/request/trade.js'; import { OrderResult } from '../rest/response/private-trade.js'; import { numberInString } from '../rest/shared.js'; import { WSAPIAmendOrderRequestV5, WSAPIAmendSpreadOrderRequestV5, WSAPICancelSpreadOrderRequestV5, WSAPIMassCancelOrdersRequestV5, WSAPIPlaceOrderRequestV5, WSAPIPlaceSpreadOrderRequestV5, WSAPISpreadMassCancelOrdersRequestV5 } from './ws-api-request.js'; import { WSAPICancelOrderResultV5, WSAPISpreadAmendOrderResultV5, WSAPISpreadCancelOrderResultV5, WSAPISpreadPlaceOrderResultV5 } from './ws-api-response.js'; import { WsAuthRequestArg, WsChannelSubUnSubRequestArg } from './ws-request.js'; export interface WSAPIRequestFlags { /** If true, will skip auth requirement for WS API connection */ authIsOptional?: boolean | undefined; /** * Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 * * Only applies for order placement and order amend (batch commands included) */ expTime?: numberInString; } export type WSOperation = 'subscribe' | 'unsubscribe' | 'login'; /** * * Top level requests with args * */ /** /** * request looks like this: { "id": "1512", "op": "subscribe", "args": [ { "channel": "tickers", "instId": "BTC-USDT" } ] } */ export interface WsRequestOperationOKX<TWSRequestArg> { id: string; op: WSOperation; args?: TWSRequestArg[]; } export interface WsSubRequest extends WsRequestOperationOKX<WsChannelSubUnSubRequestArg> { op: 'subscribe'; } export interface WsUnsubRequest extends WsRequestOperationOKX<WsChannelSubUnSubRequestArg> { op: 'unsubscribe'; } export interface WsAuthRequest extends WsRequestOperationOKX<WsAuthRequestArg> { op: 'login'; } export type WSAPIPrivateOperations = 'order' | 'batch-orders' | 'cancel-order' | 'batch-cancel-orders' | 'amend-order' | 'batch-amend-orders' | 'mass-cancel'; export type WSAPIBusinessOperations = 'sprd-order' | 'sprd-amend-order' | 'sprd-cancel-order' | 'sprd-mass-cancel'; export type WSAPIOperation = WSAPIPrivateOperations | WSAPIBusinessOperations; export declare const WS_API_Operations: WSAPIOperation[]; export declare const WS_API_PRIVATE_OPERATIONS: WSAPIPrivateOperations[]; export declare const WS_API_BUSINESS_OPERATIONS: WSAPIBusinessOperations[]; export declare const WS_API_TAG_OPERATIONS: WSAPIOperation[]; export interface WSAPIRequestOKX<TRequestParams> { id: numberInString; op: WSAPIOperation; expTime?: numberInString; args: TRequestParams[]; } export interface WSAPIResponse<TResponseData extends object = object, TOperation extends WSAPIOperation = WSAPIOperation> { wsKey: WsKey; id: numberInString; op: TOperation; code: numberInString; msg: string; data: TResponseData; inTime: numberInString; outTime: numberInString; } export interface WSOperationLoginParams { apiKey: string; passphrase: string; timestamp: number; sign: string; } export type Exact<T> = { [K: string]: never; } & { [K in keyof T]: T[K]; }; /** * List of operations supported for this WsKey (connection) */ export interface WsAPIWsKeyTopicMap { [WS_KEY_MAP.prodPrivate]: WSAPIPrivateOperations; [WS_KEY_MAP.prodDemoPrivate]: WSAPIPrivateOperations; [WS_KEY_MAP.prodBusiness]: WSAPIBusinessOperations; [WS_KEY_MAP.prodDemoBusiness]: WSAPIBusinessOperations; [WS_KEY_MAP.eeaLivePrivate]: WSAPIPrivateOperations; [WS_KEY_MAP.eeaDemoPrivate]: WSAPIPrivateOperations; [WS_KEY_MAP.usLivePrivate]: WSAPIPrivateOperations; [WS_KEY_MAP.usDemoPrivate]: WSAPIPrivateOperations; } /** * Request parameters expected per operation */ export interface WsAPITopicRequestParamMap { order: WSAPIPlaceOrderRequestV5; 'batch-orders': WSAPIPlaceOrderRequestV5[]; 'cancel-order': OrderIdRequest; 'batch-cancel-orders': OrderIdRequest[]; 'amend-order': WSAPIAmendOrderRequestV5; 'batch-amend-orders': WSAPIAmendOrderRequestV5[]; 'mass-cancel': WSAPIMassCancelOrdersRequestV5; 'sprd-order': WSAPIPlaceSpreadOrderRequestV5; 'sprd-amend-order': WSAPIAmendSpreadOrderRequestV5; 'sprd-cancel-order': WSAPICancelSpreadOrderRequestV5; 'sprd-mass-cancel': WSAPISpreadMassCancelOrdersRequestV5; } /** * Response structure expected for each operation */ export interface WsAPIOperationResponseMap { order: WSAPIResponse<[OrderResult], 'order'>; 'batch-orders': WSAPIResponse<OrderResult[], 'batch-orders'>; 'cancel-order': WSAPIResponse<[WSAPICancelOrderResultV5], 'cancel-order'>; 'batch-cancel-orders': WSAPIResponse<WSAPICancelOrderResultV5[], 'batch-cancel-orders'>; 'amend-order': WSAPIResponse<[OrderResult], 'amend-order'>; 'batch-amend-orders': WSAPIResponse<[OrderResult], 'batch-amend-orders'>; 'mass-cancel': WSAPIResponse<[{ result: boolean; }], 'mass-cancel'>; 'sprd-order': WSAPIResponse<[WSAPISpreadPlaceOrderResultV5], 'sprd-order'>; 'sprd-amend-order': WSAPIResponse<[ WSAPISpreadAmendOrderResultV5 ], 'sprd-amend-order'>; 'sprd-cancel-order': WSAPIResponse<[ WSAPISpreadCancelOrderResultV5 ], 'sprd-cancel-order'>; 'sprd-mass-cancel': WSAPIResponse<[{ result: boolean; }], 'sprd-mass-cancel'>; }