import net from 'net' ; import Request from './request' ; export type TDecodeBuffSubscriber = ( data : Buffer ) => void ; export interface IObservable < T > { subscribe ( subscriber ) : this ; } export interface IDubboResponse < T > { requestId : number ; err : Error | null ; res : T | null ; attachments : Object ; } export interface IContextRequestParam { requestId : number ; dubboVersion : string ; dubboInterface : string ; path : string ; methodName : string ; methodArgs : Array < IHessianType > ; version : string ; timeout : number ; group : string ; } export interface IHessianType { $class : string ; $ : any ; } export interface IRequestContext { requestId : number ; dubboVersion : string ; dubboInterface : string ; version : string ; methodName : string ; methodArgs : Array < IHessianType > ; isSupportedDubbox : boolean ; path : string ; group : string ; timeout : number ; application : { name : string ; } ; attachments : any ; request : IContextRequestParam ; } export interface IResponseContext { request : Request ; status : number ; body : any ; attachments : Object ; } export interface IHeartBeatProps { type : 'request' | 'response' ; transport : net . Socket ; onTimeout ? : Function ; } export interface IAttachment { path : string ; interface : string ; /**
     * interface version
     */ version : string ; /**
     * dubbo version
     */ dubbo : string ; group ? : string ; timeout ? : number ; name ? : { application : { name : string ; } ; } ; }