const events = require('events')
var myEmitter = new events.EventEmitter()

export interface Listener<State> {
    (event: State) : any;
}

/// interface that dispose the event
export interface Disposable{
    dispose() : any;
}


export class EventEmitter<State> {

    on = (event: string, listener: Listener<State>): void => {
        myEmitter.on(event, listener)
    }

    emit = (event: string, state: State): void => {
        console.log("Event " + event + " State " + state)
        myEmitter.emit(event, state)
    }

}