sig
  val clean : unit -> unit
  type knowledge = Yes | No | Unknown
  type suspension = Command.t * (unit -> unit)
  type build_status =
      Bbuilt
    | Bcannot_be_built
    | Bnot_built_yet
    | Bsuspension of Resource.Cache.suspension
  type cache_entry = {
    mutable built : Resource.Cache.build_status;
    mutable changed : Resource.Cache.knowledge;
    mutable dependencies : Resource.Resources.t;
  }
  val empty : unit -> Resource.Cache.cache_entry
  val print_knowledge : Format.formatter -> Resource.Cache.knowledge -> unit
  val print_build_status :
    Format.formatter -> Resource.Cache.build_status -> unit
  val print_cache_entry :
    Format.formatter -> Resource.Cache.cache_entry -> unit
  val cache : (Pathname.t, Resource.Cache.cache_entry) Hashtbl.t
  val get : Pathname.t -> Resource.Cache.cache_entry
  val fold_cache :
    (Pathname.t -> Resource.Cache.cache_entry -> '-> 'a) -> '-> 'a
  val print_cache : Format.formatter -> unit -> unit
  val print_graph : Format.formatter -> unit -> unit
  val resource_changed : Pathname.t -> unit
  val external_is_up_to_date : string -> bool
  val source_is_up_to_date : string -> Pathname.t -> bool
  val prod_is_up_to_date : Pathname.t -> bool
  val resource_has_changed : Pathname.t -> bool
  val resource_state : Pathname.t -> Resource.Cache.build_status
  val resource_built : Pathname.t -> unit
  val resource_failed : Pathname.t -> unit
  val import_in_build_dir : Pathname.t -> unit
  val suspend_resource :
    Pathname.t -> Command.t -> (unit -> 'a) -> Pathname.t list -> unit
  val resume_suspension : Command.t * (unit -> 'a) -> 'a
  val resume_resource : Pathname.t -> unit
  val get_optional_resource_suspension :
    Pathname.t -> Resource.Cache.suspension option
  val clear_resource_failed : Pathname.t -> unit
  val dependencies : Pathname.t -> Resource.Resources.t
  val fold_dependencies :
    (Pathname.t -> Resource.Resources.elt -> '-> 'a) -> '-> 'a
  val add_dependency : Pathname.t -> Resource.Resources.elt -> unit
  val print_dependencies : Format.formatter -> unit -> unit
end