import type { Migration, MigrationContext, MigrationResult } from "./migration.interface.js";
/**
 * Migration: declare, in `.lisa.config.json`, the gates this project is already
 * proving with a command written into a Lisa-shipped hook or workflow.
 *
 * WHY A MIGRATION AND NOT A TEMPLATE. Nothing seeds a `gates` block into a
 * consumer: exactly one `.lisa.config.json` is tracked anywhere in Lisa, and it
 * is Lisa's own. So the hardcoded path in the pre-push hook and in every gated
 * CI job is not a fallback for the unusual project — it is the DEFAULT for
 * essentially every installed one. A create-only artifact would never reach a
 * repository that already exists, and a version bump alone would deliver
 * nothing, which is why this is a migration that runs on `lisa apply`.
 *
 * WHY IT SEEDS LESS THAN THE REGISTRY. A seeded declaration has to reproduce
 * what the built-in did, or the migration reddens a fleet on a version bump.
 * `seedGates` therefore declares a gate only when the task that reproduces the
 * built-in is a script the project actually has, and only at a moment the
 * registry says the gate may be declared at. Everything it declines stays
 * ungoverned — and stays reported by `lisa-gates.mjs unconfigured`, which the
 * pre-push hook and every gated CI job now print. Visible beats declared-away.
 *
 * Idempotent: an existing declaration always wins, so a second run seeds
 * nothing. Never removes or rewrites a declaration the project made.
 */
export declare class EnsureSeededGatesMigration implements Migration {
    readonly name = "ensure-seeded-gates";
    readonly description = "Declare the gates the project already proves with a command written into a Lisa-shipped hook or workflow";
    /**
     * Resolve what seeding would change, or null when there is nothing to do.
     * @param ctx - Migration context
     * @returns The plan, or null
     */
    private plan;
    /**
     * Applies when at least one ungoverned property has a task that reproduces it.
     * @param ctx - Migration context
     * @returns True when there is work to do
     */
    applies(ctx: MigrationContext): Promise<boolean>;
    /**
     * Write the seeded declarations into `.lisa.config.json`.
     * @param ctx - Migration context
     * @returns Result describing the action taken
     */
    apply(ctx: MigrationContext): Promise<MigrationResult>;
}
//# sourceMappingURL=ensure-seeded-gates.d.ts.map