declare global { namespace enet { /**网络数据格式 */ type NetData = string | ArrayBufferLike | Blob | ArrayBufferView | Uint8Array ; /**
         * socket 接口
         */ interface ISocket { /**socket状态 */ state : number ; /**是否连接 */ isConnected : boolean ; param handler setEventHandler ( handler ) : void ; param opt returns connect ( opt ) : boolean ; param data send ( data ) : void ; param disconnect close ( disconnect ? ) : void ; } interface ISocketEventHandler { /**
             * socket 消息接收回调
             */ onSocketMsg ? : ( event : { data : NetData ; } ) => void ; /**
             * socket 出错回调
             */ onSocketError ? : ( event : any ) => void ; /**
             * socket 关闭回调
             * 默认事件参数event的值是 是否主动断开连接
             */ onSocketClosed ? : ( event : any ) => void ; /**
             * socket 连接回调
             */ onSocketConnected ? : ( event : any ) => void ; } interface IConnectOptions < T = any > { /**protocol + host+port 二选一 */ url ? : string ; /**是否使用ssh,即 true wss,false ws */ protocol ? : boolean ; /**主机地址 */ host ? : string ; /**端口 */ port ? : string ; /**数据传输类型，arraybuffer,blob ,默认arraybuffer*/ binaryType ? : "arraybuffer" | "blob" ; /**连接结束 ,如果有握手则会有握手数据返回*/ connectEnd ? : ( handShakeRes ? : any ) => void ; /**握手数据，如果为空则不进行握手通信 */ handShakeReq ? : T ; } /**
         * 解码后的数据包
         */ interface IDecodePackage < T = any > { /**
             * 数据包类型
             * 默认使用 PackageType 中的DATA  类型 4
             *
             * 数据包类型
             * 默认数据包类型
             * 1 HANDSHAKE 客户端和服务端之间的握手数据包类型
             * 2 HANDSHAKE_ACK 客户端回应服务端的握手包类型
             * 3 HEARTBEAT 客户端和服务端之间的心跳数据包类型
             * 4 KICK 服务端发给客户端的下线数据包类型
             */ type : number ; /**协议字符串key */ key ? : string ; /**数据 */ data ? : T ; /**请求id */ reqId ? : number ; /**错误码 */ code ? : number ; /**错误信息 */ errorMsg ? : string ; } /**默认握手返回 */ interface IDefaultHandshakeRes extends IHeartBeatConfig { } interface IHeartBeatConfig { /**心跳间隔，毫秒 */ heartbeatInterval : number ; /**心跳超时时间，毫秒 */ heartbeatTimeout : number ; } interface IProtoHandler < ProtoKeyType = any > { /**
             * 心跳配置,如果为空则和后端没有心跳交互
             */ heartbeatConfig : enet . IHeartBeatConfig ; /**握手数据 */ handShakeRes : any ; param protoKey protoKey2Key ( protoKey ) : string ; param pkg param useCrypto encodePkg < T > ( pkg , useCrypto ? ) : NetData ; param msg param useCrypto encodeMsg < T > ( msg , useCrypto ? ) : NetData ; param data decodePkg < T > ( data ) : IDecodePackage < T > ; } type AnyCallback < ResData = any > = enet . ICallbackHandler < enet . IDecodePackage < ResData > > | enet . ValueCallback < enet . IDecodePackage < ResData > > ; type ValueCallback < T = any > = ( data ? : T , ... args ) => void ; /**
         * 回调对象
         */ interface ICallbackHandler < T > { /**回调 */ method : ValueCallback < T > ; /**上下文，this */ context ? : any ; /**透传数据，传参给method时，会拼接在数据对象参数后面 */ args ? : any [ ] ; } /**
         * 请求配置
         */ interface IRequestConfig { /**
             * 请求id
             */ reqId : number ; /**
             * 协议key
             */ protoKey : string ; /**
             * 请求回调
             */ resHandler : enet . AnyCallback ; /**
             * 请求原始数据
             */ data : any ; /**
             * 请求返回数据
             */ decodePkg ? : enet . IDecodePackage ; } /**
         * 异常处理器
         */ interface INetEventHandler < ResData = any > { param connectOpt onStartConnenct ? ( connectOpt ) : void ; param connectOpt param handshakeRes onConnectEnd ? ( connectOpt , handshakeRes ? ) : void ; param event onError ? ( event , connectOpt ) : void ; param event onClosed ? ( event , connectOpt ) : void ; param reConnectCfg param connectOpt onStartReconnect ? ( reConnectCfg , connectOpt ) : void ; param curCount param reConnectCfg param connectOpt onReconnecting ? ( curCount , reConnectCfg , connectOpt ) : void ; param isOk param reConnectCfg param connectOpt onReconnectEnd ? ( isOk , reConnectCfg , connectOpt ) : void ; param reqCfg onStartRequest ? ( reqCfg , connectOpt ) : void ; param decodePkg onData ? ( decodePkg , connectOpt , reqCfg ? ) : void ; param decodePkg param connectOpt onKick ? ( decodePkg , connectOpt ) : void ; param data param connectOpt onCustomError ? ( data , connectOpt ) : void ; } interface IMessage < T = any , ProtoKeyType = any > { reqId ? : number ; /**协议key */ key : ProtoKeyType ; data : T ; } interface IPackage < T = any > { /**
             * 数据包类型
             * 默认的数据包类型:
             * 1 HANDSHAKE 客户端和服务端之间的握手数据包类型
             * 2 HANDSHAKE_ACK 客户端回应服务端的握手包类型
             * 3 HEARTBEAT 客户端和服务端之间的心跳数据包类型
             * 4 KICK 服务端发给客户端的下线数据包类型
             */ type : number ; data ? : T ; } /**
         * 重连配置接口
         */ interface IReconnectConfig { /**
             * 重连次数
             * 默认:4
             */ reconnectCount ? : number ; /**
             * 连接超时时间，单位毫秒
             * 默认: 120000 2分钟
             */ connectTimeout ? : number ; } interface INodeConfig { /**
             * 底层socket实现
             */ socket ? : ISocket ; /**
             * 网络事件处理器
             * 默认：使用log输出方式
             */ netEventHandler ? : INetEventHandler ; /**
             * 协议编码，解码处理器
             * 默认: 使用字符串协议处理器
             */ protoHandler ? : IProtoHandler ; /**
             * 重连配置，有默认值
             */ reConnectCfg ? : IReconnectConfig ; /**心跳间隔阈值 ,默认100*/ heartbeatGapThreashold ? : number ; /**使用加密 */ useCrypto ? : boolean ; } interface INode < ProtoKeyType = any > { /**网络事件处理器 */ netEventHandler : enet . INetEventHandler ; /**协议处理器 */ protoHandler : enet . IProtoHandler ; /**套接字实现 */ socket : enet . ISocket ; param config init ( config ? ) : void ; param option connect ( option ) : void ; /**
             * 断开连接
             */ disConnect ( ) : void ; /**
             * 重连
             */ reConnect ( ) : void ; param protoKey param data param resHandler request < ReqData = any , ResData = any > ( protoKey , data , resHandler ) : void ; param netData send ( netData ) : void ; param protoKey param data notify < T > ( protoKey , data ? ) : void ; param protoKey param handler onPush < ResData = any > ( protoKey , handler ) : void ; param protoKey param handler oncePush < ResData = any > ( protoKey , handler ) : void ; param protoKey param callbackHandler param context param onceOnly offPush ( protoKey , callbackHandler , context ? , onceOnly ? ) : void ; param protoKey offPushAll ( protoKey ? ) : void ; } } } export { } ;