sig
  val start :
    configuration:Ketrew.Configuration.server ->
    (unit,
     [> `Database of Trakeva.Error.t
      | `Dyn_plugin of [> `Dynlink_error of Dynlink.error | `Findlib of exn ]
      | `Failure of bytes
      | `IO of [> `Read_file_exn of bytes * exn ]
      | `Missing_data of bytes
      | `Server_status_error of bytes
      | `Start_server_error of bytes
      | `System of
          [> `File_info of bytes
           | `List_directory of bytes
           | `Remove of bytes ] *
          [> `Exn of exn ]
      | `Target of [> `Deserilization of bytes ] ])
    Unix_io.Deferred_result.t
  val status :
    configuration:Ketrew.Configuration.server ->
    ([ `Not_responding of string
     | `Running
     | `Wrong_response of Cohttp.Response.t ],
     [> `Failure of string | `Server_status_error of string ])
    Unix_io.Deferred_result.t
  val stop :
    configuration:Ketrew.Configuration.server ->
    ([ `Done | `Timeout ],
     [> `IO of
          [> `Exn of exn | `File_exists of string | `Wrong_path of string ]
      | `Stop_server_error of string
      | `System of [> `File_info of string ] * [> `Exn of exn ] ])
    Unix_io.Deferred_result.t
end