sig
  type group
  exception Abort of (Unixqueue.group * exn)
  type wait_id
  and operation =
      Wait_in of Unix.file_descr
    | Wait_out of Unix.file_descr
    | Wait_oob of Unix.file_descr
    | Wait of Unixqueue.wait_id
  and event =
      Input_arrived of (Unixqueue.group * Unix.file_descr)
    | Output_readiness of (Unixqueue.group * Unix.file_descr)
    | Out_of_band of (Unixqueue.group * Unix.file_descr)
    | Timeout of (Unixqueue.group * Unixqueue.operation)
    | Signal
    | Extra of exn
  and event_system
  val create_unix_event_system : unit -> Unixqueue.event_system
  val new_group : Unixqueue.event_system -> Unixqueue.group
  val new_wait_id : Unixqueue.event_system -> Unixqueue.wait_id
  val exists_resource : Unixqueue.event_system -> Unixqueue.operation -> bool
  val add_resource :
    Unixqueue.event_system ->
    Unixqueue.group -> Unixqueue.operation * float -> unit
  val add_close_action :
    Unixqueue.event_system ->
    Unixqueue.group -> Unix.file_descr * (Unix.file_descr -> unit) -> unit
  val add_abort_action :
    Unixqueue.event_system ->
    Unixqueue.group -> (Unixqueue.group -> exn -> unit) -> unit
  val remove_resource :
    Unixqueue.event_system -> Unixqueue.group -> Unixqueue.operation -> unit
  val add_handler :
    Unixqueue.event_system ->
    Unixqueue.group ->
    (Unixqueue.event_system ->
     Unixqueue.event Equeue.t -> Unixqueue.event -> unit) ->
    unit
  val add_event : Unixqueue.event_system -> Unixqueue.event -> unit
  val clear : Unixqueue.event_system -> Unixqueue.group -> unit
  val run : Unixqueue.event_system -> unit
  val once :
    Unixqueue.event_system ->
    Unixqueue.group -> float -> (unit -> unit) -> unit
  val set_debug_mode : bool -> unit
  val attach_to_tcl_queue :
    Unixqueue.event_system -> (Unixqueue.event_system -> unit) -> unit
  val init_mt : (unit -> (unit -> unit) * (unit -> unit)) -> unit
end