import type { Entity } from "./types";
/** Minimal lookup surface needed to evaluate `parentHas`. */
export interface MatchHost<ComponentTypes> {
    getEntity(entityId: number): Entity<ComponentTypes> | undefined;
    getParent(entityId: number): number | null;
}
/**
 * Returns true when `entity` matches the static portion of a query shape:
 * has every `with` component, no `without` component, and (if `parentHas`)
 * a direct parent that has every `parentHas` component. Shared between
 * QueryCache (membership maintenance) and ReactiveQueryManager (enter/exit
 * dispatch) so both use the same predicate.
 */
export declare function entityMatchesShape<ComponentTypes>(entity: Entity<ComponentTypes>, withC: ReadonlyArray<keyof ComponentTypes>, withoutC: ReadonlyArray<keyof ComponentTypes> | undefined, parentHas: ReadonlyArray<keyof ComponentTypes> | undefined, host: MatchHost<ComponentTypes>): boolean;
