sig
  type t
  val invariant : t Core.Std.Invariant.inv
  val status : Clock.Event.t -> [ `Aborted | `Happened | `Waiting ]
  val abort :
    Clock.Event.t -> [ `Ok | `Previously_aborted | `Previously_happened ]
  val at :
    Core.Std.Time.t -> Clock.Event.t * [ `Aborted | `Happened ] Deferred.t
  val after :
    Core.Std.Time.Span.t ->
    Clock.Event.t * [ `Aborted | `Happened ] Deferred.t
  val sexp_of_t : Clock.Event.t -> Sexplib.Sexp.t
end