import type { ValidationRuleType } from "./validation.js"; export type ComponentCategory = "display" | "input" | "selection" | "datetime" | "interactive" | "container"; export type ComponentManifestEntry = { /** Stable type id used everywhere — Flow JSON, registry keys, props.type. */ type: string; /** Human-readable label shown in the palette and badges. */ label: string; /** Icon key used by FBT (resolved via the FBT icon registry). */ iconKey: string; /** UI grouping — drives the pool section and the category badge. */ category: ComponentCategory; /** True for components that render content but never contribute to FlowData * and cannot be condition sources or validation targets. */ displayOnly: boolean; /** Validation rules the FBT editor offers for this type. An empty array * means the editor surfaces no validation UI. */ validationRules: readonly ValidationRuleType[]; /** Doc-only pointer to the TS property type in `properties.ts`. * Not used at runtime — exists so a reader can jump from manifest entry to * shape definition without grep. */ propertiesTypeName: string; }; /** Frozen, ordered list of every registered component type. The order is the * canonical pool-section order (display → input → selection → datetime → * interactive → container) and matches the FBT pool. */ export declare const COMPONENT_MANIFEST: readonly ComponentManifestEntry[]; /** Stable, immutable list of all registered component type ids. */ export declare const COMPONENT_TYPES: readonly string[]; /** Component types that render content but never contribute to FlowData. */ export declare const DISPLAY_ONLY_TYPES: ReadonlySet; /** Human-readable label for the category badge / pool section header. */ export declare const CATEGORY_LABELS: Record; /** Look up a manifest entry by component type id. Returns undefined for * unrecognized types — callers decide whether that is an error. */ export declare function getComponentManifestEntry(type: string): ComponentManifestEntry | undefined; /** Manifest entries grouped by category, preserving manifest order within * each group. Drives the FBT pool layout. */ export declare function getManifestByCategory(): Record; //# sourceMappingURL=component-manifest.d.ts.map