/**
 * SceneReportMemoryCache — tiny process-local LRU for external-RPC traces.
 *
 * Why it exists
 * -------------
 * File-backed traces get a sha256 content hash and land in the disk store
 * with a 7-day TTL. External RPC traces (forwarded from a running
 * trace_processor_shell) have no content to hash, so we keep the last
 * SCENE_REPORT_MEMORY_CACHE_MAX reports keyed by `traceId` for as long as
 * the backend process lives — session-local, resets on restart.
 *
 * Why hand-rolled instead of `lru-cache`
 * --------------------------------------
 * JS `Map` preserves insertion order, so "mark as recently used" is just
 * `delete(k); set(k, v)` and "oldest entry" is `keys().next().value`. The
 * whole LRU contract fits in ~30 lines with zero new dependencies.
 */
import type { SceneReport } from '../../agent/scene/types';
import type { SceneRouteProfile } from '../../agent/config/domainManifest';
export declare class SceneReportMemoryCache {
    private readonly maxSize;
    private readonly store;
    constructor(maxSize: number);
    /**
     * Return the cached report for `traceId` and mark it as most-recently-used
     * by re-inserting it at the tail of the Map. Returns `undefined` on miss.
     */
    get(traceId: string, routeProfile?: SceneRouteProfile): SceneReport | undefined;
    /**
     * Insert or update `traceId`. If the cache is full and this is a new key,
     * evict the least-recently-used entry (the first one in insertion order).
     * Re-setting an existing key refreshes its position without evicting.
     */
    set(traceId: string, report: SceneReport, routeProfile?: SceneRouteProfile): void;
    delete(traceId: string, routeProfile?: SceneRouteProfile): boolean;
    clear(): void;
    get size(): number;
    private cacheKey;
}
//# sourceMappingURL=sceneReportMemoryCache.d.ts.map