sig
  module Event :
    sig
      type t = Clock.Event.t
      val status : t -> [ `Aborted | `Happened | `Waiting ]
      val abort : t -> [ `Ok | `Previously_aborted | `Previously_happened ]
    end
  val after : Core.Std.Time.Span.t -> unit Deferred.t
  val after_event :
    Core.Std.Time.Span.t -> [ `Aborted | `Happened ] Deferred.t * Event.t
  val with_timeout :
    Core.Std.Time.Span.t ->
    'Deferred.t -> [ `Result of '| `Timeout ] Deferred.t
  val at : Core.Std.Time.t -> unit Deferred.t
  val at_event :
    Core.Std.Time.t -> [ `Aborted | `Happened ] Deferred.t * Event.t
  val at_varying_intervals :
    ?stop:unit Deferred.t ->
    (unit -> Core.Std.Time.Span.t) -> unit Async_stream.t
  val at_intervals :
    ?stop:unit Deferred.t -> Core.Std.Time.Span.t -> unit Async_stream.t
  val every' :
    ?start:unit Deferred.t ->
    ?stop:unit Deferred.t ->
    ?continue_on_error:bool ->
    Core.Std.Time.Span.t -> (unit -> unit Deferred.t) -> unit
  val every :
    ?start:unit Deferred.t ->
    ?stop:unit Deferred.t ->
    ?continue_on_error:bool -> Core.Std.Time.Span.t -> (unit -> unit) -> unit
  val ounit_tests : unit -> OUnit.test
end