/**
 * One-shot migration from the old `$TMPDIR/amplitude-wizard-*` + project-root
 * dotfile layout to the new layout under:
 *
 *   ~/.amplitude/wizard/
 *   <installDir>/.amplitude/
 *
 * Safe to call from any startup path. Best-effort — silent on per-file
 * failures so a stuck file never blocks the wizard. Drop in the release
 * after this lands; stragglers lose stale logs/checkpoints, no other state.
 *
 * Migration table:
 *   /tmp/amplitude-wizard.log                            → <cacheRoot>/bootstrap.log
 *   /tmp/amplitude-wizard.logl                           → <cacheRoot>/bootstrap.ndjson
 *   $TMPDIR/amplitude-wizard-update-check.json           → <cacheRoot>/update-check.json
 *   $TMPDIR/amplitude-wizard-checkpoint-<hash>.json      → <runDir(installDir)>/checkpoint.json
 *   /tmp/amplitude-wizard-benchmark.json                 → <runDir(installDir)>/benchmark.json
 *   $TMPDIR/amplitude-wizard-state-<id>.json             → <cacheRoot>/state/<id>.json
 *   $TMPDIR/amplitude-wizard-plans/                      → <cacheRoot>/plans/
 *   <installDir>/.amplitude-events.json                  → <installDir>/.amplitude/events.json
 *   <installDir>/.amplitude-dashboard.json               → <installDir>/.amplitude/dashboard.json
 *
 * Migration is idempotent: if the new path already exists, we leave the old
 * file in place (cleanup hooks remove it later) instead of overwriting.
 */
/**
 * Run the one-shot migration. Pass the resolved `installDir` so per-project
 * legacy paths (events, dashboard, checkpoint) can be migrated. Pass
 * `undefined` for global-only commands (e.g. `whoami`) — only the user-wide
 * legacy paths get migrated.
 *
 * Two-tier idempotency:
 *
 *   - User-scoped steps (legacy log files, plans dir, agent-state scan)
 *     run once per cache root. Writing `<cacheRoot>/.migrated-v1` after
 *     they finish lets us skip the `readdirSync(tmpdir())` scan on
 *     subsequent startups.
 *
 *   - Per-project steps (events, dashboard, checkpoint) run on EVERY
 *     wizard startup regardless of the sentinel. Otherwise the second
 *     project a user runs the wizard against would silently lose its
 *     legacy `.amplitude-events.json` etc. — the sentinel from the
 *     first project would tell us "already migrated" even though
 *     project B's files have never been touched.
 */
export declare function runMigrationShim(installDir?: string): void;
