UNPKG

binance

Version:

Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.

496 lines (495 loc) 16 kB
import { FuturesContractType, FuturesOrderType, MarginType, PositionSide, WorkingType } from '../futures'; import { KlineInterval, numberInString, OCOOrderStatus, OCOStatus, OrderBookRowFormatted, OrderExecutionType, OrderSide, OrderStatus, OrderTimeInForce, OrderType, SelfTradePreventionMode } from '../shared'; import { AccountUpdateEventType } from './ws-events-raw'; import { WsSharedBase } from './ws-general'; export interface WsMessageKlineFormatted extends WsSharedBase { eventType: 'kline' | 'indexPrice_kline'; eventTime: number; symbol: string; kline: { startTime: number; endTime: number; symbol: string; interval: KlineInterval; firstTradeId: number; lastTradeId: number; open: number; close: number; high: number; low: number; volume: number; trades: number; final: false; quoteVolume: number; volumeActive: number; quoteVolumeActive: number; ignored: number; }; } export interface WsMessageContinuousKlineFormatted extends WsSharedBase { eventType: 'continuous_kline'; eventTime: number; symbol: string; contractType: FuturesContractType; kline: { startTime: number; endTime: number; symbol: string; interval: KlineInterval; firstTradeId: number; lastTradeId: number; open: number; close: number; high: number; low: number; volume: number; trades: number; final: false; quoteVolume: number; volumeActive: number; quoteVolumeActive: number; ignored: number; }; } export interface WsMessageAggTradeFormatted extends WsSharedBase { eventType: 'aggTrade'; eventTime: number; symbol: string; tradeId: number; price: number; quantity: number; firstTradeId: number; lastTradeId: number; time: number; maker: boolean; ignored: boolean; } export interface WsMessageTradeFormatted extends WsSharedBase { eventType: 'trade'; eventTime: number; symbol: string; tradeId: number; price: number; quantity: number; buyerOrderId: number; sellerOrderId: number; time: number; maker: boolean; ignored: boolean; } export interface WsMessage24hrMiniTickerFormatted extends WsSharedBase { eventType: '24hrMiniTicker'; eventTime: number; symbol: string; contractSymbol?: string; close: number; open: number; high: number; low: number; baseAssetVolume: number; quoteAssetVolume: number; } export interface WsMessage24hrTickerFormatted extends WsSharedBase { /** * @deprecated '!ticker@arr' stream has been deprecated by Binance (2025-11-14). * Use '<symbol>@ticker' for single symbol or '!miniTicker@arr' for all symbols instead. */ eventType: '24hrTicker' | '!ticker@arr'; eventTime: number; symbol: string; priceChange: number; priceChangePercent: number; weightedAveragePrice: number; previousClose: number; currentClose: number; closeQuantity: number; bestBid: number; bestBidQuantity: number; bestAskPrice: number; bestAskQuantity: number; open: number; high: number; low: number; baseAssetVolume: number; quoteAssetVolume: number; openTime: number; closeTime: number; firstTradeId: number; lastTradeId: number; trades: number; } export interface WsMessageRollingWindowTickerFormatted extends WsSharedBase { eventType: 'ticker'; eventTime: number; symbol: string; priceChange: number; priceChangePercent: number; weightedAveragePrice: number; open: number; high: number; low: number; currentClose: number; baseAssetVolume: number; quoteAssetVolume: number; openTime: number; closeTime: number; firstTradeId: number; lastTradeId: number; trades: number; streamName: string; isWSAPIResponse: false; } export interface WsMessageBookTickerEventFormatted extends WsSharedBase { eventType: 'bookTicker'; updateId: number; eventTime: number; transactionTime: number; symbol: string; bidPrice: number; bidQty: number; askPrice: number; askQty: number; } export interface WsMessagePartialBookDepthEventFormatted extends WsSharedBase { eventType: 'partialBookDepth' | 'string'; lastUpdateId: number; bids: OrderBookRowFormatted[]; asks: OrderBookRowFormatted[]; } export interface WsMessageDiffBookDepthEventFormatted extends WsSharedBase { eventType: 'depthUpdate'; eventTime: number; transactionTime: number; symbol: string; firstUpdateId: number; lastUpdateId: number; finalUpdateId: number; bidDepthDelta: { price: number; quantity: number; }[]; askDepthDelta: { price: number; quantity: number; }[]; } /** * USER DATA WS EVENTS **/ interface SpotBalanceFormatted { asset: string; availableBalance: number; onOrderBalance: number; } export interface WsMessageSpotOutboundAccountPositionFormatted extends WsSharedBase { eventType: 'outboundAccountPosition'; eventTime: number; lastAccountUpdateTime: number; balances: SpotBalanceFormatted[]; } export interface WsMessageSpotBalanceUpdateFormatted extends WsSharedBase { eventType: 'balanceUpdate'; eventTime: number; asset: string; balanceDelta: number; clearTime: number; } export interface WsMessageSpotUserDataExecutionReportEventFormatted extends WsSharedBase { eventType: 'executionReport'; eventTime: number; symbol: string; newClientOrderId: string; side: OrderSide; orderType: OrderType; cancelType: OrderTimeInForce; quantity: number; price: number; stopPrice: number; icebergQuantity: number; orderListId: number; originalClientOrderId: string; executionType: OrderExecutionType; orderStatus: OrderStatus; rejectReason: string; orderId: number; lastTradeQuantity: number; accumulatedQuantity: number; lastTradePrice: number; commission: number; commissionAsset: string | null; tradeTime: number; tradeId: number; ignoreThis1: number; isOrderOnBook: false; isMaker: false; ignoreThis2: true; orderCreationTime: number; cummulativeQuoteAssetTransactedQty: number; lastQuoteAssetTransactedQty: number; orderQuoteQty: number; workingTime: number; selfTradePreventionMode: SelfTradePreventionMode; } export interface OrderObjectFormatted { symbol: string; orderId: number; clientOrderId: string; } export interface WsMessageSpotUserDataListStatusEventFormatted extends WsSharedBase { eventType: 'listStatus'; eventTime: number; symbol: string; orderListId: number; contingencyType: 'OCO'; listStatusType: OCOStatus; listOrderStatus: OCOOrderStatus; listRejectReason: string; listClientOrderId: string; transactionTime: number; orders: OrderObjectFormatted[]; } export interface WsAccountUpdatedBalance { asset: string; balanceChange: number; crossWalletBalance: number; walletBalance: number; } export interface WsUpdatedPosition { symbol: string; marginAsset: string; positionAmount: number; entryPrice: number; accumulatedRealisedPreFee: number; unrealisedPnl: number; marginType: 'cross' | 'isolated'; isolatedWalletAmount: number; positionSide: PositionSide; } export interface WsMessageFuturesUserDataListenKeyExpiredFormatted extends WsSharedBase { eventType: 'listenKeyExpired'; eventTime: number; } export interface WsMessageFuturesMarginCalledPositionFormatted { symbol: string; positionSide: PositionSide; positionAmount: number; marginType: Uppercase<MarginType>; isolatedWalletAmount: number; markPrice: number; unrealisedPnl: number; maintenanceMarginRequired: number; } export interface WsMessageFuturesUserDataMarginCallFormatted extends WsSharedBase { eventType: 'MARGIN_CALL'; eventTime: number; crossWalletBalance: number; positions: WsMessageFuturesMarginCalledPositionFormatted[]; } export interface WsMessageFuturesUserDataAccountUpdateFormatted extends WsSharedBase { eventType: 'ACCOUNT_UPDATE'; eventTime: number; transactionTime: number; updateData: { updateEventType: AccountUpdateEventType; updatedBalances: WsAccountUpdatedBalance[]; updatedPositions: WsUpdatedPosition[]; }; } export interface WsMessageFuturesUserDataCondOrderTriggerRejectEventFormatted extends WsSharedBase { eventType: 'CONDITIONAL_ORDER_TRIGGER_REJECT'; eventTime: number; transactionTime: number; order: { symbol: string; orderId: number; reason: string; }; } export interface WsMessageFuturesUserDataTradeLiteEventFormatted extends WsSharedBase { eventType: 'TRADE_LITE'; eventTime: number; transactionTime: number; symbol: string; originalQuantity: number; originalPrice: number; isMakerSide: boolean; clientOrderId: string; side: 'BUY' | 'SELL'; lastFilledPrice: number; lastFilledQuantity: number; tradeId: number; orderId: number; } export interface WsMessageFuturesUserDataTradeUpdateEventFormatted extends WsSharedBase { eventType: 'ORDER_TRADE_UPDATE'; eventTime: number; transactionTime: number; order: { symbol: string; clientOrderId: string; orderSide: OrderSide; orderType: FuturesOrderType; timeInForce: OrderTimeInForce; originalQuantity: number; originalPrice: number; averagePrice: number; stopPrice: number; executionType: OrderExecutionType; orderStatus: OrderStatus; orderId: number; lastFilledQuantity: number; orderFilledAccumulatedQuantity: number; lastFilledPrice: number; commissionAsset: string; commissionAmount: number; orderTradeTime: number; tradeId: number; bidsNotional: number; asksNotional: number; isMakerTrade: boolean; isReduceOnly: boolean; stopPriceWorkingType: WorkingType; originalOrderType: FuturesOrderType; positionSide: PositionSide; isCloseAll: boolean; realisedProfit: number; trailingStopActivationPrice?: number; trailingStopCallbackRate?: number; orderExpireReason?: string; pP?: boolean; si?: number; ss?: number; }; } export interface WsMessageFuturesUserDataAccountConfigUpdateEventFormatted extends WsSharedBase { eventType: 'ACCOUNT_CONFIG_UPDATE'; eventTime: number; transactionTime: number; assetConfiguration?: { symbol: string; leverage: number; }; accountConfiguration?: { isMultiAssetsMode: boolean; }; } export interface WsMessageIndexPriceUpdateEventFormatted extends WsSharedBase { eventType: 'indexPriceUpdate'; eventTime: number; symbol: string; indexPrice: number; } export interface WsMessageMarkPriceEventFormatted extends WsSharedBase { eventType: 'markPriceUpdate'; eventTime: number; symbol: string; markPrice: number; settlePriceEstimate: number; indexPrice?: number; /** Note this is in decimal format (e.g. 0.0004 === 0.04%). Multiply by 100 to get funding rate percent value */ fundingRate: number | ''; nextFundingTime: number; } export interface WsLiquidationOrderFormatted { symbol: string; side: OrderSide; orderType: FuturesOrderType; timeInForce: OrderTimeInForce; quantity: number; price: number; averagePrice: number; orderStatus: OrderStatus; lastFilledQuantity: number; orderFilledAccumulatedQuantity: number; orderTradeTime: number; } export interface WsMessageForceOrderFormatted extends WsSharedBase { eventType: 'forceOrder'; eventTime: number; liquidationOrder: WsLiquidationOrderFormatted; } export interface WsMessageFuturesUserDataStrategyUpdateFormatted extends WsSharedBase { eventType: 'STRATEGY_UPDATE'; transactionTime: number; eventTime: number; strategy: { strategyId: number; strategyType: string; strategyStatus: string; symbol: string; updateTime: number; opCode: number; }; } export interface WsMessageFuturesUserDataGridUpdateFormatted extends WsSharedBase { eventType: 'GRID_UPDATE'; transactionTime: number; eventTime: number; grid: { strategyId: number; strategyType: string; strategyStatus: string; symbol: string; realizedPnl: numberInString; unmatchedAveragePrice: numberInString; unmatchedQuantity: numberInString; unmatchedFee: numberInString; matchedPnl: numberInString; updateTime: number; }; } export interface WsMessageFuturesUserDataContractInfoFormatted extends WsSharedBase { eventType: 'contractInfo'; eventTime: number; symbol: string; pair: string; contractType: string; deliveryDateTime: number; onboardDateTime: number; contractStatus: string; notionalBrackets: { notionalBracket: number; floorNotional: number; capNotional: number; maintenanceRatio: number; auxiliaryNumber: number; minLeverage: number; maxLeverage: number; }[]; } export interface WsMessageFuturesUserDataAlgoUpdateFormatted extends WsSharedBase { eventType: 'ALGO_UPDATE'; eventTime: number; transactionTime: number; algoOrder: { algoId: number; clientAlgoId: string; side: string; positionSide: string; algoStatus: string; algoType: string; orderType: string; timeInForce: string; workingType: string; quantity: string; activationPrice: string; triggerPrice: string; price: string; callbackRate: string; priceMatch: string; closePosition: boolean; priceProtect: boolean; reduceOnly: boolean; isOrderOnBook: boolean; selfTradePreventionMode: string; createTime: number; updateTime: number; triggerTime: number; goodTillDate: number; }; } export type WsMessageSpotUserDataEventFormatted = WsMessageSpotUserDataExecutionReportEventFormatted | WsMessageSpotOutboundAccountPositionFormatted | WsMessageSpotBalanceUpdateFormatted | WsMessageSpotUserDataListStatusEventFormatted; export type WsMessageFuturesUserDataEventFormatted = WsMessageFuturesUserDataAccountUpdateFormatted | WsMessageFuturesUserDataListenKeyExpiredFormatted | WsMessageFuturesUserDataMarginCallFormatted | WsMessageFuturesUserDataTradeUpdateEventFormatted | WsMessageFuturesUserDataAccountConfigUpdateEventFormatted | WsMessageFuturesUserDataCondOrderTriggerRejectEventFormatted | WsMessageFuturesUserDataTradeLiteEventFormatted | WsMessageFuturesUserDataStrategyUpdateFormatted | WsMessageFuturesUserDataGridUpdateFormatted | WsMessageFuturesUserDataContractInfoFormatted | WsMessageFuturesUserDataAlgoUpdateFormatted; export type WsUserDataEvents = WsMessageSpotUserDataEventFormatted | WsMessageFuturesUserDataEventFormatted; export type WsFormattedMessage = WsUserDataEvents | WsMessageKlineFormatted | WsMessageAggTradeFormatted | WsMessageTradeFormatted | WsMessage24hrMiniTickerFormatted | WsMessage24hrTickerFormatted | WsMessageBookTickerEventFormatted | WsMessagePartialBookDepthEventFormatted | WsMessageDiffBookDepthEventFormatted | WsMessageIndexPriceUpdateEventFormatted | WsMessageMarkPriceEventFormatted | WsMessageForceOrderFormatted | WsMessage24hrMiniTickerFormatted[] | WsMessage24hrTickerFormatted[] | WsMessageRollingWindowTickerFormatted[] | WsMessageMarkPriceEventFormatted[]; export {};