/**
 * Skill resolver — single source of truth for "which skills are effective in a
 * given project" under the global-single-store + per-project-manifest model.
 *
 * Storage: ONE global store at getUserSkillsDir(). A skill is project-scoped if
 * it appears in the owner-level project-scoped registry (skills-scoped.json);
 * otherwise it is global. Project-scoped skills are active only where the
 * project manifest (skills-enabled.json) lists them.
 *
 *   effective(project) = { store skills NOT marked project-scoped }
 *                      ∪ { project-scoped skills whose name ∈ project manifest }
 *
 * All resolution / listing / injection surfaces MUST go through this module so
 * precedence and name-collision semantics live in exactly one place. Kept in
 * runtime/infra (no skills-layer imports) so both runtime and cli callers may
 * use it without crossing the runtime → skills boundary.
 */
export interface ResolvedSkill {
    name: string;
    /** Absolute path to <store>/<name>/SKILL.md */
    filePath: string;
    /** Absolute path to <store>/<name> */
    baseDir: string;
    enabledScope: "global" | "project";
    /** Active in the resolution context: global, or project-enabled via manifest. */
    active: boolean;
    systemGenerated: boolean;
    description?: string;
    version?: string;
}
export declare function isSystemGeneratedSkillName(name: string): boolean;
/**
 * Resolve all skills in the global store, annotated with enablement scope and
 * whether they're active in the given project context.
 *
 * Returns ALL store skills (active and inactive) so listing surfaces can show
 * enable/disable state; callers that only want active skills filter `.active`
 * (or use resolveActiveSkills).
 */
export declare function resolveSkills(projectRoot?: string): ResolvedSkill[];
/** Only the skills active in the given project (for prompt injection / resolution). */
export declare function resolveActiveSkills(projectRoot?: string): ResolvedSkill[];
/**
 * Resolve a single skill by name to its store paths, or null if not present.
 * Resolution honors only the global store (single source of truth) and ignores
 * enablement — any stored skill is invocable by explicit name.
 */
export declare function resolveSkillPath(name: string): {
    baseDir: string;
    filePath: string;
} | null;
