sig
  val add : t -> Worker.t -> unit Lwt.t
  val mem : t -> Worker.id -> bool Lwt.t
  val get : t -> Worker.id -> Worker.t Lwt.t
  val list : t -> Worker.id list Lwt.t
  val forget : Store.t -> Worker.id -> unit Lwt.t
  val tick : Store.t -> Worker.id -> float -> unit Lwt.t
  val status : Store.t -> Worker.id -> Worker.status option Lwt.t
  val start_job : Store.t -> Worker.id -> Job.id -> unit Lwt.t
  val start_task : Store.t -> Worker.id -> Task.id -> unit Lwt.t
  val idle : Store.t -> Worker.id -> unit Lwt.t
  type diff = [ `Added of Worker.t | `Removed of Worker.id ]
  val watch :
    Store.t -> Store.Worker.diff Store.callback -> Store.cancel Lwt.t
  val watch_status :
    Store.t ->
    Worker.id -> Worker.status option Store.callback -> Store.cancel Lwt.t
  val watch_ticks :
    Store.t -> Worker.id -> float Store.callback -> Store.cancel Lwt.t
end