sig
  type cache_entry
  type suspension
  type build_status =
      Bbuilt
    | Bcannot_be_built
    | Bnot_built_yet
    | Bsuspension of Resource.Cache.suspension
  val clean : unit -> unit
  val resource_state : Pathname.t -> Resource.Cache.build_status
  val resource_changed : Pathname.t -> unit
  val resource_has_changed : Pathname.t -> bool
  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 -> unit) -> Pathname.t list -> unit
  val resume_resource : Pathname.t -> unit
  val resume_suspension : Resource.Cache.suspension -> unit
  val get_optional_resource_suspension :
    Pathname.t -> (Command.t * (unit -> unit)) option
  val clear_resource_failed : Pathname.t -> unit
  val add_dependency : Pathname.t -> Pathname.t -> unit
  val fold_dependencies : (string -> string -> '-> 'a) -> '-> 'a
  val external_is_up_to_date : Pathname.t -> bool
  val dependencies : Pathname.t -> Resource.Resources.t
  val print_cache : Format.formatter -> unit -> unit
  val print_dependencies : Format.formatter -> unit -> unit
end