import Ecs from './Ecs'; import Signable, { Constructor } from '../collections/Signable'; import Entity from './Entity'; import Component from './Component'; import Manager from './Manager'; import IList from '../lists/IList'; interface SystemDependencies { systems: Array>; managers: Array>; list?: Constructor>; } declare abstract class System extends Signable { ecs: Ecs; private readonly _name; private _disabled; _duration: number; protected entities: IList; protected readonly components: Array>; protected readonly dependencies: SystemDependencies; protected constructor(name: string, components: Array>, dependencies?: Partial); disabled(value?: boolean): boolean; get name(): string; setDuration(n: number): void; get duration(): number; init(ecs: Ecs): Promise; getEntities(): IList; update(elapsedTimeInSeconds: number, totalTimeInSeconds: number): void; clear(): void; private checkDependencies; protected onEntityUpdate(entity: Entity, elapsedTimeInSeconds: number, totalTimeInSeconds: number): void; protected onSystemInit(ecs: Ecs): Promise; protected onEntityDestruction(entity: Entity): void; protected onEntityCreation(entity: Entity): void; protected shouldBeAdded(entity: Entity): boolean; } export default System;