import type { Workspace } from '../pm/index.ts';
import { type LintConfigOverride, type PackageLintResult } from './lintNextWorker.ts';
import { type ClassifyLintPackageOptions, type LintPackageMode } from './lintPackageFilter.ts';
import type { AnalyzeLintTierOptions, LintTierContext } from './lintTierAnalysis.ts';
/**
 * Type-aware ESLint control:
 * - `auto` (default): use project eslint.config; meta packages lint without type-checking
 * - `true` / `false`: force recommendedConfig with that setting for every package
 */
export type LintTypeCheckedMode = boolean | 'auto';
export declare function buildForcedConfigOverride(tierContext: LintTierContext, isTypeChecked: boolean): LintConfigOverride;
export declare function resolvePackageConfigOverride(packageMode: LintPackageMode, typeChecked: LintTypeCheckedMode, tierContext: LintTierContext | undefined, analyzeTier: AnalyzeLintTierOptions | undefined): LintConfigOverride | undefined;
export interface RunLintNextPackagesParams {
    analyze: boolean;
    analyzeTier?: AnalyzeLintTierOptions;
    cache: boolean;
    concurrency: number;
    cycleDepth?: number;
    fix: boolean;
    label: string;
    meta: ClassifyLintPackageOptions['meta'];
    onPackageResult: (index: number, total: number, result: PackageLintResult) => void;
    profile: boolean;
    rootDir: string;
    skipEmpty: boolean;
    tierContext?: LintTierContext;
    typeChecked: LintTypeCheckedMode;
    verbose: boolean;
    workspaces: Workspace[];
}
/**
 * Classify packages, skip empty/meta as configured, then lint the rest via
 * the persistent ESLint worker pool.
 */
export declare function runLintNextPackages({ analyze, analyzeTier, cache, concurrency, cycleDepth, fix, meta, onPackageResult, profile, rootDir, skipEmpty, tierContext, typeChecked, verbose, workspaces, }: RunLintNextPackagesParams): Promise<PackageLintResult[]>;
//# sourceMappingURL=lintNextRun.d.ts.map