sig
  type t = Raw_scheduler.t
  val t : unit -> 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) with_options
  val within : ((unit -> unit) -> unit) with_options
  val within_v : ((unit -> 'a) -> 'a option) with_options
  val schedule' :
    ((unit -> 'Import.Deferred.t) -> 'Import.Deferred.t) with_options
  val schedule : ((unit -> unit) -> unit) with_options
  val preserve_execution_context :
    ('-> unit) -> ('-> unit) Core.Std.Staged.t
  val preserve_execution_context' :
    ('-> 'Import.Deferred.t) ->
    ('-> 'Import.Deferred.t) Core.Std.Staged.t
  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 =
    'Scheduler.folder = {
    folder : 'a. '-> t -> (t, 'a) Core.Std.Field.t -> 'b;
  }
  val fold_fields : init:'-> 'b folder -> 'b
  val is_ready_to_initialize : unit -> bool
  val reset_in_forked_process : unit -> unit
  val add_busy_poller :
    (unit -> [ `Continue_polling | `Stop_polling of 'a ]) ->
    'Import.Deferred.t
  val sexp_of_t : t -> Sexplib.Sexp.t
end