<?php
namespace nur\data\flow;

/**
 * Interface IStateMachine: interface pour une machine à état
 */
interface IStateMachine {
  /** obtenir l'état courant */
  function get_current_state(): array;

  /** obtenir la liste des actions possible à partir de l'état courant */
  function get_next_actions(): array;

  /** faire l'action spécifiée */
  function perform_action(string $action, ?array $data=null): void;
}