import { ResolvedA11yConfig } from './config'; export declare function isNonContentElement(el: Element): boolean; /** * 判断元素是否"自身"呈现 cursor:pointer(而非从祖先继承而来)。 * * 背景:CSS 的 `cursor` 属性会向子孙继承。可点击容器(如 、自定义卡片 .card-wrapper) * 一旦设置 cursor:pointer,其内部所有子孙的 computed cursor 都会变成 pointer。 * 若仅凭「computed cursor === pointer」判定交互性,会让容器的可点击性"传染"给全部子孙, * 产生大量误报 ref(父容器 cursor:pointer 泛滥到每个子节点)。 * * 业界主流 DOM 提取器(如 browser-use 的 doesElementHaveInteractivePointer)同样以 * cursor:pointer 作为可点击性的核心兜底信号,并通过与父元素对比来定位真正的可点击"边界元素"。 * 因此这里的判定为:元素自身 computed cursor 为 pointer,且其父元素不是 pointer —— 说明 * 该元素(或命中它的 CSS 规则)主动声明了指针手势,是真正意义上的可点击目标。 * * 无父元素(如 shadow host 边界、游离节点)时,没有可继承来源,视为自身声明。 */ export declare function hasOwnPointerCursor(el: Element): boolean; /** * 收集页面中"仅在 :hover/:focus/:active 等交互态下声明 cursor:pointer"的元素集合。 * * 背景(华为云控制台实测):大量可点击卡片(如 `.container-wrapper .shadow:hover{cursor:pointer}`) * 只在鼠标悬停时才显示手势,静止态 `getComputedStyle(el).cursor` 读到的是 `auto`, * 因此仅凭 computed cursor 的判定(含业界 getComputedStyle 方案)会漏判这类元素。 * 这里通过扫描样式表把这类"交互态手势"补齐,作为可点击性的兜底信号。 * * 每次构建树只调用一次(O(规则数) 扫描 + 一次合并查询),避免逐元素扫描样式表。 */ export declare function collectHoverPointerElements(root: Element): Set; /** 判断元素是否应被跳过(不可见、非内容或在黑名单中) */ export declare function isHidden(el: Element): boolean; /** * 收集元素自身或子孙节点的 title,用作图标按钮等无文本节点的名字兜底。 * 云控制台常见模式:可点击容器无 aria-label,title 挂在内部 span 上。 */ export declare function collectTitleLabel(el: Element): string; /** * 收集子孙节点的文本内容,用作无障碍名字的兜底。 * 当普通计算无法提取文本时,遍历后代并拼接可见文本。 * @param config 已规整的无障碍配置;传入后角色判断会尊重页面自定义 roles 规则 */ export declare function collectDescendantText(el: Element, config?: ResolvedA11yConfig): string; /** * 获取元素在 composed tree(组合树)中的有效子元素 * * Shadow DOM 场景下,简单拼接 el.children + el.shadowRoot.children 不符合浏览器 * 实际渲染和无障碍树使用的组合树语义:slotted 节点应出现在 的位置而非 * host 下, 本身不应作为噪音节点出现,未被任何 slot 接收的 light children * 在组合树中不可见。 * * 因此:有 shadowRoot 时遍历 shadow tree,遇到 用 assignedElements 替换; * 无 shadowRoot 时直接遍历 light DOM children。 */ export declare function getComposedChildren(el: Element): Element[]; /** * 提取元素的 tooltip / 帮助提示文本 * * 按以下优先级查找(返回首个非空结果): * 1. title 属性 * 2. aria-describedby 引用的元素文本 * 3. data-tooltip / data-tips 自定义属性 * 4. 框架级 tooltip 内容(如 Tiny3 tp-helptip 内的 .tp-helptip-label 文本) * 4b. 框架级 overflow 指令(Tiny3 tioverflow / Angular Material matTooltip) * * 即使 tooltip 容器被隐藏(display:none / opacity:0),也提取其文本内容, * 让 AI 无需 hover 即可获取帮助信息。 */ export declare function extractTooltipText(el: Element): string;