export type {
  EntityType,
  EntityId,
  EntityRef,
  LocationRule,
  FieldType,
  MediaRef,
  RelRef,
  ScalarValue,
  FieldValue,
  FieldValueMap,
  BaseField,
  TextField,
  TextAreaField,
  NumberField,
  BooleanField,
  SelectField,
  DateField,
  ColorField,
  UrlField,
  EmailField,
  MediaField,
  RelationshipField,
  FieldDefinition,
  FieldGroup,
  FieldOrigin,
  ResolvedFieldGroup,
  Actor,
  Facet,
  RelRefResolver,
} from './model.js'
export { FIELD_TYPES, FIELD_KEY_RE, isMultipleCapable } from './model.js'

export {
  FieldValidationError,
  FieldGroupConflictError,
  FieldAuthorizationError,
  FieldStoreError,
  isFieldValidationError,
  isFieldGroupConflictError,
  isFieldAuthorizationError,
  isFieldStoreError,
} from './errors.js'

export { fieldValues, fieldGroups, fieldsSchema, type FieldsSchema } from './schema.js'
export { fieldsMigrationSql } from './migrate.js'

export { assertCanEditFields, assertCanManageGroups } from './authz.js'
export { validateValues } from './validate.js'

export {
  defineFieldGroup,
  resolveGroups,
  typedValues,
  assertNoCrossGroupFieldKeyConflict,
  assertNoCodeKeyShadow,
  type CodeFieldGroup,
  type InferValues,
} from './registry.js'

export {
  getEntityValues,
  setEntityValues,
  deleteEntityValues,
  createGroup,
  updateGroup,
  deleteGroup,
  listGroups,
} from './store.js'

export { queryEntities } from './query.js'
