/** * Stable evidence key for a durable-change proposal: sha256 of the layer plus its summary, * lowercased and whitespace-collapsed, truncated to 24 hex chars. Normalization means the same * lesson re-observed with reworded whitespace/casing accumulates onto one key instead of scattering. */ export declare function observationKey(layer: string, summary: string): string; export declare class ObservationStore { private readonly filePath; private readonly readOnly; constructor(filePath: string, options?: { readOnly?: boolean; }); static forAgentDir(agentDir: string, options?: { readOnly?: boolean; }): ObservationStore; private load; private save; /** Evict least-recently-incremented keys until the store is back within {@link MAX_KEYS}. */ private evict; /** * Record one more observation of `key` and return the new (capped) count. Load-mutate-save runs * under a single exclusive lock so two concurrent increments (e.g. two reflection passes across * sessions sharing an agentDir) can't both read the old count and drop one increment. */ increment(key: string, at?: string): number; /** Current observation count for `key` (0 if never observed). */ get(key: string): number; } //# sourceMappingURL=observation-store.d.ts.map