sig
  type id = Ent.id
  type entity = Comp.entity
  val get_id : UEnt.entity -> UEnt.id
  val get_id_opt : UEnt.entity -> UEnt.id option
  type world = Comp.world
  val new_world : unit -> UEnt.world
  val add_entity : UEnt.world -> UEnt.entity -> UEnt.world
  val add_entities : UEnt.world -> UEnt.entity list -> UEnt.world
  val add_entity_id : UEnt.world -> UEnt.entity -> UEnt.world * UEnt.id
  val add_entities_id :
    UEnt.world -> UEnt.entity list -> UEnt.world * UEnt.id list
  val add_entities_init :
    w:UEnt.world -> n:int -> f:(int -> UEnt.entity) -> UEnt.world
  val add_entities_ar : UEnt.world -> UEnt.entity array -> UEnt.world
  val add_entities_id_ar :
    UEnt.world -> UEnt.entity array -> UEnt.world * UEnt.id array
  val has_entity : UEnt.world -> UEnt.id -> bool
  val replace_entity : UEnt.world -> UEnt.id -> UEnt.entity -> UEnt.world
  val remove_entity : UEnt.world -> UEnt.entity -> UEnt.world
  val remove_entity_id : UEnt.world -> UEnt.id -> UEnt.world
  val get_entity : UEnt.world -> UEnt.id -> UEnt.entity
  val get_entity_opt : UEnt.world -> UEnt.id -> UEnt.entity option
  val get_entities : UEnt.world -> UEnt.id list -> UEnt.entity list
  val do_get_entities : UEnt.world -> UEnt.id list -> UEnt.entity list
  val get_entities_with_components :
    UEnt.world -> Comp.component_type list -> UEnt.entity list
  val iter_entities : (UEnt.entity -> unit) -> UEnt.world -> unit
  val fold_entities : (UEnt.entity -> '-> 'p) -> UEnt.world -> '-> 'p
  val num_entities : UEnt.world -> int
  val num_entities_with_components :
    UEnt.world -> Comp.component_type list -> int
  type mapper = Comp.component_type Ent.mapper
  val add_mapper :
    UEnt.world -> Comp.component_type list -> UEnt.world * UEnt.mapper
  type 'a update = 'Ent.update
  type 'delta system =
      (Comp.component_type, Comp.component, 'delta) Ent.system
  type ('delta, 'fld) foldable_system =
      (Comp.component_type, Comp.component, 'delta, 'fld) Ent.foldable_system
  type 'fld born_feedback_func =
      (Comp.component_type, Comp.component, 'fld) Ent.born_feedback_func
  val world_step :
    UEnt.world -> 'delta UEnt.system -> UEnt.mapper -> 'delta -> UEnt.world
  val world_step_fold :
    UEnt.world ->
    ('delta, 'fld) UEnt.foldable_system ->
    UEnt.mapper ->
    ?fb:'fld UEnt.born_feedback_func -> 'delta -> 'fld -> UEnt.world * 'fld
end