sig
  type t = Timer.t
  type event = Timer.event
  type interval =
    Timer.interval = private
      INone
    | INormal of Span.t
    | IRandom of Span.t * float
  val create : ?min_size:int -> unit -> t
  val size : t -> int
  val deactivate : t -> unit
  val add :
    t ->
    (event -> Time.t -> unit) ->
    ?randomize:float -> ?interval:Span.t -> Span.t -> event
  val add_abs :
    t ->
    (event -> Time.t -> unit) ->
    ?randomize:float -> ?interval:Span.t -> Time.t -> event
  val remove : event -> unit
  val reschedule :
    event -> ?randomize:float -> ?interval:Span.t -> Span.t -> unit
  val get_timer : event -> t
  val get_event_time : event -> Time.t
  val get_event_interval : event -> interval
  val is_activated : t -> bool
end