sig   module Error :     sig       type t =           [ `Http of               [ `Call of                   [ `GET | `POST ] * Ketrew_pure.Internal_pervasives.Uri.t               | `Process_holder               | `Target_query of                   Ketrew_pure.Internal_pervasives.Unique_id.t * string               | `Targets ] *               [ `Exn of exn               | `Json_parsing of string * [ `Exn of exn ]               | `Unexpected_message of Ketrew_pure.Protocol.Down_message.t               | `Wrong_json of Yojson.Safe.json               | `Wrong_response of Cohttp.Response.t * string ]           | `Server_error_response of               [ `Call of                   [ `GET | `POST ] * Ketrew_pure.Internal_pervasives.Uri.t ] *               string ]       val log :         Ketrew.Client.Error.t -> Ketrew_pure.Internal_pervasives.Log.t     end   type t   val as_client :     configuration:Configuration.t ->     f:(client:Ketrew.Client.t ->        ('result,         [> `Database of Persistent_data.Error.database          | `Dyn_plugin of              [> `Dynlink_error of Dynlink.error | `Findlib of exn ]          | `Failure of string          | `Wrong_configuration of [> `Found of string ] * [> `Exn of exn ] ]         as 'a)        Unix_io.Deferred_result.t) ->     ('result, 'a) Unix_io.Deferred_result.t   val configuration : Ketrew.Client.t -> Configuration.t   val get_list_of_target_ids :     Ketrew.Client.t ->     query:Ketrew_pure.Protocol.Up_message.target_query ->     (Ketrew_pure.Target.id list,      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database ])     Unix_io.Deferred_result.t   val get_target :     Ketrew.Client.t ->     id:Ketrew_pure.Target.id ->     (Ketrew_pure.Target.t,      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database ])     Unix_io.Deferred_result.t   val get_targets :     Ketrew.Client.t ->     id_list:Ketrew_pure.Target.id list ->     (Ketrew_pure.Target.t list,      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database ])     Unix_io.Deferred_result.t   val call_query :     Ketrew.Client.t ->     target:Ketrew_pure.Target.t ->     string ->     (string, Ketrew_pure.Internal_pervasives.Log.t) Unix_io.Deferred_result.t   val kill :     Ketrew.Client.t ->     Ketrew_pure.Target.id list ->     (unit,      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database ])     Unix_io.Deferred_result.t   val restart :     Ketrew.Client.t ->     Ketrew_pure.Target.id list ->     (unit,      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database ])     Unix_io.Deferred_result.t   val add_targets :     Ketrew.Client.t ->     Ketrew_pure.Target.t list ->     (unit,      [> `Client of Ketrew.Client.Error.t       | `Database of Persistent_data.Error.database ])     Unix_io.Deferred_result.t   val submit_workflow :     ?safe_ids:bool ->     ?override_configuration:Configuration.t ->     ?add_tags:string list ->     < is_done : EDSL.Condition.t option; .. > EDSL.product EDSL.workflow_node ->     unit   val submit :     ?override_configuration:Configuration.t ->     ?add_tags:string list -> EDSL.user_target -> unit end