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
TypeScript
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 {};