import type { InteractiveStateDef, ScreenStateAxisDef } from './interactiveStates.js'; import type { PageModel } from './store.js'; export declare const AUTOMATIC_PSEUDO_METADATA_ATTRIBUTE = "data-pygmalion-auto-pseudo"; export declare const AUTOMATIC_PSEUDO_LEDGER_ATTRIBUTE = "data-pygmalion-auto-pseudos"; export declare const PSEUDO_EVENT_ATTRIBUTE = "data-pygmalion-pseudo-events"; export type AutomaticPseudoState = 'hover' | 'focus-visible' | 'active'; export interface AutomaticPseudoTarget { id: string; label: string; selector: string; index: number; states: readonly AutomaticPseudoState[]; } /** Discovers every visible CSS or event-driven pseudo-state target. */ export declare function discoverAutomaticPseudoTargets(document: Document): AutomaticPseudoTarget[]; /** Writes discovery metadata onto the parallel serialization clone. */ export declare function stampAutomaticPseudoTargets(source: Document, clone: HTMLElement): AutomaticPseudoTarget[]; /** Reads the stamped targets from one imported screen tree. */ export declare function automaticPseudoTargetsForPage(page: Pick): AutomaticPseudoTarget[]; /** Synthesizes right-panel axes and suppresses states a host already labels. */ export declare function automaticPseudoStatesForPage(page: Pick, declared?: readonly InteractiveStateDef[]): ScreenStateAxisDef[]; /** * The discovered target a picked DOM element belongs to: the element itself * or its closest stamped ancestor. Selectors come from serialized markup, so * one the live document cannot parse is skipped rather than thrown. */ export declare function pseudoTargetForElement(targets: readonly AutomaticPseudoTarget[], element: Element): AutomaticPseudoTarget | undefined;