import { ComponentConstructor, ComponentInitializator } from "./Component"; import { Entity } from "./Entity"; import { Archetype } from "./Archetype"; import { System } from "./System"; export declare class ECS { private _systemsRegistry; private _groupsRegistry; private _components; constructor(); removeEntity(entity: Entity): void; removeComponentsFromEntity(entity: Entity, components: ComponentConstructor[] | ComponentConstructor): void; addComponentsToEntity(entity: Entity, components: ComponentInitializator[]): void; registerSystem(system: T): T; update(dt: number): void; createEntity: createEntityFunc; private _getComponentInstance; createArchetype(components: ComponentInitializator[]): Archetype; } declare type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K; }[keyof T]; declare type NonFunctionProperties = Pick>; declare type ComponentOf = NonFunctionProperties; declare type createEntityFunc = (comps: ComponentsInitList) => ComponentOf & ComponentOf & ComponentOf & ComponentOf & ComponentOf & ComponentOf & ComponentOf & ComponentOf & ComponentOf & ComponentOf & Entity; declare type ComponentsInitList = Partial<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]> | ({ length: any; } & { '0'?: T1; '1'?: T2; '2'?: T3; '3'?: T4; '4'?: T5; '5'?: T6; '6'?: T7; '7'?: T8; '8'?: T9; '9'?: T10; }); export {};