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