import type { VisualLayoutPositions, VisualLayoutRoutes } from './protocol-contract.js'; /** Where every host writes a projection's sidecar, and reads it back from. */ export declare const LAYOUT_SIDECAR_DIR = ".yarramate/visual-layout"; export declare const layoutSidecarPath: (projectionId: string) => string; /** A path a store or directory holds that could be a sidecar. */ export declare const isLayoutSidecarPath: (path: string) => boolean; export interface LayoutSidecars { readonly layouts: Record; readonly folds: Record; readonly routes: Record; } /** * What the sidecars say, keyed by the projection id each one names. * * Presentation state must never fail a session (ADR 0023): a source that does * not parse or does not validate is skipped, not reported. A sidecar written * before #473 has neither fold list and says nothing about folding rather * than "fold nothing" - the view's own default decides - so only a sidecar * that STATES a fold yields a `folds` entry. A sidecar written before the * routes says nothing about them, and the layout recomputes. */ export declare const readLayoutSidecars: (sources: Iterable<{ readonly path: string; readonly source: string; }>) => LayoutSidecars;