sig
  type t
  val v :
    ?exists:bool As_conf.value ->
    ?args:As_args.t ->
    ?schemes:As_conf.scheme list ->
    string -> parts:[< As_part.kind ] As_part.t list -> As_project.t
  val name : As_project.t -> string
  val exists : As_project.t -> bool As_conf.value
  val args : As_project.t -> As_args.t
  val schemes : As_project.t -> As_conf.scheme list
  val parts : As_project.t -> As_part.kind As_part.t list
  val deps : As_project.t -> As_conf.Key.Set.t
  val conf : As_project.t -> As_conf.t
  val with_conf : As_project.t -> As_conf.t -> As_project.t
  val eval : As_project.t -> 'As_conf.value -> 'a
  val eval_key : As_project.t -> 'As_conf.key -> 'a
  val version : As_project.t -> string
  val products :
    ?kind:[ `Any | `Input | `Output | `Source ] ->
    As_project.t -> As_path.Set.t
  val watermark_string : ?suffix:string -> As_project.t -> string
  val pp_signature : Format.formatter -> As_project.t -> unit
  val assemble : As_project.t -> unit
  val list : unit -> As_project.t list
end