/** * Field Registry * * Owner-scoped field/property index extracted from SymbolTable. * Stores Property / Variable / Const / Static symbols keyed by * `ownerNodeId\0fieldName` for O(1) lookup. Supports multiple defs * under the same (owner, name) — e.g. legacy Property plus a * scope-resolution Variable reconciliation entry. */ import type { SymbolDefinition } from '../../../_shared/index.js'; export interface FieldRegistry { /** * First field registered under `(ownerNodeId, fieldName)`, if any. * Registration order is first-wins: when a Property and a Variable share * an `(owner, simpleName)` key, the earlier `register(...)` call's def is * returned. Prefer `lookupAllByOwner` when overloads or duplicate-kind * entries under the same name must all be visible. */ lookupFieldByOwner(ownerNodeId: string, fieldName: string): SymbolDefinition | undefined; /** * Every field registered under `(ownerNodeId, fieldName)` in registration * order. Returns `[]` on miss. */ lookupAllByOwner(ownerNodeId: string, fieldName: string): readonly SymbolDefinition[]; } export interface MutableFieldRegistry extends FieldRegistry { /** Register a field under its owner. Appends when the key already exists. */ register(ownerNodeId: string, fieldName: string, def: SymbolDefinition): void; /** Clear all entries. */ clear(): void; } export declare const createFieldRegistry: () => MutableFieldRegistry;