UNPKG

kucoin-api

Version:

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

603 lines (602 loc) 13.7 kB
/** * REST - ACCOUNT - BASIC INFO * Get Account Ledgers - Futures */ export interface FuturesAccountTransaction { time: number; type: 'RealisedPNL' | 'Deposit' | 'Withdrawal' | 'TransferIn' | 'TransferOut'; amount: number; fee: number | null; accountEquity: number; status: 'Completed' | 'Pending'; remark: string; offset: number; currency: string; } /** * REST - ACCOUNT - SUBACCOUNT API */ export interface SubAccountAPI { apiKey: string; createdAt: number; ipWhitelist: string; permission: string; remark: string; subName: string; } export type CreateSubAccountAPI = SubAccountAPI & { apiSecret: string; passphrase: string; }; export interface UpdateSubAccountAPI { apiKey: string; ipWhitelist: string; permission: string; subName: string; } /** * REST - FUNDING - FUNDING OVERVIEW */ export interface AccountBalance { accountEquity: number; unrealisedPNL: number; marginBalance: number; positionMargin: number; orderMargin: number; frozenFunds: number; availableBalance: number; currency: string; riskRatio: number; maxWithdrawAmount: number; } export interface AccountSummary { accountEquityTotal: number; unrealisedPNLTotal: number; marginBalanceTotal: number; positionMarginTotal: number; orderMarginTotal: number; frozenFundsTotal: number; availableBalanceTotal: number; currency: string; } export interface FuturesSubAccount { accountName: string; accountEquity: number; unrealisedPNL: number; marginBalance: number; positionMargin: number; orderMargin: number; frozenFunds: number; availableBalance: number; currency: string; } /** * REST - FUNDING - TRANSFER */ export interface TransferDetail { applyId: string; bizNo: string; payAccountType: string; payTag: string; remark: string; recAccountType: string; recTag: string; recRemark: string; recSystem: string; status: string; currency: string; amount: string; fee: string; sn: number; reason: string; createdAt: number; updatedAt: number; } interface TransferOutRequestRecord { applyId: string; currency: string; recRemark: string; recSystem: string; status: string; amount: string; reason: string; offset: number; createdAt: number; remark: string; } export interface FuturesTransferRecords { currentPage: number; pageSize: number; totalNum: number; totalPage: number; items: TransferOutRequestRecord[]; } /** * * Futures Market Data * */ export interface FuturesSymbolInfo { symbol: string; rootSymbol: string; type: 'FFWCSX' | 'FFICSX'; firstOpenDate: number; expireDate: number | null; settleDate: number | null; baseCurrency: string; quoteCurrency: string; settleCurrency: string; maxOrderQty: number; maxPrice: number; lotSize: number; tickSize: number; indexPriceTickSize: number; multiplier: number; initialMargin: number; maintainMargin: number; maxRiskLimit: number; minRiskLimit: number; riskStep: number; makerFeeRate: number; takerFeeRate: number; takerFixFee: number; makerFixFee: number; settlementFee: number | null; isDeleverage: boolean; isQuanto: boolean; isInverse: boolean; markMethod: 'FairPrice'; fairMethod: 'FundingRate'; fundingBaseSymbol: string; fundingQuoteSymbol: string; fundingRateSymbol: string; indexSymbol: string; settlementSymbol: string | null; status: 'Init' | 'Open' | 'BeingSettled' | 'Settled' | 'Paused' | 'Closed' | 'CancelOnly'; fundingFeeRate: number; predictedFundingFeeRate: number; fundingRateGranularity: number; openInterest: string; turnoverOf24h: number; volumeOf24h: number; markPrice: number; indexPrice: number; lastTradePrice: number; nextFundingRateTime: number; maxLeverage: number; sourceExchanges: string[]; premiumsSymbol1M: string; premiumsSymbol8H: string; fundingBaseSymbol1M: string; fundingQuoteSymbol1M: string; lowPrice: number; highPrice: number; priceChgPct: number; priceChg: number; k: number; m: number; f: number; mmrLimit: number; mmrLevConstant: number; supportCross: boolean; } export interface TickerDetail { sequence: number; symbol: string; side: string; size: number; price: string; bestBidSize: number; bestBidPrice: string; bestAskSize: number; bestAskPrice: string; tradeId: string; ts: number; } export interface MarketTradeDetail { sequence: number; tradeId: string; takerOrderId: string; makerOrderId: string; price: string; size: number; side: string; ts: number; } export interface FullOrderBookDetail { symbol: string; sequence: number; asks: [number, number][]; bids: [number, number][]; ts: number; } export type FuturesKline = [ number, number, number, number, number, number ]; export interface InterestRateItem { symbol: string; granularity: number; timePoint: number; value: number; } export interface IndexListItem { symbol: string; granularity: number; timePoint: number; value: number; decomposionList: { exchange: string; price: number; weight: number; }[]; } export interface FuturesMarkPrice { symbol: string; granularity: number; timePoint: number; value: number; indexPrice: number; } export interface PremiumIndexItem { symbol: string; granularity: number; timePoint: number; value: number; } /** * *********** * Account *********** * */ /** * * Orders * */ export interface FuturesOrder { id: string; symbol: string; type: 'market' | 'limit'; side: 'buy' | 'sell'; price: string; size: number; value: string; dealValue: string; dealSize: number; stp: 'CN' | 'CO' | 'CB' | ''; stop: string; stopPriceType: 'TP' | 'MP' | 'IP' | ''; stopTriggered: boolean; stopPrice: number | null; timeInForce: string; postOnly: boolean; hidden: boolean; iceberg: boolean; leverage: string; forceHold: boolean; closeOrder: boolean; visibleSize: number; clientOid: string; remark: string | null; tags: string; isActive: boolean; cancelExist: boolean; createdAt: number; updatedAt: number; endAt: number | null; orderTime: number; settleCurrency: string; marginMode: 'ISOLATED' | 'CROSS'; avgDealPrice: string; filledSize: number; filledValue: string; status: 'open' | 'done'; reduceOnly: boolean; } export interface BatchCancelOrderResult { orderId: string | null; clientOid: string | null; code: string; msg: string; } export interface SubmitMultipleOrdersFuturesResponse { orderId: string; clientOid: string; symbol: string; code: string; msg: string; } export interface FuturesOrders { currentPage: number; pageSize: number; totalNum: number; totalPage: number; items: FuturesOrder[]; } /** * * Futures Fills * */ export interface FuturesFill { symbol: string; tradeId: string; orderId: string; side: 'buy' | 'sell'; liquidity: 'taker' | 'maker'; forceTaker: boolean; price: string; size: number; value: string; openFeePay: string; closeFeePay: string; stop: string; feeRate: string; fixFee: string; feeCurrency: string; marginMode: 'ISOLATED' | 'CROSS'; fee: string; settleCurrency: string; orderType: 'market' | 'limit'; displayType: 'limit' | 'market' | 'limit_stop' | 'market_stop'; tradeType: 'trade' | 'cancel' | 'liquid' | 'adl' | 'settlement'; subTradeType: string | null; tradeTime: number; createdAt: number; } export interface FuturesFills { currentPage: number; pageSize: number; totalNum: number; totalPage: number; items: FuturesFill[]; } export interface FuturesActiveOrder { openOrderBuySize: number; openOrderSellSize: number; openOrderBuyCost: string; openOrderSellCost: string; settleCurrency: string; } /** * * Futures Positions * */ export interface BatchMarginModeUpdateResponse { marginMode: { [symbol: string]: 'ISOLATED' | 'CROSS'; }; errors: { code: string; msg: string; symbol: string; }[]; } export interface MaxOpenSize { symbol: string; maxBuyOpenSize: number; maxSellOpenSize: number; } export interface FuturesPosition { id: string; symbol: string; marginMode: 'CROSS' | 'ISOLATED'; crossMode: boolean; delevPercentage: number; openingTimestamp: number; currentTimestamp: number; currentQty: number; currentCost: number; currentComm: number; realisedGrossPnl: number; realisedGrossCost: number; realisedCost: number; unrealisedCost: number; unrealisedPnlPcnt: number; unrealisedPnl: number; unrealisedRoePcnt: number; isOpen: boolean; markPrice: number; markValue: number; posCost: number; posInit: number; posMargin: number; realisedPnl: number; avgEntryPrice: number; liquidationPrice: number; bankruptPrice: number; settleCurrency: string; isInverse: boolean; positionSide: 'BOTH'; leverage: number; autoDeposit?: boolean; maintMarginReq?: number; riskLimit?: number; realLeverage?: number; posCross?: number; posCrossMargin?: number; posComm?: number; posCommCommon?: number; posLoss?: number; posFunding?: number; posMaint?: number; maintMargin?: number; maintainMargin?: number; riskLimitLevel?: number; } export interface AddMargin { id: string; symbol: string; autoDeposit: boolean; maintMarginReq: number; riskLimit: number; realLeverage: number; crossMode: boolean; delevPercentage: number; openingTimestamp: number; currentTimestamp: number; currentQty: number; currentCost: number; currentComm: number; unrealisedCost: number; realisedGrossCost: number; realisedCost: number; isOpen: boolean; markPrice: number; markValue: number; posCost: number; posCross: number; posInit: number; posComm: number; posLoss: number; posMargin: number; posMaint: number; maintMargin: number; realisedGrossPnl: number; realisedPnl: number; unrealisedPnl: number; unrealisedPnlPcnt: number; unrealisedRoePcnt: number; avgEntryPrice: number; liquidationPrice: number; bankruptPrice: number; settleCurrency: string; userId: number; } export interface CrossMarginRiskLimit { symbol: string; maxOpenSize: number; maxOpenValue: string; totalMargin: string; price: string; leverage: string; mmr: string; imr: string; currency: string; } /** * * Futures risk limit * */ export interface FuturesRiskLimit { symbol: string; level: number; maxRiskLimit: number; minRiskLimit: number; maxLeverage: number; initialMargin: number; maintainMargin: number; } /** * * Futures funding fees * */ export interface FuturesCurrentFundingRate { symbol: string; granularity: number; timePoint: number; value: number; predictedValue: number; fundingRateCap: number; fundingRateFloor: number; } export interface FuturesHistoricFundingRate { symbol: string; timePoint: number; fundingRate: number; } export interface FuturesAccountFundingRateHistory { id: number; symbol: string; timePoint: number; fundingRate: number; markPrice: number; positionQty: number; positionCost: number; funding: number; settleCurrency: string; context: string; marginMode: 'ISOLATED' | 'CROSS'; } export interface FuturesClosedPosition { closeId: string; userId: string; symbol: string; settleCurrency: string; leverage: string; type: string; pnl: string; realisedGrossCost: string; withdrawPnl: string; tradeFee: string; fundingFee: string; openTime: number; closeTime: number; openPrice: string; closePrice: string; marginMode: 'CROSS' | 'ISOLATED'; } export interface FuturesClosedPositions { currentPage: number; pageSize: number; totalNum: number; totalPage: number; items: FuturesClosedPosition[]; } /** * * Copy Trading * */ export interface CopyTradePosition { id: string; symbol: string; autoDeposit: boolean; maintMarginReq: string; riskLimit: number; realLeverage: string; crossMode: boolean; marginMode: string; positionSide: string; leverage: string; delevPercentage: number; openingTimestamp: number; currentTimestamp: number; currentQty: number; currentCost: string; currentComm: string; unrealisedCost: string; realisedGrossCost: string; realisedCost: string; isOpen: boolean; markPrice: string; markValue: string; posCost: string; posCross: string; posInit: string; posComm: string; posLoss: string; posMargin: string; posMaint: string; maintMargin: string; realisedGrossPnl: string; realisedPnl: string; unrealisedPnl: string; unrealisedPnlPcnt: string; unrealisedRoePcnt: string; avgEntryPrice: string; liquidationPrice: string; bankruptPrice: string; settleCurrency: string; } export {};