/**
 * Skills Registry — ADR-140 Phase 2b
 *
 * Exposes PICA's named methodologies as MCP-loadable skills via the SEP-2640
 * bridge pattern: each skill is reachable as both a `skill://` Resource and an
 * MCP Tool (pica_skill_list + pica_skill_get).
 *
 * Bodies are bundled at build time by `scripts/build-skills.ts`. The registry
 * is intentionally thin — list returns a metadata-only summary (tiny handshake
 * cost), get returns the full body on demand (lazy slicing, mirrors the
 * _inspect sections pattern from ADR-199).
 */
import { SKILLS, SKILL_NAMES, type Skill } from "./skills.generated.js";
/** Origin of a skill: shipped with the package, org-authored, or user-authored. */
export type SkillOrigin = "builtin" | "org" | "user";
/**
 * An extra (non-builtin) skill that may optionally carry its origin.
 * Defaults to "org" when origin is absent (Phase-2 back-compat).
 */
export type ExtraSkill = Skill & {
    origin?: "org" | "user";
};
/** Public-facing summary returned by listSkills — no body. */
export interface SkillSummary {
    name: string;
    description: string;
    triggers: string[];
    audience: string;
    /** "builtin" = shipped with the package; "org" or "user" = passed via extraSkills. */
    origin?: SkillOrigin;
}
export declare class SkillsRegistry {
    private readonly extra;
    /**
     * @param extraSkills Customer-owned skills to merge with built-ins.
     *   Built-in WINS on name collision; first entry wins on duplicate extras.
     *   Default is empty — keeps the published package byte-identical for
     *   stdio/external callers that pass no extras (hard invariant, ADR-271).
     *   Pass `origin: "user"` on an entry to tag it as user-authored.
     */
    constructor(extraSkills?: ExtraSkill[]);
    /** Stable list of available skill names (built-ins first, then extras). */
    listNames(): ReadonlyArray<string>;
    /**
     * Lightweight list for `pica_skill_list` — no body bytes.
     * Total size scales with skill count, not body size.
     */
    listSkills(): SkillSummary[];
    /**
     * Full skill — bodies are loaded only when an agent invokes get.
     * Resolves built-ins first, then extras.
     * Throws when name is unknown so callers can return a RecoveryHint.
     */
    getSkill(name: string): Skill;
    /** "builtin" | "org" | "user" | null (null = not registered). */
    originOf(name: string): SkillOrigin | null;
    has(name: string): boolean;
}
export declare class SkillNotFoundError extends Error {
    readonly skillName: string;
    constructor(skillName: string);
}
export { SKILLS, SKILL_NAMES };
export type { Skill };
//# sourceMappingURL=index.d.ts.map