bybit-api
Version:
Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.
173 lines (172 loc) • 4.88 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 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[]>;