sig
  type +'a t
  val const : '-> 'Cmdliner.Term.t
  val pure : '-> 'Cmdliner.Term.t
  val ( $ ) :
    ('-> 'b) Cmdliner.Term.t -> 'Cmdliner.Term.t -> 'Cmdliner.Term.t
  val app :
    ('-> 'b) Cmdliner.Term.t -> 'Cmdliner.Term.t -> 'Cmdliner.Term.t
  type 'a ret =
      [ `Error of bool * string
      | `Help of [ `Groff | `Pager | `Plain ] * string option
      | `Ok of 'a ]
  val ret : 'Cmdliner.Term.ret Cmdliner.Term.t -> 'Cmdliner.Term.t
  val main_name : string Cmdliner.Term.t
  val choice_names : string list Cmdliner.Term.t
  val man_format : [ `Groff | `Pager | `Plain ] Cmdliner.Term.t
  type info
  val info :
    ?sdocs:string ->
    ?man:Cmdliner.Manpage.block list ->
    ?docs:string ->
    ?doc:string -> ?version:string -> string -> Cmdliner.Term.info
  val name : Cmdliner.Term.info -> string
  type 'a result =
      [ `Error of [ `Exn | `Parse | `Term ] | `Help | `Ok of '| `Version ]
  val eval :
    ?help:Format.formatter ->
    ?err:Format.formatter ->
    ?catch:bool ->
    ?env:(string -> string option) ->
    ?argv:string array ->
    'Cmdliner.Term.t * Cmdliner.Term.info -> 'Cmdliner.Term.result
  val eval_choice :
    ?help:Format.formatter ->
    ?err:Format.formatter ->
    ?catch:bool ->
    ?env:(string -> string option) ->
    ?argv:string array ->
    'Cmdliner.Term.t * Cmdliner.Term.info ->
    ('Cmdliner.Term.t * Cmdliner.Term.info) list -> 'Cmdliner.Term.result
  val eval_peek_opts :
    ?version_opt:bool ->
    ?env:(string -> string option) ->
    ?argv:string array ->
    'Cmdliner.Term.t -> 'a option * 'Cmdliner.Term.result
end