import { World } from '.'; import { EntityId } from './Entity'; export type OnTargetRemovedCallback = (subject: EntityId, target: EntityId) => void; export type RelationTarget = number | '*' | typeof Wildcard; export declare const $relation: unique symbol; export declare const $pairTarget: unique symbol; export declare const $isPairComponent: unique symbol; export declare const $relationData: unique symbol; export type Relation = (target: RelationTarget) => T; export declare const withStore: (createStore: (eid: EntityId) => T) => (relation: Relation) => Relation; export declare const makeExclusive: (relation: Relation) => Relation; export declare const withAutoRemoveSubject: (relation: Relation) => Relation; export declare const withOnTargetRemoved: (onRemove: OnTargetRemovedCallback) => (relation: Relation) => Relation; export declare const Pair: (relation: Relation, target: RelationTarget) => T; export declare const getRelationTargets: (world: World, eid: EntityId, relation: Relation) => number[]; export declare function createRelation(...modifiers: Array<(relation: Relation) => Relation>): Relation; export declare function createRelation(options: { store?: () => T; exclusive?: boolean; autoRemoveSubject?: boolean; onTargetRemoved?: OnTargetRemovedCallback; }): Relation; export declare const $wildcard: unique symbol; export declare function createWildcardRelation(): Relation; export declare function getWildcard(): Relation; export declare const Wildcard: Relation; export declare function createIsARelation(): Relation; export declare function getIsA(): Relation; export declare const IsA: Relation; export declare function isWildcard(relation: any): boolean; export declare function isRelation(component: any): boolean; //# sourceMappingURL=Relation.d.ts.map