/** Public API contract for bundle metadata. */ export interface BundleMetadata { hash: string; codeHash: string; size: number; compiledAt: number; source: string; mode: "development" | "production"; meta?: { type?: "mdx" | "component" | "layout" | "provider"; depsHash?: string; reactVersion?: string; /** Headings extracted from MDX for sidebar/TOC navigation */ headings?: Array<{ id: string; text: string; level: number; }>; }; } /** Public API contract for bundle code. */ export interface BundleCode { code: string; sourceMap?: string; css?: string; } export interface BundleManifestStats { totalBundles: number; totalSize: number; oldestBundle?: number; newestBundle?: number; } export interface BundleManifestStore { getBundleMetadata(key: string): Promise; setBundleMetadata(key: string, metadata: BundleMetadata, ttlMs?: number): Promise; getBundleCode(hash: string): Promise; setBundleCode(hash: string, code: BundleCode, ttlMs?: number): Promise; deleteBundle(key: string): Promise; invalidateSource(source: string): Promise; clear(): Promise; isAvailable(): Promise; getStats(): Promise; } /** Minimum interval between full expired-metadata sweeps (amortized on writes). */ export declare const BUNDLE_MANIFEST_SWEEP_INTERVAL_MS = 30000; export declare class InMemoryBundleManifestStore implements BundleManifestStore { private metadata; private code; private sourceIndex; private codeReferences; private lastExpiredSweepAt; getBundleMetadata(key: string): Promise; setBundleMetadata(key: string, metadata: BundleMetadata, ttlMs?: number): Promise; getBundleCode(hash: string): Promise; setBundleCode(hash: string, code: BundleCode, ttlMs?: number): Promise; deleteBundle(key: string): Promise; invalidateSource(source: string): Promise; clear(): Promise; isAvailable(): Promise; getStats(): Promise; private addCodeReference; /** * Drop expired metadata entries referencing one code hash so the reference * check in getBundleCode stays trustworthy without a full-map sweep. */ private pruneExpiredReferencesTo; /** * Full expired-metadata sweep, amortized: runs on writes at most once per * BUNDLE_MANIFEST_SWEEP_INTERVAL_MS so unread expired entries cannot pin * memory forever while per-render reads stay off the O(all-metadata) path. */ private sweepExpiredMetadataIfDue; private removeCodeReference; private removeMetadata; private removeSourceReference; } export declare function setBundleManifestStore(store: BundleManifestStore): void; /** Return bundle manifest store. */ export declare function getBundleManifestStore(): BundleManifestStore; export { computeCodeHash, computeHash } from "./hash-utils.js"; //# sourceMappingURL=bundle-manifest.d.ts.map