export type ObserverCadence = 'frame-end' | 'per-system'; export type ChangeTracking = 'component' | 'field'; export type WorkerOption = number | 'no-sab'; export interface ReactivityOptions { maxWritesPerFrame?: number; maxShapeChangesPerFrame?: number; observerCadence?: ObserverCadence; changeTrackingDefault?: ChangeTracking; logEntryWords?: 1 | 2; shrinkRings?: boolean; } export interface SchedulerOptions { workers?: WorkerOption; } export interface WorldOptions { components?: readonly unknown[]; relations?: readonly unknown[]; systems?: readonly unknown[]; maxEntities?: number; generationBits?: number; threaded?: boolean; /** * Register the prefab built-ins: the `Prefab` tag component (auto-appended after user * components, stable name "ecsia:Prefab") and — once `createRelations(world)` attaches — the * `IsA` tag relation ("ecsia:IsA"). Opt-in because the IsA relation flips the world to * two-word reactivity log entries, which a prefab-free, relation-free world should not pay. */ prefabs?: boolean; maxHotArchetypes?: number; reactivity?: ReactivityOptions; scheduler?: SchedulerOptions; } export interface ResolvedReactivityOptions { readonly maxWritesPerFrame: number; readonly maxShapeChangesPerFrame: number; readonly observerCadence: ObserverCadence; readonly changeTrackingDefault: ChangeTracking; readonly logEntryWords: 1 | 2; readonly shrinkRings: boolean; } export interface ResolvedWorldOptions { readonly components: readonly unknown[]; readonly relations: readonly unknown[]; readonly systems: readonly unknown[]; readonly maxEntities: number; readonly generationBits: number; /** Derived: 32 - generationBits. */ readonly indexBits: number; readonly threaded: boolean; readonly prefabs: boolean; readonly maxHotArchetypes: number; readonly reactivity: ResolvedReactivityOptions; readonly scheduler: { readonly workers: WorkerOption; }; } /** Thrown synchronously at construction for any invalid configuration. */ export declare class ConfigError extends Error { readonly name = "ConfigError"; constructor(message: string); } export declare function resolveOptions(options?: WorldOptions): ResolvedWorldOptions; //# sourceMappingURL=config.d.ts.map