sig
  type state = Ketrew_pure.Target.State.t
  type item = private {
    time : float;
    simple : Ketrew_pure.Target.State.simple;
    name : string;
    message : string option;
    more_info : string list;
    finished : bool;
  }
  val item_to_yojson : Ketrew_pure.Target.State.Flat.item -> Yojson.Safe.json
  val item_of_yojson :
    Yojson.Safe.json ->
    [ `Error of string | `Ok of Ketrew_pure.Target.State.Flat.item ]
  val time : Ketrew_pure.Target.State.Flat.item -> float
  val simple :
    Ketrew_pure.Target.State.Flat.item -> Ketrew_pure.Target.State.simple
  val name : Ketrew_pure.Target.State.Flat.item -> string
  val message : Ketrew_pure.Target.State.Flat.item -> string option
  val more_info : Ketrew_pure.Target.State.Flat.item -> string list
  val finished : Ketrew_pure.Target.State.Flat.item -> bool
  type t = private { history : Ketrew_pure.Target.State.Flat.item list; }
  val to_yojson : Ketrew_pure.Target.State.Flat.t -> Yojson.Safe.json
  val of_yojson :
    Yojson.Safe.json ->
    [ `Error of string | `Ok of Ketrew_pure.Target.State.Flat.t ]
  val empty : unit -> Ketrew_pure.Target.State.Flat.t
  val of_state :
    Ketrew_pure.Target.State.Flat.state -> Ketrew_pure.Target.State.Flat.t
  val history :
    Ketrew_pure.Target.State.Flat.t ->
    Ketrew_pure.Target.State.Flat.item list
  val latest :
    Ketrew_pure.Target.State.Flat.t ->
    Ketrew_pure.Target.State.Flat.item option
  val since :
    Ketrew_pure.Target.State.Flat.t ->
    float -> Ketrew_pure.Target.State.Flat.t option
  val merge :
    Ketrew_pure.Target.State.Flat.t ->
    Ketrew_pure.Target.State.Flat.t -> Ketrew_pure.Target.State.Flat.t
end