import { type ComponentCtor, type ComponentSchema } from "./Component.js";
import { ComponentRegistry } from "./ComponentRegistry.js";
import { ComponentStore } from "./ComponentStore.js";
import { type Entity } from "./Entity.js";
import { EntityManager } from "./EntityManager.js";
import { Query, type QueryOptions } from "./Query.js";
import { SystemScheduler } from "./SystemScheduler.js";
import { type SystemContext } from "./System.js";
export declare class World {
    readonly entities: EntityManager;
    readonly registry: ComponentRegistry;
    readonly components: ComponentStore;
    readonly systems: SystemScheduler;
    private version;
    registerComponent<T extends object>(ctor: ComponentCtor<T>, schema?: ComponentSchema): void;
    createEntity(): Entity;
    destroyEntity(entity: Entity): boolean;
    add<T extends object>(entity: Entity, ctor: ComponentCtor<T>, component: T): void;
    remove<T extends object>(entity: Entity, ctor: ComponentCtor<T>): boolean;
    get<T extends object>(entity: Entity, ctor: ComponentCtor<T>): T | undefined;
    has<T extends object>(entity: Entity, ctor: ComponentCtor<T>): boolean;
    query(options: QueryOptions): Query;
    update(context: SystemContext): void;
    getVersion(): number;
    assertAlive(entity: Entity): void;
}
//# sourceMappingURL=World.d.ts.map