import { type AgentEntry, type PathCtx } from './registry'; import { type Scope, type SkillTarget } from './paths'; import type { FsFacade } from './fsFacade'; export type InstallMethod = 'copy' | 'link'; /** Build install targets for the given agents, scope, and method. */ export declare function buildTargets(agents: AgentEntry[], scope: Scope, ctx: PathCtx, method?: InstallMethod): SkillTarget[]; export interface DetectMatch { agent: AgentEntry; /** The marker directory that matched (shown to the user). */ dir: string; } /** Detect configured agents along with the marker dir that matched. */ export declare function detectAgentMatches(ctx: PathCtx, fs: FsFacade): Promise; /** Detect which registered agents are configured under the given scope. */ export declare function detectAgents(ctx: PathCtx, fs: FsFacade): Promise; /** Targets for an explicit `--agent ` selection. Throws on unknown names. */ export declare function agentTargets(names: string[], scope: Scope, ctx: PathCtx, method?: InstallMethod): SkillTarget[]; /** Single target for an explicit `--target ` (bypasses scope + registry). */ export declare function explicitTarget(dir: string, ctx: PathCtx): SkillTarget; export interface RemovalTarget { agents: string[]; label: string; /** The `a14y` directory or symlink to remove. */ path: string; kind: 'link' | 'dir'; version: string | null; } /** * Find every place the a14y skill is installed under the given scope — the * shared `.agents/skills` dir and each registered agent's skills dir — whether * it's a real copy or a symlink. Foreign `a14y` directories (not our skill) are * ignored so uninstall never deletes someone else's files. */ export declare function scanInstalled(ctx: PathCtx, scope: Scope, fs: FsFacade): Promise;