export type {
  EntityType,
  EntityId,
  EntityRef,
  LocationRule,
  FieldType as LegacyFieldType,
  MediaRef,
  RelRef,
  ScalarValue,
  FieldValue,
  FieldValueMap,
  BaseField,
  TextField,
  TextAreaField,
  NumberField,
  BooleanField,
  SelectField,
  DateField,
  ColorField,
  UrlField,
  EmailField,
  MediaField,
  RelationshipField,
  FieldDefinition as LegacyFieldDefinition,
  FieldGroup as LegacyFieldGroup,
  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,
  fieldGroupDefinitions,
  fieldDefinitionVersions,
  fieldOptionsDefinitions,
  fieldOptionsDefinitionVersions,
  fieldBlockDefinitions,
  fieldBlockDefinitionVersions,
  fieldBlockDocuments,
  fieldReusableBlocks,
  fieldRevisions,
  fieldsOperationReceipts,
  fieldValueNodes,
  fieldsImportStaging,
  fieldsImportJournal,
  fieldsMigrationCheckpoints,
  fieldsMigrationWriteJournal,
  fieldsSchema,
  parseFieldDefinition,
  parseFieldDefinitionVersion,
  parseFieldGroupDefinition,
  canonicalFieldGroupHash,
  FieldDefinitionVersionError,
  isFieldDefinitionVersionError,
  type FieldsSchema,
  type FieldStorageValue,
  type FieldsDefinitionOrigin,
  type FieldsDefinitionKind,
  type FieldsMigrationAdapter,
  type FieldsMigrationPhase,
  type OptionsPageDefinitionSnapshot,
  type FieldBlockDefinitionSnapshot,
  type NormalizedFieldsRegistryRecord,
  type FieldDefinitionVersion,
  type FieldDefinitionVersionErrorCode,
  type FieldValueNodeRow,
  type FlatFieldValue,
  type FieldsTransaction,
  type FieldKey,
  type FieldPath,
  type FieldType,
  type SafePattern,
  type LocationOperator,
  type LocationValue,
  type LocationRule as DefinitionLocationRule,
  type LocationRuleGroups,
  type ConditionalRule,
  type ConditionalRuleGroups,
  type FieldGroup,
  type FieldDefinition,
  type AnyFieldDefinition,
  type TextSettings,
  type TextareaSettings,
  type NumberSettings,
  type UrlSettings,
  type PasswordSettings,
  type BooleanSettings,
  type ChoiceSettings,
  type RichTextSettings,
  type EmbedSettings,
  type LinkSettings,
  type MediaSettings,
  type ImageMediaSettings,
  type GallerySettings,
  type EntitySettings,
  type RelationshipSettings,
  type TaxonomySettings,
  type UserSettings,
  type DateSettings,
  type DateTimeSettings,
  type TimeSettings,
  type ColorSettings,
  type IconSettings,
  type MapSettings,
  type GroupSettings,
  type RepeaterSettings,
  type FlexibleSettings,
  type FlexibleLayout,
  type CloneSettings,
} from './schema.js'
export {
  fieldsMigrationSql,
  FIELDS_RECURSIVE_EAV_MIGRATION_ID,
  canonicalFieldsMigrationHash,
  snapshotFlatFieldsCorpus,
  escapeFieldPathSegment,
  fieldPath,
  planFieldsRecursiveEavMigration,
  fieldsRecursiveEavForwardMigrationSql,
  fieldsRecursiveEavReverseMigrationSql,
  fieldDefinitionRefsForPlan,
  parseLegacyMultipleValueJson,
  type FieldsMigrationCorpusCheckpoint,
  type MigratedFieldValueNode,
  type FieldsRecursiveEavMigrationPlan,
} 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 {
  readFlatFieldValues,
  assertFieldsTransactionIdentity,
  FieldsStoreContractError,
  isFieldsStoreContractError,
  type FieldsAdapterKind,
  type FieldsFlatCorpusReader,
  type FieldsStoreErrorCode,
  getEntityValues,
  setEntityValues,
  deleteEntityValues,
  createGroup,
  updateGroup,
  deleteGroup,
  listGroups,
} from './store.js'

