sig
  module Conf_spec :
    sig
      val ui :
        Assemblage.Private.Conf.t ->
        Assemblage.Private.Conf.t Cmdliner.Term.t
      val man : Assemblage.Private.Conf.t -> Cmdliner.Manpage.block list
      val scheme_ui :
        Assemblage.Private.Conf.scheme list ->
        Assemblage.Private.Conf.scheme option Cmdliner.Term.t
      val scheme_man :
        Assemblage.Private.Conf.scheme list -> Cmdliner.Manpage.block list
    end
  module Lib_prefs :
    sig
      type t = {
        fmt_utf8_enabled : bool;
        fmt_style_tags : [ `Ansi | `None ];
        log_level : Assemblage.Private.Log.level option;
        cmd_vcs_override_kind : Assemblage.Private.Cmd.Vcs.t option;
        cmd_vcs_override_exec : string option;
      }
      val set : Assemblage_driver.Lib_prefs.t -> unit
      val get : unit -> Assemblage_driver.Lib_prefs.t
      val pp : Format.formatter -> Assemblage_driver.Lib_prefs.t -> unit
      val ui : docs:string -> Assemblage_driver.Lib_prefs.t Cmdliner.Term.t
      val man_vars : Cmdliner.Manpage.block list
    end
  module Loader :
    sig
      type kind = [ `Toplevel ]
      val pp_kind : Format.formatter -> Assemblage_driver.Loader.kind -> unit
      type t = {
        kind : [ `Toplevel ];
        ocamlfind_exec : string;
        auto_lib : bool;
        includes : string list;
        files : Assemblage.Path.t list;
      }
      val load :
        ?level:Assemblage.Private.Log.level ->
        Assemblage_driver.Loader.t -> unit Assemblage.Private.Cmd.result
      val pp : Format.formatter -> Assemblage_driver.Loader.t -> unit
      val ui :
        ?kinds:Assemblage_driver.Loader.kind list ->
        ?files:Assemblage.Path.t list Cmdliner.Term.t ->
        docs:string -> unit -> Assemblage_driver.Loader.t Cmdliner.Term.t
      val man_vars :
        ?kinds:Assemblage_driver.Loader.kind list ->
        unit -> Cmdliner.Manpage.block list
    end
  module Driver :
    sig
      type init =
          (Assemblage_driver.Lib_prefs.t * Assemblage_driver.Loader.t) option
      val init :
        ?version_opt:bool ->
        ?kinds:Assemblage_driver.Loader.kind list ->
        docs:string ->
        unit -> Assemblage_driver.Driver.init * unit Cmdliner.Term.t
      val man_vars :
        ?kinds:Assemblage_driver.Loader.kind list ->
        unit -> Cmdliner.Manpage.block list
    end
end