/** The one real package every healix spec/POM import must resolve to. */ export declare const CORRECT_PKG = "wdio-healix-service"; /** * Closed set of hallucinated package names observed (or plausibly producible) * for the healix runtime. `@wdio/globals`, `webdriverio`, etc. are deliberately * absent — those are legitimate and must never be flagged. */ export declare const WRONG_HEALIX_PKGS: string[]; /** * Return the DISTINCT hallucinated healix package specifiers imported by `source` * (empty if none). Exact whole-specifier match — cannot false-positive on * `wdio-healix-service` or `@wdio/globals`. */ export declare function detectWrongHealixImports(source: string): string[]; export interface DecoratedGetter { name: string; } /** * Detect the `@Find() get x() { return $('sel') }` anti-pattern: a healing * decorator placed on a GETTER instead of a bare field. These compile but graft * 0 methods and never self-heal (the selector is hardcoded in the .ts instead of * the sibling .locators.json). Distinct from findPlainGetterPoms (lib.ts), which * only catches POMs with NO decorators at all — this catches the form that HAS * @Find but misuses it. Returns the getter field names. */ export declare function detectDecoratedGetters(source: string): DecoratedGetter[]; export interface InlineSelector { selector: string; method: string; } /** * Detect raw inline selectors used to DRIVE AN INTERACTION inside spec source — * \`$('//...').click()\`, \`$(...).setValue(...)\`, \`browser.execute(...)\` — i.e. the * agent reaching into the DOM raw instead of through an observed @Find field. These * OPT OUT of healing: untracked, unhealable, and a guessed one can make a test * report "passed" while doing nothing. * * Scoped to INTERACTIONS on purpose (click, setValue, addValue, selectBy…, * scrollIntoView, doubleClick, dragAndDrop, browser.execute) so read-only assertions like the seed's * \`await $('h1')\` → \`toBeExisting()\` are NOT flagged. ADVISORY only — inline reads are * legitimate, so the caller surfaces these as a WARNING, never a hard block. Pure * (string in / findings out); graded by test/unit/lints.test.ts. */ export declare function detectInlineInteractionSelectors(source: string): InlineSelector[]; export type SpecState = 'not-written' | 'empty' | 'present'; /** * Classify a resolved spec path so a missing file is reported as "not written * yet" instead of the misleading "Spec Syntax Error" (index.ts:337). Syntax * validity of a present file remains checkSpecSyntax's job. */ export declare function classifySpecState(specPath: string): SpecState;