import type { TestInteraction, Expectation, ActionableItem } from "@sudobility/testomniac_types"; import type { AnalyzerContext } from "./types.js"; import type { DedupStore } from "../../storage/dedup-store.js"; export type { AnalyzerContext } from "./types.js"; type AppendActionResult = { testInteraction: TestInteraction; appended: boolean; }; /** * PageAnalyzer provides finding dedup, expectation generation, and * hover-to-click transformation during discovery mode. * * Test generators have been moved server-side to testomniac_api. */ export declare class PageAnalyzer { private store; constructor(dedupStore?: DedupStore); private static normalizeFindingText; hasReportedPageFinding(_path: string, title: string, description: string): Promise; markPageFindingReported(_path: string, title: string, description: string): Promise; hasReportedFindingByKey(key: string): Promise; markReportedFindingByKey(key: string): Promise; hasReportedDescription(description: string): Promise; markReportedDescription(description: string): Promise; /** * Generate baseline expectations for a test element. * Called BEFORE expertises evaluate. */ generateExpectations(testInteraction: TestInteraction): Expectation[]; maybeAppendActionToInteraction(testInteraction: TestInteraction, context: Pick): Promise; /** * Generate new test elements for scaffolds and page content. * Called AFTER expertises evaluate and the target page state is established. */ private isMouseActionable; private isNonBrowserLink; private buildClickTestInteraction; private isHoverOnly; private getPrimarySelector; private getItemKey; private buildGeneratedKey; private describeActionableItem; private semanticText; /** * Max representatives per action style. Product grids can have dozens of * cards each producing a unique container fingerprint (because the product * title differs), but the CTA buttons ("ADD TO CART", "Select Options") are * functionally identical. Capping per style prevents 14× duplicate hover * tests for the same button type across different cards. */ private static readonly MAX_REPS_PER_STYLE; selectRepresentativeItems(items: ActionableItem[], maxPerStyle?: number): ActionableItem[]; private representativeActionStyle; private pickRepresentativeItem; private representativePriority; private isAddToCartItem; private isCheckoutItem; private isRemoveItemAction; } //# sourceMappingURL=index.d.ts.map