/** * Runtime store for scoped parameter bindings. * * Responsibilities: * 1. Maintain scope chain metadata (`scope -> parentScope`). * 2. Store local bindings (`scope + name -> ParamRef`). * 3. Resolve names using nearest-scope lookup through the parent chain. * * This class is intentionally storage-only: propagation/lifecycle is handled * by higher-level runtime components. */ export default class ParamStore { /** * Creates a root scope with no parent scope. * * @param {string} ownerId * @returns {string} */ createRootScope(ownerId: string): string; /** * Creates a child scope whose fallback resolution target is `parentScope`. * * @param {string} ownerId * @param {string} parentScope * @returns {string} */ createChildScope(ownerId: string, parentScope: string): string; /** * Returns lifecycle owner id associated with a scope. * * @param {string} scopeId * @returns {string} */ getOwnerId(scopeId: string): string; /** * Clears all parameter bindings from a scope while keeping the scope chain * metadata intact for descendants that may still resolve through it. * * @param {string} scopeId */ clearScope(scopeId: string): void; /** * Registers a local parameter binding into `scopeId`. * * The same parameter name can exist in parent scopes (shadowing), but * duplicate names are not allowed within one scope. * * @template T * @template {import("./types.js").ParamRef} R * @param {string} scopeId * @param {string} name * @param {R} ref * @returns {R} */ register>(scopeId: string, name: string, ref: R): R; /** * Resolves a parameter by name from `scopeId`, searching current scope * first and then walking parent scopes until a match is found. * * @template T * @param {string} scopeId * @param {string} name * @returns {import("./types.js").ParamRef | undefined} */ resolve(scopeId: string, name: string): import("./types.js").ParamRef | undefined; #private; } //# sourceMappingURL=paramStore.d.ts.map