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 ->
    ?concurrent_automaton_steps:int ->
    ?archival_age_threshold:[ `Days of float ] ->
    ?freeze_state_duration:float -> 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 ssh_connection
  val ssh_connection :
    uri:string -> string -> Ketrew.Configuration.ssh_connection
  val ssh_connection_name_uri :
    Ketrew.Configuration.ssh_connection -> string * string
  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 ->
    ?max_blocking_time:float ->
    ?read_only_mode:bool ->
    ?ssh_connections:Ketrew.Configuration.ssh_connection list ->
    ?ssh_processes_ui:bool ->
    [ `Tcp of int | `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 ->
    ?tmp_dir:string -> 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_configuration_directory_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 concurrent_automaton_steps : Ketrew.Configuration.engine -> int
  val host_timeout_upper_bound : Ketrew.Configuration.engine -> float option
  val archival_age_threshold :
    Ketrew.Configuration.engine -> [ `Days of float ]
  val freeze_state_duration : Ketrew.Configuration.engine -> float
  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 ssh_connections :
    Ketrew.Configuration.server -> Ketrew.Configuration.ssh_connection list
  val ssh_processes_ui : Ketrew.Configuration.server -> bool
  val authorized_tokens :
    Ketrew.Configuration.server ->
    [ `Inline of string * string | `Path of string ] list
  val listen_to :
    Ketrew.Configuration.server ->
    [ `Tcp of int | `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_pure.Internal_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 max_blocking_time : Ketrew.Configuration.server -> float
  val read_only_mode : Ketrew.Configuration.server -> bool
  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