import { defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getSharedRules } from "./typescript.js";
export { defaultIgnores, defaultThresholds, getBaseConfigs, getBaseLanguageOptions, getSharedRules, };
/**
 * Axes a project declares typed, read from its own `.lisa.config.json`.
 *
 * #2807: the design-value rule shipped installed, severity `"off"`, and arming
 * it needed a severity AND a `typedAxes` option hand-written into
 * `eslint.config.local.ts`. Nothing carried `design.tokens.axes` from
 * `.lisa.config.json` to the rule, so a project could declare every axis,
 * install the policy, pass every test, and enforce nothing.
 *
 * It is read HERE, at ESLint **config** load, rather than inside the rule at
 * **rule** load. That distinction is what makes it unremarkable: the managed
 * `eslint.config.ts` already reads `eslint.thresholds.json` and
 * `eslint.ignore.config.json` from disk at exactly this moment, so this adds no
 * new class of behaviour and gives ESLint's config cache nothing to fight. A
 * rule reading project files on every `create()` would do both.
 *
 * It also needs no generation step, which is what the alternative — emitting
 * rule options into a generated file during `lisa apply` — would have cost. A
 * generated file can go stale against the config it was generated from; a value
 * read at load cannot.
 * @param projectRoot - Directory holding the project's `.lisa.config.json`.
 * @returns The declared axes, or an empty list when none are declared.
 * @throws {TypeError} When `design.tokens.axes` is present but is not a list of strings.
 */
export declare function readTypedAxes(projectRoot: string): string[];
/**
 * The `ui-standards/no-unbound-design-value` entry for a set of typed axes.
 *
 * Silence-by-default is deliberate and unchanged: an axis with no published
 * variable collection behind it has no token to bind to, and a rule that fires
 * on every project is a rule that gets switched off. What changes is that
 * declaring an axis is now SUFFICIENT to arm it. Previously nothing was.
 *
 * An axis name outside the rule's fixed vocabulary is passed through rather
 * than filtered out, so ESLint's own schema validation rejects it by name. A
 * filter would turn a typo into silent non-enforcement, which is the defect
 * this function exists to remove.
 * @param typedAxes - Axes the project declares typed.
 * @returns `"off"` when none are declared, an armed error entry otherwise.
 */
export declare function getDesignValueBindingRule(typedAxes: readonly string[]): import("eslint").Linter.RuleEntry;
/**
 * Creates the Expo ESLint configuration.
 * @param {object} options - Configuration options
 * @param {string} options.tsconfigRootDir - Root directory for tsconfig.json
 * @param {string[]} [options.ignorePatterns] - Patterns to ignore
 * @param {object} [options.thresholds] - Threshold overrides
 * @param {string} [options.sourceRoot] - Prefix for source-relative file globs (e.g. `"src/"` for the SDK 55+/56 `/src` convention; defaults to `""`)
 * @param {string[]} [options.typedAxes] - Axes the project declares typed, mirroring `design.tokens.axes`. Empty leaves the design-value rule off.
 * @returns {import("eslint").Linter.Config[]} ESLint flat config array
 */
export declare function getExpoConfig({ tsconfigRootDir, ignorePatterns, thresholds, sourceRoot, typedAxes, }: {
    tsconfigRootDir: string;
    ignorePatterns?: string[];
    thresholds?: typeof defaultThresholds;
    /**
     * Prefix applied to source-relative file globs (component-structure,
     * ui-standards, view-memo overrides). Defaults to `""` (source at the project
     * root). Set to `"src/"` for projects adopting the Expo SDK 55+/56 `/src`
     * directory convention so these overrides target `src/components`,
     * `src/features`, etc. Globs anchored with a leading globstar are unaffected.
     */
    sourceRoot?: string;
    /**
     * Axes the project declares typed, mirroring `design.tokens.axes` in
     * `.lisa.config.json`. Read by the managed `eslint.config.ts` via
     * {@link readTypedAxes}. Empty — the default — leaves
     * `ui-standards/no-unbound-design-value` off.
     */
    typedAxes?: readonly string[];
}): import("eslint").Linter.Config[];
//# sourceMappingURL=expo.d.ts.map