import { AnyFunction, IMMetaTypes } from "./Meta.i";
import { IMSendTypes } from "./IM.i";
export declare namespace BasicTypes {
    interface Props {
        _logPrint: boolean;
    }
    interface Configs {
        /** 是否允许打印到控制台 */
        _logPrint: boolean;
        /** 本次连接id */
        _sessionid: string;
        /** 登陆状态，0 - 未登陆，1 - 登陆中，2 - 登陆成功 */
        _loginStatus: 0 | 1 | 2;
        /** 心跳定时器 ID */
        _heartBeatIntervalId: number;
        /** 定时心跳 */
        _heartBeatInterval: number;
        /** 心跳timeout */
        _heartBeatTimeOut: number;
        /** 是否在线 */
        _onLine: boolean;
        /** socket 的定时器 */
        _socketTimer: number;
        /** websocket 配置 */
        _socketConfig: {
            serverip: string;
        };
        /** socket回调 */
        _socketInitCallBack: {
            onSuccess?: AnyFunction;
            onError?: AnyFunction;
        };
        /** 是否被踢 */
        _isKick: boolean;
        /** 连接状态，0 - 未连接， 1 - 连接中，2 - 连接成功 */
        _connectStatus: 0 | 1 | 2;
        /** socket 定时器时间 */
        _socketTimeOut: number;
        /** 离线请求map */
        _offlineRequestMap: {
            [key: string]: IMSendTypes.Send_GetOffLineMsg;
        };
        /** 消息记录，判重用 */
        _msgMap: {
            [key: string]: IMMetaTypes.IMCommandEnum;
        };
        /** 心跳的错误次数 */
        _heartBeatErrCount: number;
        /** 心跳出错最大次数3, 错误超过三次，则会判断为连接中断 */
        _heartBeatErrCountMax: number;
        /** _reconnectInterval */
        _reconnectInterval: number;
        /** 重连定时器ID */
        _reconnectIntervalId: number;
        /** IM登录信息，发给服务端的每一个请求应该都带着 */
        _loginContent: IMSendTypes.LoginContent;
        /** 请求间隔开始时间 */
        _requestTime: number;
        /** 请求间隔 */
        _requestTimeMax: number;
        /** 请求次数 */
        _requestCount: number;
        /** 请求间隔内最大请求次数 */
        _requestCountMax: number;
        /** 请求集，有成功回调，失败回调等属性 */
        _requestMap: {
            [key: string]: {
                onSuccess: AnyFunction;
                onFail: AnyFunction;
                timerId: number;
            };
        };
        /** 请求超时间隔 */
        _requestTimeOut: number;
        /** 登录消息ID */
        _loginMsgId: string;
        /** 测试在线定时器 */
        _testOnlineTimer: number;
    }
    interface Events {
        [key: string]: AnyFunction[];
    }
    interface SendMsgResponse {
        code: IMMetaTypes.IM_Status;
        message: any;
        err?: any;
        data?: any;
    }
}