export {
  legacyFieldToFinalDefinition,
  legacyFieldGroupToFinalDefinition,
  materializeLegacyFieldDefinitionVersion,
  resolveFieldDefinitionVersion,
  referencedFieldDefinitionVersions,
  FieldDefinitionIntegrityError,
  isFieldDefinitionIntegrityError,
  type FieldDefinitionIntegrityErrorCode,
  type FieldDefinitionReference,
} from './definitions.js'

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

export {
  createFieldTypeRegistry, defineCustomField, isSanitizedFieldHtml, sanitizeFieldHtml,
  assertSerializableFieldPresentation, FIELD_DEFINITION_LIMITS, FIELD_VALUE_LIMITS,
  type DefinitionLimits, type ValueLimits, type FieldHeadlessSchema, type RevisionFieldValue,
  type SanitizedFieldHtml, type FieldPresentation, type FieldsContext, type FieldsPrincipal, type FieldsAuthorization, type FieldsAction, type AuthorizedFieldsContext,
  type ResolvedAnyFieldDefinition, type RuntimeFieldTypeDescriptor, type CustomFieldTypeDescriptor,
  type TypedCustomFieldDefinition, type ResolvedFieldDefinition, type FieldTypeRegistry,
} from './types.js'
export {
  validateFieldValue, formatFieldValue, serializeFieldValue, deserializeFieldValue,
  redactFieldValueForRevision, authorizeRelationshipReplacement, encodeFieldValueNodes,
  decodeFieldValueNodes, isCanonicalFieldValuePath, repeaterRows, flexibleRows,
  type MediaFieldRef, type EntityFieldRef, type TermFieldRef, type UserFieldRef,
  type MapValue, type LinkValue, type PasswordWrite, type PasswordRead,
  type FieldValueMap as RuntimeFieldValueMap, type RepeaterRow, type FlexibleRow,
  type FieldValueAuthorization, type FieldMediaMetadata, type FieldMediaMetadataResolver,
  type FieldProjectionResolvers, type CloneDefinitionResolver, type FieldValueContext,
  type EncodeFieldNodesOptions, type DecodeFieldNodesOptions,
} from './values.js'
export {
  BUILTIN_LOCATION_RESOLVERS, createLocationResolverRegistry,
  type LocationContext, type LocationParameterResolver, type LocationResolverRegistry,
} from './location.js'
export {
  resolveConditionalPath, evaluateConditionalRule, evaluateConditionalLogic,
  validateConditionalDependencies,
} from './conditional.js'
export {
  queryFieldEntities, validateFieldsEntityQuery, resolveQueryFieldPath,
  type FieldPredicate, type FieldsEntityQuery, type FieldsAuthorizedQueryScope,
  type FieldsEntityQueryAdapter,
} from './query.js'


export {
  defineOptionsPage,
  resolveOptionsPages,
  createOptionsPage,
  updateOptionsPage,
  previewOptionsPageDeactivation,
  applyOptionsPageDeactivation,
  getOptionsValues,
  setOptionsValues,
  type OptionsPageDefinition,
  type CodeOptionsPage,
  type ResolvedOptionsPage,
  type OptionsPageImpact,
  type OptionsPageDeactivateStrategy,
  type OptionsPagePatch,
  type EntityFieldValueMap,
  type EntityFieldWriteMap,
  type FieldsValueVersion,
  type FieldsReadResult,
  type FieldsMutationResult,
  type FieldsMutationOptions,
  type FieldsReader,
} from './options.js'

export {
  EMPTY_BLOCK_DOCUMENT_VERSION,
  DEFAULT_BLOCK_POLICY,
  defineFieldBlock,
  resolveFieldBlocks,
  createFieldBlock,
  validateBlockDocument,
  parseBlockDocument,
  serializeBlockDocument,
  validateBlockPublication,
  renderBlockDocument,
  getBlockDocument,
  setBlockDocument,
  deleteBlockDocument,
  createReusableBlockResolver,
  previewFieldBlockChange,
  applyFieldBlockChange,
  type BlockAttributeValue,
  type BlockFieldGroupValue,
  type InlineBlockNode,
  type ReusableBlockNode,
  type BlockNode,
  type BlockDocument,
  type FieldBlockDefinition,
  type CodeFieldBlock,
  type ResolvedFieldBlock,
  type FieldBlockDefinitionVersion,
  type FieldBlockDefinitionResolver,
  type ResolvedFieldBlockRegistry,
  type FieldBlockDefinitionImpact,
  type FieldBlockDefinitionPatch,
  type FieldBlockChangeStrategy,
  type BlockPolicy,
  type ReusableBlockResolver,
  type BlockRenderer,
  type CurrentBlockDocument,
  type BlockDocumentMutationOptions,
  type ValidatedInlineBlockNode,
  type ValidatedReusableBlockNode,
  type ValidatedBlockNode,
  type ValidatedBlockDocument,
} from './blocks.js'

