UNPKG

bybit-api-gnome

Version:

Forked for Lick Hunter, Complete & robust node.js SDK for Bybit's REST APIs and WebSockets v5, with TypeScript & integration tests.

97 lines (96 loc) 2.74 kB
import { EventEmitter } from 'events'; export interface V5WSClientOptions { key?: string; secret?: string; testnet?: boolean; pingInterval?: number; pongTimeout?: number; reconnectTimeout?: number; restoreSubscriptionsOnReconnect?: boolean; requestTimeoutMs?: number; } type V5WSCategory = 'spot' | 'linear' | 'inverse' | 'option' | 'private'; export default class WebSocketClientV5 extends EventEmitter { private options; private wsStore; private logger; private requestIdCounter; private pendingRequests; constructor(options?: V5WSClientOptions); /** * Convert V5WSCategory to WsKey for compatibility with existing WsStore */ private getWsKey; /** * Get the WS base URL for different categories */ private getWsBaseUrl; /** * Connect to a WebSocket category */ connect(category: V5WSCategory): Promise<void>; /** * Subscribe to topics */ subscribe(category: V5WSCategory, topics: string[]): void; /** * Unsubscribe from topics */ unsubscribe(category: V5WSCategory, topics: string[]): void; /** * Subscribe to public market data topics */ subscribePublicTopic(category: Exclude<V5WSCategory, 'private'>, topic: string): void; /** * Subscribe to private topics (requires authentication) */ subscribePrivateTopic(topics: string[]): void; /** * Close connection for a specific category */ close(category: V5WSCategory): void; /** * Close all connections */ closeAll(): void; private connectWS; private authenticate; private handleMessage; private sendWSMessage; private startPingPong; private handleReconnection; private generateRequestId; /** * Subscribe to orderbook updates */ subscribeOrderbook(category: Exclude<V5WSCategory, 'private'>, symbol: string, depth?: number): void; /** * Subscribe to trade updates */ subscribeTrades(category: Exclude<V5WSCategory, 'private'>, symbol: string): void; /** * Subscribe to ticker updates */ subscribeTicker(category: Exclude<V5WSCategory, 'private'>, symbol: string): void; /** * Subscribe to kline updates */ subscribeKline(category: Exclude<V5WSCategory, 'private'>, symbol: string, interval: string): void; /** * Subscribe to private order updates */ subscribeOrders(): void; /** * Subscribe to private position updates */ subscribePositions(): void; /** * Subscribe to private execution updates */ subscribeExecutions(): void; /** * Subscribe to wallet updates */ subscribeWallet(): void; } export {};