import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
/**
 * Migration: ensure the Lisa-generated harness directories are listed in
 * `sonar.exclusions` of `sonar-project.properties`.
 *
 * Only runs when the project actually ships a `sonar-project.properties`
 * (SonarCloud-using repos). Idempotent — appends only the harness globs that
 * are missing, preserving every existing exclusion. Single-line exclusions are
 * the supported (and Lisa-emitted) shape; a backslash-continued value is left
 * untouched to avoid corrupting a multi-line property.
 *
 * Mirrors the host-config reconciliation pattern of the other `ensure-*`
 * migrations. Uses node:fs/promises for the raw read/write because fs-extra's
 * fs-passthrough methods are undefined in the bundled dist.
 */
export declare class EnsureSonarExcludesLisaHarnessMigration implements Migration {
    readonly name = "ensure-sonar-excludes-lisa-harness";
    readonly description = "Add the Lisa-generated harness dirs (.codex/.opencode/.agents) to sonar.exclusions";
    /**
     * Read and parse the current sonar.exclusions state for the project.
     * @param projectDir - The destination project directory
     * @returns The file text, the matched exclusions line, and any missing globs
     */
    private readState;
    /**
     * Applies when a sonar-project.properties exists and is missing at least one
     * harness glob.
     * @param ctx - Migration context
     * @returns True when there is work to do
     */
    applies(ctx: MigrationContext): Promise<boolean>;
    /**
     * Append the missing harness globs to sonar.exclusions (creating the line if
     * absent), preserving all existing exclusions.
     * @param ctx - Migration context
     * @returns Result describing the action taken
     */
    apply(ctx: MigrationContext): Promise<MigrationResult>;
}
//# sourceMappingURL=ensure-sonar-excludes-lisa-harness.d.ts.map