export {
  fieldsRuntimeMigrationSql,
  captureFieldsRevision,
  createFieldsAutosave,
  getFieldsRevision,
  listFieldsRevisions,
  diffFieldsRevisions,
  restoreFieldsRevision,
  pruneFieldsAutosaves,
  type FieldsRevision,
  type FieldsRevisionCursor,
  type FieldsRevisionPage,
  type FieldsRevisionDiff,
  type FieldsRevisionMutation,
  type FieldsAutosaveMutation,
  type FieldsAutosaveRetentionPolicy,
} from './revisions.js'

export {
  FieldsLifecycleError,
  defineFinalFieldGroup,
  resolveFinalFieldGroups,
  createFieldGroup,
  previewFieldGroupChange,
  applyFieldGroupChange,
  previewFieldsCodeReconciliation,
  applyFieldsCodeReconciliation,
  fieldsBackupDestinationHash,
  restoreFieldsBackup,
  type FieldsLifecycleErrorCode,
  type FieldsDefinitionEvent,
  type FieldsDefinitionEffects,
  type FieldsBackupManifest,
  type FieldsBackupSnapshot,
  type FieldsBackupStore,
  type FieldsDestructiveEvent,
  type FieldsBackupRestoreEvent,
  type FieldsDestructiveEffectEvent,
  type FieldsDestructiveEffects,
  type FieldsDestructiveDependencies,
  type FieldsBackupRestoreResult,
  type FieldsLifecycleReader,
  type CodeFinalFieldGroup,
  type ResolvedFinalFieldGroup,
  type FieldPathMapping,
  type FieldGroupChangeStrategy,
  type FieldGroupPatch,
  type FieldDefinitionImpact,
  type CodeFieldsRegistrySnapshot,
  type FieldsCodeReconciliationPlan,
  type FieldsBackupGroupDefinitionSnapshot,
  type FieldsBackupOptionsDefinitionSnapshot,
  type FieldsBackupBlockDefinitionSnapshot,
  type FieldsBackupValueSnapshot,
  type FieldsBackupBlockDocumentSnapshot,
  type FieldsBackupReusableBlockSnapshot,
  type FieldsBackupRevisionSnapshot,
  type FieldsBackupPayload,
} from './definition-lifecycle.js'


export {
  FieldsImportError,
  isFieldsImportError,
  parseFieldsImport,
  planFieldsImport,
  startFieldsImport,
  resumeFieldsImport,
  publishFieldsImport,
  rollbackFieldsImport,
  planPublishedFieldsImportReverse,
  reversePublishedFieldsImport,
  type FieldsRevisionExport,
  type FieldDefinitionVersionExport,
  type FieldBlockDefinitionVersionExport,
  type FieldsExportManifest,
  type FieldsImportLimits,
  type FieldsImportConflict,
  type FieldsImportConflictPolicy,
  type FieldsImportRemappers,
  type ParsedFieldsImport,
  type FieldsImportScope,
  type FieldsImportRequiredAuthority,
  type FieldsImportPlan,
  type FieldsImportStaging,
  type FieldsImportSection,
  type FieldsImportJournal,
  type FieldsImportCommand,
  type FieldsPublishedReversePlan,
  type FieldsPublishedReverseCommand,
  type FieldsImportEvent,
  type FieldsImportEffects,
  type FieldsImportErrorCode,
} from './import.js'

export {
  exportFields,
  fieldsExportManifestHash,
  type FieldsExportSelection,
} from './export.js'

export {
  generateFieldsHeadlessSchema,
  FieldsHeadlessError,
  isFieldsHeadlessError,
  type FieldsHeadlessFieldSchema,
  type FieldsHeadlessGroupSchema,
  type FieldsHeadlessOptionsSchema,
  type FieldsHeadlessBlockSchema,
  type FieldsHeadlessSchema,
  type FieldsHeadlessSchemaOptions,
  type FieldsHeadlessErrorCode,
} from './headless.js'
