/**
 * SkillCreator — authoring system for skills under `.catalog/skills/`.
 *
 * Story 5.2 — OpenLife v1.2 Royal Stack.
 *
 * Parallel to SquadCreator (Story 5.1) but simpler: a skill is a single
 * SKILL.md file rendered from `dist-templates/skill-template/`. No
 * sub-directories, no nested agents.
 *
 * v1.2 implements 4 of 8 methods. The remaining 4 (design, migrate,
 * extend, publish) are v1.3 placeholders with stable signatures.
 */
export interface SkillMigrationResult {
    ok: boolean;
    skillId: string;
    fromVersion?: string;
    toVersion?: string;
    filesChanged?: string[];
    error?: string;
    detail?: string;
}
export type SkillSection = 'whenToUse' | 'procedure' | 'guardrails' | 'validation' | 'references';
export interface SkillExtensionPatch {
    section: SkillSection;
    items: string[];
}
export interface SkillExtensionResult {
    ok: boolean;
    skillId: string;
    section?: SkillSection;
    itemsAdded?: number;
    error?: string;
    detail?: string;
}
export interface SkillPublishResult {
    ok: boolean;
    skillId: string;
    sha256?: string;
    ledgerEntry?: string;
    status?: string;
    error?: string;
    detail?: string;
    /** Story 14.1 (v1.5) — populated only when `publishWithRemote(...)` is used. */
    remote?: import('./RemotePublisher').RemotePublishResult;
}
export interface SkillProposal {
    id: string;
    name: string;
    description: string;
    version?: string;
    status?: 'active' | 'draft' | 'archived';
    source?: string;
    whenToUse: string[];
    procedure: string[];
    inputs?: string[];
    outputs?: string[];
    validations?: string[];
    guardrails?: string[];
    examples?: string;
    references?: string;
}
export interface SkillCreateResult {
    ok: true;
    skillId: string;
    skillDir: string;
    filePath: string;
}
export interface SkillCreateError {
    ok: false;
    error: string;
    detail?: string;
}
export interface SkillValidationResult {
    ok: boolean;
    skillId: string;
    errors: string[];
    warnings: string[];
}
export interface SkillAnalysisResult {
    skillId: string;
    hasWhenToUse: boolean;
    hasProcedure: boolean;
    hasValidation: boolean;
    hasGuardrails: boolean;
    hasExamples: boolean;
    hasReferences: boolean;
    suggestions: string[];
}
export interface SkillCreatorOptions {
    catalogRoot?: string;
    templateRoot?: string;
}
export declare class SkillCreator {
    private readonly catalogRoot;
    private readonly templateRoot;
    constructor(opts?: SkillCreatorOptions);
    create(proposal: SkillProposal): SkillCreateResult | SkillCreateError;
    validate(skillId: string): SkillValidationResult;
    list(filter?: {
        status?: 'active' | 'draft' | 'archived';
    }): Array<{
        id: string;
        name: string;
        status: string;
    }>;
    analyze(skillId: string): SkillAnalysisResult | null;
    design(brief: string, opts?: {
        mode?: 'quick' | 'professional' | 'elite';
        id?: string;
    }): {
        ok: true;
        proposal: SkillProposal;
    } | {
        ok: false;
        error: string;
    };
    /**
     * Story 8.2 — LLM-driven design.
     *
     * Mirrors SquadCreator.designWithBrain. If a Brain provider is configured,
     * asks the Brain for a structured JSON proposal. On any failure, falls
     * back to the heuristic `design()`.
     */
    designWithBrain(brain: {
        isAnyProviderAvailable(): boolean;
        think(systemPrompt: string, userMessage: string): Promise<string>;
    }, brief: string, opts?: {
        mode?: 'quick' | 'professional' | 'elite';
        id?: string;
    }): Promise<{
        ok: true;
        proposal: SkillProposal;
        source: 'brain' | 'heuristic';
    } | {
        ok: false;
        error: string;
    }>;
    migrate(skillId: string, fromVersion: string, toVersion: string): SkillMigrationResult;
    extend(skillId: string, patch: SkillExtensionPatch): SkillExtensionResult;
    publish(skillId: string): SkillPublishResult;
    /**
     * Story 14.1 (v1.5) — Publish + push to a remote registry.
     * Mirror of SquadCreator.publishWithRemote. Local seal first, then
     * RemotePublisher.publishAsset; the remote outcome lives on the
     * returned envelope's `remote` field.
     */
    publishWithRemote(skillId: string): Promise<SkillPublishResult>;
    private rewriteFrontmatterField;
    private appendItemsToSection;
    private renderItems;
    private buildVars;
    private parseFrontmatter;
}
