import EventBus from './eventBus';
import { Options } from '../../typings';
/**
 * Socket 类
 * @author Jesse <jessexinyu@foxmail.com>
 * @extends EventBus
 */
declare class Socket extends EventBus {
    private instance;
    private status;
    private heartbeat;
    private heartbeatShut;
    private url;
    private params;
    private reconnectCount;
    reconnectMax: number;
    reconnectTime: number;
    heartTimeout: number;
    logger: boolean;
    /**
     * 创建一个 socket 实例
     * @param url - url
     * @param params - params
     * @param params.type - type
     * @param params.token - token
     * @param options - 可配置项
     * @param {number} [options.reconnectMax = 10] - 最大重连数
     * @param {number} [options.reconnectTime = 3000] - 重连间隔
     * @param {number} [options.heartTimeout = 60000] - 心跳间隔
     * @param {boolean} [options.logger = true] - 是否开启日志
     */
    constructor(url: string, params: Object, options?: Options);
    /**
     * 发送消息
     * @param {Object/ArrayBuffer} data - 需要发送的内容
     * @param {Function=} success - 接口调用成功的回调函数
     * @param {Function=} fail - 接口调用失败的回调函数
     * @param {Function=} complete - 接口调用结束的回调函数（调用成功、失败都会执行）
     */
    send<T>(data: Object | ArrayBuffer, ...handlers: T[]): void;
    /**
     * 主动关闭 socket
     */
    shut(): void;
    private init;
    private onOpen;
    private onClose;
    private onMessage;
    private reconnect;
    private heartbeatCheck;
    private heartbeatReset;
    private complete;
}
export default Socket;
