UNPKG

kucoin-api

Version:

Complete & robust Node.js SDK for Kucoin's REST APIs and WebSockets, with TypeScript & strong end to end tests.

124 lines (123 loc) 4.31 kB
import { WS_KEY_MAP, WsKey } from '../../lib/websocket/websocket-util.js'; import { BatchCancelOrdersRequest, Order } from '../request/futures.types.js'; import { SubmitHFMarginOrderRequest } from '../request/spot-margin-trading.js'; import { ModifyHFOrderRequest, SubmitHFOrderRequest } from '../request/spot-trading.js'; import { BatchCancelOrderResult, SubmitMultipleOrdersFuturesResponse } from '../response/futures.types.js'; import { MarginSubmitOrderV3Response } from '../response/spot-margin-trading.js'; import { SubmitHFOrderSyncResponse, SyncCancelHFOrderResponse } from '../response/spot-trading.js'; export type WsOperation = 'subscribe' | 'unsubscribe' | 'login' | 'access' | 'request' | 'ping'; export interface WsRequestOperation<TWSTopic extends string> { id: number; type: WsOperation; topic: TWSTopic; privateChannel: boolean; response: boolean; } export type Exact<T> = {} & { [K in keyof T]: T[K]; }; /** * WS API commands (for sending requests via WS) */ export declare const WS_API_Operations: readonly ["ping", "spot.order", "spot.modify", "spot.cancel", "spot.sync_order", "spot.sync_cancel", "margin.order", "margin.cancel", "futures.order", "futures.cancel", "futures.multi_order", "futures.multi_cancel"]; export type WsAPIOperation = (typeof WS_API_Operations)[number]; export interface WsRequestOperationKucoin<TWSTopic extends string, TWSParams extends object = any> { id: string; op: WsOperation | WsAPIOperation; args?: (TWSTopic | string | number)[] | TWSParams; } export interface WSAPIResponse<TResponseData extends object = object, TWSAPIOperation = WsAPIOperation> { /** Auto-generated */ id: string; op: TWSAPIOperation; msg?: string; code: '200000' | string; data: TResponseData; inTime: number; outTime: number; rateLimit?: { limit: number; reset: number; remaining: number; }; wsKey: WsKey; isWSAPIResponse: boolean; request?: any; } export interface WsAPIWsKeyTopicMap { [WS_KEY_MAP.wsApiSpotV1]: WsAPIOperation; [WS_KEY_MAP.wsApiFuturesV1]: WsAPIOperation; } export type WSAPICancelOrderRequest = { symbol: string; } & ({ orderId: string; } | { clientOid: string; }); export interface WSAPIOrderResponse { orderId: string; clientOid: string; } export interface WsAPITopicRequestParamMap { [key: string]: unknown; subscribe: never; unsubscribe: never; login: never; access: never; request: never; ping: void; 'spot.order': SubmitHFOrderRequest; 'margin.order': SubmitHFMarginOrderRequest; 'futures.order': Order; 'spot.cancel': WSAPICancelOrderRequest; 'margin.cancel': WSAPICancelOrderRequest; 'futures.cancel': { orderId: string; } | { clientOid: string; symbol: string; }; 'futures.multi_cancel': BatchCancelOrdersRequest; 'futures.multi_order': Order[]; 'spot.sync_order': SubmitHFOrderRequest; 'spot.modify': ModifyHFOrderRequest; 'spot.sync_cancel': WSAPICancelOrderRequest; } export interface WsAPITopicResponseMap { [key: string]: unknown; subscribe: never; unsubscribe: never; login: never; access: never; request: never; ping: unknown; 'spot.order': WSAPIResponse<WSAPIOrderResponse>; 'margin.order': WSAPIResponse<MarginSubmitOrderV3Response>; 'futures.order': WSAPIResponse<WSAPIOrderResponse>; 'spot.cancel': WSAPIResponse<WSAPIOrderResponse>; 'margin.cancel': WSAPIResponse<WSAPIOrderResponse>; 'futures.cancel': WSAPIResponse<{ cancelledOrderIds: string[]; } | { clientOid: string; }>; 'futures.multi_cancel': WSAPIResponse<BatchCancelOrderResult[]>; 'futures.multi_order': WSAPIResponse<SubmitMultipleOrdersFuturesResponse[]>; 'spot.sync_order': WSAPIResponse<SubmitHFOrderSyncResponse>; 'spot.modify': WSAPIResponse<{ newOrderId: string; clientOid: string; }>; 'spot.sync_cancel': WSAPIResponse<SyncCancelHFOrderResponse>; } export interface WSAPIAuthenticationRequestFromServer { timestamp: number; sessionId: string; } export interface WSAPIAuthenticationConfirmedFromServer { pingInterval: number; sessionId: string; pingTimeout: number; data: 'welcome'; }