sig
  type t
  type plugin = [ `Compiled of string | `OCamlfind of string ]
  type explorer_defaults
  val default_explorer_defaults : Ketrew_configuration.explorer_defaults
  val explorer :
    ?request_targets_ids:[ `All | `Younger_than of [ `Days of float ] ] ->
    ?targets_per_page:int ->
    ?targets_to_prefetch:int ->
    unit -> Ketrew_configuration.explorer_defaults
  type ui
  val ui :
    ?with_color:bool ->
    ?explorer:Ketrew_configuration.explorer_defaults ->
    ?with_cbreak:bool -> unit -> Ketrew_configuration.ui
  type engine
  val engine :
    ?database_parameters:string ->
    ?turn_unix_ssh_failure_into_target_failure:bool ->
    ?host_timeout_upper_bound:float ->
    ?maximum_successive_attempts:int -> unit -> Ketrew_configuration.engine
  type authorized_tokens
  val authorized_token :
    name:string -> string -> Ketrew_configuration.authorized_tokens
  val authorized_tokens_path :
    string -> Ketrew_configuration.authorized_tokens
  type server
  val server :
    ?ui:Ketrew_configuration.ui ->
    ?engine:Ketrew_configuration.engine ->
    ?authorized_tokens:Ketrew_configuration.authorized_tokens list ->
    ?return_error_messages:bool ->
    ?command_pipe:string ->
    ?daemon:bool ->
    ?log_path:string ->
    [ `Tls of string * string * int ] ->
    [> `Server of Ketrew_configuration.server ]
  type standalone
  val standalone :
    ?ui:Ketrew_configuration.ui ->
    ?engine:Ketrew_configuration.engine ->
    unit -> [> `Standalone of Ketrew_configuration.standalone ]
  type client
  val client :
    ?ui:Ketrew_configuration.ui ->
    token:string -> string -> [> `Client of Ketrew_configuration.client ]
  type mode =
      [ `Client of Ketrew_configuration.client
      | `Server of Ketrew_configuration.server
      | `Standalone of Ketrew_configuration.standalone ]
  val create :
    ?debug_level:int ->
    ?plugins:Ketrew_configuration.plugin list ->
    Ketrew_configuration.mode -> Ketrew_configuration.t
  type profile
  val profile :
    string -> Ketrew_configuration.t -> Ketrew_configuration.profile
  val output : Ketrew_configuration.profile list -> unit
  val to_json : Ketrew_configuration.profile list -> string
  val default_database_path : string
  val database_parameters : Ketrew_configuration.engine -> string
  val is_unix_ssh_failure_fatal : Ketrew_configuration.engine -> bool
  val maximum_successive_attempts : Ketrew_configuration.engine -> int
  val plugins : Ketrew_configuration.t -> Ketrew_configuration.plugin list
  val mode : Ketrew_configuration.t -> Ketrew_configuration.mode
  val standalone_engine :
    Ketrew_configuration.standalone -> Ketrew_configuration.engine
  val server_engine :
    Ketrew_configuration.server -> Ketrew_configuration.engine
  val server_configuration :
    Ketrew_configuration.t -> Ketrew_configuration.server option
  val authorized_tokens :
    Ketrew_configuration.server ->
    [ `Inline of string * string | `Path of string ] list
  val listen_to :
    Ketrew_configuration.server -> [ `Tls of string * string * int ]
  val return_error_messages : Ketrew_configuration.server -> bool
  val command_pipe : Ketrew_configuration.server -> string option
  val daemon : Ketrew_configuration.server -> bool
  val log_path : Ketrew_configuration.server -> string option
  val log : Ketrew_configuration.t -> Ketrew_pervasives.Log.t
  val connection : Ketrew_configuration.client -> string
  val token : Ketrew_configuration.client -> string
  val standalone_of_server :
    Ketrew_configuration.server -> Ketrew_configuration.standalone
  val with_color : Ketrew_configuration.t -> bool
  val request_targets_ids :
    Ketrew_configuration.t -> [ `All | `Younger_than of [ `Days of float ] ]
  val targets_per_page : Ketrew_configuration.t -> int
  val targets_to_prefetch : Ketrew_configuration.t -> int
  val use_cbreak : unit -> bool
  val load_exn :
    ?and_apply:bool ->
    ?profile:string ->
    [ `From_path of string
    | `Guess
    | `In_directory of string
    | `Override of Ketrew_configuration.t ] -> Ketrew_configuration.t
end