import { type ComponentCtor } from "./Component.js";
import { type ComponentRegistry } from "./ComponentRegistry.js";
import { type ComponentStore } from "./ComponentStore.js";
import { type Entity } from "./Entity.js";
import { type EntityManager } from "./EntityManager.js";
export interface QueryOptions {
    include?: ComponentCtor[];
    exclude?: ComponentCtor[];
}
export declare class Query {
    private readonly entities;
    private readonly store;
    private readonly includeMask;
    private readonly excludeMask;
    private readonly include;
    private readonly exclude;
    constructor(entities: EntityManager, store: ComponentStore, registry: ComponentRegistry, options: QueryOptions);
    matches(entity: Entity): boolean;
    toArray(): Entity[];
    forEach(visitor: (entity: Entity) => void): void;
    first(): Entity | undefined;
    single(): Entity;
}
//# sourceMappingURL=Query.d.ts.map