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:'a React.event ->
    (Rtime.time -> Rtime.time -> 'b) ->
    Rtime.t -> Rtime.time -> 'b React.event
  val stamps :
    ?stop:'a React.event ->
    ?start:Rtime.time ->
    (Rtime.time -> Rtime.time -> 'b * Rtime.time) ->
    Rtime.t -> 'b React.event
  val delay_e :
    ?stop:'a React.event ->
    Rtime.t -> Rtime.duration -> 'b React.event -> 'b React.event
  val delay_s :
    ?eq:('b -> 'b -> bool) ->
    ?stop:'a React.event ->
    Rtime.t -> Rtime.duration -> 'b -> 'b React.signal -> 'b React.signal
end