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