import { Bloc } from "./bloc";

// abstract class CounterEvent{}

// class IncrementEvent extends CounterEvent {
//     public fNumber: number = 10;
// }


// class DecreamentEvent extends CounterEvent {
//     public fNumber: number = 10;
// }

class CounterBloc extends Bloc<number> {
    public increament()  {
        return this.addNewState(this.state + 4);
    }
    constructor() {
        super(0);
    }
    public decreament() {
        return this.addNewState(this.state - 4);
    }

}

let bloc = new CounterBloc();


bloc.on("increament", (state) => {
    bloc._state = bloc._state + state;
})

bloc.on("decreament", (state) => {
    bloc._state = bloc._state - state;
})

bloc.call("increament", 12)

bloc.call("decreament", 2)

console.log(bloc.state);







// const events = require('events')

// var myEmitter = new events.EventEmitter()

// myEmitter.on(IncrementEvent, function(val: any) {
//     console.log(val)
// })


// myEmitter.emit(IncrementEvent, "sadsd")



