import { ComponentType, ReactNode } from 'react'; import { PrimitiveName } from '@ethisyscore/protocol'; /** * Props supplied by the interpreter to every registered primitive component. * * - `children` — already-interpreted child nodes (zero or more React elements). * - `props` — opaque per-primitive properties from the SDUI tree. The host * component owns interpretation. The interpreter never reads or mutates them. */ interface PrimitiveProps { children?: ReactNode; props?: Record; } /** * Exhaustive primitive-name → component map. * * `Record` forces TypeScript to fail compilation if any of * the closed v1 vocabulary entries are missing when a consumer constructs the * registry. This is the mechanism that keeps host registries in lockstep with * the protocol-owned primitive set. */ type ComponentRegistry = Record>; export type { ComponentRegistry as C, PrimitiveProps as P };