import { Machine, State, On, Do, Goto, Spawn, Unspawn, interpret, Interpreter_T, send } from '../index'; const beginTimer = (ctx:C, e:E, self:Interpreter_T)=>{ setTimeout(()=>{ send(self, ['timer-finished',null]); }, 800); }; const log = (ctx:C, e:E, self:Interpreter_T)=>{ console.log(self.state); }; type S = 'green' | 'yellow' | 'red'; type E = ['entry',null] | ['timer-finished',null]; type C = {}; const machine = Machine( State('green', On('entry', Do(beginTimer), Do(log) ), On('timer-finished', Goto('yellow') ) ), State('yellow', On('entry', Do(beginTimer), Do(log) ), On('timer-finished', Goto('red') ) ), State('red', On('entry', Do(beginTimer), Do(log) ), On('timer-finished', Goto('green') ) ), ); const actor = interpret(machine, {context:{}});