binance
Version:
Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.
485 lines (484 loc) • 13.6 kB
TypeScript
import { FuturesOrderType, PositionSide, PriceMatchMode, WorkingType } from '../futures';
import { BooleanString, BooleanStringCapitalised, KlineInterval, numberInString, OrderSide, OrderTimeInForce, OrderType, SelfTradePreventionMode } from '../shared';
/**
* Simple request params with timestamp (required) & recv window (optional)
*/
export type WSAPIRecvWindowTimestamp = {
recvWindow?: number;
timestamp: number;
};
/**
*
* Authentication request types
*
*/
export interface WSAPISessionLogonRequest {
timestamp: number;
}
/**
*
* General request types
*
*/
export interface WSAPIExchangeInfoRequest {
symbol?: string;
symbols?: string[];
permissions?: string[];
showPermissionSets?: boolean;
symbolStatus?: string;
}
/**
*
* Market data request types
*
*/
export interface WSAPIOrderBookRequest {
symbol: string;
limit?: number;
}
export interface WSAPITradesRecentRequest {
symbol: string;
limit?: number;
}
export interface WSAPITradesHistoricalRequest {
symbol: string;
fromId?: number;
limit?: number;
}
export interface WSAPITradesAggregateRequest {
symbol: string;
fromId?: number;
startTime?: number;
endTime?: number;
limit?: number;
}
export interface WSAPIKlinesRequest {
symbol: string;
interval: KlineInterval;
startTime?: number;
endTime?: number;
timeZone?: string;
limit?: number;
}
export interface WSAPIAvgPriceRequest {
symbol: string;
}
/**
* Symbol for single symbol, or symbols for multiple symbols
*/
export interface WSAPITicker24hrRequest {
symbol?: string;
symbols?: string[];
type?: 'FULL' | 'MINI';
}
/**
* Symbol for single symbol, or symbols for multiple symbols
*/
export interface WSAPITickerTradingDayRequest {
symbol?: string;
symbols?: string[];
timeZone?: string;
type?: 'FULL' | 'MINI';
}
/**
* Symbol for single symbol, or symbols for multiple symbols
*/
export interface WSAPITickerRequest {
symbol?: string;
symbols?: string[];
windowSize?: string;
type?: 'FULL' | 'MINI';
}
/**
* Symbol for single symbol, or symbols for multiple symbols
*/
export interface WSAPITickerPriceRequest {
symbol?: string;
symbols?: string[];
}
/**
* Symbol for single symbol, or symbols for multiple symbols
*/
export interface WSAPITickerBookRequest {
symbol?: string;
symbols?: string[];
}
/**
*
* Account request types - Spot
*
*/
export interface WSAPIAllOrdersRequest {
symbol: string;
orderId?: number;
startTime?: number;
endTime?: number;
limit?: number;
}
export interface WSAPIAllOrderListsRequest {
fromId?: number;
startTime?: number;
endTime?: number;
limit?: number;
}
export interface WSAPIMyTradesRequest {
symbol: string;
orderId?: number;
startTime?: number;
endTime?: number;
fromId?: number;
limit?: number;
}
export interface WSAPIMyPreventedMatchesRequest {
symbol: string;
preventedMatchId?: number;
orderId?: number;
fromPreventedMatchId?: number;
limit?: number;
}
export interface WSAPIMyAllocationsRequest {
symbol: string;
startTime?: number;
endTime?: number;
fromAllocationId?: number;
limit?: number;
orderId?: number;
}
/**
* Trading request types
*/
export interface WSAPINewSpotOrderRequest {
symbol: string;
side: OrderSide;
type: OrderType;
timeInForce?: OrderTimeInForce;
price?: numberInString;
quantity?: numberInString;
quoteOrderQty?: numberInString;
newClientOrderId?: string;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
stopPrice?: numberInString;
trailingDelta?: number;
icebergQty?: numberInString;
strategyId?: number;
strategyType?: number;
selfTradePreventionMode?: string;
}
export interface WSAPIOrderTestRequest {
symbol: string;
side: 'BUY' | 'SELL';
type: string;
timeInForce?: string;
price?: numberInString;
quantity?: numberInString;
quoteOrderQty?: numberInString;
newClientOrderId?: string;
stopPrice?: numberInString;
trailingDelta?: number;
icebergQty?: numberInString;
strategyId?: number;
strategyType?: number;
selfTradePreventionMode?: string;
computeCommissionRates?: boolean;
timestamp: number;
recvWindow?: number;
}
export interface WSAPIOrderStatusRequest {
symbol: string;
orderId?: number;
origClientOrderId?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderCancelRequest {
symbol: string;
orderId?: number;
origClientOrderId?: string;
newClientOrderId?: string;
cancelRestrictions?: 'ONLY_NEW' | 'ONLY_PARTIALLY_FILLED';
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderCancelReplaceRequest {
symbol: string;
cancelReplaceMode: 'STOP_ON_FAILURE' | 'ALLOW_FAILURE';
cancelOrderId?: number;
cancelOrigClientOrderId?: string;
cancelNewClientOrderId?: string;
side: 'BUY' | 'SELL';
type: string;
timeInForce?: string;
price?: numberInString;
quantity?: numberInString;
quoteOrderQty?: numberInString;
newClientOrderId?: string;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
stopPrice?: numberInString;
trailingDelta?: number;
icebergQty?: numberInString;
strategyId?: number;
strategyType?: number;
selfTradePreventionMode?: string;
cancelRestrictions?: 'ONLY_NEW' | 'ONLY_PARTIALLY_FILLED';
orderRateLimitExceededMode?: 'DO_NOTHING' | 'CANCEL_ONLY';
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderAmendKeepPriorityRequest {
symbol: string;
orderId?: number | string;
origClientOrderId?: string;
newClientOrderId?: string;
newQty?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOpenOrdersStatusRequest {
symbol?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOpenOrdersCancelAllRequest {
symbol: string;
recvWindow?: number;
timestamp: number;
}
/**
* Order list request types
*/
export interface WSAPIOrderListPlaceRequest {
symbol: string;
side: 'BUY' | 'SELL';
price: numberInString;
quantity: numberInString;
listClientOrderId?: string;
limitClientOrderId?: string;
limitIcebergQty?: numberInString;
limitStrategyId?: number;
limitStrategyType?: number;
stopPrice?: numberInString;
trailingDelta?: number;
stopClientOrderId?: string;
stopLimitPrice?: numberInString;
stopLimitTimeInForce?: string;
stopIcebergQty?: numberInString;
stopStrategyId?: number;
stopStrategyType?: number;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
selfTradePreventionMode?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderListPlaceOCORequest {
symbol: string;
side: 'BUY' | 'SELL';
quantity: numberInString;
listClientOrderId?: string;
aboveType: 'STOP_LOSS_LIMIT' | 'STOP_LOSS' | 'LIMIT_MAKER' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT';
aboveClientOrderId?: string;
aboveIcebergQty?: numberInString;
abovePrice?: numberInString;
aboveStopPrice?: numberInString;
aboveTrailingDelta?: number;
aboveTimeInForce?: string;
aboveStrategyId?: number;
aboveStrategyType?: number;
belowType: 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER';
belowClientOrderId?: string;
belowIcebergQty?: numberInString;
belowPrice?: numberInString;
belowStopPrice?: numberInString;
belowTrailingDelta?: number;
belowTimeInForce?: string;
belowStrategyId?: number;
belowStrategyType?: number;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
selfTradePreventionMode?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderListPlaceOTORequest {
symbol: string;
listClientOrderId?: string;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
selfTradePreventionMode?: string;
workingType: 'LIMIT' | 'LIMIT_MAKER';
workingSide: 'BUY' | 'SELL';
workingClientOrderId?: string;
workingPrice: numberInString;
workingQuantity: numberInString;
workingIcebergQty?: numberInString;
workingTimeInForce?: string;
workingStrategyId?: number;
workingStrategyType?: number;
pendingType: string;
pendingSide: 'BUY' | 'SELL';
pendingClientOrderId?: string;
pendingPrice?: numberInString;
pendingStopPrice?: numberInString;
pendingTrailingDelta?: numberInString;
pendingQuantity: numberInString;
pendingIcebergQty?: numberInString;
pendingTimeInForce?: string;
pendingStrategyId?: number;
pendingStrategyType?: number;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderListPlaceOTOCORequest {
symbol: string;
listClientOrderId?: string;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
selfTradePreventionMode?: string;
workingType: 'LIMIT' | 'LIMIT_MAKER';
workingSide: 'BUY' | 'SELL';
workingClientOrderId?: string;
workingPrice: numberInString;
workingQuantity: numberInString;
workingIcebergQty?: numberInString;
workingTimeInForce?: string;
workingStrategyId?: number;
workingStrategyType?: number;
pendingSide: 'BUY' | 'SELL';
pendingQuantity: number | string;
pendingAboveType: 'STOP_LOSS_LIMIT' | 'STOP_LOSS' | 'LIMIT_MAKER' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT';
pendingAboveClientOrderId?: string;
pendingAbovePrice?: numberInString;
pendingAboveStopPrice?: numberInString;
pendingAboveTrailingDelta?: numberInString;
pendingAboveIcebergQty?: numberInString;
pendingAboveTimeInForce?: string;
pendingAboveStrategyId?: number;
pendingAboveStrategyType?: number;
pendingBelowType: 'STOP_LOSS' | 'STOP_LOSS_LIMIT' | 'TAKE_PROFIT' | 'TAKE_PROFIT_LIMIT' | 'LIMIT_MAKER';
pendingBelowClientOrderId?: string;
pendingBelowPrice?: numberInString;
pendingBelowStopPrice?: numberInString;
pendingBelowTrailingDelta?: numberInString;
pendingBelowIcebergQty?: numberInString;
pendingBelowTimeInForce?: string;
pendingBelowStrategyId?: number;
pendingBelowStrategyType?: number;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderListStatusRequest {
origClientOrderId?: string;
orderListId?: number;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIOrderListCancelRequest {
symbol: string;
orderListId?: number;
listClientOrderId?: string;
newClientOrderId?: string;
recvWindow?: number;
timestamp: number;
}
/**
* SOR request types
*/
export interface WSAPISOROrderPlaceRequest {
symbol: string;
side: 'BUY' | 'SELL';
type: 'LIMIT' | 'MARKET';
timeInForce?: string;
price?: numberInString;
quantity: numberInString;
newClientOrderId?: string;
newOrderRespType?: 'ACK' | 'RESULT' | 'FULL';
icebergQty?: numberInString;
strategyId?: number;
strategyType?: number;
selfTradePreventionMode?: string;
timestamp: number;
recvWindow?: number;
}
export type WSAPISOROrderTestRequest = WSAPISOROrderPlaceRequest & {
computeCommissionRates?: boolean;
};
/**
* Futures market data request types
*/
export interface WSAPIFuturesOrderBookRequest {
symbol: string;
limit?: number;
}
export interface WSAPIFuturesTickerPriceRequest {
symbol?: string;
}
export interface WSAPIFuturesTickerBookRequest {
symbol?: string;
}
/**
* Futures trading request types
*/
export interface WSAPINewFuturesOrderRequest<numberType = numberInString> {
symbol: string;
side: OrderSide;
positionSide?: PositionSide;
type: FuturesOrderType;
timeInForce?: OrderTimeInForce;
quantity?: numberType;
reduceOnly?: BooleanString;
price?: numberType;
newClientOrderId?: string;
stopPrice?: numberType;
closePosition?: BooleanString;
activationPrice?: numberType;
callbackRate?: numberType;
workingType?: WorkingType;
priceProtect?: BooleanStringCapitalised;
newOrderRespType?: 'ACK' | 'RESULT';
selfTradePreventionMode?: SelfTradePreventionMode;
priceMatch?: PriceMatchMode;
goodTillDate?: number;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIFuturesOrderModifyRequest {
symbol: string;
orderId?: number;
origClientOrderId?: string;
side: 'BUY' | 'SELL';
quantity: numberInString;
price: numberInString;
priceMatch?: 'NONE' | 'OPPONENT' | 'OPPONENT_5' | 'OPPONENT_10' | 'OPPONENT_20' | 'QUEUE' | 'QUEUE_5' | 'QUEUE_10' | 'QUEUE_20';
origType?: string;
positionSide?: 'BOTH' | 'LONG' | 'SHORT';
recvWindow?: number;
timestamp: number;
}
export interface WSAPIFuturesOrderCancelRequest {
symbol: string;
orderId?: number;
origClientOrderId?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIFuturesOrderStatusRequest {
symbol: string;
orderId?: number;
origClientOrderId?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIFuturesPositionRequest {
symbol?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIFuturesPositionV2Request {
symbol?: string;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIAccountInformationRequest {
omitZeroBalances?: boolean;
recvWindow?: number;
timestamp: number;
}
export interface WSAPIAccountCommissionWSAPIRequest {
symbol: string;
}