import { Type } from './middleware' ; export enum { number } export enum ParameterType { IO , Socket , Args , Ack } export interface export interface Param { type : ParameterType ; index : number ; wrapper ? : any ; } export enum { number } export enum EventType { IO , Socket } export interface export interface Listener { methodName : string ; event : string ; type : EventType ; middleware : Type [ ] ; } export class export class SocketMeta { /**
     * Namespace
     */ namespace : string ; /**
     * Middleware
     */ middleware : Type [ ] = [ ] ; /**
     * Event listeners
     */ listeners : Listener [ ] = [ ] ; /**
     * Event listener params
     */ params : { [ key ] : Param [ ] ; } = { } ; } export interface extends Object export interface SocketClass extends Object { __socket_meta__ ? : SocketMeta ; } param target returns { SocketIOMeta } export function getMeta ( target ) { if ( ! target . __socket_meta__ ) { target . __socket_meta__ = new SocketMeta ( ) ; } return target . __socket_meta__ ; }