sig
  module type S =
    sig
      type t
      type value
      val start : Store.t -> Scheduler.S.t Lwt.t
      val stop : Scheduler.S.t -> unit Lwt.t
      val list : Scheduler.S.t -> Scheduler.S.value list
      val peek : Scheduler.S.t -> Scheduler.S.value option
      val peek_s : Scheduler.S.t -> Scheduler.S.value Lwt.t
    end
  module Task :
    sig
      type t
      val start : Store.t -> t Lwt.t
      val stop : t -> unit Lwt.t
      val list : t -> Task.t list
      val peek : t -> Task.t option
      val peek_s : t -> Task.t Lwt.t
    end
  module Job :
    sig
      type t
      val start : Store.t -> t Lwt.t
      val stop : t -> unit Lwt.t
      val list : t -> Job.t list
      val peek : t -> Host.t -> Job.t option
      val peek_s : t -> Host.t -> Job.t Lwt.t
    end
  module Worker :
    sig
      type t
      val start : Store.t -> t Lwt.t
      val stop : t -> unit Lwt.t
      val list : t -> Worker.t list
      val peek : t -> Worker.t option
      val peek_s : t -> Worker.t Lwt.t
    end
  val start : Store.t -> unit Lwt.t
end