/** * Spec Type Definitions — The foundation of Mémoire's spec-driven approach. * Every component, page, and dataviz starts as a spec. */ import { z } from "zod"; /** * WA-201 helper — parse any valid touchTarget value into pixel dimensions * and WCAG compliance booleans. * * @param value - "default" | "min-24" | "min-44" | "WxH" (e.g. "32x32") */ export declare function parseTouchTarget(value: string): { w: number; h: number; meetsAA: boolean; meetsAAA: boolean; }; export declare const AtomicLevelSchema: z.ZodEnum<["atom", "molecule", "organism", "template"]>; export type AtomicLevel = z.infer; export declare const CodeConnectSchema: z.ZodObject<{ figmaNodeId: z.ZodOptional; codebasePath: z.ZodOptional; props: z.ZodDefault>; mapped: z.ZodDefault; }, "strip", z.ZodTypeAny, { props: Record; mapped: boolean; figmaNodeId?: string | undefined; codebasePath?: string | undefined; }, { figmaNodeId?: string | undefined; codebasePath?: string | undefined; props?: Record | undefined; mapped?: boolean | undefined; }>; export declare const ComponentSpecSchema: z.ZodObject<{ name: z.ZodString; type: z.ZodLiteral<"component">; level: z.ZodDefault>; purpose: z.ZodString; researchBacking: z.ZodDefault>; designTokens: z.ZodDefault>; mapped: z.ZodDefault; }, "strip", z.ZodTypeAny, { source: "figma" | "none" | "manual"; mapped: boolean; }, { source?: "figma" | "none" | "manual" | undefined; mapped?: boolean | undefined; }>>; variants: z.ZodDefault>; variantAxes: z.ZodOptional>>; variantConstraints: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { forbid: Record[]; }, { forbid?: Record[] | undefined; }>>; props: z.ZodDefault>; shadcnBase: z.ZodDefault>; composesSpecs: z.ZodDefault>; codeConnect: z.ZodDefault; codebasePath: z.ZodOptional; props: z.ZodDefault>; mapped: z.ZodDefault; }, "strip", z.ZodTypeAny, { props: Record; mapped: boolean; figmaNodeId?: string | undefined; codebasePath?: string | undefined; }, { figmaNodeId?: string | undefined; codebasePath?: string | undefined; props?: Record | undefined; mapped?: boolean | undefined; }>>; accessibility: z.ZodDefault; ariaLabel: z.ZodDefault>; keyboardNav: z.ZodDefault; focusStyle: z.ZodDefault>; focusWidth: z.ZodDefault>; focusContrastRatio: z.ZodOptional; touchTarget: z.ZodDefault, z.ZodEffects]>>; reducedMotion: z.ZodDefault; liveRegion: z.ZodDefault>; colorIndependent: z.ZodDefault; colorContrast: z.ZodOptional; background: z.ZodOptional; minimumLevel: z.ZodDefault>; assertedRatio: z.ZodOptional; }, "strip", z.ZodTypeAny, { minimumLevel: "AA" | "AAA"; foreground?: string | undefined; background?: string | undefined; assertedRatio?: number | undefined; }, { foreground?: string | undefined; background?: string | undefined; minimumLevel?: "AA" | "AAA" | undefined; assertedRatio?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { ariaLabel: "none" | "required" | "optional"; keyboardNav: boolean; focusStyle: "custom" | "none" | "outline" | "ring"; focusWidth: string; touchTarget: string; reducedMotion: boolean; liveRegion: "off" | "polite" | "assertive"; colorIndependent: boolean; role?: string | undefined; focusContrastRatio?: number | undefined; colorContrast?: { minimumLevel: "AA" | "AAA"; foreground?: string | undefined; background?: string | undefined; assertedRatio?: number | undefined; } | undefined; }, { role?: string | undefined; ariaLabel?: "none" | "required" | "optional" | undefined; keyboardNav?: boolean | undefined; focusStyle?: "custom" | "none" | "outline" | "ring" | undefined; focusWidth?: string | undefined; focusContrastRatio?: number | undefined; touchTarget?: string | undefined; reducedMotion?: boolean | undefined; liveRegion?: "off" | "polite" | "assertive" | undefined; colorIndependent?: boolean | undefined; colorContrast?: { foreground?: string | undefined; background?: string | undefined; minimumLevel?: "AA" | "AAA" | undefined; assertedRatio?: number | undefined; } | undefined; }>>; dataviz: z.ZodDefault>; tags: z.ZodDefault>; createdAt: z.ZodDefault; updatedAt: z.ZodDefault; /** * Provenance metadata for specs installed via `memi add`. * OPTIONAL — specs authored locally (e.g. via `memi spec`) will not * have this field. The CLI uses it to resolve Marketplace URLs from * a bare component name in `memi view`. */ __memoireSource: z.ZodOptional; installedAt: z.ZodOptional; }, "strip", z.ZodTypeAny, { registry: string; version?: string | undefined; installedAt?: string | undefined; }, { registry: string; version?: string | undefined; installedAt?: string | undefined; }>>; }, "strip", z.ZodTypeAny, { type: "component"; designTokens: { source: "figma" | "none" | "manual"; mapped: boolean; }; name: string; level: "atom" | "molecule" | "organism" | "template"; props: Record; purpose: string; researchBacking: string[]; variants: string[]; shadcnBase: string[]; composesSpecs: string[]; codeConnect: { props: Record; mapped: boolean; figmaNodeId?: string | undefined; codebasePath?: string | undefined; }; accessibility: { ariaLabel: "none" | "required" | "optional"; keyboardNav: boolean; focusStyle: "custom" | "none" | "outline" | "ring"; focusWidth: string; touchTarget: string; reducedMotion: boolean; liveRegion: "off" | "polite" | "assertive"; colorIndependent: boolean; role?: string | undefined; focusContrastRatio?: number | undefined; colorContrast?: { minimumLevel: "AA" | "AAA"; foreground?: string | undefined; background?: string | undefined; assertedRatio?: number | undefined; } | undefined; }; dataviz: string | null; tags: string[]; createdAt: string; updatedAt: string; variantAxes?: Record | undefined; variantConstraints?: { forbid: Record[]; } | undefined; __memoireSource?: { registry: string; version?: string | undefined; installedAt?: string | undefined; } | undefined; }, { type: "component"; name: string; purpose: string; designTokens?: { source?: "figma" | "none" | "manual" | undefined; mapped?: boolean | undefined; } | undefined; level?: "atom" | "molecule" | "organism" | "template" | undefined; props?: Record | undefined; researchBacking?: string[] | undefined; variants?: string[] | undefined; variantAxes?: Record | undefined; variantConstraints?: { forbid?: Record[] | undefined; } | undefined; shadcnBase?: string[] | undefined; composesSpecs?: string[] | undefined; codeConnect?: { figmaNodeId?: string | undefined; codebasePath?: string | undefined; props?: Record | undefined; mapped?: boolean | undefined; } | undefined; accessibility?: { role?: string | undefined; ariaLabel?: "none" | "required" | "optional" | undefined; keyboardNav?: boolean | undefined; focusStyle?: "custom" | "none" | "outline" | "ring" | undefined; focusWidth?: string | undefined; focusContrastRatio?: number | undefined; touchTarget?: string | undefined; reducedMotion?: boolean | undefined; liveRegion?: "off" | "polite" | "assertive" | undefined; colorIndependent?: boolean | undefined; colorContrast?: { foreground?: string | undefined; background?: string | undefined; minimumLevel?: "AA" | "AAA" | undefined; assertedRatio?: number | undefined; } | undefined; } | undefined; dataviz?: string | null | undefined; tags?: string[] | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; __memoireSource?: { registry: string; version?: string | undefined; installedAt?: string | undefined; } | undefined; }>; export type ComponentSpec = z.infer; export declare const SectionSchema: z.ZodObject<{ name: z.ZodString; component: z.ZodString; repeat: z.ZodDefault; layout: z.ZodDefault>; props: z.ZodDefault>; }, "strip", z.ZodTypeAny, { repeat: number; name: string; props: Record; component: string; layout: "full-width" | "half" | "third" | "quarter" | "grid-2" | "grid-3" | "grid-4" | "stack" | "inline"; }, { name: string; component: string; repeat?: number | undefined; props?: Record | undefined; layout?: "full-width" | "half" | "third" | "quarter" | "grid-2" | "grid-3" | "grid-4" | "stack" | "inline" | undefined; }>; export declare const PageSpecSchema: z.ZodObject<{ name: z.ZodString; type: z.ZodLiteral<"page">; purpose: z.ZodString; researchBacking: z.ZodDefault>; layout: z.ZodDefault>; sections: z.ZodDefault; layout: z.ZodDefault>; props: z.ZodDefault>; }, "strip", z.ZodTypeAny, { repeat: number; name: string; props: Record; component: string; layout: "full-width" | "half" | "third" | "quarter" | "grid-2" | "grid-3" | "grid-4" | "stack" | "inline"; }, { name: string; component: string; repeat?: number | undefined; props?: Record | undefined; layout?: "full-width" | "half" | "third" | "quarter" | "grid-2" | "grid-3" | "grid-4" | "stack" | "inline" | undefined; }>, "many">>; shadcnLayout: z.ZodDefault>; responsive: z.ZodDefault; tablet: z.ZodDefault; desktop: z.ZodDefault; }, "strip", z.ZodTypeAny, { mobile: string; tablet: string; desktop: string; }, { mobile?: string | undefined; tablet?: string | undefined; desktop?: string | undefined; }>>; meta: z.ZodDefault; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { title?: string | undefined; description?: string | undefined; }, { title?: string | undefined; description?: string | undefined; }>>; accessibility: z.ZodDefault; skipLink: z.ZodDefault; headingHierarchy: z.ZodDefault; pageTitle: z.ZodOptional; language: z.ZodDefault; consistentNav: z.ZodDefault; consistentHelp: z.ZodDefault; }, "strip", z.ZodTypeAny, { language: string; landmarks: boolean; skipLink: boolean; headingHierarchy: boolean; consistentNav: boolean; consistentHelp: boolean; pageTitle?: string | undefined; }, { language?: string | undefined; landmarks?: boolean | undefined; skipLink?: boolean | undefined; headingHierarchy?: boolean | undefined; pageTitle?: string | undefined; consistentNav?: boolean | undefined; consistentHelp?: boolean | undefined; }>>; tags: z.ZodDefault>; layoutLocked: z.ZodDefault; createdAt: z.ZodDefault; updatedAt: z.ZodDefault; }, "strip", z.ZodTypeAny, { type: "page"; name: string; purpose: string; researchBacking: string[]; accessibility: { language: string; landmarks: boolean; skipLink: boolean; headingHierarchy: boolean; consistentNav: boolean; consistentHelp: boolean; pageTitle?: string | undefined; }; tags: string[]; createdAt: string; updatedAt: string; layout: "split" | "full-width" | "sidebar-main" | "centered" | "dashboard" | "marketing"; sections: { repeat: number; name: string; props: Record; component: string; layout: "full-width" | "half" | "third" | "quarter" | "grid-2" | "grid-3" | "grid-4" | "stack" | "inline"; }[]; shadcnLayout: string[]; responsive: { mobile: string; tablet: string; desktop: string; }; meta: { title?: string | undefined; description?: string | undefined; }; layoutLocked: boolean; }, { type: "page"; name: string; purpose: string; researchBacking?: string[] | undefined; accessibility?: { language?: string | undefined; landmarks?: boolean | undefined; skipLink?: boolean | undefined; headingHierarchy?: boolean | undefined; pageTitle?: string | undefined; consistentNav?: boolean | undefined; consistentHelp?: boolean | undefined; } | undefined; tags?: string[] | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; layout?: "split" | "full-width" | "sidebar-main" | "centered" | "dashboard" | "marketing" | undefined; sections?: { name: string; component: string; repeat?: number | undefined; props?: Record | undefined; layout?: "full-width" | "half" | "third" | "quarter" | "grid-2" | "grid-3" | "grid-4" | "stack" | "inline" | undefined; }[] | undefined; shadcnLayout?: string[] | undefined; responsive?: { mobile?: string | undefined; tablet?: string | undefined; desktop?: string | undefined; } | undefined; meta?: { title?: string | undefined; description?: string | undefined; } | undefined; layoutLocked?: boolean | undefined; }>; export type PageSpec = z.infer; export declare const DataVizSpecSchema: z.ZodObject<{ name: z.ZodString; type: z.ZodLiteral<"dataviz">; purpose: z.ZodString; chartType: z.ZodEnum<["line", "bar", "area", "pie", "donut", "scatter", "radar", "treemap", "funnel", "heatmap", "sankey", "gauge", "sparkline", "composed", "custom"]>; library: z.ZodDefault>; dataShape: z.ZodObject<{ x: z.ZodString; y: z.ZodString; series: z.ZodOptional>; groupBy: z.ZodOptional; }, "strip", z.ZodTypeAny, { x: string; y: string; series?: string[] | undefined; groupBy?: string | undefined; }, { x: string; y: string; series?: string[] | undefined; groupBy?: string | undefined; }>; interactions: z.ZodDefault, "many">>; accessibility: z.ZodDefault>; keyboardNav: z.ZodDefault; dataTableFallback: z.ZodDefault; patternFill: z.ZodDefault; announceUpdates: z.ZodDefault; highContrastMode: z.ZodDefault; }, "strip", z.ZodTypeAny, { keyboardNav: boolean; altText: "required" | "optional"; dataTableFallback: boolean; patternFill: boolean; announceUpdates: boolean; highContrastMode: boolean; }, { keyboardNav?: boolean | undefined; altText?: "required" | "optional" | undefined; dataTableFallback?: boolean | undefined; patternFill?: boolean | undefined; announceUpdates?: boolean | undefined; highContrastMode?: boolean | undefined; }>>; responsive: z.ZodDefault; simplify: z.ZodDefault; }, "strip", z.ZodTypeAny, { height: number; simplify: boolean; }, { height?: number | undefined; simplify?: boolean | undefined; }>>; desktop: z.ZodDefault; }, "strip", z.ZodTypeAny, { height: number; }, { height?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { mobile: { height: number; simplify: boolean; }; desktop: { height: number; }; }, { mobile?: { height?: number | undefined; simplify?: boolean | undefined; } | undefined; desktop?: { height?: number | undefined; } | undefined; }>>; shadcnWrapper: z.ZodDefault; sampleData: z.ZodOptional, "many">>; tags: z.ZodDefault>; createdAt: z.ZodDefault; updatedAt: z.ZodDefault; }, "strip", z.ZodTypeAny, { type: "dataviz"; name: string; purpose: string; accessibility: { keyboardNav: boolean; altText: "required" | "optional"; dataTableFallback: boolean; patternFill: boolean; announceUpdates: boolean; highContrastMode: boolean; }; tags: string[]; createdAt: string; updatedAt: string; responsive: { mobile: { height: number; simplify: boolean; }; desktop: { height: number; }; }; chartType: "custom" | "line" | "bar" | "area" | "pie" | "donut" | "scatter" | "radar" | "treemap" | "funnel" | "heatmap" | "sankey" | "gauge" | "sparkline" | "composed"; library: "custom" | "recharts" | "d3" | "visx"; dataShape: { x: string; y: string; series?: string[] | undefined; groupBy?: string | undefined; }; interactions: ("hover-tooltip" | "click" | "zoom" | "brush" | "pan" | "legend-toggle" | "crosshair" | "drill-down" | "export")[]; shadcnWrapper: string; sampleData?: Record[] | undefined; }, { type: "dataviz"; name: string; purpose: string; chartType: "custom" | "line" | "bar" | "area" | "pie" | "donut" | "scatter" | "radar" | "treemap" | "funnel" | "heatmap" | "sankey" | "gauge" | "sparkline" | "composed"; dataShape: { x: string; y: string; series?: string[] | undefined; groupBy?: string | undefined; }; accessibility?: { keyboardNav?: boolean | undefined; altText?: "required" | "optional" | undefined; dataTableFallback?: boolean | undefined; patternFill?: boolean | undefined; announceUpdates?: boolean | undefined; highContrastMode?: boolean | undefined; } | undefined; tags?: string[] | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; responsive?: { mobile?: { height?: number | undefined; simplify?: boolean | undefined; } | undefined; desktop?: { height?: number | undefined; } | undefined; } | undefined; library?: "custom" | "recharts" | "d3" | "visx" | undefined; interactions?: ("hover-tooltip" | "click" | "zoom" | "brush" | "pan" | "legend-toggle" | "crosshair" | "drill-down" | "export")[] | undefined; shadcnWrapper?: string | undefined; sampleData?: Record[] | undefined; }>; export type DataVizSpec = z.infer; export declare const SpacingNoteSchema: z.ZodObject<{ target: z.ZodString; padding: z.ZodOptional; right: z.ZodOptional; bottom: z.ZodOptional; left: z.ZodOptional; }, "strip", z.ZodTypeAny, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }>>; margin: z.ZodOptional; right: z.ZodOptional; bottom: z.ZodOptional; left: z.ZodOptional; }, "strip", z.ZodTypeAny, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }>>; gap: z.ZodOptional; unit: z.ZodDefault>; }, "strip", z.ZodTypeAny, { target: string; unit: "px" | "rem" | "em"; padding?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; margin?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; gap?: number | undefined; }, { target: string; padding?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; margin?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; gap?: number | undefined; unit?: "px" | "rem" | "em" | undefined; }>; export declare const InteractionNoteSchema: z.ZodObject<{ trigger: z.ZodEnum<["click", "hover", "focus", "scroll", "drag", "long-press", "swipe", "keypress"]>; target: z.ZodString; action: z.ZodString; animation: z.ZodOptional>; duration: z.ZodDefault; easing: z.ZodDefault; }, "strip", z.ZodTypeAny, { type: "none" | "fade" | "slide" | "scale" | "rotate" | "spring"; duration: number; easing: string; }, { type?: "none" | "fade" | "slide" | "scale" | "rotate" | "spring" | undefined; duration?: number | undefined; easing?: string | undefined; }>>; state: z.ZodOptional; }, "strip", z.ZodTypeAny, { target: string; trigger: "click" | "hover" | "focus" | "scroll" | "drag" | "long-press" | "swipe" | "keypress"; action: string; animation?: { type: "none" | "fade" | "slide" | "scale" | "rotate" | "spring"; duration: number; easing: string; } | undefined; state?: string | undefined; }, { target: string; trigger: "click" | "hover" | "focus" | "scroll" | "drag" | "long-press" | "swipe" | "keypress"; action: string; animation?: { type?: "none" | "fade" | "slide" | "scale" | "rotate" | "spring" | undefined; duration?: number | undefined; easing?: string | undefined; } | undefined; state?: string | undefined; }>; export declare const DimensionSchema: z.ZodObject<{ width: z.ZodUnion<[z.ZodNumber, z.ZodString]>; height: z.ZodUnion<[z.ZodNumber, z.ZodString]>; minWidth: z.ZodOptional>; maxWidth: z.ZodOptional>; minHeight: z.ZodOptional>; maxHeight: z.ZodOptional>; }, "strip", z.ZodTypeAny, { height: string | number; width: string | number; minWidth?: string | number | undefined; maxWidth?: string | number | undefined; minHeight?: string | number | undefined; maxHeight?: string | number | undefined; }, { height: string | number; width: string | number; minWidth?: string | number | undefined; maxWidth?: string | number | undefined; minHeight?: string | number | undefined; maxHeight?: string | number | undefined; }>; export declare const DesignSpecSchema: z.ZodObject<{ name: z.ZodString; type: z.ZodLiteral<"design">; purpose: z.ZodString; sourceNodeId: z.ZodOptional; dimensions: z.ZodOptional; height: z.ZodUnion<[z.ZodNumber, z.ZodString]>; minWidth: z.ZodOptional>; maxWidth: z.ZodOptional>; minHeight: z.ZodOptional>; maxHeight: z.ZodOptional>; }, "strip", z.ZodTypeAny, { height: string | number; width: string | number; minWidth?: string | number | undefined; maxWidth?: string | number | undefined; minHeight?: string | number | undefined; maxHeight?: string | number | undefined; }, { height: string | number; width: string | number; minWidth?: string | number | undefined; maxWidth?: string | number | undefined; minHeight?: string | number | undefined; maxHeight?: string | number | undefined; }>>; spacing: z.ZodDefault; right: z.ZodOptional; bottom: z.ZodOptional; left: z.ZodOptional; }, "strip", z.ZodTypeAny, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }>>; margin: z.ZodOptional; right: z.ZodOptional; bottom: z.ZodOptional; left: z.ZodOptional; }, "strip", z.ZodTypeAny, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }, { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; }>>; gap: z.ZodOptional; unit: z.ZodDefault>; }, "strip", z.ZodTypeAny, { target: string; unit: "px" | "rem" | "em"; padding?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; margin?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; gap?: number | undefined; }, { target: string; padding?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; margin?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; gap?: number | undefined; unit?: "px" | "rem" | "em" | undefined; }>, "many">>; interactions: z.ZodDefault; target: z.ZodString; action: z.ZodString; animation: z.ZodOptional>; duration: z.ZodDefault; easing: z.ZodDefault; }, "strip", z.ZodTypeAny, { type: "none" | "fade" | "slide" | "scale" | "rotate" | "spring"; duration: number; easing: string; }, { type?: "none" | "fade" | "slide" | "scale" | "rotate" | "spring" | undefined; duration?: number | undefined; easing?: string | undefined; }>>; state: z.ZodOptional; }, "strip", z.ZodTypeAny, { target: string; trigger: "click" | "hover" | "focus" | "scroll" | "drag" | "long-press" | "swipe" | "keypress"; action: string; animation?: { type: "none" | "fade" | "slide" | "scale" | "rotate" | "spring"; duration: number; easing: string; } | undefined; state?: string | undefined; }, { target: string; trigger: "click" | "hover" | "focus" | "scroll" | "drag" | "long-press" | "swipe" | "keypress"; action: string; animation?: { type?: "none" | "fade" | "slide" | "scale" | "rotate" | "spring" | undefined; duration?: number | undefined; easing?: string | undefined; } | undefined; state?: string | undefined; }>, "many">>; typography: z.ZodDefault; fontSize: z.ZodOptional; fontWeight: z.ZodOptional>; lineHeight: z.ZodOptional>; letterSpacing: z.ZodOptional; color: z.ZodOptional; }, "strip", z.ZodTypeAny, { element: string; fontFamily?: string | undefined; fontSize?: number | undefined; fontWeight?: string | number | undefined; lineHeight?: string | number | undefined; letterSpacing?: number | undefined; color?: string | undefined; }, { element: string; fontFamily?: string | undefined; fontSize?: number | undefined; fontWeight?: string | number | undefined; lineHeight?: string | number | undefined; letterSpacing?: number | undefined; color?: string | undefined; }>, "many">>; colors: z.ZodDefault; }, "strip", z.ZodTypeAny, { value: string; name: string; usage?: string | undefined; }, { value: string; name: string; usage?: string | undefined; }>, "many">>; borderRadius: z.ZodDefault>; shadows: z.ZodDefault, "many">>; breakpoints: z.ZodOptional; }, "strip", z.ZodTypeAny, { width: number; notes?: string | undefined; }, { width: number; notes?: string | undefined; }>>; tablet: z.ZodOptional; }, "strip", z.ZodTypeAny, { width: number; notes?: string | undefined; }, { width: number; notes?: string | undefined; }>>; desktop: z.ZodOptional; }, "strip", z.ZodTypeAny, { width: number; notes?: string | undefined; }, { width: number; notes?: string | undefined; }>>; }, "strip", z.ZodTypeAny, { mobile?: { width: number; notes?: string | undefined; } | undefined; tablet?: { width: number; notes?: string | undefined; } | undefined; desktop?: { width: number; notes?: string | undefined; } | undefined; }, { mobile?: { width: number; notes?: string | undefined; } | undefined; tablet?: { width: number; notes?: string | undefined; } | undefined; desktop?: { width: number; notes?: string | undefined; } | undefined; }>>; notes: z.ZodDefault>; linkedSpecs: z.ZodDefault>; tags: z.ZodDefault>; createdAt: z.ZodDefault; updatedAt: z.ZodDefault; }, "strip", z.ZodTypeAny, { type: "design"; name: string; purpose: string; tags: string[]; createdAt: string; updatedAt: string; interactions: { target: string; trigger: "click" | "hover" | "focus" | "scroll" | "drag" | "long-press" | "swipe" | "keypress"; action: string; animation?: { type: "none" | "fade" | "slide" | "scale" | "rotate" | "spring"; duration: number; easing: string; } | undefined; state?: string | undefined; }[]; spacing: { target: string; unit: "px" | "rem" | "em"; padding?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; margin?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; gap?: number | undefined; }[]; typography: { element: string; fontFamily?: string | undefined; fontSize?: number | undefined; fontWeight?: string | number | undefined; lineHeight?: string | number | undefined; letterSpacing?: number | undefined; color?: string | undefined; }[]; colors: { value: string; name: string; usage?: string | undefined; }[]; borderRadius: Record; shadows: { value: string; element: string; }[]; notes: string[]; linkedSpecs: string[]; sourceNodeId?: string | undefined; dimensions?: { height: string | number; width: string | number; minWidth?: string | number | undefined; maxWidth?: string | number | undefined; minHeight?: string | number | undefined; maxHeight?: string | number | undefined; } | undefined; breakpoints?: { mobile?: { width: number; notes?: string | undefined; } | undefined; tablet?: { width: number; notes?: string | undefined; } | undefined; desktop?: { width: number; notes?: string | undefined; } | undefined; } | undefined; }, { type: "design"; name: string; purpose: string; tags?: string[] | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; interactions?: { target: string; trigger: "click" | "hover" | "focus" | "scroll" | "drag" | "long-press" | "swipe" | "keypress"; action: string; animation?: { type?: "none" | "fade" | "slide" | "scale" | "rotate" | "spring" | undefined; duration?: number | undefined; easing?: string | undefined; } | undefined; state?: string | undefined; }[] | undefined; sourceNodeId?: string | undefined; dimensions?: { height: string | number; width: string | number; minWidth?: string | number | undefined; maxWidth?: string | number | undefined; minHeight?: string | number | undefined; maxHeight?: string | number | undefined; } | undefined; spacing?: { target: string; padding?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; margin?: { top?: number | undefined; right?: number | undefined; bottom?: number | undefined; left?: number | undefined; } | undefined; gap?: number | undefined; unit?: "px" | "rem" | "em" | undefined; }[] | undefined; typography?: { element: string; fontFamily?: string | undefined; fontSize?: number | undefined; fontWeight?: string | number | undefined; lineHeight?: string | number | undefined; letterSpacing?: number | undefined; color?: string | undefined; }[] | undefined; colors?: { value: string; name: string; usage?: string | undefined; }[] | undefined; borderRadius?: Record | undefined; shadows?: { value: string; element: string; }[] | undefined; notes?: string[] | undefined; breakpoints?: { mobile?: { width: number; notes?: string | undefined; } | undefined; tablet?: { width: number; notes?: string | undefined; } | undefined; desktop?: { width: number; notes?: string | undefined; } | undefined; } | undefined; linkedSpecs?: string[] | undefined; }>; export type DesignSpec = z.infer; export interface IANode { id: string; label: string; type: "page" | "section" | "frame" | "group" | "overlay" | "modal" | "external"; figmaNodeId?: string; linkedPageSpec?: string; children: IANode[]; notes?: string; } export declare const IANodeSchema: z.ZodType; export declare const IAFlowSchema: z.ZodObject<{ from: z.ZodString; to: z.ZodString; label: z.ZodOptional; trigger: z.ZodDefault>; condition: z.ZodOptional; }, "strip", z.ZodTypeAny, { trigger: "click" | "scroll" | "navigate" | "redirect" | "auto" | "back"; from: string; to: string; label?: string | undefined; condition?: string | undefined; }, { from: string; to: string; trigger?: "click" | "scroll" | "navigate" | "redirect" | "auto" | "back" | undefined; label?: string | undefined; condition?: string | undefined; }>; export type IAFlow = z.infer; export declare const IASpecSchema: z.ZodObject<{ name: z.ZodString; type: z.ZodLiteral<"ia">; purpose: z.ZodString; sourceFileKey: z.ZodOptional; root: z.ZodType; flows: z.ZodDefault; trigger: z.ZodDefault>; condition: z.ZodOptional; }, "strip", z.ZodTypeAny, { trigger: "click" | "scroll" | "navigate" | "redirect" | "auto" | "back"; from: string; to: string; label?: string | undefined; condition?: string | undefined; }, { from: string; to: string; trigger?: "click" | "scroll" | "navigate" | "redirect" | "auto" | "back" | undefined; label?: string | undefined; condition?: string | undefined; }>, "many">>; entryPoints: z.ZodDefault>; globals: z.ZodDefault; linkedPageSpec: z.ZodOptional; }, "strip", z.ZodTypeAny, { label: string; linkedPageSpec?: string | undefined; nodeId?: string | undefined; }, { label: string; linkedPageSpec?: string | undefined; nodeId?: string | undefined; }>, "many">>; notes: z.ZodDefault>; tags: z.ZodDefault>; createdAt: z.ZodDefault; updatedAt: z.ZodDefault; }, "strip", z.ZodTypeAny, { type: "ia"; name: string; purpose: string; tags: string[]; createdAt: string; updatedAt: string; notes: string[]; root: IANode; flows: { trigger: "click" | "scroll" | "navigate" | "redirect" | "auto" | "back"; from: string; to: string; label?: string | undefined; condition?: string | undefined; }[]; entryPoints: string[]; globals: { label: string; linkedPageSpec?: string | undefined; nodeId?: string | undefined; }[]; sourceFileKey?: string | undefined; }, { type: "ia"; name: string; purpose: string; root: IANode; tags?: string[] | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; notes?: string[] | undefined; sourceFileKey?: string | undefined; flows?: { from: string; to: string; trigger?: "click" | "scroll" | "navigate" | "redirect" | "auto" | "back" | undefined; label?: string | undefined; condition?: string | undefined; }[] | undefined; entryPoints?: string[] | undefined; globals?: { label: string; linkedPageSpec?: string | undefined; nodeId?: string | undefined; }[] | undefined; }>; export type IASpec = z.infer; export type AnySpec = ComponentSpec | PageSpec | DataVizSpec | DesignSpec | IASpec; export declare function isComponentSpec(spec: AnySpec): spec is ComponentSpec; export declare function isPageSpec(spec: AnySpec): spec is PageSpec; export declare function isDataVizSpec(spec: AnySpec): spec is DataVizSpec; export declare function isDesignSpec(spec: AnySpec): spec is DesignSpec; export declare function isIASpec(spec: AnySpec): spec is IASpec;