/**
 * 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;
/**
 * Marks a view as decorative chrome.
 *
 * @param {import("./view.js").default} view
 * @param {ChromeOptions} [options]
 */
export function markViewAsChrome(view: import("./view.js").default, options?: ChromeOptions): void;
/**
 * Returns whether a view has been marked as decorative chrome.
 *
 * @param {import("./view.js").default} view
 * @returns {boolean}
 */
export function isChromeView(view: import("./view.js").default): boolean;
/**
 * 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 non-chrome views in the hierarchy.
 *
 * @param {import("./view.js").default} root
 * @param {import("./view.js").Visitor} visitor
 */
export function visitNonChromeViews(root: import("./view.js").default, visitor: import("./view.js").Visitor): void;
/**
 * Returns non-chrome views in the hierarchy.
 *
 * @param {import("./view.js").default} root
 * @returns {import("./view.js").default[]}
 */
export function getNonChromeViews(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 {import("./viewUtilTypes.d.ts").ViewSelector} ViewSelector
 * @typedef {import("./viewUtilTypes.d.ts").ParamSelector} 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 {"exclude" | "excludeSubtree"} ChromeOverride
 * @typedef {{ skipSubtree?: boolean }} AddressableOptions
 * @typedef {{ skipSubtree?: boolean }} ChromeOptions
 * @typedef {{ view: import("./view.js").default, param: import("../spec/parameter.js").Parameter }} ResolvedParam
 */
export const PARAM_SELECTOR_KEY_PREFIX: "p:";
export type ViewSelector = import("./viewUtilTypes.d.ts").ViewSelector;
export type ParamSelector = import("./viewUtilTypes.d.ts").ParamSelector;
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 ChromeOverride = "exclude" | "excludeSubtree";
export type AddressableOptions = {
    skipSubtree?: boolean;
};
export type ChromeOptions = {
    skipSubtree?: boolean;
};
export type ResolvedParam = {
    view: import("./view.js").default;
    param: import("../spec/parameter.js").Parameter;
};
//# sourceMappingURL=viewSelectors.d.ts.map