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
TypeScript
/**
* 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 {};