import { Entity } from "./Entity";
import { World } from "./World";
export type TQueryRule = (entity: Entity) => boolean;
export declare class System {
    readonly id: number;
    readonly isSystem = true;
    name: string;
    loopTimes: number;
    entitySet: WeakMap<World, Set<Entity>>;
    usedBy: World[];
    autoUpdate: boolean;
    handler: (entity: Entity, time: number, delta: number, world: World) => any;
    protected currentDelta: number;
    protected currentTime: number;
    protected currentWorld: World | null;
    protected rule: TQueryRule;
    private _disabled;
    private _priority;
    get disabled(): boolean;
    set disabled(value: boolean);
    get priority(): number;
    set priority(v: number);
    constructor(fitRule: TQueryRule, handler?: (entity: Entity, time: number, delta: number, world: World) => any, name?: string);
    checkEntityManager(world: World): this;
    query(entity: Entity): boolean;
    run(world: World, time: number, delta: number): this;
    destroy(): this;
    handle(entity: Entity, time: number, delta: number, world: World): this;
}
export type SystemConstructor = new (...a: any[]) => System;
