///|
fn main {
  println("--- Traffic Light Example ---")

  let builder : @fsm.Builder[String, String, Unit] = @fsm.Builder::new()
    .transition("Red", "Timer", "Green")
    .transition("Green", "Timer", "Yellow")
    .transition("Yellow", "Timer", "Red")
    .transition("Red", "PowerOutage", "Off")
    .transition("Green", "PowerOutage", "Off")
    .transition("Yellow", "PowerOutage", "Off")
    .transition("Off", "PowerRestore", "Red")

  let report = @fsm.validate_report(builder, "Red")
  println("Unreachable states: \{report.unreachable_states.length()}")
  println("Dead-end states: \{report.dead_end_states.length()}")

  println("Mermaid Diagram:\n" + @fsm.to_mermaid(builder))
}