sig
  module Efficiency :
    sig
      type t = {
        mutable consecutive : int;
        mutable no_more_binary : int;
        mutable no_more_unary : int;
        mutable clashing_instance : int;
        mutable time_correction : int;
      }
      val write_t : Bi_outbuf.t -> Counter.Efficiency.t -> unit
      val string_of_t : ?len:int -> Counter.Efficiency.t -> string
      val read_t :
        Yojson.Safe.lexer_state -> Lexing.lexbuf -> Counter.Efficiency.t
      val t_of_string : string -> Counter.Efficiency.t
    end
  type progressBar = { progressSize : int; progressChar : char; }
  val default_progress : Counter.progressBar
  type period = DE of int | DT of float
  type t
  val create :
    ?init_t:float ->
    ?init_e:int ->
    ?max_time:float ->
    ?max_event:int -> plot_period:Counter.period -> Counter.t
  val reinitialize : Counter.t -> unit
  val current_simulation_info : Counter.t -> unit Trace.Simulation_info.t
  val next_story : Counter.t -> unit Trace.Simulation_info.t
  val fill :
    outputs:(Data.t -> unit) ->
    Counter.t -> dt:float -> (Counter.t -> Nbr.t array) -> unit
  val one_time_advance : Counter.t -> float -> unit
  val one_constructive_event : Counter.t -> bool
  val one_clashing_instance_event : Counter.t -> bool
  val one_no_more_unary_event : Counter.t -> bool
  val one_no_more_binary_event : Counter.t -> bool
  val one_time_correction_event : Counter.t -> Nbr.t -> bool
  val inc_stories : Counter.t -> unit
  val init_time : Counter.t -> float
  val max_time : Counter.t -> float option
  val max_events : Counter.t -> int option
  val set_max_time : Counter.t -> float option -> unit
  val set_max_events : Counter.t -> int option -> unit
  val event_percentage : Counter.t -> int option
  val time_percentage : Counter.t -> int option
  val tracked_events : Counter.t -> int option
  val positive_plot_period : Counter.t -> bool
  val plot_period : Counter.t -> Counter.period
  val set_plot_period : Counter.t -> Counter.period -> unit
  val current_time : Counter.t -> float
  val current_event : Counter.t -> int
  val current_story : Counter.t -> int
  val nb_null_event : Counter.t -> int
  val consecutive_null_event : Counter.t -> int
  val get_efficiency : Counter.t -> Counter.Efficiency.t
  val print_efficiency : Format.formatter -> Counter.t -> unit
  val tick : efficiency:bool -> Counter.progressBar -> Counter.t -> unit
  val complete_progress_bar : Counter.t -> unit
end