/**
 * PageManifest — JSON snapshot of what's on the page.
 *
 * Stored in session_state as key 'page_manifest'. Enables mechanical
 * page reconstruction in RR-7 (session resumption).
 *
 * See: ARCHITECTURE-REACTIVE-RECONSTRUCTION.md §6.5
 */
export interface PageManifestEntry {
    /** Logical component name: 'stock-ticker' */
    name: string;
    /** Version from component store */
    version: number;
    /** Canonical reference: 'component-store://stock-ticker@3' */
    codeRef: string;
    /** Bus mount path: 'chat.messages.component-stock-ticker' */
    mount: string;
    /** Fact domains consumed (for hydration in RR-10) */
    factDomains: string[];
    /** Capability metadata */
    capabilities: {
        reads: string[];
        emits: string[];
    };
    /** DOM order among components: 0, 1, 2, ... */
    position: number;
    /** Index in the canvas stream (historyEntries) — interleaves with messages. */
    historyIndex: number;
    /** Slot name in parent's render() output (null for linear chat layout) */
    slot: string | null;
}
export interface PageManifest {
    sessionId: string;
    components: PageManifestEntry[];
}
export type PageManifestEntryInput = Omit<PageManifestEntry, 'position' | 'historyIndex' | 'codeRef' | 'slot'> & {
    codeRef?: string;
    slot?: string | null;
    historyIndex?: number;
};
/** Build a canonical codeRef string. */
export declare function buildCodeRef(name: string, version: number): string;
/** Create a new empty manifest for a session. */
export declare function createEmptyManifest(sessionId: string): PageManifest;
/** Canonicalize a manifest for deterministic JSON persistence. */
export declare function normalizeManifest(manifest: PageManifest): PageManifest;
/** Add a component entry to a manifest, returning the updated manifest. */
export declare function addManifestEntry(manifest: PageManifest, entry: PageManifestEntryInput): PageManifest;
/** Remove a component by name and re-index positions. */
export declare function removeManifestEntry(manifest: PageManifest, name: string): PageManifest;
//# sourceMappingURL=PageManifest.d.ts.map