sig
  type t
  val create :
    database_parameters:string ->
    (Ketrew.Persistent_data.t,
     [> `Database of
          [> `Get of Trakeva.Key_in_collection.t
           | `Get_all of string
           | `Load of string ] *
          string
      | `Missing_data of string
      | `Target of [> `Deserilization of string ] ])
    Unix_io.Deferred_result.t
  val unload :
    Ketrew.Persistent_data.t ->
    (unit, [> `Database of [> `Close ] * string ]) Unix_io.Deferred_result.t
  val get_target :
    Ketrew.Persistent_data.t ->
    Ketrew_pure.Target.id ->
    (Ketrew_pure.Target.t,
     [> `Database of
          [> `Get of Trakeva.Key_in_collection.t | `Load of string ] * string
      | `Missing_data of string
      | `Target of [> `Deserilization of string ] ])
    Unix_io.Deferred_result.t
  val all_targets :
    Ketrew.Persistent_data.t ->
    (Ketrew_pure.Target.t list,
     [> `Database of
          [> `Get of Trakeva.Key_in_collection.t
           | `Get_all of string
           | `Load of string ] *
          string
      | `Missing_data of string
      | `Target of [> `Deserilization of string ] ])
    Unix_io.Deferred_result.t
  val activate_target :
    Ketrew.Persistent_data.t ->
    target:Ketrew_pure.Target.t ->
    reason:[ `Dependency of Ketrew_pure.Target.id | `User ] ->
    (unit,
     [> `Database of [> `Act of Trakeva.Action.t | `Load of string ] * string
      | `Database_unavailable of string ])
    Unix_io.Deferred_result.t
  val fold_active_targets :
    Ketrew.Persistent_data.t ->
    init:'->
    f:('->
       target:Ketrew_pure.Target.t ->
       ('a,
        [> `Database of
             [> `Get of Trakeva.Key_in_collection.t
              | `Iter of string
              | `Load of string ] *
             string
         | `Missing_data of string
         | `Target of [> `Deserilization of string ] ]
        as 'combined_errors)
       Unix_io.Deferred_result.t) ->
    ('a, 'combined_errors) Unix_io.Deferred_result.t
  val move_target_to_finished_collection :
    Ketrew.Persistent_data.t ->
    target:Ketrew_pure.Target.t ->
    (unit,
     [> `Database of [> `Act of Trakeva.Action.t | `Load of string ] * string
      | `Database_unavailable of string ])
    Unix_io.Deferred_result.t
  val update_target :
    Ketrew.Persistent_data.t ->
    Ketrew_pure.Target.t ->
    (unit,
     [> `Database of [> `Act of Trakeva.Action.t | `Load of string ] * string
      | `Database_unavailable of string ])
    Unix_io.Deferred_result.t
  module Killing_targets :
    sig
      val proceed_to_mass_killing :
        Ketrew.Persistent_data.t ->
        (bool,
         [> `Database of
              [> `Act of Trakeva.Action.t
               | `Get of Trakeva.Key_in_collection.t
               | `Get_all of string
               | `Load of string ] *
              string
          | `Database_unavailable of string
          | `Missing_data of string
          | `Target of [> `Deserilization of string ] ])
        Unix_io.Deferred_result.t
      val add_target_ids_to_kill_list :
        Ketrew.Persistent_data.t ->
        string list ->
        (unit,
         [> `Database of
              [> `Act of Trakeva.Action.t | `Load of string ] * string
          | `Database_unavailable of string ])
        Unix_io.Deferred_result.t
    end
  module Adding_targets :
    sig
      val register_targets_to_add :
        Ketrew.Persistent_data.t ->
        Ketrew_pure.Target.t list ->
        (unit,
         [> `Database of
              [> `Act of Trakeva.Action.t | `Load of string ] * string
          | `Database_unavailable of string ])
        Unix_io.Deferred_result.t
      val check_and_really_add_targets :
        Ketrew.Persistent_data.t ->
        (bool,
         [> `Database of
              [> `Act of Trakeva.Action.t
               | `Get of Trakeva.Key_in_collection.t
               | `Get_all of string
               | `Load of string ] *
              string
          | `Database_unavailable of string
          | `Missing_data of string
          | `Target of [> `Deserilization of string ] ])
        Unix_io.Deferred_result.t
    end
end