export declare const RELEVANT_MEMORIES_CONFIG: {
    /** Max topic files to consider during scan. */
    readonly MAX_SCAN_FILES: 100;
    /** Max files to surface per turn. */
    readonly MAX_SELECTED: 5;
    /** Max bytes per surfaced file (CC: 4096). */
    readonly MAX_FILE_BYTES: 4096;
    /** Max total bytes for all surfaced files combined. */
    readonly MAX_TOTAL_BYTES: number;
    /** Minimum score to be selected (0.0-1.0). */
    readonly MIN_SCORE: 0.2;
    /** Lines to read for header/description extraction. */
    readonly HEADER_LINES: 10;
    /** Recency boost: files modified within this many days get a bonus. */
    readonly RECENCY_DAYS: 7;
    /** Recency boost amount. */
    readonly RECENCY_BOOST: 0.15;
};
/** Scanned memory file header (CC MemoryHeader parity). */
export interface MemoryFileHeader {
    /** Filename (e.g. "lesson-docker.md") */
    filename: string;
    /** Absolute path */
    filePath: string;
    /** Last modified timestamp (ms since epoch) */
    mtimeMs: number;
    /** File size in bytes */
    sizeBytes: number;
    /** Description extracted from first non-heading line */
    description: string | null;
    /** Category inferred from filename prefix */
    category: string | null;
}
/** A selected relevant memory with content loaded. */
export interface RelevantMemory {
    /** Filename */
    filename: string;
    /** Full file path */
    filePath: string;
    /** Last modified timestamp */
    mtimeMs: number;
    /** Relevance score (0.0 - 1.0) */
    score: number;
    /** Content (possibly truncated) */
    content: string;
    /** Whether content was truncated */
    truncated: boolean;
}
/**
 * Find memory files relevant to a user query.
 *
 * CC parity: scans topic files, scores by keyword + filename + recency,
 * selects top-N, loads content. No LLM needed (unlike CC's Sonnet call).
 *
 * @param query - User query text
 * @param memoryDir - Root of the MEMDIR directory (~/.qlogicagent/memory/)
 * @param alreadySurfaced - Paths already shown in prior turns (for dedup)
 * @returns Relevant memories with content, sorted by score
 */
export declare function findRelevantMemories(query: string, memoryDir: string, alreadySurfaced?: ReadonlySet<string>): Promise<RelevantMemory[]>;
/**
 * Scan memory directory for topic files (excludes INDEX.md).
 * Returns headers sorted by modification time (newest first).
 */
export declare function scanMemoryHeaders(memoryDir: string): Promise<MemoryFileHeader[]>;
/**
 * Format relevant memories as a single block for system prompt injection.
 * CC parity: includes freshness header per file.
 */
export declare function formatRelevantMemoriesBlock(memories: RelevantMemory[]): string;
