/**
 * Interactive drift-sync flow — the single "we detected drift, want to fix it?"
 * action, shared by `agents sync status`, `agents doctor`, and the menu-bar "NEEDS
 * SYNC" row.
 *
 * It composes existing pieces, re-implementing nothing:
 *   - computeSyncStatus()          — the unified detection engine (sync-status.ts)
 *   - pullRepo()                   — fast-forward the `.system` repo (git.ts)
 *   - promptAgentVersionSelection() — the "which agent types / versions?" picker
 *   - repairAfterSync()            — the shared post-reconcile repair pass
 *                                    `agents sync` runs (heal + hook rewire +
 *                                    managed hook runtime shim repair)
 *
 * Combined flow (one confirmation): if `.system` is behind AND resources drifted,
 * a single "Sync all detected" both pulls `.system` and reconciles the chosen
 * version homes. The security posture is preserved — the `.system` pull only ever
 * happens on an explicit user choice here, never silently (see auto-pull-worker.ts
 * for why system auto-pull is off by default).
 */
import { type VersionHealResult } from './heal.js';
import { type UnifiedSyncStatus } from './sync-status.js';
export interface DriftSyncOptions {
    cwd?: string;
    /** Reconcile everything detected with no prompts — the "kick it" path, also the
     * non-TTY / menu-bar-launched-with-flag behavior. Pulls `.system` if behind. */
    yes?: boolean;
    /** Pre-computed status, to avoid a second scan when the caller already has one. */
    status?: UnifiedSyncStatus;
    /** Skip the drift summary — set by callers that already printed their own. */
    quiet?: boolean;
}
export interface DriftSyncResult {
    systemBehindBefore: number;
    systemPulled: boolean;
    healed: VersionHealResult[];
    /** True when the user declined at the prompt (nothing was changed). */
    cancelled: boolean;
    /** True when there was no drift to act on in the first place. */
    nothingToDo: boolean;
}
/**
 * The unified "drift detected — sync now?" flow. Returns a structured result so
 * callers (menu-bar, doctor) can report without re-scanning.
 */
export declare function promptDriftSync(opts?: DriftSyncOptions): Promise<DriftSyncResult>;
