/** * Marks a view as the root of an import scope. * * @param {import("./view.js").default} view * @param {string | null} scopeName */ export function registerImportInstance(view: import("./view.js").default, scopeName: string | null): void; /** * Returns import scope info for a view, if it is an import root. * * @param {import("./view.js").default} view * @returns {ImportScopeInfo | undefined} */ export function getImportScopeInfo(view: import("./view.js").default): ImportScopeInfo | undefined; /** * Marks a view as non-addressable for selector resolution. * * @param {import("./view.js").default} view * @param {AddressableOptions} [options] */ export function markViewAsNonAddressable(view: import("./view.js").default, options?: AddressableOptions): void; /** * Returns the import scope chain for a view, using named import instances. * * @param {import("./view.js").default} view * @returns {string[]} */ export function getViewScopeChain(view: import("./view.js").default): string[]; /** * Returns a view selector for a view with an explicit name. * * @param {import("./view.js").default} view * @returns {ViewSelector} */ export function getViewSelector(view: import("./view.js").default): ViewSelector; /** * Returns a parameter selector for a parameter registered in a view. * * @param {import("./view.js").default} view * @param {string} paramName * @returns {ParamSelector} */ export function getParamSelector(view: import("./view.js").default, paramName: string): ParamSelector; /** * Returns a stable key for a parameter selector. * * @param {ParamSelector} selector * @returns {string} */ export function makeParamSelectorKey(selector: ParamSelector): string; /** * Enumerates views that can be addressed by selectors. * * @param {import("./view.js").default} root * @returns {import("./view.js").default[]} */ export function getAddressableViews(root: import("./view.js").default): import("./view.js").default[]; /** * Visits all addressable views in the hierarchy. * * @param {import("./view.js").default} root * @param {import("./view.js").Visitor} visitor */ export function visitAddressableViews(root: import("./view.js").default, visitor: import("./view.js").Visitor): void; /** * Resolves a view selector to a unique view within the matching scope. * * @param {import("./view.js").default} root * @param {ViewSelector} selector * @returns {import("./view.js").default | undefined} */ export function resolveViewSelector(root: import("./view.js").default, selector: ViewSelector): import("./view.js").default | undefined; /** * Resolves a parameter selector to a unique bookmarkable parameter. * * @param {import("./view.js").default} root * @param {ParamSelector} selector * @returns {ResolvedParam | undefined} */ export function resolveParamSelector(root: import("./view.js").default, selector: ParamSelector): ResolvedParam | undefined; /** * Visits bookmarkable parameters in the view hierarchy. * * @param {import("./view.js").default} root * @param {(entry: BookmarkableParamEntry) => void} visitor */ export function visitBookmarkableParams(root: import("./view.js").default, visitor: (entry: BookmarkableParamEntry) => void): void; /** * Returns bookmarkable parameters in the view hierarchy. * * @param {import("./view.js").default} root * @returns {BookmarkableParamEntry[]} */ export function getBookmarkableParams(root: import("./view.js").default): BookmarkableParamEntry[]; /** * Validates naming and scoping constraints for addressable views and parameters. * * @param {import("./view.js").default} root * @returns {SelectorValidationIssue[]} */ export function validateSelectorConstraints(root: import("./view.js").default): SelectorValidationIssue[]; /** * Selectors identify views and parameters in a way that stays stable when the * same template/import is instantiated multiple times. They combine a chain of * named import instances (scope) with an explicit view or parameter name so * bookmarkable state and visibility toggles do not rely on globally-unique * names or runtime-only nodes. */ /** * @typedef {{ scope: string[], view: string }} ViewSelector * @typedef {{ scope: string[], param: string }} ParamSelector * @typedef {{ view: import("./view.js").default, param: import("../spec/parameter.js").Parameter, selector: ParamSelector }} BookmarkableParamEntry * @typedef {{ message: string, scope: string[] }} SelectorValidationIssue * @typedef {{ name: string | null }} ImportScopeInfo * @typedef {"exclude" | "excludeSubtree"} AddressableOverride * @typedef {{ skipSubtree?: boolean }} AddressableOptions * @typedef {{ view: import("./view.js").default, param: import("../spec/parameter.js").Parameter }} ResolvedParam */ export const PARAM_SELECTOR_KEY_PREFIX: "p:"; export type ViewSelector = { scope: string[]; view: string; }; export type ParamSelector = { scope: string[]; param: string; }; export type BookmarkableParamEntry = { view: import("./view.js").default; param: import("../spec/parameter.js").Parameter; selector: ParamSelector; }; export type SelectorValidationIssue = { message: string; scope: string[]; }; export type ImportScopeInfo = { name: string | null; }; export type AddressableOverride = "exclude" | "excludeSubtree"; export type AddressableOptions = { skipSubtree?: boolean; }; export type ResolvedParam = { view: import("./view.js").default; param: import("../spec/parameter.js").Parameter; }; //# sourceMappingURL=viewSelectors.d.ts.map