export interface SvgBlock { type: string; label?: string; count?: number; columns?: string[]; copy?: string; source?: string; sort?: string[]; filter?: string[]; variant?: "primary" | "secondary" | "danger" | "ghost"; state?: "default" | "error" | "disabled"; children?: SvgBlock[]; } export interface SvgComponent { semantic?: string; label?: { en?: string; }; } export interface SvgScreen { id?: string; intent?: string; requiredStates?: string[]; components?: SvgComponent[]; layout?: { blocks?: SvgBlock[]; }; } export interface SvgJourneyState { screen?: string; on?: Record; } export interface SvgJourney { id?: string; entry?: string; states?: Record; } export interface SvgProject { name?: string; platforms?: string[]; screens?: SvgScreen[]; journeys?: SvgJourney[]; tokens?: { colors?: { accent?: string; bg?: string; surface?: string; text?: string; muted?: string; border?: string; success?: string; warning?: string; danger?: string; }; radius?: number; font?: string; mode?: "light" | "dark"; }; include?: string[]; [key: string]: unknown; } export declare function escapeXml(s: string): string; /** `Checkout--error.network` → `Checkout--error-network.svg` (dots→dashes, * anything path-hostile → dash). */ export declare function svgFileName(screenId: string, stateId: string): string; /** * Pure SVG for one screen in one state — deterministic (no dates, no * randomness), tokens applied, copy/labels/columns as editable . */ export declare function buildScreenSvg(project: SvgProject, screenId: string, stateId: string): string; /** Read the project and merge include fragments — same rules as the HTML * export (deterministic file order, project file never self-merged). */ export declare function loadMergedProject(projectPath: string): SvgProject; /** One emitted frame: its file plus the R26 identity, journey included. */ export interface FrameRef { file: string; journey?: string; screen: string; state: string; } /** * Every screen×state frame the export writes, ordered by journey traversal * (R27): BFS from each journey's entry through its transitions, then screens * no journey references, in declared order. Each screen is emitted once, * attributed to the first journey that reaches it. The *set* of frames is * identical to the flat per-screen×state export — only the order and the * journey attribution are added, so `--manifest` is the machine-readable * "page per journey" without changing which files are written. */ export declare function orderedFrames(project: SvgProject): FrameRef[]; export declare function runSvgExport(fileArg: string | undefined, outDir: string, opts?: { manifest?: boolean; }): never;