/**
 * Skill-Specific Memory Files
 *
 * Writes learnings to both:
 * 1. CLAUDE.md Skill Memories section (existing)
 * 2. .specweave/skill-memories/{skill-name}.md (new)
 *
 * When a skill loads, it can read its specific memory file for context.
 *
 * @module core/reflection/skill-memories
 */
/**
 * Default directory for skill-specific memory files (relative to project root)
 */
export declare const SKILL_MEMORY_DIR = ".specweave/skill-memories";
/**
 * Resolve the skill memory directory for a project.
 *
 * Cascading priority (first existing dir wins):
 *   1. .specweave/skill-memories/ — SpecWeave project level
 *   2. .claude/skill-memories/    — Claude Code project level
 *
 * For writes, returns the first path whose parent dir exists
 * (.specweave/ or .claude/). Falls back to .claude/skill-memories/
 * so the feature works without SpecWeave.
 */
export declare function getSkillMemoryDir(projectRoot: string): string;
/**
 * A single learning to be written
 */
export interface SkillLearning {
    skill: string;
    learning: string;
}
/**
 * Generate the content for a skill memory file
 */
export declare function generateSkillMemoryContent(skillName: string, learnings: string[]): string;
/**
 * Read existing learnings from a skill memory file
 */
export declare function readSkillMemoryFile(projectRoot: string, skillName: string): string[];
/**
 * Write a learning to a skill-specific memory file
 *
 * Creates the file if it doesn't exist, appends if it does.
 * Deduplicates learnings.
 */
export declare function writeSkillMemoryFile(projectRoot: string, learning: SkillLearning): {
    written: boolean;
    reason?: string;
};
/**
 * Write multiple learnings to skill-specific memory files
 *
 * Organizes learnings by skill and writes to appropriate files.
 */
export declare function writeSkillMemories(projectRoot: string, learnings: SkillLearning[]): {
    written: number;
    skipped: number;
};
/**
 * Get all skill memory files in a project
 */
export declare function listSkillMemoryFiles(projectRoot: string): string[];
/**
 * A parsed learning with metadata
 */
export interface ParsedLearning {
    skill: string;
    learning: string;
    date: string;
}
/**
 * Read all existing learnings from all skill memory files
 * Used for passing to LLM extraction prompt to avoid semantic duplicates
 */
export declare function readAllSkillMemories(projectRoot: string): ParsedLearning[];
/**
 * Configuration for pruning
 */
export interface PruneConfig {
    /** Keep learnings from the last N days (default: 90) */
    retentionDays: number;
    /** Maximum learnings per skill (default: 10) */
    maxLearningsPerSkill: number;
}
/**
 * Default pruning configuration
 */
export declare const DEFAULT_PRUNE_CONFIG: PruneConfig;
/**
 * Prune old learnings from skill memory files
 *
 * Removes learnings that are:
 * 1. Older than retentionDays
 * 2. Exceed maxLearningsPerSkill (keeps most recent)
 *
 * @param projectRoot - Project root path
 * @param config - Pruning configuration
 * @returns Statistics about pruning
 */
export declare function pruneSkillMemories(projectRoot: string, config?: Partial<PruneConfig>): {
    prunedCount: number;
    skillsAffected: string[];
    errors: string[];
};
/**
 * Format existing memories for LLM prompt
 * Groups by skill for better context
 */
export declare function formatMemoriesForPrompt(learnings: ParsedLearning[]): string;
//# sourceMappingURL=skill-memories.d.ts.map