/**
 * Skill registry — resolves name conflicts across sources and exposes
 * lookup, list, and shadow-set queries for `/help` and
 * `franklin skills list`.
 *
 * Precedence: project > user > bundled. Within the same source, the first
 * loaded skill wins so that the order returned by the loader (which is
 * filesystem-ordered) is the deterministic tiebreaker the user can rely on.
 *
 * Built-in slash commands (e.g. `/security`) take precedence over skills
 * with the same name, but that check happens at the dispatch layer in
 * `src/agent/commands.ts`. The registry never sees the built-in list.
 */
import type { LoadedSkill } from './types.js';
export interface ShadowEntry {
    winner: LoadedSkill;
    loser: LoadedSkill;
}
export declare class Registry {
    private readonly byName;
    private readonly shadows;
    static fromLoaded(loaded: LoadedSkill[]): Registry;
    lookup(name: string): LoadedSkill | undefined;
    list(): LoadedSkill[];
    shadowed(): ShadowEntry[];
}
