sig
  module type LONG_RUNNING =
    sig
      type run_parameters
      val name : string
      val serialize :
        Ketrew.Long_running.LONG_RUNNING.run_parameters -> string
      val deserialize_exn :
        string -> Ketrew.Long_running.LONG_RUNNING.run_parameters
      val start :
        Ketrew.Long_running.LONG_RUNNING.run_parameters ->
        host_io:Ketrew.Host_io.t ->
        (Ketrew.Long_running.LONG_RUNNING.run_parameters,
         Ketrew.Host_io.Error.classified)
        Unix_io.Deferred_result.t
      val update :
        Ketrew.Long_running.LONG_RUNNING.run_parameters ->
        host_io:Ketrew.Host_io.t ->
        ([ `Failed of
             Ketrew.Long_running.LONG_RUNNING.run_parameters * string
         | `Still_running of Ketrew.Long_running.LONG_RUNNING.run_parameters
         | `Succeeded of Ketrew.Long_running.LONG_RUNNING.run_parameters ],
         Ketrew.Host_io.Error.classified)
        Unix_io.Deferred_result.t
      val kill :
        Ketrew.Long_running.LONG_RUNNING.run_parameters ->
        host_io:Ketrew.Host_io.t ->
        ([ `Killed of Ketrew.Long_running.LONG_RUNNING.run_parameters ],
         Ketrew.Host_io.Error.classified)
        Unix_io.Deferred_result.t
      val log :
        Ketrew.Long_running.LONG_RUNNING.run_parameters ->
        (string * Ketrew_pure.Internal_pervasives.Log.t) list
      val additional_queries :
        Ketrew.Long_running.LONG_RUNNING.run_parameters ->
        (string * Ketrew_pure.Internal_pervasives.Log.t) list
      val query :
        Ketrew.Long_running.LONG_RUNNING.run_parameters ->
        host_io:Ketrew.Host_io.t ->
        string ->
        (string, Ketrew_pure.Internal_pervasives.Log.t)
        Unix_io.Deferred_result.t
    end
end