entt-js 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/entt.d.ts ADDED
@@ -0,0 +1,1069 @@
1
+ interface DisposableConstructor {
2
+ new (): Disposable;
3
+ prototype: Disposable;
4
+ }
5
+ interface Disposable extends globalThis.Disposable {
6
+ dispose(): void;
7
+ }
8
+ declare const Disposable: DisposableConstructor;
9
+
10
+ interface SpecializationDefinition {
11
+ predicate: (...args: any[]) => boolean;
12
+ render: (...args: any[]) => any;
13
+ }
14
+ interface InternalSpecializationDefinition extends SpecializationDefinition {
15
+ userland: boolean;
16
+ }
17
+ declare class Template<Render extends (...args: any[]) => any> extends Disposable {
18
+ private readonly _registry;
19
+ private _specializations;
20
+ instantiate: Render;
21
+ defaultRender: (this: Template<Render>, ...args: any[]) => any;
22
+ constructor(render: (this: Template<Render>, ...args: any[]) => any, specializations?: SpecializationDefinition[]);
23
+ selectSpecialization(...args: Parameters<Render>): ((...args: Parameters<Render>) => any) | null;
24
+ addSpecialization(spec: SpecializationDefinition): void;
25
+ removeSpecialization(spec: SpecializationDefinition): void;
26
+ removeAllUserlandSpecializations(): void;
27
+ dispose(): void;
28
+ }
29
+ declare function defineTemplate<Render extends (...args: any[]) => any>(render: (this: Template<Render>, ...args: any[]) => any, specializations?: SpecializationDefinition[]): Template<Render>;
30
+
31
+ type SafeInstanceType<T, Default = any> = T extends BooleanConstructor ? boolean : T extends NumberConstructor ? number : T extends BigIntConstructor ? bigint : T extends StringConstructor ? string : T extends SymbolConstructor ? symbol : T extends new (...args: any[]) => infer R ? R : T extends (...args: any[]) => infer R ? R : Default;
32
+ type SafeParameters<T> = T extends BooleanConstructor ? Parameters<BooleanConstructor> : T extends NumberConstructor ? Parameters<NumberConstructor> : T extends BigIntConstructor ? Partial<Parameters<BigIntConstructor>> : T extends StringConstructor ? Parameters<StringConstructor> : T extends SymbolConstructor ? Parameters<SymbolConstructor> : T extends abstract new (...args: infer P) => any ? P : T extends (...args: infer P) => any ? P : any[];
33
+ declare const EmptyTypeOptimization: {
34
+ readonly Disabled: 0;
35
+ readonly Static: 1;
36
+ readonly 0: "Disabled";
37
+ readonly 1: "Static";
38
+ };
39
+ type EmptyTypeOptimization = Extract<typeof EmptyTypeOptimization[keyof typeof EmptyTypeOptimization], number>;
40
+ declare const directCall: (Type: Function, ...args: any[]) => any;
41
+ declare const config: {
42
+ customCalls: WeakMap<Function, (Type: Function, ...args: any[]) => any>;
43
+ emptyClasses: WeakMap<Function, boolean>;
44
+ eto: EmptyTypeOptimization;
45
+ mixin: boolean;
46
+ sparsePage: number;
47
+ packedPage: number;
48
+ };
49
+ declare function createSafeNew<T extends Function>(Type: T): (...args: SafeParameters<T> | []) => SafeInstanceType<T>;
50
+ declare function isEmptyClass(Type: Function): boolean;
51
+
52
+ type EntityConstructor = NumberConstructor | BigIntConstructor | CustomEntityConstructor<any, any>;
53
+ interface CustomEntityConstructor<EC extends NumberConstructor | BigIntConstructor, R extends {
54
+ [Symbol.toPrimitive](): SafeInstanceType<EC>;
55
+ }> {
56
+ EntityType: EC;
57
+ new (entt?: SafeInstanceType<EC>, ...args: any[]): R;
58
+ prototype: R;
59
+ }
60
+ interface InternalEnttTraits<VT extends EntityConstructor, EC extends NumberConstructor | BigIntConstructor, VC extends NumberConstructor | BigIntConstructor> {
61
+ ValueType: VT;
62
+ EntityType: EC;
63
+ VersionType: VC;
64
+ entityMask: SafeInstanceType<EC>;
65
+ versionMask: SafeInstanceType<EC>;
66
+ }
67
+ type InternalEnttTraitsReturn<VT> = VT extends NumberConstructor ? InternalEnttTraits<NumberConstructor, NumberConstructor, NumberConstructor> : VT extends BigIntConstructor ? InternalEnttTraits<BigIntConstructor, BigIntConstructor, NumberConstructor> : VT extends CustomEntityConstructor<any, any> ? InternalEnttTraits<VT, VT['EntityType'], NumberConstructor> : never;
68
+ interface BasicEnttTraits<Traits extends InternalEnttTraits<any, any, any>> {
69
+ ValueType: Traits['ValueType'];
70
+ EntityType: Traits['EntityType'] & ((value: Traits['ValueType']) => SafeInstanceType<Traits['EntityType']>);
71
+ VersionType: Traits['VersionType'] & ((value: Traits['ValueType']) => SafeInstanceType<Traits['VersionType']>);
72
+ entityMask: Traits['entityMask'];
73
+ versionMask: Traits['versionMask'];
74
+ length: number;
75
+ null: SafeInstanceType<Traits['ValueType']>;
76
+ tombstone: SafeInstanceType<Traits['ValueType']>;
77
+ toIntegral: (value: SafeInstanceType<Traits['ValueType']>) => SafeInstanceType<Traits['EntityType']>;
78
+ toEntity: (value: SafeInstanceType<Traits['ValueType']>) => SafeInstanceType<Traits['EntityType']>;
79
+ toVersion: (value: SafeInstanceType<Traits['ValueType']>) => SafeInstanceType<Traits['VersionType']>;
80
+ next: (value: SafeInstanceType<Traits['ValueType']>) => SafeInstanceType<Traits['ValueType']>;
81
+ construct: (entity: SafeInstanceType<Traits['EntityType']>, version: SafeInstanceType<Traits['VersionType']>) => SafeInstanceType<Traits['ValueType']>;
82
+ combine: (lhs: SafeInstanceType<Traits['EntityType']>, rhs: SafeInstanceType<Traits['EntityType']>) => SafeInstanceType<Traits['ValueType']>;
83
+ isNull: (value: SafeInstanceType<Traits['ValueType']>) => boolean;
84
+ isTombstone: (value: SafeInstanceType<Traits['ValueType']>) => boolean;
85
+ }
86
+ interface EnttTraits<Type> extends BasicEnttTraits<InternalEnttTraitsReturn<Type>> {
87
+ BaseType?: BasicEnttTraits<InternalEnttTraitsReturn<Type>>;
88
+ pageSize: number;
89
+ }
90
+ interface InternalEnttTraitsTemplate {
91
+ <VT extends EntityConstructor>(ValueType: VT): InternalEnttTraitsReturn<VT>;
92
+ }
93
+ declare const internalEnttTraits: Template<InternalEnttTraitsTemplate>;
94
+ interface BasicEnttTraitsTemplate {
95
+ <Traits extends InternalEnttTraits<any, any, any>>(traits: Traits): BasicEnttTraits<Traits>;
96
+ }
97
+ declare const basicEnttTraitsTemplate: Template<BasicEnttTraitsTemplate>;
98
+ interface EnttTraitsTemplate {
99
+ <Type extends EntityConstructor>(ValueType: Type): EnttTraits<Type>;
100
+ }
101
+ declare const enttTraitsTemplate: Template<EnttTraitsTemplate>;
102
+
103
+ interface Uint8Constructor extends NumberConstructor {
104
+ (num?: unknown): number;
105
+ readonly MIN_VALUE: 0;
106
+ readonly MAX_VALUE: 255;
107
+ is(instance: unknown): boolean;
108
+ super_: NumberConstructor;
109
+ }
110
+ declare const Uint8: Uint8Constructor;
111
+ interface Float32Constructor extends NumberConstructor {
112
+ (num?: unknown): number;
113
+ super_: NumberConstructor;
114
+ }
115
+ declare const Float32: Float32Constructor;
116
+ interface Float64Constructor extends NumberConstructor {
117
+ (num?: unknown): number;
118
+ readonly MIN_VALUE: number;
119
+ readonly MAX_VALUE: number;
120
+ is(instance: unknown): boolean;
121
+ super_: NumberConstructor;
122
+ }
123
+ declare const Float64: Float64Constructor;
124
+ interface Int8Constructor extends NumberConstructor {
125
+ (num?: unknown): number;
126
+ readonly MIN_VALUE: -128;
127
+ readonly MAX_VALUE: 127;
128
+ is(instance: unknown): boolean;
129
+ super_: NumberConstructor;
130
+ }
131
+ declare const Int8: Int8Constructor;
132
+ interface Uint16Constructor extends NumberConstructor {
133
+ (num?: unknown): number;
134
+ readonly MIN_VALUE: 0;
135
+ readonly MAX_VALUE: 65535;
136
+ is(instance: unknown): boolean;
137
+ super_: NumberConstructor;
138
+ }
139
+ declare const Uint16: Uint16Constructor;
140
+ interface Int16Constructor extends NumberConstructor {
141
+ (num?: unknown): number;
142
+ readonly MIN_VALUE: -32768;
143
+ readonly MAX_VALUE: 32767;
144
+ is(instance: unknown): boolean;
145
+ super_: NumberConstructor;
146
+ }
147
+ declare const Int16: Int16Constructor;
148
+ interface Uint32Constructor extends NumberConstructor {
149
+ (num?: unknown): number;
150
+ readonly MIN_VALUE: 0;
151
+ readonly MAX_VALUE: 4294967295;
152
+ is(instance: unknown): boolean;
153
+ super_: NumberConstructor;
154
+ }
155
+ declare const Uint32: Uint32Constructor;
156
+ interface Int32Constructor extends NumberConstructor {
157
+ (num?: unknown): number;
158
+ readonly MIN_VALUE: -2147483648;
159
+ readonly MAX_VALUE: 2147483647;
160
+ is(instance: unknown): boolean;
161
+ super_: NumberConstructor;
162
+ }
163
+ declare const Int32: Int32Constructor;
164
+ interface Uint64Constructor extends BigIntConstructor {
165
+ (num?: unknown): bigint;
166
+ readonly MIN_VALUE: 0n;
167
+ readonly MAX_VALUE: 18446744073709551615n;
168
+ is(instance: unknown): boolean;
169
+ super_: BigIntConstructor;
170
+ }
171
+ declare const Uint64: Uint64Constructor;
172
+ interface Int64Constructor extends BigIntConstructor {
173
+ (num?: unknown): bigint;
174
+ readonly MIN_VALUE: -9223372036854775808n;
175
+ readonly MAX_VALUE: 9223372036854775807n;
176
+ is(instance: unknown): boolean;
177
+ super_: BigIntConstructor;
178
+ }
179
+ declare const Int64: Int64Constructor;
180
+ interface DefaultEntityConstructor extends Uint32Constructor {
181
+ (num?: unknown): Entity;
182
+ super_: Uint32Constructor;
183
+ }
184
+ type Entity = number;
185
+ declare const Entity: DefaultEntityConstructor;
186
+
187
+ interface ForwardPointer<T, Self extends ForwardPointer<T, Self>> {
188
+ clone(target?: Self): Self;
189
+ swap(other: Self): void;
190
+ deref(): T;
191
+ write(value: T): T;
192
+ selfPlus(): this;
193
+ equals(other: Self): boolean;
194
+ }
195
+ interface BidirectionalPointer<T, Self extends BidirectionalPointer<T, Self>> extends ForwardPointer<T, Self> {
196
+ clone(target?: Self): Self;
197
+ swap(other: Self): void;
198
+ selfMinus(): this;
199
+ }
200
+ interface RandomAccessPointer<T, Self extends RandomAccessPointer<T, Self>> extends BidirectionalPointer<T, Self> {
201
+ clone(target?: Self): Self;
202
+ swap(other: Self): void;
203
+ selfPlus(n?: number): this;
204
+ plus(n: number): Self;
205
+ selfMinus(n?: number): this;
206
+ minus(n: number): Self;
207
+ diff(other: Self): number;
208
+ access(n: number): T;
209
+ set(n: number, value: T): void;
210
+ lt(other: Self): boolean;
211
+ gt(other: Self): boolean;
212
+ le(other: Self): boolean;
213
+ ge(other: Self): boolean;
214
+ }
215
+ interface Range<It extends ForwardPointer<any, any>> extends Iterable<It extends ForwardPointer<infer T, any> ? T : any> {
216
+ begin(): It;
217
+ end(): It;
218
+ }
219
+ interface ReversableRange<It extends BidirectionalPointer<any, any>> extends Range<It> {
220
+ rbegin(): ReversePointer<It>;
221
+ rend(): ReversePointer<It>;
222
+ }
223
+ interface IterableHelpers<K, V, T = any> extends Iterable<V> {
224
+ keys(): IteratorObject<K>;
225
+ values(): IteratorObject<V>;
226
+ entries(): IteratorObject<[K, V]>;
227
+ forEach(callback: (value: V, key: K, self: T) => void, thisArg?: any): void;
228
+ }
229
+ declare class ReversePointer<It extends BidirectionalPointer<any, any>> {
230
+ private readonly it;
231
+ constructor(it: It);
232
+ clone(target?: ReversePointer<It>): ReversePointer<It>;
233
+ swap(other: ReversePointer<It>): void;
234
+ base(): any;
235
+ selfPlus(n?: number): this;
236
+ selfMinus(n?: number): this;
237
+ plus(n: number): ReversePointer<It>;
238
+ minus(n: number): ReversePointer<It>;
239
+ diff(other: ReversePointer<It>): number;
240
+ equals(other: ReversePointer<It>): boolean;
241
+ lt(other: ReversePointer<It>): boolean;
242
+ gt(other: ReversePointer<It>): boolean;
243
+ le(other: ReversePointer<It>): boolean;
244
+ ge(other: ReversePointer<It>): boolean;
245
+ deref(): It extends BidirectionalPointer<infer U, any> ? U : never;
246
+ write(value: It extends BidirectionalPointer<infer U, any> ? U : never): It extends BidirectionalPointer<infer U, any> ? U : never;
247
+ access(value: number): It extends BidirectionalPointer<infer U, any> ? U : never;
248
+ set(off: number, value: It extends BidirectionalPointer<infer U, any> ? U : never): void;
249
+ }
250
+ declare function makeReversePointer<It extends BidirectionalPointer<any, any>>(it: It): ReversePointer<It>;
251
+ declare function makeRangePointer<It extends ForwardPointer<any, any>, Sentinel extends ForwardPointer<any, any> = It>(first: Range<It> | It, last?: Sentinel): [It, Sentinel];
252
+ declare class RangeIterator<It extends ForwardPointer<any, any>, Sentinel extends ForwardPointer<any, any> = It> extends Iterator<It extends ForwardPointer<infer U, any> ? U : any> {
253
+ private readonly first;
254
+ private readonly curr;
255
+ private readonly last;
256
+ constructor(first: It, last: Sentinel);
257
+ begin(): It;
258
+ end(): Sentinel;
259
+ next(): IteratorResult<It extends ForwardPointer<infer U, any> ? U : any>;
260
+ [Symbol.iterator](): this;
261
+ }
262
+ declare class AggregatePointer<const T extends Array<ForwardPointer<any, any>>> implements ForwardPointer<{
263
+ [K in keyof T]: T[K] extends ForwardPointer<infer U, any> ? U : any;
264
+ }, AggregatePointer<T>> {
265
+ private pointers;
266
+ constructor(pointers: T);
267
+ base(): T[0];
268
+ deref(): {
269
+ [K in keyof T]: T[K] extends ForwardPointer<infer U, any> ? U : any;
270
+ };
271
+ write(value: {
272
+ [K in keyof T]: T[K] extends ForwardPointer<infer U, any> ? U : any;
273
+ }): {
274
+ [K in keyof T]: T[K] extends ForwardPointer<infer U, any> ? U : any;
275
+ };
276
+ clone(target?: AggregatePointer<T>): AggregatePointer<T>;
277
+ swap(other: AggregatePointer<T>): void;
278
+ selfPlus(): this;
279
+ equals(other: AggregatePointer<T>): boolean;
280
+ }
281
+ declare function toIterator<It extends ForwardPointer<any, any>>(first: Range<It>): RangeIterator<It, It>;
282
+ declare function toIterator<It extends ForwardPointer<any, any>, Sentinel extends ForwardPointer<any, any> = It>(first: It, last: Sentinel): RangeIterator<It, Sentinel>;
283
+ declare class ArrayPointer<T> implements RandomAccessPointer<T, ArrayPointer<T>> {
284
+ private array;
285
+ private pos;
286
+ constructor(array: T[], index: number);
287
+ clone(target?: ArrayPointer<T>): ArrayPointer<T>;
288
+ swap(other: ArrayPointer<T>): void;
289
+ selfPlus(n?: number): this;
290
+ plus(n: number): ArrayPointer<T>;
291
+ selfMinus(n?: number): this;
292
+ minus(n: number): ArrayPointer<T>;
293
+ diff(other: ArrayPointer<T>): number;
294
+ lt(other: ArrayPointer<T>): boolean;
295
+ gt(other: ArrayPointer<T>): boolean;
296
+ le(other: ArrayPointer<T>): boolean;
297
+ ge(other: ArrayPointer<T>): boolean;
298
+ equals(other: ArrayPointer<T>): boolean;
299
+ deref(): T;
300
+ write(value: T): T;
301
+ access(n: number): T;
302
+ set(n: number, value: T): void;
303
+ }
304
+ declare class ArrayRange<T> implements Range<ArrayPointer<T>> {
305
+ private readonly array;
306
+ constructor(array: T[]);
307
+ data(): T[];
308
+ begin(): ArrayPointer<T>;
309
+ end(): ArrayPointer<T>;
310
+ rbegin(): ReversePointer<ArrayPointer<T>>;
311
+ rend(): ReversePointer<ArrayPointer<T>>;
312
+ [Symbol.iterator](): RangeIterator<ArrayPointer<T>>;
313
+ }
314
+ declare function toRange<T>(value: T): T extends Array<infer U> ? ArrayRange<U> : Range<ForwardPointer<any, any>>;
315
+ declare function distance<It extends ForwardPointer<any, any>>(first: It, last: It): number;
316
+
317
+ declare const DeletionPolicy: {
318
+ readonly SwapAndPop: 0;
319
+ readonly InPlace: 1;
320
+ readonly SwapOnly: 2;
321
+ readonly Unspecified: 0;
322
+ readonly 0: "SwapAndPop";
323
+ readonly 1: "InPlace";
324
+ readonly 2: "SwapOnly";
325
+ };
326
+ type DeletionPolicy = Extract<typeof DeletionPolicy[keyof typeof DeletionPolicy], number>;
327
+ interface BaseSparseSet<T, VersionType> extends Disposable {
328
+ mode: DeletionPolicy;
329
+ reserve(cap: number): void;
330
+ data(): T[];
331
+ policy(): DeletionPolicy;
332
+ type(): Function | undefined;
333
+ empty(): boolean;
334
+ isNull(entity: T): boolean;
335
+ isTombstone(entity: T): boolean;
336
+ inPlacePop(entity: T): void;
337
+ swapAndPop(entity: T): void;
338
+ swapOrMove(_lhs: number, _rhs: number): void;
339
+ tryEmplace(value: T, forcePush?: boolean, elem?: any): SparseSetPointer<T>;
340
+ pop(first: SparseSetPointer<T>, last: SparseSetPointer<T>): void;
341
+ popAll(): void;
342
+ freeList(value?: number | bigint): bigint;
343
+ contiguous(): boolean;
344
+ push(entity: T, elem?: any): SparseSetPointer<T>;
345
+ pushRange(iterable: Range<ForwardPointer<T, any>>): SparseSetPointer<T>;
346
+ pushRange(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): SparseSetPointer<T>;
347
+ add(value: T): this;
348
+ clear(): void;
349
+ erase(value: T): void;
350
+ erase(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): void;
351
+ delete(value: T): boolean;
352
+ remove(value: T): boolean;
353
+ remove(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): number;
354
+ contains(value: T): boolean;
355
+ has(value: T): boolean;
356
+ at(index: number): T;
357
+ access(pos: number): T | undefined;
358
+ current(value: T): VersionType;
359
+ bump(value: T): VersionType;
360
+ index(value: T): number;
361
+ find(value: T): SparseSetPointer<T>;
362
+ toIterator(entt: T): SparseSetPointer<T>;
363
+ bind(value: any): void;
364
+ compact(): void;
365
+ swapElements(lhs: T, rhs: T): void;
366
+ sortN(length: number, compareFn?: (a: T, b: T) => number, algo?: (arr: T[], compare?: (a: T, b: T) => number) => T[]): void;
367
+ sort(compareFn?: (a: T, b: T) => number, algo?: (arr: T[], compare?: (a: T, b: T) => number) => T[]): void;
368
+ sortAs(range: Range<ForwardPointer<T, any>>): SparseSetPointer<T>;
369
+ sortAs(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): SparseSetPointer<T>;
370
+ readonly size: number;
371
+ }
372
+ interface BasicSparseSet<T, VersionType> extends BaseSparseSet<T, VersionType>, ReversableRange<SparseSetPointer<T>>, IterableHelpers<T, T, BasicSparseSet<T, VersionType>> {
373
+ }
374
+ interface SparseSetConstructor<T extends EntityConstructor> {
375
+ BasicIterator: typeof SparseSetPointer<SafeInstanceType<T>>;
376
+ Iterator: typeof SparseSetPointer<SafeInstanceType<T>>;
377
+ ReverseIterator: typeof ReversePointer<SparseSetPointer<SafeInstanceType<T>>>;
378
+ TraitsType: EnttTraits<T>;
379
+ EntityType: EnttTraits<T>['ValueType'];
380
+ new (mode?: DeletionPolicy): BasicSparseSet<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
381
+ new (Type: Function, mode?: DeletionPolicy): BasicSparseSet<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
382
+ isTombstone(entity: SafeInstanceType<T>): boolean;
383
+ isNull(entity: SafeInstanceType<T>): boolean;
384
+ prototype: BasicSparseSet<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
385
+ }
386
+ declare class SparseSetPointer<T> implements RandomAccessPointer<T, SparseSetPointer<T>> {
387
+ private packed;
388
+ private offset;
389
+ constructor();
390
+ constructor(packed: T[], offset: number);
391
+ clone(target?: SparseSetPointer<T>): SparseSetPointer<T>;
392
+ swap(other: SparseSetPointer<T>): void;
393
+ data(): T[];
394
+ selfPlus(n?: number): this;
395
+ selfMinus(n?: number): this;
396
+ plus(n: number): SparseSetPointer<T>;
397
+ minus(n: number): SparseSetPointer<T>;
398
+ diff(other: SparseSetPointer<any>): number;
399
+ equals(other: SparseSetPointer<any>): boolean;
400
+ lt(other: SparseSetPointer<any>): boolean;
401
+ gt(other: SparseSetPointer<any>): boolean;
402
+ le(other: SparseSetPointer<any>): boolean;
403
+ ge(other: SparseSetPointer<any>): boolean;
404
+ deref(): T;
405
+ write(value: T): T;
406
+ access(value: number): T;
407
+ set(off: number, value: T): void;
408
+ index(): number;
409
+ [Symbol.toPrimitive](hint: string): string | number;
410
+ }
411
+ interface BasicSparseSetTemplate {
412
+ <EC extends EntityConstructor>(EntityType: EC): SparseSetConstructor<EC>;
413
+ }
414
+ declare const basicSparseSetTemplate: Template<BasicSparseSetTemplate>;
415
+ declare const SparseSet: SparseSetConstructor<DefaultEntityConstructor>;
416
+
417
+ interface ComponentTraits<T, E> {
418
+ ElementType: T;
419
+ EntityType: E;
420
+ pageSize: number;
421
+ inPlaceDelete: boolean;
422
+ }
423
+ interface ComponentTraitsTemplate {
424
+ <T extends Function, E extends EntityConstructor>(Type: T, Entity: E): ComponentTraits<T, E>;
425
+ }
426
+ declare const componentTraitsTemplate: Template<ComponentTraitsTemplate>;
427
+
428
+ interface IRef<T> {
429
+ get(): T;
430
+ set(value: T): void;
431
+ }
432
+ declare function defaultSort<T>(arr: T[], compareFn?: (a: T, b: T) => number): T[];
433
+ declare function insertionSort<T>(arr: T[], compareFn?: (a: T, b: T) => number): T[];
434
+ type StorageKey<U extends Function | undefined> = U | [U, any];
435
+
436
+ interface Storage<T, E, V> extends BaseSparseSet<E, V>, ReversableRange<StoragePointer<T>>, IterableHelpers<E, T, Storage<T, E, V>> {
437
+ capacity(): number;
438
+ reserve(cap: number): void;
439
+ get(entt: E): T | undefined;
440
+ getAsRef(entt: E): IRef<T | undefined>;
441
+ getAsTuple(entt: E): [T];
442
+ emplace(entt: E, ...args: ConstructorParameters<new (...args: any[]) => T>): T;
443
+ insert(first: ForwardPointer<E, any>, last: ForwardPointer<E, any>, value?: T): StoragePointer<T>;
444
+ insertRange(first: ForwardPointer<E, any>, last: ForwardPointer<E, any>, from: ForwardPointer<T, any>): StoragePointer<T>;
445
+ patch<F extends (instance: T) => T | undefined>(entt: E, ...func: F[]): T;
446
+ each(): RangeIterator<AggregatePointer<[SparseSetPointer<E>, StoragePointer<T>]>>;
447
+ reach(): RangeIterator<AggregatePointer<[ReversePointer<SparseSetPointer<E>>, ReversePointer<StoragePointer<T>>]>>;
448
+ }
449
+ interface EmptyStorage<E, V> extends BasicSparseSet<E, V> {
450
+ get(entt: E): undefined;
451
+ getAsRef(entt: E): IRef<undefined>;
452
+ getAsTuple(entt: E): [];
453
+ emplace(entt: E): void;
454
+ insert(first: ForwardPointer<E, any>, last: ForwardPointer<E, any>): void;
455
+ patch<F extends () => void>(entt: E, ...func: F[]): void;
456
+ each(): RangeIterator<AggregatePointer<[SparseSetPointer<E>]>>;
457
+ reach(): RangeIterator<AggregatePointer<[ReversePointer<SparseSetPointer<E>>]>>;
458
+ }
459
+ interface EntityStorage<T, V> extends BasicSparseSet<T, V> {
460
+ startFrom(hint: T): void;
461
+ get(entt: T): void;
462
+ getAsRef(entt: T): IRef<void>;
463
+ getAsTuple(entt: T): [];
464
+ patch<F extends () => void>(entt: T, ...func: F[]): void;
465
+ generate(hint?: T): T;
466
+ generateRange(range: Range<ForwardPointer<T, any>>): void;
467
+ generateRange(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): void;
468
+ insert(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): void;
469
+ each(): RangeIterator<AggregatePointer<[SparseSetPointer<T>]>>;
470
+ reach(): RangeIterator<AggregatePointer<[ReversePointer<SparseSetPointer<T>>]>>;
471
+ }
472
+ interface EntityStorageConstructor<T extends EntityConstructor> extends SparseSetConstructor<T> {
473
+ storagePolicy: DeletionPolicy;
474
+ TraitsType: EnttTraits<T>;
475
+ ElementType: T;
476
+ EntityType: T;
477
+ ValueType: undefined;
478
+ BaseType: SparseSetConstructor<T>;
479
+ Iterator: typeof SparseSetPointer<SafeInstanceType<T>>;
480
+ ReverseIterator: typeof ReversePointer<SparseSetPointer<SafeInstanceType<T>>>;
481
+ new (): EntityStorage<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
482
+ prototype: EntityStorage<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
483
+ }
484
+ interface EmptyStorageConstructor<T, E extends EntityConstructor> extends Omit<SparseSetConstructor<E>, 'Iterator' | 'ReverseIterator' | 'TraitsType' | 'prototype'> {
485
+ storagePolicy: DeletionPolicy;
486
+ TraitsType: ComponentTraits<T, E>;
487
+ ElementType: T;
488
+ EntityType: E;
489
+ ValueType: undefined;
490
+ BaseType: SparseSetConstructor<E>;
491
+ new (): EmptyStorage<SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
492
+ prototype: EmptyStorage<SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
493
+ }
494
+ interface BasicStorageConstructor<T, E extends EntityConstructor> extends Omit<SparseSetConstructor<E>, 'Iterator' | 'ReverseIterator' | 'TraitsType' | 'prototype'> {
495
+ storagePolicy: DeletionPolicy;
496
+ TraitsType: ComponentTraits<T, E>;
497
+ ElementType: T;
498
+ EntityType: E;
499
+ ValueType: T;
500
+ BaseType: SparseSetConstructor<E>;
501
+ Iterator: typeof StoragePointer<SafeInstanceType<T>>;
502
+ ReverseIterator: typeof ReversePointer<StoragePointer<SafeInstanceType<T>>>;
503
+ new (): Storage<SafeInstanceType<T>, SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
504
+ prototype: Storage<SafeInstanceType<T>, SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
505
+ }
506
+ declare class StoragePointer<T> implements RandomAccessPointer<T, StoragePointer<T>> {
507
+ private payload;
508
+ private offset;
509
+ private pageSize;
510
+ constructor();
511
+ constructor(pageSize: number, payload: T[][], offset: number);
512
+ dispose(): void;
513
+ clone(target?: StoragePointer<T>): StoragePointer<T>;
514
+ swap(other: StoragePointer<T>): void;
515
+ data(): T[][];
516
+ selfPlus(n?: number): this;
517
+ selfMinus(n?: number): this;
518
+ plus(n: number): StoragePointer<T>;
519
+ minus(n: number): StoragePointer<T>;
520
+ diff(other: StoragePointer<T>): number;
521
+ equals(other: StoragePointer<T>): boolean;
522
+ lt(other: StoragePointer<T>): boolean;
523
+ gt(other: StoragePointer<T>): boolean;
524
+ le(other: StoragePointer<T>): boolean;
525
+ ge(other: StoragePointer<T>): boolean;
526
+ deref(): T;
527
+ write(value: T): T;
528
+ access(value: number): T;
529
+ set(off: number, value: T): void;
530
+ index(): number;
531
+ }
532
+ type IsEmptyClass<T extends Function> = SafeInstanceType<T> extends object ? [keyof SafeInstanceType<T>] extends [never] ? true : false : false;
533
+ interface BasicStorageTemplate {
534
+ <E extends EntityConstructor>(Type: E, Entity?: E): EntityStorageConstructor<E>;
535
+ <T extends Function, E extends EntityConstructor>(Type: T, Entity: E): IsEmptyClass<T> extends true ? EmptyStorageConstructor<T, E> : BasicStorageConstructor<T, E>;
536
+ }
537
+ declare const basicStorageTemplate: Template<BasicStorageTemplate>;
538
+ interface StorageTemplate {
539
+ (Type: DefaultEntityConstructor): EntityStorageConstructor<DefaultEntityConstructor>;
540
+ <T extends Function>(Type: T): BasicStorageConstructor<T, DefaultEntityConstructor>;
541
+ }
542
+ declare const storageTemplate: Template<{
543
+ (Type: DefaultEntityConstructor): EntityStorageConstructor<DefaultEntityConstructor>;
544
+ <T extends Function>(Type: T): BasicStorageConstructor<T, DefaultEntityConstructor>;
545
+ }>;
546
+ declare const storageTypeTemplate: Template<(<T extends Function, E extends EntityConstructor>(Type: T, EntityType: E) => any)>;
547
+ declare const storageTypeTTemplate: Template<(...args: any[]) => any>;
548
+
549
+ type BasicView<Entity, Items extends any[]> = Items extends [infer U] ? BasicViewExtendsBasicStorageView<U, Entity, number | bigint, ForwardPointer<Entity, any>, ReversePointer<BidirectionalPointer<Entity, any>>> : BasicViewExtendsBasicCommonView<Items, Entity, number | bigint>;
550
+ declare function commonType(...instances: any[]): any;
551
+ interface ViewPointer<E, V> extends ForwardPointer<E, ViewPointer<E, V>> {
552
+ pools: Array<Storage<any, E, V>>;
553
+ valid(entt: E): boolean;
554
+ seekNext(): void;
555
+ }
556
+ interface ViewPointerConstructor<E extends EntityConstructor> {
557
+ new (): ViewPointer<SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
558
+ new (first: SafeInstanceType<SparseSetConstructor<SafeInstanceType<E>>['Iterator']>, values: Array<Storage<any, any, any>>, excl: Array<Storage<any, any, any>>, idx: number): ViewPointer<SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
559
+ prototype: ViewPointer<SafeInstanceType<E>, SafeInstanceType<EnttTraits<E>['VersionType']>>;
560
+ }
561
+ interface BasicCommonView<T, E, V> extends Iterable<E> {
562
+ pools: Array<Storage<T, E, V>>;
563
+ filter: Array<Storage<T, E, V>>;
564
+ refresh(): void;
565
+ handle(): Storage<any, E, V> | null;
566
+ sizeHint(): number;
567
+ begin(): ViewPointer<E, V>;
568
+ end(): ViewPointer<E, V>;
569
+ front(): E;
570
+ back(): E;
571
+ find(entt: E): ViewPointer<E, V>;
572
+ ok(): boolean;
573
+ [Symbol.toPrimitive](): boolean;
574
+ contains(entt: E): boolean;
575
+ poolAt(index: number): Storage<T, E, V>;
576
+ poolAt(index: number, elem: Storage<T, E, V> | null): void;
577
+ filterAt(index: number): Storage<T, E, V> | null;
578
+ filterAt(index: number, elem: Storage<T, E, V> | null): void;
579
+ noneOf(entt: E): boolean;
580
+ }
581
+ interface BasicCommonViewConstructor<T extends SparseSetConstructor<any>> {
582
+ Iterator: ViewPointerConstructor<T['EntityType']>;
583
+ CommonType: T;
584
+ EntityType: T['EntityType'];
585
+ new (): BasicCommonView<any, T['EntityType'], SafeInstanceType<EnttTraits<T['EntityType']>['VersionType']>>;
586
+ new (value: Array<Storage<any, any, any>>, excl: Array<Storage<any, any, any>>): BasicCommonView<any, T['EntityType'], SafeInstanceType<EnttTraits<T['EntityType']>['VersionType']>>;
587
+ prototype: BasicCommonView<any, T['EntityType'], SafeInstanceType<EnttTraits<T['EntityType']>['VersionType']>>;
588
+ }
589
+ type ExtractStorageConstructor<T> = T extends Storage<any, any, any> ? BasicStorageConstructor<any, any> : T extends EntityStorage<any, any> ? EntityStorageConstructor<any> : never;
590
+ type ExtractStorageElement<T> = T extends Storage<infer Elem, any, any> ? Elem : unknown;
591
+ type ExtractStorageEntity<T> = T extends Storage<any, infer E, any> ? E : T extends EntityStorage<infer E, any> ? E : unknown;
592
+ type ExtractStorageVersion<T> = T extends Storage<any, any, infer V> ? V : T extends EntityStorage<any, infer V> ? V : unknown;
593
+ interface BasicViewExtendsBasicStorageView<T, E, V, It, Rit> extends BasicStorageView<T, E, V, It, Rit> {
594
+ getStorageByElementType(_ElementType: any): Storage<T, E, V> | null;
595
+ getStorageByIndex(index?: number): Storage<T, E, V> | null;
596
+ setStorageByType(elem: Storage<T, E, V>): void;
597
+ setStorage(index: number, elem: Storage<T, E, V> | null): void;
598
+ access(entt: E): T | undefined;
599
+ getByElementType(entt: E, ElementType: any): T;
600
+ get(entt: E): [T];
601
+ get(entt: E, index: number): T;
602
+ each<ComponentsOnly extends boolean = false>(func: ComponentsOnly extends true ? ((component: T) => void) : ((entity: E, component: T) => void), componentsOnly?: ComponentsOnly): void;
603
+ each(): RangeIterator<ForwardPointer<[E, ...[T]], any>>;
604
+ bitOr(other: E): any;
605
+ }
606
+ interface BasicViewExtendsBasicStorageViewConstructor<S extends Storage<any, any, any> | EntityStorage<any, any>> extends Omit<BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>, 'new' | 'prototype'> {
607
+ CommonType: BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['CommonType'];
608
+ EntityType: BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['EntityType'];
609
+ Iterator: BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['Iterator'];
610
+ ReverseIterator: BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['ReverseIterator'];
611
+ new (value?: S | [S], _?: any): BasicViewExtendsBasicStorageView<ExtractStorageElement<S>, ExtractStorageEntity<S>, ExtractStorageVersion<S>, SafeInstanceType<BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['Iterator']>, SafeInstanceType<BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['ReverseIterator']>>;
612
+ prototype: BasicViewExtendsBasicStorageView<ExtractStorageElement<S>, ExtractStorageEntity<S>, ExtractStorageVersion<S>, SafeInstanceType<BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['Iterator']>, SafeInstanceType<BasicStorageViewConstructor<ExtractStorageConstructor<S>['BaseType'], ExtractStorageConstructor<S>['storagePolicy']>['ReverseIterator'], never>>;
613
+ }
614
+ interface BasicViewExtendsBasicCommonView<Items extends any[], E, V> extends BasicCommonView<any, E, V> {
615
+ useByType(ElementType: any): void;
616
+ use(index: number): void;
617
+ getStorageByElementType(ElementType: any): Storage<any, E, V> | null;
618
+ getStorageByIndex(index: number): Storage<any, E, V> | null;
619
+ setStorageByType(elem: Storage<any, E, V>): void;
620
+ setStorage(index: number, elem: Storage<any, E, V> | null): void;
621
+ access(entt: E): Items;
622
+ getByElementType<Types extends Function[]>(entt: E, ...ElementTypes: Types): Types['length'] extends 1 ? SafeInstanceType<Types[0]> : {
623
+ [K in keyof Types]: SafeInstanceType<Types[K]>;
624
+ };
625
+ getByIndexes(entt: E, ...indexes: number[]): any[];
626
+ each<ComponentsOnly extends boolean = false>(func: ComponentsOnly extends true ? ((...args: Items) => void) : ((...args: [E, ...Items]) => void), componentsOnly?: ComponentsOnly): void;
627
+ each(): RangeIterator<ForwardPointer<[E, ...Items], any>>;
628
+ bitOr(other: any): any;
629
+ }
630
+ interface BasicViewExtendsBasicCommonViewConstructor<Gets extends Array<Storage<any, any, any>>, Excludes extends Array<Storage<any, any, any>>> extends Omit<BasicCommonViewConstructor<SparseSetConstructor<any>>, 'new' | 'prototype'> {
631
+ CommonType: SparseSetConstructor<any>;
632
+ EntityType: SparseSetConstructor<any>['EntityType'];
633
+ Iterator: ViewPointerConstructor<SparseSetConstructor<any>['EntityType']>;
634
+ new (value?: Gets, excl?: Excludes): BasicViewExtendsBasicCommonView<{
635
+ [K in keyof Gets]: ExtractStorageElement<Gets[K]>;
636
+ }, ExtractStorageEntity<Gets[number]>, ExtractStorageVersion<Gets[number]>>;
637
+ prototype: BasicViewExtendsBasicCommonView<{
638
+ [K in keyof Gets]: ExtractStorageElement<Gets[K]>;
639
+ }, ExtractStorageEntity<Gets[number]>, ExtractStorageVersion<Gets[number]>>;
640
+ }
641
+ interface BasicViewTemplate {
642
+ <const Gets extends Array<Storage<any, any, any>>, const Excludes extends Array<Storage<any, any, any>>>(Gets: Gets, Excludes?: Excludes): [Gets, Excludes] extends [[Storage<any, any, any> | EntityStorage<any, any>], [] | undefined | null] ? BasicViewExtendsBasicStorageViewConstructor<Gets[0]> : BasicViewExtendsBasicCommonViewConstructor<Gets, Excludes>;
643
+ }
644
+ declare const basicViewTemplate: Template<BasicViewTemplate>;
645
+ declare function makeView(gets: any, excl?: any): BasicViewExtendsBasicStorageView<unknown, unknown, unknown, SparseSetPointer<any> | ViewPointer<any, number>, any>;
646
+ interface BasicStorageView<T, E, V, It, Rit> extends Iterable<E> {
647
+ leading: Storage<T, E, V> | null;
648
+ handle(): Storage<T, E, V> | null;
649
+ size: number;
650
+ sizeHint(): number;
651
+ empty(): boolean;
652
+ begin(): It;
653
+ end(): It;
654
+ rbegin(): Rit;
655
+ rend(): Rit;
656
+ front(): E;
657
+ back(): E;
658
+ ok(): boolean;
659
+ }
660
+ interface BasicStorageViewConstructor<T extends SparseSetConstructor<any>, P extends DeletionPolicy> {
661
+ Iterator: P extends 1 ? ViewPointerConstructor<T['EntityType']> : T['Iterator'];
662
+ ReverseIterator: P extends 1 ? undefined : T['ReverseIterator'];
663
+ CommonType: T;
664
+ EntityType: T['EntityType'];
665
+ new (value?: Storage<any, any, any> | null): BasicStorageView<any, T['EntityType'], SafeInstanceType<EnttTraits<T['EntityType']>['VersionType']>, InstanceType<BasicStorageViewConstructor<T, P>['Iterator']>, SafeInstanceType<BasicStorageViewConstructor<T, P>['ReverseIterator'], never>>;
666
+ prototype: BasicStorageView<any, T['EntityType'], SafeInstanceType<EnttTraits<T['EntityType']>['VersionType']>, InstanceType<BasicStorageViewConstructor<T, P>['Iterator']>, SafeInstanceType<BasicStorageViewConstructor<T, P>['ReverseIterator'], never>>;
667
+ }
668
+
669
+ declare class Delegate<T extends (this: any, ...args: any[]) => any> extends Disposable {
670
+ private fn;
671
+ private instance;
672
+ constructor(fn: T, instance?: any);
673
+ dispose(): void;
674
+ reset(): void;
675
+ empty(): boolean;
676
+ connect(fn: T, instance?: any): void;
677
+ invoke(...args: Parameters<T>): ReturnType<T>;
678
+ }
679
+ declare class Sink<Ret, Args extends any[]> extends Disposable {
680
+ private signal;
681
+ constructor(signal?: Sigh<(...args: Args) => Ret>);
682
+ dispose(): void;
683
+ empty(): boolean;
684
+ private disconnectIf;
685
+ disconnect(fn?: (...args: Args) => Ret, instance?: any): void;
686
+ connect(fn: (...args: Args) => Ret, instance?: any): Connection;
687
+ }
688
+ declare class Sigh<T extends (this: any, ...args: any[]) => any> extends Disposable {
689
+ private readonly calls;
690
+ static SinkType: typeof Sink;
691
+ constructor();
692
+ dispose(): void;
693
+ get size(): number;
694
+ empty(): boolean;
695
+ publish(...args: Parameters<T>): void;
696
+ collect<U extends (value: ReturnType<T>) => boolean | undefined>(fn: U, ...args: Parameters<T>): void;
697
+ }
698
+ declare class Connection {
699
+ private readonly signal;
700
+ private readonly disconnect;
701
+ constructor(fn: Delegate<(signal: any) => void>, ref: any);
702
+ empty(): boolean;
703
+ release(): void;
704
+ }
705
+ declare class ScopedConnection extends Disposable {
706
+ private readonly conn;
707
+ constructor(conn: Connection);
708
+ dispose(): void;
709
+ empty(): boolean;
710
+ release(): void;
711
+ }
712
+ declare class BasicDispatcher extends Disposable {
713
+ private readonly pools;
714
+ constructor();
715
+ dispose(): void;
716
+ private assure;
717
+ private constAssure;
718
+ size<C extends Function>(Type?: C): number;
719
+ sink<C extends Function>(Type: C): Sink<void, [payload: SafeInstanceType<C>]>;
720
+ trigger<C extends Function>(Type: C, event: SafeInstanceType<C>): void;
721
+ enqueue<C extends Function>(Type: C, ...args: SafeParameters<C>): void;
722
+ disconnect(instance: any): void;
723
+ clear<C extends Function>(Type?: C): void;
724
+ update<C extends Function>(Type?: C): void;
725
+ }
726
+ declare class Emitter<Derived extends Emitter<Derived>> extends Disposable {
727
+ private readonly handlers;
728
+ constructor();
729
+ dispose(): void;
730
+ on<C extends Function>(Type: C, fn: (value: SafeInstanceType<C>, thisArg: Derived) => void): void;
731
+ publish(value: NonNullable<unknown>): void;
732
+ erase(Type: Function): void;
733
+ clear(): void;
734
+ contains(Type: Function): boolean;
735
+ empty(): boolean;
736
+ }
737
+
738
+ type BasicSighMixin<S, R, E> = S & {
739
+ onConstruct(): Sink<void, [R, E]>;
740
+ onUpdate(): Sink<void, [R, E]>;
741
+ onDestroy(): Sink<void, [R, E]>;
742
+ registry(): R;
743
+ };
744
+ type BasicSighMixinConstructor<T extends new (...args: any[]) => any, R, E> = Exclude<T, 'new' | 'prototype'> & {
745
+ UnderlyingType: T;
746
+ new (...args: ConstructorParameters<T>): BasicSighMixin<InstanceType<T>, R, E>;
747
+ prototype: BasicSighMixin<InstanceType<T>, R, E>;
748
+ };
749
+ declare const basicSighMixinTemplate: Template<(...args: any[]) => any>;
750
+
751
+ declare class GroupDescriptor extends Disposable {
752
+ /** @virtual */
753
+ owned(_id: any): boolean;
754
+ }
755
+ interface GroupHandlerTemplate {
756
+ <T extends SparseSetConstructor<any>>(Type: T, Get: number, Exclude: number): GroupHandlerConstructor<T>;
757
+ <T extends SparseSetConstructor<any>>(Type: T, Owned: 0, Get: number, Exclude: number): GroupHandlerConstructor<T>;
758
+ <T extends SparseSetConstructor<any>>(Type: T, Owned: number, Get: number, Exclude: number): OwningGroupHandlerConstructor<T>;
759
+ }
760
+ interface OwningGroupHandlerConstructor<T extends SparseSetConstructor<any>> {
761
+ EntityType: T['EntityType'];
762
+ CommonType: T;
763
+ new (ogpool: Array<BasicSighMixin<Storage<any, SafeInstanceType<T['EntityType']>, SafeInstanceType<T['TraitsType']['VersionType']>>, any, SafeInstanceType<T['EntityType']>>>, epool: Array<BasicSighMixin<Storage<any, SafeInstanceType<T['EntityType']>, SafeInstanceType<T['TraitsType']['VersionType']>>, any, SafeInstanceType<T['EntityType']>>>): OwningGroupHandler<T['EntityType'], SafeInstanceType<T['TraitsType']['VersionType']>>;
764
+ }
765
+ interface GroupHandlerConstructor<T extends SparseSetConstructor<any>> {
766
+ EntityType: T['EntityType'];
767
+ CommonType: T;
768
+ new (gpool: Array<BasicSighMixin<Storage<any, SafeInstanceType<T['EntityType']>, SafeInstanceType<T['TraitsType']['VersionType']>>, any, SafeInstanceType<T['EntityType']>>>, epool: Array<BasicSighMixin<Storage<any, SafeInstanceType<T['EntityType']>, SafeInstanceType<T['TraitsType']['VersionType']>>, any, SafeInstanceType<T['EntityType']>>>): GroupHandler<T['EntityType'], SafeInstanceType<T['TraitsType']['VersionType']>>;
769
+ }
770
+ interface GroupHandler<E, V> extends GroupDescriptor {
771
+ handle(): BasicSparseSet<E, V>;
772
+ storage(index: number): BasicSparseSet<E, V>;
773
+ }
774
+ interface OwningGroupHandler<E, V> extends GroupDescriptor {
775
+ length(): number;
776
+ storage(index: number): BasicSparseSet<E, V>;
777
+ }
778
+ interface NonOwningGroup<Get extends Array<Storage<any, any, any> | EntityStorage<any, any>>, Exclude extends Array<Storage<any, any, any> | EntityStorage<any, any>>, E = ExtractStorageEntity<Get[number]>, V = ExtractStorageVersion<Get[number]>> extends Iterable<E> {
779
+ handle(): BasicSparseSet<E, V> | null;
780
+ storage<Index extends number>(index: Index): [...Get, ...Exclude][Index] | null;
781
+ storage<T extends Function>(ElementType: T): ([SafeInstanceType<T>] extends [E] ? EntityStorage<SafeInstanceType<T>, V> : Storage<SafeInstanceType<T>, E, V>) | null;
782
+ size(): number;
783
+ capacity(): number;
784
+ empty(): boolean;
785
+ begin(): SparseSetPointer<E>;
786
+ end(): SparseSetPointer<E>;
787
+ rbegin(): ReversePointer<SparseSetPointer<E>>;
788
+ rend(): ReversePointer<SparseSetPointer<E>>;
789
+ front(): E;
790
+ back(): E;
791
+ access(pos: number): E;
792
+ ok(): boolean;
793
+ find(entt: E): SparseSetPointer<E>;
794
+ contains(entt: E): boolean;
795
+ get<const Types extends Function[]>(entt: E, ...types: Types): Types['length'] extends 0 ? {
796
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
797
+ } : Types['length'] extends 1 ? SafeInstanceType<Types[0]> : {
798
+ [K in keyof Types]: SafeInstanceType<Types[K]>;
799
+ };
800
+ getByIndexes<const Indexes extends number[]>(entt: E, ...indexes: Indexes): Indexes['length'] extends 0 ? {
801
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
802
+ } : Indexes['length'] extends 1 ? ExtractStorageElement<Get[Indexes[0]]> : {
803
+ [K in keyof Indexes]: ExtractStorageElement<Get[Indexes[K]]>;
804
+ };
805
+ each<ComponentsOnly extends boolean = false>(func: ComponentsOnly extends true ? (...components: {
806
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
807
+ }) => void : (...components: [E, ...{
808
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
809
+ }]) => void, componentsOnly?: ComponentsOnly): void;
810
+ each(): IterableIterator<[E, ...{
811
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
812
+ }]>;
813
+ sort<const Types extends Function[], X = Types['length'] extends 0 ? E : {
814
+ [K in keyof Types]: SafeInstanceType<Types[K]>;
815
+ }>(compareFn: (lhs: X, rhs: X) => number, types: Types, algo?: (arr: E[], compare?: (a: E, b: E) => number) => E[]): void;
816
+ sortByIndexes<const Indexes extends number[], X = Indexes['length'] extends 0 ? E : {
817
+ [K in keyof Indexes]: ExtractStorageElement<Get[Indexes[K]]>;
818
+ }>(compareFn: (lhs: X, rhs: X) => number, indexes: Indexes, algo?: (arr: E[], compare?: (a: E, b: E) => number) => E[]): void;
819
+ sortAs(first: ForwardPointer<any, any>, last: ForwardPointer<any, any>): void;
820
+ }
821
+ interface OwningGroup<Owned extends Array<Storage<any, any, any> | EntityStorage<any, any>>, Get extends Array<Storage<any, any, any> | EntityStorage<any, any>>, Exclude extends Array<Storage<any, any, any> | EntityStorage<any, any>>, E = ExtractStorageEntity<[...Owned, ...Get][number]>, V = ExtractStorageVersion<[...Owned, ...Get][number]>> extends Iterable<ExtractStorageEntity<Owned[number]>> {
822
+ handle(): BasicSparseSet<E, V> | null;
823
+ storage<Index extends number>(index: Index): [...Owned, ...Get, ...Exclude][Index] | null;
824
+ storage<T extends Function>(ElementType: T): ([SafeInstanceType<T>] extends [E] ? EntityStorage<SafeInstanceType<T>, V> : Storage<SafeInstanceType<T>, E, V>) | null;
825
+ size(): number;
826
+ empty(): boolean;
827
+ begin(): SparseSetPointer<E>;
828
+ end(): SparseSetPointer<E>;
829
+ rbegin(): ReversePointer<SparseSetPointer<E>>;
830
+ rend(): ReversePointer<SparseSetPointer<E>>;
831
+ front(): E;
832
+ back(): E;
833
+ access(pos: number): E;
834
+ ok(): boolean;
835
+ find(entt: E): SparseSetPointer<E>;
836
+ contains(entt: E): boolean;
837
+ get<const Types extends Function[]>(entt: E, ...types: Types): Types['length'] extends 0 ? {
838
+ [K in keyof [...Owned, ...Get]]: ExtractStorageElement<[...Owned, ...Get][K]>;
839
+ } : Types['length'] extends 1 ? SafeInstanceType<Types[0]> : {
840
+ [K in keyof Types]: SafeInstanceType<Types[K]>;
841
+ };
842
+ getByIndexes<const Indexes extends number[]>(entt: E, ...indexes: Indexes): Indexes['length'] extends 0 ? {
843
+ [K in keyof [...Owned, ...Get]]: ExtractStorageElement<[...Owned, ...Get][K]>;
844
+ } : Indexes['length'] extends 1 ? ExtractStorageElement<[...Owned, ...Get][Indexes[0]]> : {
845
+ [K in keyof Indexes]: ExtractStorageElement<[...Owned, ...Get][Indexes[K]]>;
846
+ };
847
+ each<ComponentsOnly extends boolean = false>(func: ComponentsOnly extends true ? (...args: [...{
848
+ [K in keyof Owned]: ExtractStorageElement<Owned[K]>;
849
+ }, ...{
850
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
851
+ }]) => void : (...args: [E, ...{
852
+ [K in keyof Owned]: ExtractStorageElement<Owned[K]>;
853
+ }, ...{
854
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
855
+ }]) => void, componentsOnly?: ComponentsOnly): void;
856
+ each(): IterableIterator<[E, ...{
857
+ [K in keyof Owned]: ExtractStorageElement<Owned[K]>;
858
+ }, ...{
859
+ [K in keyof Get]: ExtractStorageElement<Get[K]>;
860
+ }]>;
861
+ sort<const Types extends Function[], X = Types['length'] extends 0 ? E : {
862
+ [K in keyof Types]: SafeInstanceType<Types[K]>;
863
+ }>(compareFn: (lhs: X, rhs: X) => number, types: Types, algo?: (arr: E[], compare?: (a: E, b: E) => number) => E[]): void;
864
+ sortByIndexes<const Indexes extends number[], X = Indexes['length'] extends 0 ? E : {
865
+ [K in keyof Indexes]: ExtractStorageElement<[...Owned, ...Get][Indexes[K]]>;
866
+ }>(compareFn: (lhs: X, rhs: X) => number, indexes: Indexes, algo?: (arr: E[], compare?: (a: E, b: E) => number) => E[]): void;
867
+ }
868
+ interface NonOwningGroupConstructor<Get extends Array<Storage<any, any, any>>, Exclude extends Array<Storage<any, any, any>>> {
869
+ Handler: GroupHandlerConstructor<SparseSetConstructor<ExtractStorageEntity<Get[number]>>>;
870
+ groupId(): string;
871
+ new (handler?: GroupHandler<ExtractStorageEntity<Get[number]>, ExtractStorageVersion<Get[number]>>): NonOwningGroup<Get, Exclude>;
872
+ prototype: NonOwningGroup<Get, Exclude>;
873
+ }
874
+ interface OwningGroupConstructor<Owned extends Array<Storage<any, any, any>>, Get extends Array<Storage<any, any, any>>, Exclude extends Array<Storage<any, any, any>>> {
875
+ Handler: OwningGroupHandlerConstructor<SparseSetConstructor<ExtractStorageEntity<[...Owned, ...Get][number]>>>;
876
+ groupId(): string;
877
+ new (handler?: OwningGroupHandler<ExtractStorageEntity<[...Owned, ...Get][number]>, ExtractStorageVersion<[...Owned, ...Get][number]>>): OwningGroup<Owned, Get, Exclude>;
878
+ prototype: OwningGroup<Owned, Get, Exclude>;
879
+ }
880
+ interface GroupTemplate {
881
+ <const Owned extends Array<Storage<any, any, any>>, const Get extends Array<Storage<any, any, any>>, const Exclude extends Array<Storage<any, any, any>>>(owned: Owned, get: Get, exclude: Exclude): Owned['length'] extends 0 ? NonOwningGroupConstructor<Get, Exclude> : OwningGroupConstructor<Owned, Get, Exclude>;
882
+ }
883
+ declare const basicGroupTemplate: Template<GroupTemplate>;
884
+ declare function makeGroup<const Owned extends Array<Storage<any, any, any>>, const Get extends Array<Storage<any, any, any>>, const Exclude extends Array<Storage<any, any, any>> = []>(owned: Owned, get: Get, exclude?: Exclude): Owned['length'] extends 0 ? NonOwningGroup<Get, Exclude> : OwningGroup<Owned, Get, Exclude>;
885
+
886
+ interface BasicRegistryConstructor<T extends EntityConstructor> {
887
+ new (): BasicRegistry<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
888
+ prototype: BasicRegistry<SafeInstanceType<T>, SafeInstanceType<EnttTraits<T>['VersionType']>>;
889
+ EntityType: T;
890
+ TraitsType: EnttTraits<T>;
891
+ CommonType: SparseSetConstructor<T>;
892
+ }
893
+ type StorageType<T> = T extends [infer U, any] ? U : T extends Function ? T : T extends undefined ? undefined : never;
894
+ type MapStorageKeyToStorage<E, Arr> = {
895
+ [K in keyof Arr]: SafeInstanceType<StorageType<Arr[K]>> extends E ? EntityStorage<SafeInstanceType<StorageType<Arr[K]>>, any> : Storage<SafeInstanceType<StorageType<Arr[K]>>, E, any>;
896
+ };
897
+ interface BasicRegistry<T, V> extends Disposable {
898
+ create(hint?: T): T;
899
+ createRange(range: Range<ForwardPointer<T, any>>): void;
900
+ createRange(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>): void;
901
+ dispose(): void;
902
+ ctx(): Record<string, any>;
903
+ storage(): IteratorObject<[PropertyKey | Function, Storage<any, T, V>]>;
904
+ getStorage<K extends StorageKey<Function | undefined> | PropertyKey>(k: K, forceConst?: boolean): K extends StorageKey<infer U> ? BasicSighMixin<U extends undefined ? EmptyStorage<T, V> : Storage<SafeInstanceType<U>, T, V>, BasicRegistry<T, V>, T> : (BasicSighMixin<Storage<SafeInstanceType<unknown>, T, V>, BasicRegistry<T, V>, T> | undefined);
905
+ reset(id: any): boolean;
906
+ valid(entt: T): boolean;
907
+ current(entt: T): V;
908
+ destroy(entt: T, version?: V): V;
909
+ destroyRange(iterable: Range<ForwardPointer<T, any>>): void;
910
+ destroyRange(iterable: ForwardPointer<T, any>, last: ForwardPointer<T, any>): void;
911
+ insert<U extends Function>(ComponentType: StorageKey<U>, first: ForwardPointer<T, any>, last: ForwardPointer<T, any>, value?: SafeInstanceType<U>): void;
912
+ insertRange<U extends Function>(ComponentType: StorageKey<U>, first: ForwardPointer<T, any>, last: ForwardPointer<T, any>, from: ForwardPointer<SafeInstanceType<U>, any>): void;
913
+ emplace<U extends Function>(entt: T, ComponentType: StorageKey<U>, ...args: SafeParameters<U>): SafeInstanceType<U>;
914
+ emplaceOrReplace<U extends Function>(entt: T, ComponentType: StorageKey<U>, ...args: SafeParameters<U>): SafeInstanceType<U>;
915
+ patch<U extends Function, F extends (component: SafeInstanceType<U>) => SafeInstanceType<U> | undefined>(entt: T, ComponentType: StorageKey<U>, ...func: F[]): SafeInstanceType<U>;
916
+ replace<U extends Function>(entt: T, ComponentType: StorageKey<U>, ...args: SafeParameters<U>): SafeInstanceType<U>;
917
+ remove(entt: T, ...ComponentTypes: Array<StorageKey<Function>>): number;
918
+ removeRange(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>, ...ComponentTypes: Array<StorageKey<Function>>): number;
919
+ eraseIf(entt: T, func: (id: Function | PropertyKey, storage: Storage<any, T, V>) => boolean): void;
920
+ erase(entt: T, ...ComponentTypes: Array<StorageKey<Function>>): void;
921
+ eraseRange(first: ForwardPointer<T, any>, last: ForwardPointer<T, any>, ...ComponentTypes: Array<StorageKey<Function>>): void;
922
+ compact(...ComponentTypes: Array<StorageKey<Function>>): void;
923
+ allOf(entt: T, ...ComponentTypes: Array<StorageKey<Function>>): boolean;
924
+ anyOf(entt: T, ...ComponentTypes: Array<StorageKey<Function>>): boolean;
925
+ tryGet<U extends Array<StorageKey<Function>>>(entt: T, ...ComponentType: U): [U['length']] extends [1] ? (SafeInstanceType<StorageType<U[0]>> | undefined) : {
926
+ [K in keyof U]: SafeInstanceType<StorageType<U[K]>> | undefined;
927
+ };
928
+ get<U extends Array<StorageKey<Function>>>(entt: T, ...ComponentType: U): [U['length']] extends [1] ? (SafeInstanceType<StorageType<U[0]>>) : {
929
+ [K in keyof U]: SafeInstanceType<StorageType<U[K]>>;
930
+ };
931
+ getOrEmplace<U extends Function>(entt: T, ComponentType: StorageKey<U>, ...args: SafeParameters<U>): SafeInstanceType<U>;
932
+ clear(...ComponentTypes: Array<StorageKey<Function>>): void;
933
+ orphan(entt: T): boolean;
934
+ onConstruct<U extends Function>(ComponentType: StorageKey<U>): Sink<void, [BasicRegistry<T, V>, T]>;
935
+ onUpdate<U extends Function>(ComponentType: StorageKey<U>): Sink<void, [BasicRegistry<T, V>, T]>;
936
+ onDestroy<U extends Function>(ComponentType: StorageKey<U>): Sink<void, [BasicRegistry<T, V>, T]>;
937
+ sort<U extends Function>(ComponentType: StorageKey<U>, compare: (lhs: SafeInstanceType<U>, rhs: SafeInstanceType<U>) => number, algo?: (arr: T[], compare?: (a: T, b: T) => number) => T[]): void;
938
+ sortByEntity(ComponentType: StorageKey<Function>, compare: (lhs: T, rhs: T) => number, algo?: (arr: T[], compare?: (a: T, b: T) => number) => T[]): void;
939
+ sortAs(To: StorageKey<Function>, From: StorageKey<Function>): void;
940
+ view<const Contains extends Array<StorageKey<Function>>>(types: Contains, excludes?: Array<StorageKey<Function>>): BasicView<T, {
941
+ [K in keyof Contains]: SafeInstanceType<StorageType<Contains[K]>>;
942
+ }>;
943
+ group<const Owned extends Array<StorageKey<Function>>, const Get extends Array<StorageKey<Function>> = [], const Exclude extends Array<StorageKey<Function>> = []>(owned: Owned, get?: Get, exclude?: Exclude): Owned['length'] extends 0 ? NonOwningGroup<MapStorageKeyToStorage<T, Get>, MapStorageKeyToStorage<T, Exclude>> : OwningGroup<MapStorageKeyToStorage<T, Owned>, MapStorageKeyToStorage<T, Get>, MapStorageKeyToStorage<T, Exclude>>;
944
+ groupIfExists<const Owned extends Array<StorageKey<Function>>, const Get extends Array<StorageKey<Function>> = [], const Exclude extends Array<StorageKey<Function>> = []>(owned: Owned, get?: Get, exclude?: Exclude): Owned['length'] extends 0 ? NonOwningGroup<MapStorageKeyToStorage<T, Get>, MapStorageKeyToStorage<T, Exclude>> : OwningGroup<MapStorageKeyToStorage<T, Owned>, MapStorageKeyToStorage<T, Get>, MapStorageKeyToStorage<T, Exclude>>;
945
+ owned(...Types: Function[]): boolean;
946
+ }
947
+ interface BasicRegistryTemplate {
948
+ <T extends EntityConstructor>(ValueType: T): BasicRegistryConstructor<T>;
949
+ }
950
+ declare const basicRegistryTemplate: Template<BasicRegistryTemplate>;
951
+ declare const Registry: BasicRegistryConstructor<DefaultEntityConstructor>;
952
+
953
+ declare class RuntimeViewIterator<E> implements BidirectionalPointer<E, RuntimeViewIterator<E>> {
954
+ private pools;
955
+ private filter;
956
+ private it;
957
+ private tombstoneCheck;
958
+ private valid;
959
+ constructor();
960
+ constructor(cpools: Array<BaseSparseSet<E, any>>, curr: SparseSetPointer<E>, ignore: Array<BaseSparseSet<E, any>>);
961
+ clone(target?: RuntimeViewIterator<E>): RuntimeViewIterator<E>;
962
+ swap(other: RuntimeViewIterator<E>): void;
963
+ write(value: E): E;
964
+ deref(): E;
965
+ selfPlus(): this;
966
+ selfMinus(): this;
967
+ equals(other: RuntimeViewIterator<E>): boolean;
968
+ }
969
+ interface BasicRuntimeView<E> {
970
+ clear(): void;
971
+ dispose(): void;
972
+ iterate(base: BaseSparseSet<E, any>): this;
973
+ exclude(base: BaseSparseSet<E, any>): this;
974
+ sizeHint(): number;
975
+ begin(): RuntimeViewIterator<E>;
976
+ end(): RuntimeViewIterator<E>;
977
+ ok(): boolean;
978
+ contains(entt: E): boolean;
979
+ each(func: (entity: E) => void): void;
980
+ [Symbol.iterator](): RangeIterator<RuntimeViewIterator<E>>;
981
+ }
982
+ interface BasicRuntimeViewConstructor<T extends SparseSetConstructor<any>> {
983
+ EntityType: T['EntityType'];
984
+ CommonType: T;
985
+ Iterator: typeof RuntimeViewIterator<SafeInstanceType<T['EntityType']>>;
986
+ new (): BasicRuntimeView<SafeInstanceType<T['EntityType']>>;
987
+ prototype: BasicRuntimeView<SafeInstanceType<T['EntityType']>>;
988
+ }
989
+ interface BasicRuntimeViewTemplate {
990
+ <T extends SparseSetConstructor<any>>(Type: T): BasicRuntimeViewConstructor<T>;
991
+ }
992
+ declare const basicRuntimeViewTemplate: Template<BasicRuntimeViewTemplate>;
993
+ declare const RuntimeView: BasicRuntimeViewConstructor<SparseSetConstructor<DefaultEntityConstructor>>;
994
+
995
+ interface NotConstructorErrorConstructor extends TypeErrorConstructor {
996
+ new (message?: string): NotConstructorError;
997
+ (message?: string): never;
998
+ readonly prototype: NotConstructorError;
999
+ }
1000
+ interface NotConstructorError extends TypeError {
1001
+ name: 'NotConstructorError';
1002
+ }
1003
+ declare const NotConstructorError: NotConstructorErrorConstructor;
1004
+
1005
+ interface BasicSnapshotTemplate {
1006
+ <R extends BasicRegistryConstructor<any>>(Registry: R): BasicSnapshotConstructor<R>;
1007
+ }
1008
+ interface BasicSnapshotLoaderTemplate {
1009
+ <R extends BasicRegistryConstructor<any>>(Registry: R): BasicSnapshotLoaderConstructor<R>;
1010
+ }
1011
+ interface BasicContinuousLoaderTemplate {
1012
+ <R extends BasicRegistryConstructor<any>>(Registry: R): BasicContinuousLoaderConstructor<R>;
1013
+ }
1014
+ interface BasicSnapshotConstructor<R extends BasicRegistryConstructor<any>> {
1015
+ new (registry: SafeInstanceType<R>): BasicSnapshot<SafeInstanceType<R['EntityType']>, SafeInstanceType<EnttTraits<R['EntityType']>['EntityType']>>;
1016
+ prototype: BasicSnapshot<SafeInstanceType<R['EntityType']>, SafeInstanceType<EnttTraits<R['EntityType']>['EntityType']>>;
1017
+ TraitsType: EnttTraits<SafeInstanceType<R['EntityType']>>;
1018
+ RegistryType: R;
1019
+ EntityType: SafeInstanceType<R['EntityType']>;
1020
+ }
1021
+ interface BasicSnapshot<E, UE> extends Disposable {
1022
+ get(archive: OutputArchive<E, UE>, Type: StorageKey<Function>): this;
1023
+ getRange(archive: OutputArchive<E, UE>, first: ForwardPointer<E, any>, last: ForwardPointer<E, any>, Type: StorageKey<Function>): this;
1024
+ }
1025
+ interface BasicSnapshotLoaderConstructor<R extends BasicRegistryConstructor<any>> {
1026
+ new (registry: SafeInstanceType<R>): BasicSnapshotLoader<SafeInstanceType<R['EntityType']>, SafeInstanceType<EnttTraits<R['EntityType']>['EntityType']>>;
1027
+ prototype: BasicSnapshotLoader<SafeInstanceType<R['EntityType']>, SafeInstanceType<EnttTraits<R['EntityType']>['EntityType']>>;
1028
+ TraitsType: EnttTraits<SafeInstanceType<R['EntityType']>>;
1029
+ RegistryType: R;
1030
+ EntityType: SafeInstanceType<R['EntityType']>;
1031
+ }
1032
+ interface BasicSnapshotLoader<E, UE> extends Disposable {
1033
+ get(archive: InputArchive<E, UE>, Type: StorageKey<Function>): this;
1034
+ orphans(): this;
1035
+ }
1036
+ interface BasicContinuousLoaderConstructor<R extends BasicRegistryConstructor<any>> {
1037
+ new (registry: SafeInstanceType<R>): BasicContinuousLoader<SafeInstanceType<R['EntityType']>, SafeInstanceType<EnttTraits<R['EntityType']>['EntityType']>>;
1038
+ prototype: BasicContinuousLoader<SafeInstanceType<R['EntityType']>, SafeInstanceType<EnttTraits<R['EntityType']>['EntityType']>>;
1039
+ TraitsType: EnttTraits<SafeInstanceType<R['EntityType']>>;
1040
+ RegistryType: R;
1041
+ EntityType: SafeInstanceType<R['EntityType']>;
1042
+ }
1043
+ interface BasicContinuousLoader<E, UE> extends Disposable {
1044
+ get(archive: InputArchive<E, UE>, Type: StorageKey<Function>): this;
1045
+ orphans(): this;
1046
+ contains(entt: E): boolean;
1047
+ map(entt: E): E;
1048
+ }
1049
+ interface OutputArchive<EntityType, UnderlyingEntityType> {
1050
+ saveSize(size: UnderlyingEntityType): void;
1051
+ saveEntity(entity: EntityType): void;
1052
+ saveComponent(component: any): void;
1053
+ }
1054
+ interface InputArchive<EntityType, UnderlyingEntityType> {
1055
+ loadSize(size: IRef<UnderlyingEntityType>): void;
1056
+ loadEntity(entity: IRef<EntityType>): void;
1057
+ loadComponent(component: IRef<any>): void;
1058
+ }
1059
+ declare const basicSnapshotTemplate: Template<BasicSnapshotTemplate>;
1060
+ declare const basicSnapshotLoaderTemplate: Template<BasicSnapshotLoaderTemplate>;
1061
+ declare const basicContinuousLoaderTemplate: Template<BasicContinuousLoaderTemplate>;
1062
+ declare const Snapshot: BasicSnapshotConstructor<BasicRegistryConstructor<DefaultEntityConstructor>>;
1063
+ declare const SnapshotLoader: BasicSnapshotLoaderConstructor<BasicRegistryConstructor<DefaultEntityConstructor>>;
1064
+ declare const ContinuousLoader: BasicContinuousLoaderConstructor<BasicRegistryConstructor<DefaultEntityConstructor>>;
1065
+
1066
+ declare const version: string;
1067
+
1068
+ export { AggregatePointer, ArrayPointer, ArrayRange, BasicDispatcher, Connection, ContinuousLoader, Delegate, DeletionPolicy, Disposable, Emitter, EmptyTypeOptimization, Entity, Float32, Float64, GroupDescriptor, Int16, Int32, Int64, Int8, NotConstructorError, RangeIterator, Registry, ReversePointer, RuntimeView, RuntimeViewIterator, ScopedConnection, Sigh, Sink, Snapshot, SnapshotLoader, SparseSet, SparseSetPointer, StoragePointer, Template, Uint16, Uint32, Uint64, Uint8, basicContinuousLoaderTemplate, basicEnttTraitsTemplate, basicGroupTemplate, basicRegistryTemplate, basicRuntimeViewTemplate, basicSighMixinTemplate, basicSnapshotLoaderTemplate, basicSnapshotTemplate, basicSparseSetTemplate, basicStorageTemplate, basicViewTemplate, commonType, componentTraitsTemplate, config, createSafeNew, defineTemplate, directCall, distance, enttTraitsTemplate, insertionSort, internalEnttTraits, isEmptyClass, makeGroup, makeRangePointer, makeReversePointer, makeView, defaultSort as stdSort, storageTemplate, storageTypeTTemplate, storageTypeTemplate, toIterator, toRange, version };
1069
+ export type { BaseSparseSet, BasicContinuousLoader, BasicContinuousLoaderConstructor, BasicContinuousLoaderTemplate, BasicEnttTraits, BasicEnttTraitsTemplate, BasicRegistry, BasicRegistryConstructor, BasicRegistryTemplate, BasicRuntimeView, BasicRuntimeViewConstructor, BasicRuntimeViewTemplate, BasicSighMixin, BasicSighMixinConstructor, BasicSnapshot, BasicSnapshotConstructor, BasicSnapshotLoader, BasicSnapshotLoaderConstructor, BasicSnapshotLoaderTemplate, BasicSnapshotTemplate, BasicSparseSet, BasicSparseSetTemplate, BasicStorageConstructor, BasicStorageTemplate, BasicView, BasicViewExtendsBasicCommonView, BasicViewExtendsBasicCommonViewConstructor, BasicViewExtendsBasicStorageView, BasicViewExtendsBasicStorageViewConstructor, BasicViewTemplate, BidirectionalPointer, ComponentTraits, ComponentTraitsTemplate, CustomEntityConstructor, DefaultEntityConstructor, DisposableConstructor, EmptyStorage, EmptyStorageConstructor, EntityConstructor, EntityStorage, EntityStorageConstructor, EnttTraits, EnttTraitsTemplate, ExtractStorageConstructor, ExtractStorageElement, ExtractStorageEntity, ExtractStorageVersion, Float32Constructor, Float64Constructor, ForwardPointer, GroupHandler, GroupHandlerConstructor, GroupHandlerTemplate, GroupTemplate, InputArchive, Int16Constructor, Int32Constructor, Int64Constructor, Int8Constructor, InternalEnttTraits, InternalEnttTraitsReturn, InternalEnttTraitsTemplate, InternalSpecializationDefinition, IsEmptyClass, IterableHelpers, MapStorageKeyToStorage, NonOwningGroup, NonOwningGroupConstructor, NotConstructorErrorConstructor, OutputArchive, OwningGroup, OwningGroupConstructor, OwningGroupHandler, OwningGroupHandlerConstructor, RandomAccessPointer, Range, ReversableRange, SafeInstanceType, SafeParameters, SparseSetConstructor, SpecializationDefinition, Storage, StorageTemplate, StorageType, Uint16Constructor, Uint32Constructor, Uint64Constructor, Uint8Constructor };