UNPKG

mexc-futures-sdk

Version:

Unofficial TypeScript SDK for MEXC Futures trading with maintenance bypass. Uses browser session tokens to work 24/7 even during API downtime.

217 lines 6.58 kB
import { EventEmitter } from "events"; import { LogLevelString } from "./utils/logger"; export interface WebSocketConfig { apiKey: string; secretKey: string; autoReconnect?: boolean; reconnectInterval?: number; pingInterval?: number; logLevel?: LogLevelString; } export interface LoginParams { apiKey: string; signature: string; reqTime: string; subscribe?: boolean; } export interface FilterParams { filters?: Array<{ filter: "order" | "order.deal" | "position" | "plan.order" | "stop.order" | "stop.planorder" | "risk.limit" | "adl.level" | "asset"; rules?: string[]; }>; } export type KLineInterval = "Min1" | "Min5" | "Min15" | "Min30" | "Min60" | "Hour4" | "Hour8" | "Day1" | "Week1" | "Month1"; export interface WebSocketMessage { method?: string; channel?: string; data?: any; param?: any; subscribe?: boolean; gzip?: boolean; } export declare class MexcFuturesWebSocket extends EventEmitter { private ws; private config; private pingTimer; private reconnectTimer; private isConnected; private isLoggedIn; private readonly wsUrl; private logger; constructor(config: WebSocketConfig); /** * Connect to WebSocket */ connect(): Promise<void>; /** * Disconnect from WebSocket */ disconnect(): void; /** * Login to access private data streams * @param subscribe - false to cancel default push of all private data */ login(subscribe?: boolean): Promise<void>; /** * Set personal data filters * @param filters - Array of filters to apply */ setPersonalFilter(filters?: FilterParams["filters"]): void; /** * Subscribe to specific order updates for symbols */ subscribeToOrders(symbols?: string[]): void; /** * Subscribe to order deals (executions) for symbols */ subscribeToOrderDeals(symbols?: string[]): void; /** * Subscribe to position updates for symbols */ subscribeToPositions(symbols?: string[]): void; /** * Subscribe to asset (balance) updates */ subscribeToAssets(): void; /** * Subscribe to ADL level updates */ subscribeToADLLevels(): void; /** * Subscribe to multiple data types with custom filters */ subscribeToMultiple(filters: FilterParams["filters"]): void; /** * Subscribe to all private data (default after login) */ subscribeToAll(): void; /** * Subscribe to all tickers (all contracts) * @param gzip - Whether to compress the data (default: false) */ subscribeToAllTickers(gzip?: boolean): void; /** * Unsubscribe from all tickers */ unsubscribeFromAllTickers(): void; /** * Subscribe to ticker for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ subscribeToTicker(symbol: string): void; /** * Unsubscribe from ticker for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromTicker(symbol: string): void; /** * Subscribe to trades for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ subscribeToDeals(symbol: string): void; /** * Unsubscribe from trades for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromDeals(symbol: string): void; /** * Subscribe to incremental depth for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") * @param compress - Whether to compress the data (default: false) */ subscribeToDepth(symbol: string, compress?: boolean): void; /** * Subscribe to full depth for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") * @param limit - Depth limit (5, 10, or 20) */ subscribeToFullDepth(symbol: string, limit?: 5 | 10 | 20): void; /** * Unsubscribe from incremental depth for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromDepth(symbol: string): void; /** * Unsubscribe from full depth for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromFullDepth(symbol: string): void; /** * Subscribe to kline/candlestick data for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") * @param interval - Kline interval */ subscribeToKline(symbol: string, interval: KLineInterval): void; /** * Unsubscribe from kline/candlestick data for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromKline(symbol: string): void; /** * Subscribe to funding rate for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ subscribeToFundingRate(symbol: string): void; /** * Unsubscribe from funding rate for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromFundingRate(symbol: string): void; /** * Subscribe to index price for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ subscribeToIndexPrice(symbol: string): void; /** * Unsubscribe from index price for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromIndexPrice(symbol: string): void; /** * Subscribe to fair price for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ subscribeToFairPrice(symbol: string): void; /** * Unsubscribe from fair price for specific contract * @param symbol - Contract symbol (e.g., "BTC_USDT") */ unsubscribeFromFairPrice(symbol: string): void; /** * Send message to WebSocket */ private send; /** * Handle incoming WebSocket messages */ private handleMessage; /** * Handle data updates (orders, positions, market data, etc.) */ private handleDataUpdate; /** * Start ping timer */ private startPing; /** * Stop ping timer */ private stopPing; /** * Schedule reconnection */ private scheduleReconnect; /** * Clear reconnect timer */ private clearReconnectTimer; /** * Get connection status */ get connected(): boolean; /** * Get login status */ get loggedIn(): boolean; } //# sourceMappingURL=websocket.d.ts.map