import type { Linter } from 'eslint';
export interface LintTierContext {
    currentTierExport?: string;
    hasXylabsConfig: boolean;
    isReact: boolean;
    isTypeChecked: boolean;
}
export interface LintTierDefinition {
    exportName: string;
    id: number;
    label: string;
}
export interface LintTierMessage {
    ruleId: string | null;
}
export interface LintTierCount {
    errors: number;
    label: string;
    tier: number;
    warnings: number;
}
type RuleSetting = Linter.RuleEntry<unknown[]> | undefined;
export declare function normalizeRuleLevel(setting: RuleSetting): 'error' | 'off' | 'warn';
export declare function countMessagesForTier(messages: readonly LintTierMessage[], rules: Record<string, RuleSetting>): Pick<LintTierCount, 'errors' | 'warnings'>;
export declare function getLintTierDefinitions(isReact: boolean, isTypeChecked: boolean): LintTierDefinition[];
export declare function detectLintTierContext(cwd: string): LintTierContext;
export declare function loadXylabsEslintConfigPackage(cwd: string, isReact: boolean): Promise<Record<string, unknown>>;
export declare function resolveTierConfigExport(configPackage: Record<string, unknown>, exportName: string): Linter.Config[];
export declare function mergeTierRules(mergeConfigRules: (configs: readonly Linter.Config[]) => Record<string, RuleSetting>, configs: readonly Linter.Config[]): Record<string, RuleSetting>;
export declare function loadMergeConfigRules(cwd: string): Promise<(configs: readonly Linter.Config[]) => Record<string, RuleSetting>>;
export declare function buildLintTierRuleMaps(cwd: string, context: Pick<LintTierContext, 'isReact' | 'isTypeChecked'>): Promise<Map<number, Record<string, RuleSetting>>>;
export declare function resolveMaxTierConfigExport(context: Pick<LintTierContext, 'isReact' | 'isTypeChecked'>): string;
export declare function projectLintTierCounts(messages: readonly LintTierMessage[], tierRuleMaps: ReadonlyMap<number, Record<string, RuleSetting>>, definitions: readonly LintTierDefinition[]): LintTierCount[];
export declare function formatLintTierAnalysisReport({ context, counts, currentTierExport, files, timeMs, }: {
    context: LintTierContext;
    counts: readonly LintTierCount[];
    currentTierExport?: string;
    files: number;
    timeMs: number;
}): string;
export {};
//# sourceMappingURL=lintTierAnalysis.d.ts.map