import { EventEmitter } from 'events';
import { WsMessage } from '../../model/common';
import { WebSocketClientOption } from '../../model/websocket_option';
import { WebsocketTransport, WebsocketTransportEvents, WsTokenProvider } from '../interfaces/websocket';
export declare class WebSocketClient extends EventEmitter implements WebsocketTransport {
    private options;
    private state;
    private tokenProvider;
    private keepAliveInterval;
    private shutdown;
    private reconnecting;
    private tokenInfo;
    private ackEvents;
    private worker;
    private messageBuffer;
    constructor(tokenProvider: WsTokenProvider, options: WebSocketClientOption);
    start(): Promise<void>;
    stop(): Promise<void>;
    write(ms: WsMessage, timeout: number): Promise<void>;
    on<K extends keyof WebsocketTransportEvents>(event: K, listener: WebsocketTransportEvents[K]): this;
    emit<K extends keyof WebsocketTransportEvents>(event: K, ...args: Parameters<WebsocketTransportEvents[K]>): boolean;
    private close;
    private dial;
    private onMessage;
    private handleAckEvent;
    private onClose;
    private keepAlive;
    private randomEndpoint;
    private reconnect;
}
