import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
/**
 * Inputs `playwright-e2e.yml` declares.
 *
 * Hardcoded rather than read from `ctx.lisaDir`, because `.github/` is not in
 * the npm `files` allowlist — an installed Lisa carries no copy of the reusable
 * workflow to parse. Exported so a test can pin it against the real workflow:
 * an input added or renamed there would otherwise silently turn every caller
 * passing it into a "diverged" verdict that nobody retrofits.
 */
export declare const DECLARED_INPUTS: ReadonlySet<string>;
/**
 * Migration: repoint a project's seeded Playwright caller at the dedicated
 * reusable workflow.
 *
 * `expo/create-only/.github/workflows/playwright-e2e.yml` is create-only, so
 * `src/core/lisa.ts` skips it whenever the destination exists. That is correct —
 * it is why a project can customise the file — but it means editing the template
 * ships the change to greenfield projects ONLY. "Fixed upstream" and "a version
 * bump will carry it" are independent claims for anything in that lane, and this
 * file was edited upstream with no path for the projects already holding a copy.
 *
 * The stale copy calls the shared quality workflow and suppresses the two dozen
 * jobs it does not want by NAME. That inversion goes stale silently: a job added
 * to the shared workflow is absent from every hand-maintained list, so it RUNS on
 * a nightly whose whole point is that it runs one suite.
 *
 * Unlike most `ensure-*` migrations this one REWRITES a file the host owns, so it
 * rewrites only a shape it recognises:
 *
 * - Exactly one Lisa caller in the file, and it targets the shared quality
 *   workflow.
 * - Every input it passes, the retired `skip_jobs` aside, is one the dedicated
 *   workflow declares.
 *
 * Anything else is reported and left exactly as written. A silent fork is the
 * harm to avoid, and so is a silent no-op that leaves an operator believing the
 * retrofit happened — so both outcomes are logged.
 */
export declare class EnsurePlaywrightDedicatedCallerMigration implements Migration {
    readonly name = "ensure-playwright-dedicated-caller";
    readonly description = "Repoint a seeded Playwright caller from the shared quality workflow at the dedicated one";
    /**
     * Applies when the caller is stale, or diverged and worth reporting.
     * @param ctx - Migration context
     * @returns True when there is something to do or something to say
     */
    applies(ctx: MigrationContext): Promise<boolean>;
    /**
     * Rewrite a stale caller, or report a diverged one without touching it.
     * @param ctx - Migration context
     * @returns Result describing the action taken
     */
    apply(ctx: MigrationContext): Promise<MigrationResult>;
    /**
     * Report a caller this migration declines to rewrite.
     * @param ctx - Migration context
     * @param plan - The classification that produced the decision
     * @returns A skipped result carrying the operator-readable reason
     */
    private report;
    /**
     * Produce the rewritten caller lines.
     * @param plan - The classification of the current file
     * @param verbs - Facade verbs the project declares
     * @returns The new file contents, line by line
     */
    private rewrite;
    /**
     * Summarize the rewrite for the operator standing outside the factory.
     * @param plan - The classification of the current file
     * @param verbs - Facade verbs the project declares
     * @returns A one-line summary a non-technical reader can act on
     */
    private describe;
}
//# sourceMappingURL=ensure-playwright-dedicated-caller.d.ts.map