package state.ts2;

/**
 * This interface describes the actions that turnstile can perform.
 * @author fpereira
 *
 */
public interface TurnstileMachineInterface {
  /**
   * This method closes the turnstile, so that nobody else can pass through it.
   */
  void lock();

  /**
   * This method unlocks the turnstile, so that someone can go across it.
   */
  void unlock();

  /**
   * This method sounds an alarm. It may happen, for instance, when someone
   * tries to pass the turnstile when it is locked.
   */
  void alarm();

  /**
   * This method lights a "thank you" message to the user.
   */
  void thankyou();
}
