sig
  type !'a t
  val spawn : (unit -> 'a) -> 'Domain.t
  val join : 'Domain.t -> 'a
  type id = private int
  val get_id : 'Domain.t -> Domain.id
  val self : unit -> Domain.id
  val at_first_spawn : (unit -> unit) -> unit
  val at_exit : (unit -> unit) -> unit
  val at_startup : (unit -> unit) -> unit
  val cpu_relax : unit -> unit
  val set_name : string -> unit
  val is_main_domain : unit -> bool
  module DLS :
    sig
      type 'a key
      val new_key :
        ?split_from_parent:('-> 'a) -> (unit -> 'a) -> 'Domain.DLS.key
      val get : 'Domain.DLS.key -> 'a
      val set : 'Domain.DLS.key -> '-> unit
    end
end