/**
 * 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<T>} R
     * @param {string} scopeId
     * @param {string} name
     * @param {R} ref
     * @returns {R}
     */
    register<T, R extends import("./types.js").ParamRef<T>>(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<T> | undefined}
     */
    resolve<T>(scopeId: string, name: string): import("./types.js").ParamRef<T> | undefined;
    #private;
}
//# sourceMappingURL=paramStore.d.ts.map