sig
  module Typ :
    sig
      type 'a typ = 'Dom.Event.typ
      val click : Dom_html.mouseEvent Js.t typ
      val dblclick : Dom_html.mouseEvent Js.t typ
      val mousedown : Dom_html.mouseEvent Js.t typ
      val mouseup : Dom_html.mouseEvent Js.t typ
      val mouseover : Dom_html.mouseEvent Js.t typ
      val mousemove : Dom_html.mouseEvent Js.t typ
      val mouseout : Dom_html.mouseEvent Js.t typ
      val keypress : Dom_html.keyboardEvent Js.t typ
      val keydown : Dom_html.keyboardEvent Js.t typ
      val keyup : Dom_html.keyboardEvent Js.t typ
      val mousewheel : Dom_html.mousewheelEvent Js.t typ
      val _DOMMouseScroll : Dom_html.mouseScrollEvent Js.t typ
      val touchstart : Dom_html.touchEvent Js.t typ
      val touchmove : Dom_html.touchEvent Js.t typ
      val touchend : Dom_html.touchEvent Js.t typ
      val touchcancel : Dom_html.touchEvent Js.t typ
      val dragstart : Dom_html.dragEvent Js.t typ
      val dragend : Dom_html.dragEvent Js.t typ
      val dragenter : Dom_html.dragEvent Js.t typ
      val dragover : Dom_html.dragEvent Js.t typ
      val dragleave : Dom_html.dragEvent Js.t typ
      val drag : Dom_html.dragEvent Js.t typ
      val drop : Dom_html.dragEvent Js.t typ
      val change : Dom_html.event Js.t typ
      val input : Dom_html.event Js.t typ
      val submit : Dom_html.event Js.t typ
      val scroll : Dom_html.event Js.t typ
      val focus : Dom_html.event Js.t typ
      val blur : Dom_html.event Js.t typ
      val load : Dom_html.event Js.t typ
      val beforeunload : Dom_html.event Js.t typ
      val resize : Dom_html.event Js.t typ
      val popstate : Dom_html.event Js.t typ
      val hashchange : Dom_html.event Js.t typ
      val abort : Dom_html.event Js.t typ
      val select : Dom_html.event Js.t typ
      val online : Dom_html.event Js.t typ
      val offline : Dom_html.event Js.t typ
      val checking : Dom_html.event Js.t typ
      val error : Dom_html.event Js.t typ
      val noupdate : Dom_html.event Js.t typ
      val downloading : Dom_html.event Js.t typ
      val progress : Dom_html.event Js.t typ
      val updateready : Dom_html.event Js.t typ
      val cached : Dom_html.event Js.t typ
      val obsolete : Dom_html.event Js.t typ
      val make : string -> 'a typ
    end
  type listener
  val listen :
    ?capture:bool ->
    (#Dom_html.eventTarget as 'a) Js.t ->
    (#Dom_html.event as 'b) Js.t Dom_events.Typ.typ ->
    ('Js.t -> 'Js.t -> bool) -> Dom_events.listener
  val stop_listen : Dom_events.listener -> unit
end