/**
 * Capability gate for agent features.
 *
 * Every install path that touches an agent-version (hooks, plugins, MCP,
 * skills, commands) calls `supports(agent, cap, version?)` before writing to
 * the version's config dir. When the capability is unsupported or the version
 * is below `since`, the install path skips the write and surfaces a clear
 * reason instead of silently corrupting an older binary's settings file.
 */
import type { AgentId, CapabilityName, CapabilityResult } from './types.js';
/**
 * True when the agent supports the capability on at least some version.
 * Useful for filtering UI lists; does not check installed version.
 */
export declare function isCapable(agent: AgentId, cap: CapabilityName): boolean;
/**
 * Check whether the given agent (optionally pinned to a specific installed
 * version) supports `cap`. Pass `version` whenever you know it -- omitting it
 * only checks the agent-level flag, which is fine for "is this agent ever
 * capable" filters but NOT for install-time gating.
 */
export declare function supports(agent: AgentId, cap: CapabilityName, version?: string): CapabilityResult;
/**
 * Human-readable explanation for skipping an install. Stable shape so callers
 * can either log it or push it onto an `errors[]` collector.
 */
export declare function explainSkip(agent: AgentId, cap: CapabilityName, result: CapabilityResult, version?: string): string;
/** All agents whose `capabilities[cap]` is anything other than `false`. */
export declare function capableAgents(cap: CapabilityName): AgentId[];
