bybit-api
Version:
Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.
299 lines (298 loc) • 8.15 kB
TypeScript
import WebSocket from 'isomorphic-ws';
import { CategoryV5, ExecTypeV5, OCOTriggerTypeV5, OrderCancelTypeV5, OrderCreateTypeV5, OrderRejectReasonV5, OrderSMPTypeV5, OrderSideV5, OrderStatusV5, OrderTimeInForceV5, OrderTriggerByV5, OrderTypeV5, PositionIdx, PositionSideV5, PositionStatusV5, StopOrderTypeV5, TPSLModeV5, TradeModeV5 } from '../shared-v5';
import { WsKey } from './ws-general';
export interface MessageEventLike {
target: WebSocket;
type: 'message';
data: string;
}
export declare function isMessageEvent(msg: unknown): msg is MessageEventLike;
export interface WSPublicTopicEventV5<TTopic extends string, TType, TData> {
id?: string;
topic: TTopic;
type: TType;
/** Cross sequence */
cs?: number;
/** Event timestamp */
ts: number;
data: TData;
/**
* matching engine timestamp (correlated with T from public trade channel)
*/
cts: number;
/**
* Internal reference, can be used to determine if this is spot/linear/inverse/etc
*/
wsKey: WsKey;
}
export interface WSPrivateTopicEventV5<TTopic extends string, TData> {
id?: string;
topic: TTopic;
creationTime: number;
data: TData;
wsKey: WsKey;
}
export interface WSOrderbookV5 {
/** Symbol */
s: string;
/** [price, qty][] */
b: [string, string][];
/** [price, qty][] */
a: [string, string][];
/** Update ID */
u: number;
/** Cross sequence */
seq: number;
}
export type WSOrderbookEventV5 = WSPublicTopicEventV5<string, 'delta' | 'snapshot', WSOrderbookV5>;
export interface WSTradeV5 {
T: number;
s: string;
S: OrderSideV5;
v: string;
p: string;
L?: string;
i: string;
BT: boolean;
RPI?: boolean;
mP?: string;
iP?: string;
mIv?: string;
iv?: string;
}
export type WSTradeEventV5 = WSPublicTopicEventV5<string, 'snapshot', WSTradeV5[]>;
export interface WSTickerV5 {
symbol: string;
tickDirection: string;
price24hPcnt: string;
lastPrice: string;
prevPrice24h: string;
highPrice24h: string;
lowPrice24h: string;
prevPrice1h: string;
markPrice: string;
indexPrice: string;
openInterest: string;
openInterestValue: string;
turnover24h: string;
volume24h: string;
nextFundingTime: string;
fundingRate: string;
bid1Price: string;
bid1Size: string;
ask1Price: string;
ask1Size: string;
deliveryTime?: string;
basisRate?: string;
deliveryFeeRate?: string;
predictedDeliveryPrice?: string;
preOpenPrice?: string;
preQty?: string;
curPreListingPhase?: string;
}
export type WSTickerEventV5 = WSPublicTopicEventV5<string, 'snapshot' | 'delta', WSTickerV5>;
export interface WSKlineV5 {
start: number;
end: number;
interval: string;
open: string;
close: string;
high: string;
low: string;
volume: string;
turnover: string;
confirm: boolean;
timestamp: number;
}
export type WSKlineEventV5 = WSPublicTopicEventV5<string, 'snapshot', WSKlineV5[]>;
export interface WSLiquidationV5 {
T: number;
s: string;
S: OrderSideV5;
v: string;
p: string;
}
export type WSLiquidationEventV5 = WSPublicTopicEventV5<string, 'snapshot', WSLiquidationV5[]>;
export interface WSPositionV5 {
category: string;
symbol: string;
side: PositionSideV5;
size: string;
positionIdx: PositionIdx;
tradeMode: TradeModeV5;
positionValue: string;
riskId: number;
riskLimitValue: string;
entryPrice: string;
markPrice: string;
leverage: string;
positionBalance: string;
autoAddMargin: number;
positionMM: string;
positionIM: string;
liqPrice: string;
bustPrice: string;
tpslMode: string;
takeProfit: string;
stopLoss: string;
trailingStop: string;
unrealisedPnl: string;
curRealisedPnl: string;
sessionAvgPrice: string;
delta: string;
gamma: string;
vega: string;
theta: string;
cumRealisedPnl: string;
positionStatus: PositionStatusV5;
adlRankIndicator: number;
isReduceOnly: boolean;
mmrSysUpdatedTime: string;
leverageSysUpdatedTime: string;
createdTime: string;
updatedTime: string;
seq: number;
}
export type WSPositionEventV5 = WSPrivateTopicEventV5<'position', WSPositionV5[]>;
export interface WSAccountOrderV5 {
category: CategoryV5;
orderId: string;
orderLinkId: string;
isLeverage: string;
blockTradeId: string;
symbol: string;
price: string;
qty: string;
side: OrderSideV5;
positionIdx: PositionIdx;
orderStatus: OrderStatusV5;
createType: OrderCreateTypeV5;
cancelType: OrderCancelTypeV5;
rejectReason?: OrderRejectReasonV5;
avgPrice?: string;
leavesQty?: string;
leavesValue?: string;
cumExecQty: string;
cumExecValue: string;
cumExecFee: string;
closedPnl: string;
feeCurrency: string;
timeInForce: OrderTimeInForceV5;
orderType: OrderTypeV5;
stopOrderType: StopOrderTypeV5;
ocoTriggerType?: OCOTriggerTypeV5;
orderIv: string;
marketUnit?: 'baseCoin' | 'quoteCoin';
triggerPrice: string;
takeProfit: string;
stopLoss: string;
tpslMode?: TPSLModeV5;
tpLimitPrice?: string;
slLimitPrice?: string;
tpTriggerBy: string;
slTriggerBy: string;
triggerDirection: number;
triggerBy: OrderTriggerByV5;
lastPriceOnCreated: string;
reduceOnly: boolean;
closeOnTrigger: boolean;
placeType: string;
smpType: OrderSMPTypeV5;
smpGroup: number;
smpOrderId: string;
createdTime: string;
updatedTime: string;
}
export type WSAccountOrderEventV5 = WSPrivateTopicEventV5<'order', WSAccountOrderV5[]>;
export interface WSExecutionV5 {
category: CategoryV5;
symbol: string;
isLeverage: string;
orderId: string;
orderLinkId: string;
side: OrderSideV5;
orderPrice: string;
orderQty: string;
leavesQty: string;
createType: OrderCreateTypeV5;
orderType: OrderTypeV5;
stopOrderType: StopOrderTypeV5;
execFee: string;
execId: string;
execPrice: string;
execQty: string;
execPnl: string;
execType: ExecTypeV5;
execValue: string;
execTime: string;
isMaker: boolean;
feeRate: string;
tradeIv: string;
markIv: string;
markPrice: string;
indexPrice: string;
underlyingPrice: string;
blockTradeId: string;
closedSize: string;
seq: number;
marketUnit: string;
}
export type WSExecutionEventV5 = WSPrivateTopicEventV5<'execution', WSExecutionV5[]>;
export interface WSExecutionFastV5 {
category: CategoryV5;
symbol: string;
execId: string;
execPrice: string;
execQty: string;
orderId: string;
isMaker: boolean;
orderLinkId: string;
side: OrderSideV5;
execTime: string;
seq: number;
}
export type WSExecutionFastEventV5 = WSPrivateTopicEventV5<'execution.fast', WSExecutionFastV5[]>;
export interface WSCoinV5 {
coin: string;
equity: string;
usdValue: string;
walletBalance: string;
free?: string;
locked: string;
spotHedgingQty: string;
borrowAmount: string;
availableToBorrow: string;
availableToWithdraw: string;
accruedInterest: string;
totalOrderIM: string;
totalPositionIM: string;
totalPositionMM: string;
unrealisedPnl: string;
cumRealisedPnl: string;
bonus: string;
collateralSwitch: boolean;
marginCollateral: boolean;
}
export interface WSWalletV5 {
accountType: string;
accountLTV: string;
accountIMRate: string;
accountMMRate: string;
totalEquity: string;
totalWalletBalance: string;
totalMarginBalance: string;
totalAvailableBalance: string;
totalPerpUPL: string;
totalInitialMargin: string;
totalMaintenanceMargin: string;
coin: WSCoinV5[];
}
export type WSWalletEventV5 = WSPrivateTopicEventV5<'wallet', WSWalletV5[]>;
export interface WSGreeksV5 {
baseCoin: string;
totalDelta: string;
totalGamma: string;
totalVega: string;
totalTheta: string;
}
export type WSGreeksEventV5 = WSPrivateTopicEventV5<'greeks', WSGreeksV5[]>;