/** * Property key used for ComponentMap identification during serialization * @category Constants */ export declare const ComponentMapKey = "ComponentMap"; /** * Property key used for ComponentClassesMap identification during serialization * @category Constants */ export declare const ComponentClassesMapKey = "ComponentClassesMap"; /** * Variadic type helper that preserves the strongly typed parameter interfaces used by the compiler and intellisense. * Works with single returned types or spread array returned types. * @category Types */ export type SingleOrArray = T['length'] extends 1 ? T[0] : { [Index in keyof T]: T[Index]; }; /** * Used to return component instance data. * * Note: This is not used for registering components or extending component classes * @category Types */ export interface Component { } /** * @category Types * @example * * class PositionComponent { * constructor(x, y) { * this.x = x; * this.y = y; * } * } */ export type ComponentClass = (new (...args: any[]) => ComponentInstance) & { hashId?: number; }; /** * Used for inferring generic type spread for classes * @category Types */ export type ComponentClasses = { [Index in keyof T]: ComponentClass; }; /** * Custom iterator interface that includes a reset function * @category Types */ export type Iterator = { /** * Gets the next result in the iteration */ next: () => IteratorResult; /** * Resets the iterator back to the beginning */ reset: () => void; /** * Returns the iterator instance */ [Symbol.iterator]: () => Iterator; }; /** * Helper type for late-bound iterator assignment with IntelliSense support * @category Types * @example * * let someIterator: IComponentIterator<[Player, Position]> * * // assignment made somewhere else in the code * const [player, position] = someIterator(Player, Position) ?? [] * position?.x = 123 // position will have IntelliSense */ export type IComponentIterator = Iterator>; //# sourceMappingURL=types.d.ts.map