sig
  type snapshot = {
    snapshot_file : string;
    snapshot_event : int;
    snapshot_time : float;
    snapshot_agents : (int * User_graph.connected_component) list;
    snapshot_tokens : (string * Nbr.t) array;
  }
  type din_data = {
    din_name : string;
    din_kind : Primitives.din_kind;
    din_start : float;
    din_hits : int array;
    din_fluxs : float array array;
  }
  type din = {
    din_rules : string array;
    din_data : Data.din_data;
    din_end : float;
  }
  type file_line = {
    file_line_name : string option;
    file_line_text : string;
  }
  type t =
      DIN of Data.din
    | DeltaActivities of int * (int * (float * float)) list
    | Plot of Nbr.t array
    | Print of Data.file_line
    | TraceStep of Trace.step
    | Snapshot of Data.snapshot
    | Log of string
    | Species of string * float * User_graph.connected_component
    | Warning of Locality.t option * (Format.formatter -> unit)
  val print_snapshot : ?uuid:int -> Format.formatter -> Data.snapshot -> unit
  val print_dot_snapshot :
    ?uuid:int -> Format.formatter -> Data.snapshot -> unit
  val write_snapshot : Bi_outbuf.t -> Data.snapshot -> unit
  val string_of_snapshot : ?len:int -> Data.snapshot -> string
  val read_snapshot :
    Yojson.Safe.lexer_state -> Lexing.lexbuf -> Data.snapshot
  val snapshot_of_string : string -> Data.snapshot
  val print_dot_din : ?uuid:int -> Format.formatter -> Data.din -> unit
  val print_html_din : Format.formatter -> Data.din -> unit
  val write_din : Bi_outbuf.t -> Data.din -> unit
  val string_of_din : ?len:int -> Data.din -> string
  val read_din : Yojson.Safe.lexer_state -> Lexing.lexbuf -> Data.din
  val din_of_string : string -> Data.din
  type plot = {
    plot_legend : string array;
    plot_series : float option array list;
  }
  val add_plot_line : Nbr.t array -> Data.plot -> Data.plot
  val init_plot : Model.t -> Data.plot
  val write_plot : Bi_outbuf.t -> Data.plot -> unit
  val string_of_plot : ?len:int -> Data.plot -> string
  val read_plot : Yojson.Safe.lexer_state -> Lexing.lexbuf -> Data.plot
  val plot_of_string : string -> Data.plot
  val print_plot_legend :
    is_tsv:bool -> Format.formatter -> string array -> unit
  val print_plot_line :
    is_tsv:bool ->
    (Format.formatter -> '-> unit) -> Format.formatter -> 'a array -> unit
  val export_plot : is_tsv:bool -> Data.plot -> string
  val print_initial_inputs :
    ?uuid:int ->
    Configuration.t ->
    Model.t ->
    Contact_map.t ->
    Format.formatter ->
    (Primitives.alg_expr * Primitives.elementary_rule) list -> unit
  val print_warning :
    ?pos:Locality.t -> Format.formatter -> (Format.formatter -> unit) -> unit
end