sig
  val init :
    OpamTypes.repository ->
    OpamTypes.compiler ->
    jobs:int ->
    OpamTypes.shell -> OpamTypes.filename -> [ `ask | `no | `yes ] -> unit
  val list :
    print_short:bool ->
    filter:[ `all | `installable | `installed | `roots ] ->
    order:[ `depends | `normal ] ->
    exact_name:bool ->
    case_sensitive:bool ->
    ?depends:OpamTypes.atom list ->
    ?reverse_depends:bool ->
    ?recursive_depends:bool ->
    ?depopts:bool -> ?depexts:string list -> string list -> unit
  val info :
    fields:string list ->
    raw_opam:bool -> where:bool -> OpamTypes.atom list -> unit
  val install : OpamTypes.atom list -> bool option -> bool -> unit
  val reinstall : OpamTypes.atom list -> unit
  val update : repos_only:bool -> string list -> unit
  val upgrade : OpamTypes.atom list -> unit
  val fixup : unit -> unit
  val remove : autoremove:bool -> force:bool -> OpamTypes.atom list -> unit
  module CONFIG :
    sig
      val env :
        csh:bool -> sexp:bool -> fish:bool -> inplace_path:bool -> unit
      val setup :
        OpamTypes.user_config option ->
        OpamTypes.global_config option -> unit
      val setup_list : OpamTypes.shell -> OpamTypes.filename -> unit
      val exec : inplace_path:bool -> string list -> unit
      val list : OpamTypes.name list -> unit
      val variable : OpamTypes.full_variable -> unit
      val subst : OpamTypes.basename list -> unit
    end
  module REPOSITORY :
    sig
      val list : short:bool -> unit
      val add :
        OpamTypes.repository_name ->
        OpamTypes.repository_kind ->
        OpamTypes.address -> priority:int option -> unit
      val remove : OpamTypes.repository_name -> unit
      val priority : OpamTypes.repository_name -> priority:int -> unit
      val set_url : OpamTypes.repository_name -> OpamTypes.address -> unit
    end
  module SWITCH :
    sig
      val switch : quiet:bool -> warning:bool -> OpamTypes.switch -> unit
      val install :
        quiet:bool ->
        warning:bool ->
        update_config:bool -> OpamTypes.switch -> OpamTypes.compiler -> unit
      val import : OpamTypes.filename option -> unit
      val export : OpamTypes.filename option -> unit
      val remove : OpamTypes.switch -> unit
      val reinstall : OpamTypes.switch -> unit
      val list : print_short:bool -> installed:bool -> all:bool -> unit
      val show : unit -> unit
    end
  module PIN :
    sig
      val pin :
        OpamPackage.Name.t ->
        ?edit:bool -> ?action:bool -> OpamTypes.pin_option option -> unit
      val edit : ?action:bool -> OpamPackage.Name.t -> unit
      val unpin : ?action:bool -> OpamPackage.Name.t -> unit
      val list : short:bool -> unit -> unit
    end
end