import { StateMachine, StateMachineEvent, create } from 'javascript-state-machine'; interface StateMachineTest extends StateMachine { warn?: StateMachineEvent; panic?: StateMachineEvent; calm?: StateMachineEvent; clear?: StateMachineEvent; } const fsm: StateMachineTest = StateMachine.create({ initial: 'green', events: [ { name: 'warn', from: 'green', to: 'yellow' }, { name: 'panic', from: 'yellow', to: 'red' }, { name: 'calm', from: 'red', to: 'yellow' }, { name: 'clear', from: 'yellow', to: 'green' } ], callbacks: { onpanic(event?, from?, to?, msg?) { alert('panic! ' + msg); }, onclear(event?, from?, to?, msg?) { alert('thanks to ' + msg); }, ongreen(event?, from?, to?) { document.body.className = 'green'; }, onyellow(event?, from?, to?) { document.body.className = 'yellow'; }, onred(event?, from?, to?) { document.body.className = 'red'; }, } }); // fsm.warn(); // transition from green to yellow // fsm.panic("ERROR ALERT"); // transition from yellow to red // fsm.calm(); // transition from red to yellow // fsm.clear("All clear"); // transition from yellow to green const transitions = fsm.transitions();