/**
 * Fan a list of resolved `Skill`s out into the existing command, subagent,
 * and tool registries, and subscribe each declared trigger with the event
 * router.
 *
 * The registrar is the only place that bridges the unified skill model
 * with the legacy registries: every downstream consumer (`/tools`,
 * `/help`, mode filtering, the agent tool, the slash-command dispatcher)
 * keeps touching its existing registry, unaware that a skill provided the
 * member.
 *
 * Collision posture matches the custom-tools loader: name clashes inside
 * the destination registry are hard errors (return value, not throw) so
 * the caller can report them all at once instead of failing the boot on
 * the first one.
 *
 * See `agents/2026-05-20-skills-unification-plan.md` step 12.
 */
import type { CustomCommandLoader } from '../custom-commands/loader.js';
import type { EventRouter } from '../events/event-router.js';
import type { SubscriptionId } from '../events/types.js';
import type { SubagentLoader } from '../subagents/subagent-loader.js';
import type { ToolManager } from '../tools/tool-manager.js';
import type { Skill, SkillMemberKind } from '../types/skills.js';
export interface SkillCollision {
    skill: string;
    kind: SkillMemberKind | 'subscription';
    name: string;
    message: string;
}
export interface RegistrarDependencies {
    toolManager: ToolManager;
    commandLoader: CustomCommandLoader;
    subagentLoader: SubagentLoader;
    eventRouter: EventRouter;
}
export interface RegisterResult {
    registered: string[];
    collisions: SkillCollision[];
    subscriptionIds: SubscriptionId[];
}
export declare function registerSkills(skills: Skill[], deps: RegistrarDependencies): RegisterResult;
/**
 * Subscribe many skills' triggers at once. The bootstrap calls this for
 * flat-form skills (whose members already live in the legacy registries),
 * so we don't re-register members and don't produce false collisions.
 */
export declare function registerSkillSubscriptions(skills: Skill[], eventRouter: EventRouter): {
    subscriptionIds: SubscriptionId[];
    collisions: SkillCollision[];
};
//# sourceMappingURL=registrar.d.ts.map