sig
  type time = float
  type duration = float
  type t
  val create : ?earlier:(Rtime.t -> unit) -> (unit -> Rtime.time) -> Rtime.t
  val now : Rtime.t -> Rtime.time
  val wakeup : Rtime.t -> Rtime.duration option
  val progress : ?exec:bool -> Rtime.t -> unit
  val stamp :
    ?stop:'React.event ->
    (Rtime.time -> Rtime.time -> 'b) ->
    Rtime.t -> Rtime.time -> 'React.event
  val stamps :
    ?stop:'React.event ->
    ?start:Rtime.time ->
    (Rtime.time -> Rtime.time -> 'b * Rtime.time) ->
    Rtime.t -> 'React.event
  val delay_e :
    ?stop:'React.event ->
    Rtime.t -> Rtime.duration -> 'React.event -> 'React.event
  val delay_s :
    ?eq:('-> '-> bool) ->
    ?stop:'React.event ->
    Rtime.t -> Rtime.duration -> '-> 'React.signal -> 'React.signal
end