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
TypeScript
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