/**
 * SkillRegistryBuilder — generic skill assembly for OODA agent consumers.
 *
 * Promoted from `forge/src/agents/shared/skill-registry-builder.ts` (sprint-616:quick-3).
 * Replaces 9 quasi-identical `buildXxxSkills()` functions in Forge with a single
 * `buildSkills({ agentId, domain, extras })` factory.
 *
 * Pattern: base skills (universal) + domain extras (least privilege per agent).
 *
 * @public @since 0.18.0
 */
import { httpFetch } from "./http-fetch.js";
import type { SkillRegistry } from "../orchestration/ooda/skills.js";
import type { BrainPort } from "../ports/brain.js";
import type { LoggerPort } from "../ports/logger.js";
import type { DomainSkillEntry } from "./base-skills.js";
/**
 * Dependencies injected at skill construction time.
 * Matches Forge's `SkillBuilderDeps` / `SkillDeps` — unified here.
 */
export interface SkillBuilderDeps {
    /** Brain memory port for brain-query / brain-store skills. */
    readonly brain?: BrainPort;
    /** Logger for debug / audit trails inside skills. */
    readonly logger: LoggerPort;
    /** Slack webhook URL for slack-notify. Optional. */
    readonly slackWebhookUrl?: string;
    /** LiteLLM base URL for llm-complete. Optional. */
    readonly litellmUrl?: string;
    /** LiteLLM API key for llm-complete. Optional. */
    readonly litellmApiKey?: string;
}
/**
 * Options for `buildSkills`.
 */
export interface BuildSkillsOptions {
    /** Agent identifier (used for debug traces and schema validation). */
    readonly agentId: string;
    /** Resolved dependencies at construction time. */
    readonly deps: SkillBuilderDeps;
    /**
     * Domain name (e.g. "revenue", "ops", "product").
     * Used for documentation + future audit trail.
     */
    readonly domain: string;
    /**
     * Extra skills to merge on top of the base registry.
     * These must be domain-specific (e.g. prometheus-query, telegram-notify).
     * Duplicates against base skills are rejected at validation time.
     */
    readonly extras?: DomainSkillEntry[];
}
/**
 * Assembled skill registry, split for audit + introspection.
 */
export interface SkillRegistryBundle {
    /** The merged SkillRegistry (base + extras), ready for OODA phase injection. */
    registry: SkillRegistry;
    /** Names of the base skills always included. */
    baseNames: readonly string[];
    /** Names of the domain extras merged in. */
    extraNames: readonly string[];
}
/**
 * Build a SkillRegistry for an agent.
 *
 * Base skills (always included): brain-store, brain-query, slack-notify, llm-complete.
 * Domain extras are merged on top — Zod validation prevents duplicate IDs.
 *
 * @example
 * ```ts
 * const { registry } = buildSkills({
 *   agentId: "forge-revenue",
 *   deps,
 *   domain: "revenue",
 *   extras: [{ name: "http-fetch", skill: httpFetch }],
 * });
 * ```
 *
 * @throws {z.ZodError} if options fail validation
 * @throws {Error} if extras contain a skill ID that collides with a base skill name
 */
export declare function buildSkills(opts: BuildSkillsOptions): SkillRegistryBundle;
/**
 * Convenience: extract just the SkillRegistry from `buildSkills`.
 * Identical to `buildSkills(opts).registry`.
 */
export declare function buildSkillRegistry(opts: BuildSkillsOptions): SkillRegistry;
export { httpFetch };
export type { DomainSkillEntry };
//# sourceMappingURL=skill-registry-builder.d.ts.map