sig
  type run_parameters
  val name : string
  val serialize : run_parameters -> string
  val deserialize_exn : string -> run_parameters
  val start :
    run_parameters ->
    (run_parameters, Ketrew_long_running.error)
    Ketrew_unix_io.Deferred_result.t
  val update :
    run_parameters ->
    ([ `Failed of run_parameters * string
     | `Still_running of run_parameters
     | `Succeeded of run_parameters ], Ketrew_long_running.error)
    Ketrew_unix_io.Deferred_result.t
  val kill :
    run_parameters ->
    ([ `Killed of run_parameters ], Ketrew_long_running.error)
    Ketrew_unix_io.Deferred_result.t
  val log : run_parameters -> (string * Ketrew_pervasives.Log.t) list
  val additional_queries :
    run_parameters -> (string * Ketrew_pervasives.Log.t) list
  val query :
    run_parameters ->
    string ->
    (string, Ketrew_pervasives.Log.t) Ketrew_unix_io.Deferred_result.t
  type distributed_shell_parameters
  val distributed_shell_program :
    ?hadoop_bin:string ->
    ?distributed_shell_shell_jar:string ->
    container_memory:[ `GB of int | `MB of int | `Raw of string ] ->
    timeout:[ `Raw of string | `Seconds of int ] ->
    application_name:string ->
    Ketrew_program.t ->
    [> `Distributed_shell of
         Ketrew_yarn.distributed_shell_parameters * Ketrew_program.t ]
  val create :
    ?host:Ketrew_host.t ->
    ?daemonize_using:[ `Nohup_setsid | `Python_daemon ] ->
    ?daemon_start_timeout:float ->
    [ `Distributed_shell of
        Ketrew_yarn.distributed_shell_parameters * Ketrew_program.t
    | `Yarn_application of Ketrew_program.t ] ->
    [> `Long_running of string * string ]
end