import type { ESLint, Linter } from 'eslint'; /** Who reads the messages. */ export type TokenAudience = 'app' | 'package'; export interface TokenLintOptions { /** The Tailwind config the unknown-class rule reads, relative to where ESLint runs. */ tailwindConfig?: string; /** `app` (the default) names the package; `package` names `tokens.css` and the preset. */ audience?: TokenAudience; } export interface TokenConfigOptions extends TokenLintOptions { /** * Plugins whose `eslint-disable` directives appear in the source, registered * with every rule off. ESLint refuses a directive for a rule it does not * know. TypeScript's are registered already. */ quiet?: Record; /** Folders the token lint never reads, beside build output. */ ignores?: string[]; } /** What the token lint never reads: build output. */ export declare const TOKEN_LINT_IGNORES: string[]; /** * Plugins a check that runs on its own registers, every rule off, so the * directives another lint writes do not fail it (UIG-37). TypeScript's lint is * in every app and writes `eslint-disable-next-line @typescript-eslint/...`; * Peek PR #324 failed the token lint on one. Only the checks that run alone * take this — a full lint that loads TypeScript's rules from its own copy would * refuse a second plugin under the same name. */ export declare const KNOWN_PLUGINS: Record; /** * The class rules. `no-unknown-classes` reads the app's own Tailwind config, so * it knows exactly what the preset and the app generate. */ export declare function tokenLint({ tailwindConfig, audience }?: TokenLintOptions): Linter.Config; /** * UIG-28: the values the tokens already name, written by hand (Katerina's * rulings B11, B12, C3 of 13 September and R2 of 15 September). Register it * after `tokenLint`, whose parser and plugin settings it borrows. Under its own * rule names, `token-values` and `token-spacing` (the same plugin twice, so one * runs as errors and one as warnings): an escape for a hand-written size then * cannot also silence a raw colour on the same line. */ export declare function tokenValues({ audience }?: Pick): Linter.Config; /** * The token lint on its own — an app's `eslint.tokens.config.js`, `npm run * lint:tokens`, the CI step. It fails on the token contract and on nothing * else, so a backlog in the full lint never blocks it. Peek built this file by * hand until UIG-37. */ export declare function tokenConfig({ quiet, ignores, ...options }?: TokenConfigOptions): Linter.Config[]; //# sourceMappingURL=token-lint.d.ts.map