sig
  type t = Raw_scheduler.t
  val t : unit -> Scheduler.t
  val go : ?raise_unhandled_exn:bool -> unit -> Core.Std.never_returns
  val go_main :
    ?raise_unhandled_exn:bool ->
    ?file_descr_watcher:Import.Config.File_descr_watcher.t ->
    main:(unit -> unit) -> unit -> Core.Std.never_returns
  type 'a with_options =
      ?monitor:Import.Monitor.t -> ?priority:Import.Priority.t -> 'a
  val within_context :
    Import.Execution_context.t ->
    (unit -> 'a) -> ('a, unit) Core.Std.Result.t
  val within' :
    ((unit -> 'Import.Deferred.t) -> 'Import.Deferred.t)
    Scheduler.with_options
  val within : ((unit -> unit) -> unit) Scheduler.with_options
  val within_v : ((unit -> 'a) -> 'a option) Scheduler.with_options
  val schedule' :
    ((unit -> 'Import.Deferred.t) -> 'Import.Deferred.t)
    Scheduler.with_options
  val schedule : ((unit -> unit) -> unit) Scheduler.with_options
  val cycle_start : unit -> Core.Std.Time.t
  val cycle_times : unit -> Core.Std.Time.Span.t Import.Stream.t
  val report_long_cycle_times : ?cutoff:Core.Std.Time.Span.t -> unit -> unit
  val cycle_count : unit -> int
  val force_current_cycle_to_end : unit -> unit
  val is_running : unit -> bool
  val set_max_num_jobs_per_priority_per_cycle : int -> unit
  type 'b folder = {
    folder :
      'a. '-> Scheduler.t -> (Scheduler.t, 'a) Core.Std.Field.t -> 'b;
  }
  val fold_fields : init:'-> 'Scheduler.folder -> 'b
  val is_ready_to_initialize : unit -> bool
  val reset_in_forked_process : unit -> unit
  val sexp_of_t : Scheduler.t -> Sexplib.Sexp.t
end