import type { Rule } from 'eslint'; interface JSXAttributeValue { type: string; value?: unknown; expression?: { type: string; value?: unknown; expressions?: unknown[]; quasis?: { value: { cooked: string | null; }; }[]; }; } interface JSXAttribute { type: 'JSXAttribute'; name: { type: string; name?: string; }; value: JSXAttributeValue | null; } interface JSXOpeningElement { name: { type: string; name?: string; }; attributes: (JSXAttribute | { type: 'JSXSpreadAttribute'; })[]; loc: NonNullable; range: [number, number]; } /** * What the package has instead of one raw element: the component the message * names, and where one element does more than one job, the others after it. * `null` is an element the package has no part for yet. */ export interface RawElementPart { use: string; more?: string; } /** * The mapping (UIG-7), derived from the package's exports: every interactive * element in the HTML standard's list ("interactive content"), plus ``, * `
` and ``, which have a part here. docs/GATES.md prints it. * * Not here, on purpose: `` (it lives inside a `
`, which is * reported), `` and `` (they live inside a * `` is as many controls as its `type`. A type missing from here * (text, email, password, url, tel, number, or one the browser does not know) * is a text box. */ export declare const RAW_INPUT_PARTS: Record; type Found = { report: 'raw'; element: string; part: RawElementPart; } | { report: 'noPart'; element: string; } | { report: 'clickable'; element: string; } | null; /** What this element is to the rule: a raw element with a part, one with none yet, or none of its business. */ export declare function classify(element: JSXOpeningElement): Found; /** * A raw interactive element in an app, where the package has a part for it * (UIG-3 began it with `