sig
  type 'a value
  val const : '-> 'As_conf.value
  val app : ('-> 'b) As_conf.value -> 'As_conf.value -> 'As_conf.value
  val ( $ ) :
    ('-> 'b) As_conf.value -> 'As_conf.value -> 'As_conf.value
  val true_ : bool As_conf.value
  val false_ : bool As_conf.value
  val neg : bool As_conf.value -> bool As_conf.value
  val ( &&& ) :
    bool As_conf.value -> bool As_conf.value -> bool As_conf.value
  val ( ||| ) :
    bool As_conf.value -> bool As_conf.value -> bool As_conf.value
  val pick_if :
    bool As_conf.value ->
    'As_conf.value -> 'As_conf.value -> 'As_conf.value
  module Option :
    sig
      val wrap : 'As_conf.value option -> 'a option As_conf.value
      val some : 'As_conf.value -> 'a option As_conf.value
      val get :
        ?none:'As_conf.value -> 'a option As_conf.value -> 'As_conf.value
    end
  type 'parser = string -> [ `Error of string | `Ok of 'a ]
  type 'a printer = Format.formatter -> '-> unit
  type 'a converter = 'As_conf.parser * 'As_conf.printer
  val parser : 'As_conf.converter -> 'As_conf.parser
  val printer : 'As_conf.converter -> 'As_conf.printer
  type 'a key
  module Key :
    sig
      type t = V : 'As_conf.key -> As_conf.Key.t
      val hide_type : 'As_conf.key -> As_conf.Key.t
      val equal : As_conf.Key.t -> As_conf.Key.t -> bool
      val compare : As_conf.Key.t -> As_conf.Key.t -> int
      val id : 'As_conf.key -> int
      val name : 'As_conf.key -> string
      val public : 'As_conf.key -> bool
      val converter : 'As_conf.key -> 'As_conf.converter
      val default : 'As_conf.key -> 'As_conf.value
      val doc : 'As_conf.key -> string option
      val docv : 'As_conf.key -> string option
      val docs : 'As_conf.key -> string option
      module Set :
        sig
          type elt = t
          type t
          val empty : t
          val is_empty : t -> bool
          val mem : elt -> t -> bool
          val add : elt -> t -> t
          val singleton : elt -> t
          val remove : elt -> t -> t
          val union : t -> t -> t
          val inter : t -> t -> t
          val diff : t -> t -> t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val for_all : (elt -> bool) -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val partition : (elt -> bool) -> t -> t * t
          val cardinal : t -> int
          val elements : t -> elt list
          val min_elt : t -> elt
          val max_elt : t -> elt
          val choose : t -> elt
          val split : elt -> t -> t * bool * t
          val find : elt -> t -> elt
          val of_list : elt list -> As_conf.Key.t
        end
      module Map :
        sig
          type key = t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val mem : key -> 'a t -> bool
          val add : key -> '-> 'a t -> 'a t
          val singleton : key -> '-> 'a t
          val remove : key -> 'a t -> 'a t
          val merge :
            (key -> 'a option -> 'b option -> 'c option) ->
            'a t -> 'b t -> 'c t
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val iter : (key -> '-> unit) -> 'a t -> unit
          val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
          val for_all : (key -> '-> bool) -> 'a t -> bool
          val exists : (key -> '-> bool) -> 'a t -> bool
          val filter : (key -> '-> bool) -> 'a t -> 'a t
          val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
          val cardinal : 'a t -> int
          val bindings : 'a t -> (key * 'a) list
          val min_binding : 'a t -> key * 'a
          val max_binding : 'a t -> key * 'a
          val choose : 'a t -> key * 'a
          val split : key -> 'a t -> 'a t * 'a option * 'a t
          val find : key -> 'a t -> 'a
          val map : ('-> 'b) -> 'a t -> 'b t
          val mapi : (key -> '-> 'b) -> 'a t -> 'b t
          val dom : 'As_conf.Key.t -> As_conf.Key.Set.t
        end
    end
  val key :
    ?public:bool ->
    ?docs:string ->
    ?docv:string ->
    ?doc:string ->
    string -> 'As_conf.converter -> 'As_conf.value -> 'As_conf.key
  val value : 'As_conf.key -> 'As_conf.value
  val manual_value : As_conf.Key.Set.t -> '-> 'As_conf.value
  val bool : bool As_conf.converter
  val int : int As_conf.converter
  val string : string As_conf.converter
  val path : As_path.t As_conf.converter
  val abs_path : As_path.abs As_conf.converter
  val rel_path : As_path.rel As_conf.converter
  val enum : (string * 'a) list -> 'As_conf.converter
  val version : (int * int * int * string option) As_conf.converter
  type t
  val empty : As_conf.t
  val is_empty : As_conf.t -> bool
  val mem : As_conf.t -> 'As_conf.key -> bool
  val add : As_conf.t -> 'As_conf.key -> As_conf.t
  val set : As_conf.t -> 'As_conf.key -> 'As_conf.value -> As_conf.t
  val rem : As_conf.t -> 'As_conf.key -> As_conf.t
  val merge : As_conf.t -> As_conf.t -> As_conf.t
  val find : As_conf.t -> 'As_conf.key -> 'As_conf.value option
  val get : As_conf.t -> 'As_conf.key -> 'As_conf.value
  val domain : As_conf.t -> As_conf.Key.Set.t
  val of_keys : As_conf.Key.Set.t -> As_conf.t
  val eval : As_conf.t -> 'As_conf.value -> 'a
  val deps : 'As_conf.value -> As_conf.Key.Set.t
  val pp : Format.formatter -> As_conf.t -> unit
  type scheme = string * (string * As_conf.t)
  type def
  val def : 'As_conf.key -> '-> As_conf.def
  val defv : 'As_conf.key -> 'As_conf.value -> As_conf.def
  val scheme :
    ?doc:string ->
    ?base:As_conf.scheme -> string -> As_conf.def list -> As_conf.scheme
  val pp_key_dup : Format.formatter -> As_conf.Key.t -> unit
  val project_version : string As_conf.key
  val docs_project : string
  val doc_project : string
  val docs_machine_information : string
  val doc_machine_information : string
  val uname : string As_conf.key
  val host_os : string As_conf.key
  val host_arch : string As_conf.key
  val host_word_size : int As_conf.key
  val target_os : string As_conf.key
  val target_arch : string As_conf.key
  val target_word_size : int As_conf.key
  val docs_build_directories : string
  val doc_build_directories : string
  val root_dir : As_path.t As_conf.key
  val build_dir : As_path.rel As_conf.key
  val docs_build_properties : string
  val doc_build_properties : string
  val debug : bool As_conf.key
  val profile : bool As_conf.key
  val warn_error : bool As_conf.key
  val test : bool As_conf.key
  val doc : bool As_conf.key
  val jobs : int As_conf.key
  val docs_ocaml_system : string
  val doc_ocaml_system : string
  val ocaml_native_tools : bool As_conf.key
  val ocaml_version : (int * int * int * string option) As_conf.key
  val ocaml_byte : bool As_conf.key
  val ocaml_native : bool As_conf.key
  val ocaml_native_dynlink : bool As_conf.key
  val ocaml_build_ast : bool As_conf.key
  val ocaml_js : bool As_conf.key
  val ocaml_annot : bool As_conf.key
  val ocaml_dumpast : string As_conf.key
  val ocamlc : string As_conf.key
  val ocamlopt : string As_conf.key
  val js_of_ocaml : string As_conf.key
  val ocamldep : string As_conf.key
  val ocamlmklib : string As_conf.key
  val ocamldoc : string As_conf.key
  val ocamllex : string As_conf.key
  val ocamlyacc : string As_conf.key
  val ocaml : string As_conf.key
  val ocamlrun : string As_conf.key
  val ocamldebug : string As_conf.key
  val ocamlprof : string As_conf.key
  val ocamlfind : string As_conf.key
  val opam : string As_conf.key
  val opam_installer : string As_conf.key
  val opam_admin : string As_conf.key
  val docs_c_system : string
  val doc_c_system : string
  val c_dynlink : bool As_conf.key
  val c_js : bool As_conf.key
  val cc : string As_conf.key
  val pkg_config : string As_conf.key
  val docs_system_utilities : string
  val doc_system_utilities : string
  val echo : string As_conf.key
  val cd : string As_conf.key
  val ln : string As_conf.key
  val cp : string As_conf.key
  val mv : string As_conf.key
  val rm : string As_conf.key
  val rmdir : string As_conf.key
  val mkdir : string As_conf.key
  val cat : string As_conf.key
  val make : string As_conf.key
end