/**
 * Engine — the runtime layer that turns JSON definitions into rendered
 * Vue trees. Consumers typically use `IndexPage` / `ShowPage` rather
 * than these low-level pieces directly.
 *
 * Public surface:
 *   - `ElementRenderer`, `CardRenderer`         : the <component :is> wrappers
 *   - `getElementComponent`, `getCardComponent` : lower-level resolvers
 *   - `preloadElement`, `preloadCard`           : eager chunk preload helpers
 *   - `shouldRender`                            : condition evaluator
 *   - `useFormData`, `provideFormId`            : form-state binding
 *   - registry constants for advanced use cases
 */
export { default as ElementRenderer } from "./ElementRenderer.vue"
export { default as CardRenderer } from "./CardRenderer.vue"

export {
  getElementComponent,
  preloadElement,
  __clearElementCache,
} from "./useElementLoader"

export {
  getCardComponent,
  preloadCard,
  __clearCardCache,
} from "./useCardLoader"

export {
  shouldRender,
  type EvaluationContext,
  __testing as __conditionsTesting,
} from "./useDisplayConditions"

export {
  useFormData,
  provideFormId,
  FORM_ID_KEY,
  type UseFormDataBindings,
} from "./useFormData"

export {
  cardRegistry,
  elementDefaultStyle,
  elementRegistry,
  resolveCardPath,
  resolveElementPath,
  type CardPath,
  type ElementPath,
  type ElementRegistry,
} from "./registry"
