export type MemoryTier = 'episodic' | 'semantic'; export interface MemoryEntry { id: string; tier: MemoryTier; content: string; project: string; createdAt: string; lastAccessed: string; accessCount: number; importance: number; sourceAgent: string; derivedFromMemoryIds?: string[]; embedding?: number[]; entityRefs?: string[]; relatedTo?: string[]; } export interface NewMemory { content: string; project?: string; importance?: number; sourceAgent?: string; entityRefs?: string[]; embedding?: number[]; /** Force tier; omit to let the module decide (default: episodic). */ tier?: MemoryTier; /** Override id (used for promotions/merges). */ id?: string; } export interface ReadOptions { tier?: MemoryTier | 'all'; query?: string; limit?: number; project?: string; } export interface TierBucketStats { count: number; oldestAt: string | null; newestAt: string | null; avgImportance: number; } export interface TierStats { episodic: TierBucketStats; semantic: TierBucketStats; promotionRate: number; } export declare class BrainMemoryTiers { private initialized; init(): Promise; /** Write a new memory. Defaults to episodic; module picks tier if not forced. */ write(memory: NewMemory): Promise; /** * Promote an episodic memory to semantic. If criteria are not met, throws * unless the caller already forced it (re-issued with tier='semantic'). */ promote(memoryId: string): Promise; /** Read memories matching the options. Lazily promotes warm episodic on access. */ read(opts?: ReadOptions): Promise; stats(project?: string): TierStats; private meetsPromotionCriteria; private findById; private loadTier; private appendEntry; private rotateIfNeeded; } export declare function getBrainMemoryTiers(): BrainMemoryTiers; export declare function resetBrainMemoryTiersForTests(): void; //# sourceMappingURL=brain-memory-tiers.d.ts.map