import type { ConversationLogEntryInput, ConversationLogMessage } from './types'; /** * 去重键:messageId 优先;无 messageId 时退到 (userId, timestamp, content) * 三元组——对齐 Character mergeMessages 的既有模式,使同一消息经监听与 * 回填双通道到达时只落一条。 */ export declare const messageKey: (message: ConversationLogEntryInput) => string; /** * 单会话内存滚动日志。纪元(clearedAt)拦截清空之前的旧消息复活; * 无 timestamp 的实时消息以到达时钟与纪元比较,回填消息没有可靠到达 * 时钟、由调用方直接丢弃(见 backfill)。 */ export declare class ConversationMessageLog { private readonly capacity; private entries; private readonly knownKeys; private nextSeq; private clearedAt; constructor(capacity: number); append(items: readonly ConversationLogEntryInput[]): void; /** 清空条目并推进纪元;绑定与 seq 计数由使用方保留。 */ clear(clearedAt?: number): void; lastN(count: number): ConversationLogMessage[]; afterSeq(seq: number): ConversationLogMessage[]; tailSeq(): number | null; private acceptedByEpoch; }