sig
  module Down_message :
    sig
      type t =
          [ `List_of_query_descriptions of (string * string) list
          | `List_of_target_ids of string list
          | `List_of_targets of Ketrew_target.t list
          | `Ok
          | `Query_result of string ]
      val to_json : t -> Yojson.Safe.json
      val of_json_exn : Yojson.Safe.json -> t
      val serialize : t -> string
      val deserialize_exn : string -> t
    end
  module Up_message :
    sig
      type target_query =
          [ `All | `Created_after of float | `Not_finished_before of float ]
      type t =
          [ `Call_query of string * string
          | `Get_available_queries of string
          | `Get_target_ids of Ketrew_protocol.Up_message.target_query
          | `Get_targets of string list
          | `Kill_targets of string list
          | `Restart_targets of string list
          | `Submit_targets of Ketrew_target.t list ]
      val to_json : t -> Yojson.Safe.json
      val of_json_exn : Yojson.Safe.json -> t
      val serialize : t -> string
      val deserialize_exn : string -> t
    end
end