/**
 * @module utils/agent-host-detect
 *
 * Detect which agent hosts the user has installed so the v0.61 setup
 * wizard (`vibe setup`) and project scaffolder (`vibe init`) can tailor
 * what to write where.
 *
 * Detection is best-effort and *informational* — it never blocks setup,
 * never shells out beyond `which`, and never reads the contents of the
 * config dirs (just whether they exist).
 *
 * Two signals per host:
 *   - **binary** — found via `which`/`PATH` lookup (fast, exact)
 *   - **configDir** — known config directory exists in `$HOME` (catches
 *     installs where the binary isn't on PATH for the current shell)
 *
 * A host is "detected" if either signal fires. The caller decides how to
 * use that — typically `vibe setup` shows them in a summary, `vibe init`
 * uses them to pick which agent files to scaffold.
 */
/** Agent hosts VibeFrame knows how to scaffold for. */
export type AgentHostId = "claude-code" | "codex" | "cursor" | "aider" | "gemini-cli" | "opencode";
export interface AgentHostInfo {
    id: AgentHostId;
    /** Human-friendly name for prompts and UI. */
    label: string;
    /** True when at least one signal fired. */
    detected: boolean;
    /** Signals that fired (empty array when `detected` is false). */
    signals: AgentHostSignal[];
    /**
     * Files this host expects in a project. Used by `vibe init` to know
     * what to scaffold; informational here.
     */
    projectFiles: string[];
}
export type AgentHostSignal = {
    kind: "binary";
    name: string;
} | {
    kind: "configDir";
    path: string;
};
/**
 * Scan the current environment for known agent hosts. Synchronous because
 * every check is cheap (`existsSync` + `process.env.PATH` walk).
 */
export declare function detectAgentHosts(env?: NodeJS.ProcessEnv): AgentHostInfo[];
/**
 * Return only detected hosts, ordered by VibeFrame's recommendation:
 * Claude Code first (we ship slash commands for it), then alphabetical.
 */
export declare function detectedAgentHosts(env?: NodeJS.ProcessEnv): AgentHostInfo[];
/**
 * One-line status summary suitable for spinners / setup wizards.
 *
 * Examples:
 *   "Claude Code (binary + config), Codex (config)"
 *   "(none — install Claude Code, Codex, or Cursor for agent integration)"
 */
export declare function summariseAgentHosts(hosts: AgentHostInfo[]): string;
