/**
 * Resource inventory — the single chokepoint for "what does this agent@version
 * have" (RUSH-2238, parent RUSH-2236). Contract: cli/docs/specifications.md.
 *
 * One API answers four orthogonal questions per (agent, version, kind):
 *
 *   capable   — the agent+version feature flags allow the kind at all
 *   declared  — resources the DotAgents layers (project/user/system/extra)
 *               declare for sync
 *   onDisk    — resources actually installed in the version home filesystem
 *               (the installed-resource truth — NOT agents.yaml tracking data)
 *   wired     — resources the harness native config references so they fire
 *   unmanaged — onDisk − declared (orphans no layer declares anymore)
 *
 * Callers (inspect, doctor, view, sync) MUST come here rather than
 * re-implementing path joins or config parsing per command. Wiring parsing
 * currently covers the settings.json family (claude, droid,
 * muse), Grok hooks.json, and Kimi config.toml via checkVersionHookWiring.
 */
import type { AgentId } from './types.js';
import { type HookWiringReport } from './hooks/install.js';
/** Resource kinds the inventory can report. Only 'hooks' is implemented so far
 *  (RUSH-2238); the remaining kinds land with their follow-up tickets. */
export type InventoryKind = 'hooks' | 'skills' | 'commands' | 'plugins' | 'mcp';
/** A reference to one resource in one state (declared / onDisk / wired). */
export interface ResourceRef {
    /** Stable install name (script basename without extension for hooks). */
    name: string;
    /** Declared/onDisk: absolute file path. Wired: the command string the native
     *  config references. */
    path: string;
    /** Origin: a layer name for declared ('project' | 'user' | 'system' | extra
     *  repo alias), 'user'/'project' scope or 'version-home' for onDisk,
     *  'native-config' for wired. */
    source: string;
    /** Optional context — e.g. the lifecycle events a wired hook fires on. */
    detail?: string;
}
export interface ResourceInventory {
    agent: AgentId;
    version: string;
    kind: InventoryKind;
    /** Agent+version feature flags allow this kind (version-aware gate). */
    capable: boolean;
    /** Declared in the DotAgents layers. */
    declared: ResourceRef[];
    /** Installed on disk in the version home. */
    onDisk: ResourceRef[];
    /** Referenced by the harness native config (empty when wiringSupported is
     *  false — the format parser for that harness is not implemented yet). */
    wired: ResourceRef[];
    /** onDisk − declared: installed orphans no layer declares. */
    unmanaged: ResourceRef[];
    /** Whether this harness's native wiring was read successfully. When false,
     *  `wired: []` means "unknown" (unsupported family OR unparseable config),
     *  NOT "nothing wired". Format-supported but corrupt configs set this false. */
    wiringSupported: boolean;
    /** Native-format diagnostic retained for doctor; derived in this same pass. */
    wiring?: HookWiringReport;
}
/**
 * The single inventory API. Harness-scoped (claude/codex/grok/kimi/droid) —
 * never a model or profile. Throws for kinds without an implementation rather
 * than returning a half-empty report that looks like truth.
 */
export declare function getResourceInventory(agent: AgentId, version: string, kind: InventoryKind, opts?: {
    cwd?: string;
}): ResourceInventory;
/**
 * On-disk hook listing for an explicit home (version home or effective home)
 * plus the project overlay — the one listing `getAgentResources` routes
 * through, so inspect/doctor/view share a single hooks source. Paths resolve
 * through the absolute-hooksDir-safe join (RUSH-2237), so grok/kimi version
 * homes list their real hooks.
 */
export declare function listOnDiskHooks(agent: AgentId, opts?: {
    home?: string;
    cwd?: string;
}): ResourceRef[];
