import { EventEmitter } from 'events';
import * as WebSocketClient from 'ws';
import { WebSocketOptions } from './interfaces';
export declare class WebSocket extends EventEmitter {
    ws: WebSocketClient;
    address: string;
    protocols?: string | string[];
    options?: WebSocketClient.ClientOptions;
    beforeConnect: (connectionAttempts?: number) => Promise<void>;
    private url;
    private reconnecting;
    private reconnectInterval;
    private pingInterval;
    private pingTimeout;
    private pingFailureLimit;
    private pong;
    private ping;
    private connectionAttempt;
    private closed;
    constructor(address: string, options?: WebSocketOptions);
    private init;
    private connect;
    private reconnect;
    send(msg: any, callback?: (err: Error) => void): void;
    sendJson(msg: any, callback?: (err: Error) => void): void;
    close(code?: number, reason?: string): void;
    isConnected(): boolean;
    setAddresss(address: string): void;
}
