sig
  type 'a t = 'a React.event
  val never : 'a React.event
  val create : unit -> 'a React.event * ('a -> unit)
  val retain : 'a React.event -> (unit -> unit) -> [ `R of unit -> unit ]
  val stop : 'a React.event -> unit
  val equal : 'a React.event -> 'a React.event -> bool
  val trace :
    ?iff:bool React.signal ->
    ('a -> unit) -> 'a React.event -> 'a React.event
  val once : 'a React.event -> 'a React.event
  val drop_once : 'a React.event -> 'a React.event
  val app : ('a -> 'b) React.event -> 'a React.event -> 'b React.event
  val map : ('a -> 'b) -> 'a React.event -> 'b React.event
  val stamp : 'b React.event -> 'a -> 'a React.event
  val filter : ('a -> bool) -> 'a React.event -> 'a React.event
  val fmap : ('a -> 'b option) -> 'a React.event -> 'b React.event
  val diff : ('a -> 'a -> 'b) -> 'a React.event -> 'b React.event
  val changes : ?eq:('a -> 'a -> bool) -> 'a React.event -> 'a React.event
  val when_ : bool React.signal -> 'a React.event -> 'a React.event
  val dismiss : 'b React.event -> 'a React.event -> 'a React.event
  val until : 'a React.event -> 'b React.event -> 'b React.event
  val accum : ('a -> 'a) React.event -> 'a -> 'a React.event
  val fold : ('a -> 'b -> 'a) -> 'a -> 'b React.event -> 'a React.event
  val select : 'a React.event list -> 'a React.event
  val merge : ('a -> 'b -> 'a) -> 'a -> 'b React.event list -> 'a React.event
  val switch : 'a React.event -> 'a React.event React.event -> 'a React.event
  val fix : ('a React.event -> 'a React.event * 'b) -> 'b
end