`val is_pure : string -> bool`
`val exists : string -> bool`
`type kind = [`

1. `|` ``Pure`
2. `|` ``Mutable`
3. `|` ``Mutator`

`]`
`type kind_arg = [`

1. `|` ``Shallow_const`
2. `|` ``Object_literal`
3. `|` ``Const`
4. `|` ``Mutable`

`]`
`type condition = [`

1. `|` ``If of string`
2. `|` ``Ifnot of string`

`]`
`type t = [`

1. `|` ``Requires of string list`
2. `|` ``Provides of string * kind * kind_arg list option`
3. `|` ``Version of ((int -> int -> bool) * string) list`
4. `|` ``Weakdef`
5. `|` ``Always`
6. `|` ``Alias of string`
7. `|` `condition`

`]`
`val kind : string -> kind`
`val kind_args : string -> kind_arg list option`
`val register : string -> kind -> kind_arg list option -> int option -> unit`
`val arity : string -> int`
`val has_arity : string -> int -> bool`
`val alias : string -> string -> unit`
`val resolve : string -> string`
`val add_external : string -> unit`
`val get_external : unit -> Stdlib.StringSet.t`
`val need_named_value : string -> bool`
`val register_named_value : string -> unit`
`val reset : unit -> unit`