sig
  val main : unit -> unit
  val start : unit -> Thread.t
  val thread_main : unit -> unit
  val reset : unit -> unit
  val async : ('a -> unit) -> 'a -> unit
  val sync : ('a -> 'b) -> 'a -> 'b
  val gui_safe : unit -> bool
end