binance-futures-wrapper
Version:
A comprehensive TypeScript wrapper for Binance USDT-M Futures API with full REST and WebSocket support
474 lines • 11.1 kB
TypeScript
/**
* WebSocket stream types for Binance Futures API
*/
import { OrderSideType, OrderTypeType, TimeInForceType, PositionSideType, OrderStatusType, WorkingTypeType } from './base';
export interface WebSocketConfig {
reconnect?: boolean;
reconnectInterval?: number;
maxReconnectAttempts?: number;
keepAlive?: boolean;
keepAliveInterval?: number;
}
export interface AggTradeStreamData {
e: 'aggTrade';
E: number;
s: string;
a: number;
p: string;
q: string;
f: number;
l: number;
T: number;
m: boolean;
}
export interface MarkPriceStreamData {
e: 'markPriceUpdate';
E: number;
s: string;
p: string;
i: string;
P: string;
r: string;
T: number;
}
export interface AllMarkPriceStreamData {
e: 'markPriceUpdate';
E: number;
data: MarkPriceStreamData[];
}
export interface KlineStreamData {
e: 'kline';
E: number;
s: string;
k: {
t: number;
T: number;
s: string;
i: string;
f: number;
L: number;
o: string;
c: string;
h: string;
l: string;
v: string;
n: number;
x: boolean;
q: string;
V: string;
Q: string;
B: string;
};
}
export interface ContinuousKlineStreamData {
e: 'continuous_kline';
E: number;
ps: string;
ct: string;
k: {
t: number;
T: number;
i: string;
f: number;
L: number;
o: string;
c: string;
h: string;
l: string;
v: string;
n: number;
x: boolean;
q: string;
V: string;
Q: string;
B: string;
};
}
export interface MiniTickerStreamData {
e: '24hrMiniTicker';
E: number;
s: string;
c: string;
o: string;
h: string;
l: string;
v: string;
q: string;
}
export interface AllMiniTickerStreamData {
data: MiniTickerStreamData[];
}
export interface TickerStreamData {
e: '24hrTicker';
E: number;
s: string;
p: string;
P: string;
w: string;
c: string;
Q: string;
o: string;
h: string;
l: string;
v: string;
q: string;
O: number;
C: number;
F: number;
L: number;
n: number;
}
export interface AllTickerStreamData {
data: TickerStreamData[];
}
export interface BookTickerStreamData {
e: 'bookTicker';
u: number;
E: number;
T: number;
s: string;
b: string;
B: string;
a: string;
A: string;
}
export interface LiquidationOrderStreamData {
e: 'forceOrder';
E: number;
o: {
s: string;
S: OrderSideType;
o: OrderTypeType;
f: TimeInForceType;
q: string;
p: string;
ap: string;
X: OrderStatusType;
l: string;
z: string;
T: number;
};
}
export interface PartialBookDepthStreamData {
e: 'depthUpdate';
E: number;
T: number;
s: string;
U: number;
u: number;
pu: number;
b: [string, string][];
a: [string, string][];
}
export interface DiffBookDepthStreamData {
e: 'depthUpdate';
E: number;
T: number;
s: string;
U: number;
u: number;
pu: number;
b: [string, string][];
a: [string, string][];
}
export interface CompositeIndexStreamData {
e: 'compositeIndex';
E: number;
s: string;
p: string;
c: {
b: string;
w: string;
W: string;
}[];
}
export interface ListenKeyResponse {
listenKey: string;
}
export interface AccountUpdateStreamData {
e: 'ACCOUNT_UPDATE';
E: number;
T: number;
a: {
m: string;
B: AccountBalance[];
P: WsAccountPosition[];
};
}
export interface AccountBalance {
a: string;
wb: string;
cw: string;
bc: string;
}
export interface WsAccountPosition {
s: string;
pa: string;
ep: string;
cr: string;
up: string;
mt: string;
iw: string;
ps: PositionSideType;
}
export interface OrderTradeUpdateStreamData {
e: 'ORDER_TRADE_UPDATE';
E: number;
T: number;
o: {
s: string;
c: string;
S: OrderSideType;
o: OrderTypeType;
f: TimeInForceType;
q: string;
p: string;
ap: string;
sp: string;
x: string;
X: OrderStatusType;
i: number;
l: string;
z: string;
L: string;
N: string;
n: string;
T: number;
t: number;
b: string;
a: string;
m: boolean;
R: boolean;
wt: WorkingTypeType;
ot: OrderTypeType;
ps: PositionSideType;
cp: boolean;
AP: string;
cr: string;
pP: boolean;
si: number;
ss: number;
rp: string;
};
}
export interface AccountConfigUpdateStreamData {
e: 'ACCOUNT_CONFIG_UPDATE';
E: number;
T: number;
ac?: {
s: string;
l: number;
};
ai?: {
j: boolean;
};
}
export interface MarginCallStreamData {
e: 'MARGIN_CALL';
E: number;
cw: string;
p: MarginCallPosition[];
}
export interface MarginCallPosition {
s: string;
ps: PositionSideType;
pa: string;
mt: string;
iw: string;
mp: string;
up: string;
mm: string;
}
export interface StreamSubscription {
method: 'SUBSCRIBE' | 'UNSUBSCRIBE';
params: string[];
id: number;
}
export interface StreamResponse {
result: null | string[];
id: number;
}
export interface StreamError {
code: number;
msg: string;
id: number;
}
export type MarketStreamEvent = AggTradeStreamData | MarkPriceStreamData | AllMarkPriceStreamData | KlineStreamData | ContinuousKlineStreamData | MiniTickerStreamData | AllMiniTickerStreamData | TickerStreamData | AllTickerStreamData | BookTickerStreamData | LiquidationOrderStreamData | PartialBookDepthStreamData | DiffBookDepthStreamData | CompositeIndexStreamData;
export type UserDataStreamEvent = AccountUpdateStreamData | OrderTradeUpdateStreamData | AccountConfigUpdateStreamData | MarginCallStreamData;
export interface ProcessedOrderUpdate {
eventType: 'ORDER_TRADE_UPDATE';
eventTime: number;
transactionTime: number;
symbol: string;
clientOrderId: string;
side: OrderSideType;
orderType: OrderTypeType;
timeInForce: TimeInForceType;
originalQuantity: number;
originalPrice: number;
averagePrice: number;
stopPrice: number;
executionType: string;
orderStatus: OrderStatusType;
orderId: number;
lastFilledQuantity: number;
totalFilledQuantity: number;
lastFilledPrice: number;
commissionAsset?: string;
commission?: number;
orderTradeTime: number;
tradeId: number;
bidsNotional: number;
asksNotional: number;
isMakerSide: boolean;
isReduceOnly: boolean;
stopPriceWorkingType: WorkingTypeType;
originalOrderType: OrderTypeType;
positionSide: PositionSideType;
isCloseAll: boolean;
activationPrice?: number;
callbackRate?: number;
isPriceProtectionOn: boolean;
realizedProfit: number;
}
export interface ProcessedAccountUpdate {
eventType: 'ACCOUNT_UPDATE';
eventTime: number;
transactionTime: number;
eventReasonType: string;
balances: ProcessedAccountBalance[];
positions: ProcessedAccountPosition[];
}
export interface ProcessedAccountBalance {
asset: string;
walletBalance: number;
crossWalletBalance: number;
balanceChange: number;
}
export interface ProcessedAccountPosition {
symbol: string;
positionAmount: number;
entryPrice: number;
accumulatedRealized: number;
unrealizedPnL: number;
marginType: string;
isolatedWallet: number;
positionSide: PositionSideType;
}
export interface ProcessedMarginCall {
eventType: 'MARGIN_CALL';
eventTime: number;
crossWalletBalance: number;
positions: ProcessedMarginCallPosition[];
}
export interface ProcessedMarginCallPosition {
symbol: string;
positionSide: PositionSideType;
positionAmount: number;
marginType: string;
isolatedWallet: number;
markPrice: number;
unrealizedPnL: number;
maintenanceMarginRequired: number;
}
export interface ProcessedAccountConfigUpdate {
eventType: 'ACCOUNT_CONFIG_UPDATE';
eventTime: number;
transactionTime: number;
leverageUpdate?: {
symbol: string;
leverage: number;
};
multiAssetsMode?: {
multiAssetsMode: boolean;
};
}
export interface ProcessedAggTrade {
eventType: 'aggTrade';
eventTime: number;
symbol: string;
aggregateTradeId: number;
price: number;
quantity: number;
firstTradeId: number;
lastTradeId: number;
tradeTime: number;
isBuyerMaker: boolean;
}
export interface ProcessedMarkPrice {
eventType: 'markPriceUpdate';
eventTime: number;
symbol: string;
markPrice: number;
indexPrice: number;
estimatedSettlePrice: number;
fundingRate: number;
nextFundingTime: number;
}
export interface ProcessedKline {
eventType: 'kline';
eventTime: number;
symbol: string;
kline: {
startTime: number;
closeTime: number;
symbol: string;
interval: string;
firstTradeId: number;
lastTradeId: number;
openPrice: number;
closePrice: number;
highPrice: number;
lowPrice: number;
baseAssetVolume: number;
numberOfTrades: number;
isClosed: boolean;
quoteAssetVolume: number;
takerBuyBaseAssetVolume: number;
takerBuyQuoteAssetVolume: number;
};
}
export interface ProcessedTicker {
eventType: '24hrTicker';
eventTime: number;
symbol: string;
priceChange: number;
priceChangePercent: number;
weightedAvgPrice: number;
lastPrice: number;
lastQuantity: number;
openPrice: number;
highPrice: number;
lowPrice: number;
totalTradedBaseAssetVolume: number;
totalTradedQuoteAssetVolume: number;
statisticOpenTime: number;
statisticCloseTime: number;
firstTradeId: number;
lastTradeId: number;
totalNumberOfTrades: number;
}
export interface ProcessedBookTicker {
eventType: 'bookTicker';
updateId: number;
eventTime: number;
transactionTime: number;
symbol: string;
bestBidPrice: number;
bestBidQuantity: number;
bestAskPrice: number;
bestAskQuantity: number;
}
export interface ProcessedPartialBookDepth {
eventType: 'depthUpdate';
eventTime: number;
transactionTime: number;
symbol: string;
firstUpdateId: number;
finalUpdateId: number;
bids: [number, number][];
asks: [number, number][];
}
export type ProcessedUserDataEvent = ProcessedOrderUpdate | ProcessedAccountUpdate | ProcessedAccountConfigUpdate | ProcessedMarginCall;
export type ProcessedMarketDataEvent = ProcessedAggTrade | ProcessedMarkPrice | ProcessedKline | ProcessedTicker | ProcessedBookTicker | ProcessedPartialBookDepth;
//# sourceMappingURL=websocket.d.ts.map