/**
 * Materialization helpers — install manifest CLIs, register MCP servers,
 * sync resources into installed version homes, register hooks, add shims to
 * PATH, prompt for missing default versions, install declared host-CLIs.
 *
 * The reconcile stage behind `agents sync` (the umbrella `--local` path calls
 * this; see sync-umbrella.ts) and any other caller that needs to re-derive local
 * state from declared configuration. Does NOT do any git operations — that lives
 * in `agents repo pull`. (Also still reachable via the deprecated, hidden
 * `agents repo refresh` alias.)
 */
import type { AgentId } from './types.js';
export interface RefreshOptions {
    /** Limit operations to a single agent (claude/codex/etc). Default: all installed. */
    agentFilter?: AgentId;
    /** Auto-sync everything and skip interactive prompts. */
    skipPrompts?: boolean;
    /** Skip CLI version install/upgrade from agents.yaml. */
    skipClis?: boolean;
    /**
     * Suppress human progress lines on stdout. Required for machine consumers
     * (`agents sync --json` / fleet fan-out) so stdout stays a single JSON object.
     */
    quiet?: boolean;
}
/**
 * Re-materialize local state from declared configuration: install CLI versions,
 * register MCP servers, sync resources to version homes, register hooks, add
 * shims to PATH, prompt for missing defaults, install declared host-CLIs.
 *
 * Idempotent — safe to run repeatedly. No network operations.
 */
/**
 * What a reconcile pass refused to write, so callers can report it.
 *
 * `refresh` used to return void, so a resource agents-cli declined to write was
 * visible only on the interactive path — `agents sync --yes` and the
 * `--device all` fan-out reported a clean sync (RUSH-2700).
 */
export interface RefreshResult {
    /** User-facing sentences, one per refused resource, prefixed with the agent. */
    declined: string[];
    /**
     * The exact (agent, version) pairs this refresh reconciled — the set a
     * post-reconcile verification must re-check for residual drift, so it never
     * flags a version the reconcile never targeted (PHNX-3186).
     */
    reconciled: Array<{
        agent: AgentId;
        version: string;
    }>;
}
export declare function refresh(options?: RefreshOptions): Promise<RefreshResult>;
