import type ts from "typescript";
/**
 * LintWithProgramRunner.lint()가 반환하는 lint 결과
 */
export interface LintWithProgramResult {
    success: boolean;
    errorCount: number;
    warningCount: number;
    formattedOutput: string;
}
/**
 * LintWithProgramRunner 생성자 옵션
 */
export interface LintWithProgramRunnerOptions {
    cwd: string;
    pkgName: string;
}
/**
 * LintWithProgramRunner.lint() 옵션
 */
export interface LintRunOptions {
    program: ts.Program;
    /** 제공 시 이 집합의 파일만 lint한다 (추출된 파일과의 교집합).
     *  watch 재빌드에서 affected 파일 기반 증분 lint에 사용한다. */
    affectedFiles?: ReadonlySet<string>;
}
/**
 * 기존 ts.Program을 사용하여 ESLint를 실행한다 (중복 Program 생성을 방지).
 *
 * - program.getSourceFiles()에서 pkgDir로 필터링하여 소스 파일을 추출한다
 * - .d.ts 파일과 node_modules 경로를 제외한다
 * - parserOptions.programs를 통해 ts.Program을 주입한다 (typescript-eslint)
 * - 호출 간 ESLint 인스턴스를 재사용한다 (watch 모드 최적화)
 */
export declare class LintWithProgramRunner {
    private readonly _cwd;
    private readonly _pkgName;
    private _eslint;
    private readonly _programsRef;
    constructor(options: LintWithProgramRunnerOptions);
    /**
     * ts.Program에서 lint 대상 파일을 추출한다.
     * 모든 워크스페이스 소스 파일(cwd 범위)을 포함하고 .d.ts, node_modules, Angular shim을 제외한다.
     */
    private _extractFiles;
    /**
     * 주어진 ts.Program의 파일에 대해 ESLint를 실행한다.
     * affectedFiles가 제공되면 교집합만 lint한다 (watch 재빌드).
     * 첫 호출 시 ESLint 인스턴스를 생성하고, 이후 호출에서 재사용한다.
     */
    lint(options: LintRunOptions): Promise<LintWithProgramResult>;
}
//# sourceMappingURL=lint-with-program.d.ts.map