binance
Version:
Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.
607 lines (606 loc) • 15.1 kB
TypeScript
import { numberInString } from '../shared';
import { OrderResponse } from '../spot';
/**
* Error response type
*/
export interface ErrorResponse {
code: number;
msg: string;
}
export interface WSAPISessionStatus {
apiKey: string;
authorizedSince: number;
connectedSince: number;
returnRateLimits: boolean;
serverTime: number;
userDataStream: boolean;
}
/**
* General response types
*/
export interface WSAPIServerTime {
serverTime: number;
}
/**
* Market data response types
*/
export interface WSAPIOrderBook {
lastUpdateId: number;
bids: [numberInString, numberInString][];
asks: [numberInString, numberInString][];
}
export interface WSAPITrade {
id: number;
price: numberInString;
qty: numberInString;
quoteQty: numberInString;
time: number;
isBuyerMaker: boolean;
isBestMatch: boolean;
}
export interface WSAPIAggregateTrade {
a: number;
p: numberInString;
q: numberInString;
f: number;
l: number;
T: number;
m: boolean;
M: boolean;
}
export type WSAPIKline = [
number,
numberInString,
numberInString,
numberInString,
numberInString,
numberInString,
number,
numberInString,
number,
numberInString,
numberInString,
numberInString
];
export interface WSAPIAvgPrice {
mins: number;
price: numberInString;
closeTime: number;
}
export interface WSAPIFullTicker {
symbol: string;
priceChange: numberInString;
priceChangePercent: numberInString;
weightedAvgPrice: numberInString;
prevClosePrice: numberInString;
lastPrice: numberInString;
lastQty: numberInString;
bidPrice: numberInString;
bidQty: numberInString;
askPrice: numberInString;
askQty: numberInString;
openPrice: numberInString;
highPrice: numberInString;
lowPrice: numberInString;
volume: numberInString;
quoteVolume: numberInString;
openTime: number;
closeTime: number;
firstId: number;
lastId: number;
count: number;
}
export interface WSAPIMiniTicker {
symbol: string;
openPrice: numberInString;
highPrice: numberInString;
lowPrice: numberInString;
lastPrice: numberInString;
volume: numberInString;
quoteVolume: numberInString;
openTime: number;
closeTime: number;
firstId: number;
lastId: number;
count: number;
}
export interface WSAPIPriceTicker {
symbol: string;
price: numberInString;
}
export interface WSAPIBookTicker {
symbol: string;
bidPrice: numberInString;
bidQty: numberInString;
askPrice: numberInString;
askQty: numberInString;
}
/**
* Futures market data response types
*/
export interface WSAPIFuturesOrderBook {
lastUpdateId: number;
E: number;
T: number;
bids: [numberInString, numberInString][];
asks: [numberInString, numberInString][];
}
export interface WSAPIFuturesPriceTicker {
symbol: string;
price: numberInString;
time: number;
}
export interface WSAPIFuturesBookTicker {
lastUpdateId: number;
symbol: string;
bidPrice: numberInString;
bidQty: numberInString;
askPrice: numberInString;
askQty: numberInString;
time: number;
}
/**
* Account response types
*/
export interface WSAPIAccountInformation {
makerCommission: number;
takerCommission: number;
buyerCommission: number;
sellerCommission: number;
canTrade: boolean;
canWithdraw: boolean;
canDeposit: boolean;
commissionRates: {
maker: numberInString;
taker: numberInString;
buyer: numberInString;
seller: numberInString;
};
brokered: boolean;
requireSelfTradePrevention: boolean;
preventSor: boolean;
updateTime: number;
accountType: string;
balances: {
asset: string;
free: numberInString;
locked: numberInString;
}[];
permissions: string[];
uid: number;
}
export interface WSAPIAccountCommission {
symbol: string;
standardCommission: {
maker: numberInString;
taker: numberInString;
buyer: numberInString;
seller: numberInString;
};
taxCommission: {
maker: numberInString;
taker: numberInString;
buyer: numberInString;
seller: numberInString;
};
discount: {
enabledForAccount: boolean;
enabledForSymbol: boolean;
discountAsset: string;
discount: numberInString;
};
}
export interface WSAPIRateLimit {
rateLimitType: string;
interval: string;
intervalNum: number;
limit: number;
count: number;
}
export interface WSAPIOrder {
symbol: string;
orderId: number;
orderListId: number;
clientOrderId: string;
price: numberInString;
origQty: numberInString;
executedQty: numberInString;
cummulativeQuoteQty: numberInString;
status: string;
timeInForce: string;
type: string;
side: string;
stopPrice: numberInString;
icebergQty: numberInString;
time: number;
updateTime: number;
isWorking: boolean;
workingTime: number;
origQuoteOrderQty: numberInString;
selfTradePreventionMode: string;
preventedMatchId?: number;
preventedQuantity?: numberInString;
}
export interface WSAPIOrderList {
orderListId: number;
contingencyType: string;
listStatusType: string;
listOrderStatus: string;
listClientOrderId: string;
transactionTime: number;
symbol: string;
orders: {
symbol: string;
orderId: number;
clientOrderId: string;
}[];
}
export interface WSAPITrade {
symbol: string;
id: number;
orderId: number;
orderListId: number;
price: numberInString;
qty: numberInString;
quoteQty: numberInString;
commission: numberInString;
commissionAsset: string;
time: number;
isBuyer: boolean;
isMaker: boolean;
isBestMatch: boolean;
}
export interface WSAPIPreventedMatch {
symbol: string;
preventedMatchId: number;
takerOrderId: number;
makerSymbol: string;
makerOrderId: number;
tradeGroupId: number;
selfTradePreventionMode: string;
price: numberInString;
makerPreventedQuantity: numberInString;
transactTime: number;
}
export interface WSAPIAllocation {
symbol: string;
allocationId: number;
allocationType: string;
orderId: number;
orderListId: number;
price: numberInString;
qty: numberInString;
quoteQty: numberInString;
commission: numberInString;
commissionAsset: string;
time: number;
isBuyer: boolean;
isMaker: boolean;
isAllocator: boolean;
}
/**
* Trading response types
*/
export interface WSAPIOrderTestResponse {
[key: string]: never;
}
export interface WSAPIOrderTestWithCommission {
standardCommissionForOrder: {
maker: numberInString;
taker: numberInString;
};
taxCommissionForOrder: {
maker: numberInString;
taker: numberInString;
};
discount: {
enabledForAccount: boolean;
enabledForSymbol: boolean;
discountAsset: string;
discount: numberInString;
};
}
export interface WSAPIOrderCancel {
symbol: string;
origClientOrderId: string;
orderId: number;
orderListId: number;
clientOrderId: string;
transactTime: number;
price: numberInString;
origQty: numberInString;
executedQty: numberInString;
origQuoteOrderQty: numberInString;
cummulativeQuoteQty: numberInString;
status: string;
timeInForce: string;
type: string;
side: string;
stopPrice?: numberInString;
trailingDelta?: number;
trailingTime?: number;
icebergQty?: numberInString;
strategyId?: number;
strategyType?: number;
selfTradePreventionMode: string;
}
export interface WSAPIOrderCancelReplaceResponse {
cancelResult: 'SUCCESS' | 'FAILURE' | 'NOT_ATTEMPTED';
newOrderResult: 'SUCCESS' | 'FAILURE' | 'NOT_ATTEMPTED';
cancelResponse: WSAPIOrderCancel | ErrorResponse;
newOrderResponse: OrderResponse | ErrorResponse | null;
}
export interface WSAPIOrderListCancelResponse {
orderListId: number;
contingencyType: string;
listStatusType: string;
listOrderStatus: string;
listClientOrderId: string;
transactionTime: number;
symbol: string;
orders: {
symbol: string;
orderId: number;
clientOrderId: string;
}[];
orderReports: WSAPIOrderCancel[];
}
/**
* Order list response types
*/
export interface WSAPIOrderListPlaceResponse {
orderListId: number;
contingencyType: string;
listStatusType: string;
listOrderStatus: string;
listClientOrderId: string;
transactionTime: number;
symbol: string;
orders: {
symbol: string;
orderId: number;
clientOrderId: string;
}[];
orderReports: OrderResponse[];
}
export interface WSAPIOrderListStatusResponse {
orderListId: number;
contingencyType: string;
listStatusType: string;
listOrderStatus: string;
listClientOrderId: string;
transactionTime: number;
symbol: string;
orders: {
symbol: string;
orderId: number;
clientOrderId: string;
}[];
}
/**
* SOR response types
*/
export interface WSAPISOROrderPlaceResponse {
symbol: string;
orderId: number;
orderListId: number;
clientOrderId: string;
transactTime: number;
price: string;
origQty: string;
executedQty: string;
origQuoteOrderQty: string;
cummulativeQuoteQty: string;
status: string;
timeInForce: string;
type: string;
side: string;
workingTime: number;
fills: {
matchType: string;
price: string;
qty: string;
commission: string;
commissionAsset: string;
tradeId: number;
allocId: number;
}[];
workingFloor: string;
selfTradePreventionMode: string;
usedSor: boolean;
}
export interface WSAPISOROrderTestResponse {
[key: string]: never;
}
export interface WSAPISOROrderTestResponseWithCommission {
standardCommissionForOrder: {
maker: numberInString;
taker: numberInString;
};
taxCommissionForOrder: {
maker: numberInString;
taker: numberInString;
};
discount: {
enabledForAccount: boolean;
enabledForSymbol: boolean;
discountAsset: string;
discount: numberInString;
};
}
/**
* Futures trading response types
*/
export interface WSAPIFuturesOrder {
orderId: number;
symbol: string;
status: string;
clientOrderId: string;
price: string;
avgPrice: string;
origQty: string;
executedQty: string;
cumQty: string;
cumQuote: string;
timeInForce: string;
type: string;
reduceOnly: boolean;
closePosition: boolean;
side: string;
positionSide: string;
stopPrice: string;
workingType: string;
priceProtect: boolean;
origType: string;
priceMatch: string;
selfTradePreventionMode: string;
goodTillDate: number;
updateTime: number;
time?: number;
activatePrice?: string;
priceRate?: string;
}
export interface WSAPIFuturesPosition {
entryPrice: string;
breakEvenPrice: string;
marginType: string;
isAutoAddMargin: string;
isolatedMargin: string;
leverage: string;
liquidationPrice: string;
markPrice: string;
maxNotionalValue: string;
positionAmt: string;
notional: string;
isolatedWallet: string;
symbol: string;
unRealizedProfit: string;
positionSide: string;
updateTime: number;
}
export interface WSAPIFuturesPositionV2 {
symbol: string;
positionSide: string;
positionAmt: string;
entryPrice: string;
breakEvenPrice: string;
markPrice: string;
unrealizedProfit: string;
liquidationPrice: string;
isolatedMargin: string;
notional: string;
marginAsset: string;
isolatedWallet: string;
initialMargin: string;
maintMargin: string;
positionInitialMargin: string;
openOrderInitialMargin: string;
adl: number;
bidNotional: string;
askNotional: string;
updateTime: number;
}
/**
* Futures account response types
*/
export interface WSAPIFuturesAccountBalanceItem {
accountAlias: string;
asset: string;
balance: string;
crossWalletBalance: string;
crossUnPnl: string;
availableBalance: string;
maxWithdrawAmount: string;
marginAvailable: boolean;
updateTime: number;
}
export interface WSAPIFuturesAccountAsset {
asset: string;
walletBalance: string;
unrealizedProfit: string;
marginBalance: string;
maintMargin: string;
initialMargin: string;
positionInitialMargin: string;
openOrderInitialMargin: string;
crossWalletBalance: string;
crossUnPnl: string;
availableBalance: string;
maxWithdrawAmount: string;
marginAvailable?: boolean;
updateTime: number;
}
export interface WSAPIFuturesAccountPosition {
symbol: string;
initialMargin?: string;
maintMargin?: string;
unrealizedProfit: string;
positionInitialMargin?: string;
openOrderInitialMargin?: string;
leverage?: string;
isolated?: boolean;
entryPrice?: string;
breakEvenPrice?: string;
maxNotional?: string;
bidNotional?: string;
askNotional?: string;
positionSide: string;
positionAmt: string;
updateTime: number;
}
export interface WSAPIFuturesAccountStatus {
feeTier?: number;
canTrade?: boolean;
canDeposit?: boolean;
canWithdraw?: boolean;
updateTime: number;
multiAssetsMargin: boolean;
tradeGroupId?: number;
totalInitialMargin: string;
totalMaintMargin: string;
totalWalletBalance: string;
totalUnrealizedProfit: string;
totalMarginBalance: string;
totalPositionInitialMargin: string;
totalOpenOrderInitialMargin: string;
totalCrossWalletBalance: string;
totalCrossUnPnl: string;
availableBalance: string;
maxWithdrawAmount: string;
assets: WSAPIFuturesAccountAsset[];
positions: WSAPIFuturesAccountPosition[];
}
/**
* Spot Order response types based on newOrderRespType parameter
*/
export interface WSAPISpotOrderACK {
symbol: string;
orderId: number;
orderListId: number;
clientOrderId: string;
transactTime: number;
}
export interface WSAPISpotOrderRESULT extends WSAPISpotOrderACK {
price: numberInString;
origQty: numberInString;
executedQty: numberInString;
origQuoteOrderQty: numberInString;
cummulativeQuoteQty: numberInString;
status: string;
timeInForce: string;
type: string;
side: string;
workingTime: number;
selfTradePreventionMode: string;
}
export interface WSAPISpotOrderFill {
price: numberInString;
qty: numberInString;
commission: numberInString;
commissionAsset: string;
tradeId: number;
}
export interface WSAPISpotOrderFULL extends WSAPISpotOrderRESULT {
fills: WSAPISpotOrderFill[];
}
export type WSAPISpotOrderResponse = WSAPISpotOrderACK | WSAPISpotOrderRESULT | WSAPISpotOrderFULL;