import { TObjectProto , TTypeProto } from "./_.spec" ; export type TTag = number | string ; export interface IEntity { /**
     * UUID to identify the entity across instances
     * The ID is generated and must be manually maintained when syncing with another instance
     */ readonly id ? : string ; param component addComponent ( component ) : IEntity ; param tag addTag ( tag ) : IEntity ; param component getComponent < T extends Object > ( component ) : T | undefined ; /**
     * Get all components
     */ getComponents ( ) : IterableIterator < Object > ; /**
     * Get all tags
     */ getTags ( ) : IterableIterator < TTag > ; param component hasComponent ( component ) : boolean ; param tag hasTag ( tag ) : boolean ; param component removeComponent ( component ) : IEntity ; param tag removeTag ( tag ) : IEntity ; } export type TEntityProto = { new ( ) : IEntity ; } ;