services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

  TYPO3\CMS\Form\:
    resource: '../Classes/*'
    exclude: '../Classes/{Domain/Model}'

  TYPO3\CMS\Form\Mvc\Configuration\ConfigurationManagerInterface:
    alias: TYPO3\CMS\Form\Mvc\Configuration\ConfigurationManager
    public: true

  TYPO3\CMS\Form\Mvc\Configuration\TypoScriptService:
    public: true

  TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManagerInterface:
    alias: TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager
    public: true

  TYPO3\CMS\Form\Domain\Factory\ArrayFormFactory:
    public: true
    shared: false

  TYPO3\CMS\Form\Domain\Renderer\FluidFormRenderer:
    public: true
    shared: false

  TYPO3\CMS\Form\Domain\Runtime\FormRuntime:
    public: true
    shared: false

  TYPO3\CMS\Form\Mvc\ProcessingRule:
    public: true
    shared: false

  TYPO3\CMS\Form\Slot\ResourcePublicationSlot:
    tags:
      - name: event.listener
        identifier: 'form-framework/resource-getPublicUrl'
        method: 'getPublicUrl'

  TYPO3\CMS\Form\Slot\FilePersistenceSlot:
    tags:
      - name: event.listener
        identifier: 'form-framework/creation'
        method: 'onPreFileCreate'
      - name: event.listener
        identifier: 'form-framework/add'
        method: 'onPreFileAdd'
      - name: event.listener
        identifier: 'form-framework/rename'
        method: 'onPreFileRename'
      - name: event.listener
        identifier: 'form-framework/replace'
        method: 'onPreFileReplace'
      - name: event.listener
        identifier: 'form-framework/move'
        method: 'onPreFileMove'
      - name: event.listener
        identifier: 'form-framework/update-content'
        method: 'onPreFileSetContents'

  TYPO3\CMS\Form\EventListener\ProcessFileListActionsEventListener:
    tags:
      - name: event.listener
        identifier: 'form-framework/form-definition-files'

  lowlevel.configuration.module.provider.formyamlconfiguration:
    class: 'TYPO3\CMS\Form\ConfigurationModuleProvider\FormYamlProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'formYamlConfiguration'
        after: 'eventListeners'

  TYPO3\CMS\Form\SoftReference\FormPersistenceIdentifierSoftReferenceParser:
    tags:
      - name: softreference.parser
        parserKey: formPersistenceIdentifier
