/**
 * @module _shared/install-skill
 *
 * Phase H1 — install the vendored Hyperframes skill bundle into a user's
 * scene project so that the host agent (Claude Code, Cursor, Codex, Aider,
 * etc.) can read the framework rules + house style directly. This is the
 * agentic-CLI-native pattern: the host agent is the sole LLM that reasons
 * about scene composition, and it does so with the skill files in its
 * context — VibeFrame's CLI is the deterministic toolbelt.
 *
 * Layout written:
 *
 *   <project>/
 *     SKILL.md                              # universal — all agents see this
 *     references/
 *       house-style.md
 *       motion-principles.md
 *       typography.md
 *       transitions.md
 *     .claude/skills/hyperframes/           # if hosts includes "claude-code"
 *       SKILL.md (copy)
 *       references/{house-style,...}.md
 *     .cursor/rules/hyperframes.mdc         # if hosts includes "cursor"
 *
 * Codex + Aider are AGENTS.md-driven hosts; they read the project root
 * SKILL.md via an `@SKILL.md` reference in AGENTS.md (handled by the
 * init-templates AGENTS_MD section, not here).
 *
 * The content is byte-identical to what `loadHyperframesSkillBundle()`
 * uses — same vendored files, same `BUNDLE_VERSION`. After install, the
 * agentic compose path (Phase H2) reads these files instead of the
 * vendored TS string constants, so users can edit them per project.
 */
import type { AgentHostId } from "../../utils/agent-host-detect.js";
/** Hosts the install-skill command knows file layouts for. */
export type InstallSkillHost = "claude-code" | "cursor" | "all";
export interface InstallSkillOptions {
    /** Project directory (must exist or be creatable). */
    projectDir: string;
    /**
     * Hosts to install host-specific copies for. The universal `SKILL.md` +
     * `references/` directory at the project root are always written.
     * Pass `["all"]` to install every host-specific layout.
     */
    hosts: InstallSkillHost[];
    /** Overwrite existing files. Default false (skip-on-exist). */
    force?: boolean;
    /** Don't write — just describe what would happen. */
    dryRun?: boolean;
}
export type InstallSkillFileStatus = "wrote" | "skipped-exists" | "would-write" | "would-skip-exists";
export interface InstallSkillFileAction {
    path: string;
    status: InstallSkillFileStatus;
    bytes: number;
}
export interface InstallSkillResult {
    success: boolean;
    bundleVersion: string;
    files: InstallSkillFileAction[];
}
/**
 * Install Hyperframes skill files at the project + host-specific paths.
 *
 * Idempotent by default — existing files are skipped (logged as
 * `skipped-exists`). Pass `force: true` to overwrite. `dryRun: true`
 * reports the same actions but with `would-*` status and writes nothing.
 */
export declare function installHyperframesSkill(opts: InstallSkillOptions): Promise<InstallSkillResult>;
/**
 * Map an `AgentHostId[]` (from `detectedAgentHosts()`) to the
 * install-skill command's host vocabulary. Codex / Aider don't get
 * host-specific layouts — they read the universal `SKILL.md` via
 * AGENTS.md, so they're filtered out here.
 */
export declare function deriveInstallHosts(detected: AgentHostId[]): InstallSkillHost[];
