import type { DreamingDeepConfig } from './config.js';
type DreamingStoreEntryScoringView = {
    recallCount: number;
    totalScore: number;
    lastRecalledAt?: string;
    queryHashes?: readonly string[];
    dailyCount: number;
    groundedCount: number;
    lightHits: number;
    remHits: number;
};
/** Normalize a workspace-relative memory path: forward slashes, no odd ../ escapes at start. */
export declare function normalizeMemoryPath(rel: string): string;
/**
 * Stable id for a short-term store entry (path + line range).
 * Format: `{normalizedPath}#{start}-{end}` (1-based, inclusive end).
 */
export declare function buildEntryKey(parts: {
    path: string;
    startLine: number;
    endLine: number;
}): string;
/** YYYY-MM-DD in local time (for daily `memory/YYYY-MM-DD.md` names). */
export declare function isoDay(d: Date): string;
export declare function clamp01(value: number): number;
/** Fills in deep-phase defaults; mirrors `resolveDreamingConfig` deep object when only partial overrides are given. */
export declare function resolveDeepDefaults(overrides?: Partial<DreamingDeepConfig>): DreamingDeepConfig;
export declare function computeCandidateScore(entry: DreamingStoreEntryScoringView, nowMs: number, recencyHalfLifeDays: number): {
    avgScore: number;
    score: number;
    recencyDecay: number;
};
export declare function compareCandidatesByScore(a: {
    score: number;
    key: string;
}, b: {
    score: number;
    key: string;
}): number;
export declare function readFileLines(fullPath: string): Promise<string[] | null>;
/** 1-based inclusive line range. Joins with newlines. */
export declare function sliceRange(lines: string[], startLine: number, endLine: number): string;
export declare function isExpiredEntry(lastRecalledAt: string | undefined, nowMs: number, maxAgeDays: number): boolean;
/** Reject empty, tiny, or absurdly long snippets; blocks obvious “tool error” text. */
export declare function isContaminatedSnippet(snippet: string): boolean;
export declare function normalizeSnippetForHash(text: string): string;
export declare function snippetHash(text: string): string;
export declare function extractPromotionMarkers(markdown: string): {
    keys: Set<string>;
    hashes: Set<string>;
};
export {};
