/** * A JSON value crossing a host-owned boundary — a realtime snapshot, a contribution's input. * * Data, not vocabulary. Everything the platform carries between two pieces of module code is * serializable and opaque to the host: the host validates that it *is* JSON and never what it * means. That is what keeps a domain contract (a slide, a timeline, an announcement) entirely * between the two modules that share it, with nothing for Core to learn or version. */ export type ModuleUiJsonValue = | boolean | number | string | null | readonly ModuleUiJsonValue[] | { readonly [key: string]: ModuleUiJsonValue };