services:
  builderius_importexport.ajax.request_handler.builderius_config_export:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusConfigExportAjaxRequestHandler
    arguments:
      - '@swoop_query.wp_query'
      - '@builderius_vcs.factory.builderius_branch_from_post'
      - '@builderius_importexport.provider.attachment_converters'
    tags:
      - { name: wp_request_handler }

  builderius_importexport.ajax.request_handler.builderius_config_import:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusConfigImportAjaxRequestHandler
    arguments:
      - '@builderius_template.version_converter.composite'
      - '@builderius_template.checker.content_config'
      - '@builderius_importexport.provider.attachment_converters'
      - '@event_dispatcher'
    tags:
      - { name: wp_request_handler }

  builderius_importexport.ajax.request_handler.builderius_release_export:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusReleaseExportAjaxRequestHandler
    arguments:
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@builderius_importexport.provider.attachment_converters'
      - '@builderius_importexport.converter.post_content_attachment'
      - '@builderius_importexport.provider.cpt_config_providers'
    tags:
      - { name: wp_request_handler }

  builderius_importexport.ajax.request_handler.builderius_release_import:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusReleaseImportAjaxRequestHandler
    public: true
    arguments:
      - '@builderius_template.provider.template_content.composite'
      - '@builderius_template.version_converter.composite'
      - '@builderius_template.checker.content_config'
      - '@builderius_importexport.provider.attachment_converters'
      - '@event_dispatcher'
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@swoop_query.wp_query'
      - '@builderius_importexport.converter.post_content_attachment'
      - '@builderius_importexport.provider.cpt_config_providers'
    tags:
      - { name: wp_request_handler }

  builderius_importexport.ajax.request_handler.builderius_composite_modules_export:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusCompositeModulesExportAjaxRequestHandler
    arguments:
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@builderius_template.version_converter.composite'
      - '@builderius_category.provider.categories.composite'
      - '@builderius_importexport.provider.attachment_converters'
    tags:
      - { name: wp_request_handler }

  builderius_importexport.ajax.request_handler.builderius_composite_modules_import:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusCompositeModulesImportAjaxRequestHandler
    arguments:
      - '@builderius_template.version_converter.composite'
      - '@builderius_template.checker.content_config'
      - '@builderius_importexport.provider.attachment_converters'
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
    tags:
      - { name: wp_request_handler }

  builderius_importexport.provider.attachment_converters:
    class: Builderius\Bundle\ImportExportBundle\Provider\ImportExportAttachmentConvertersProvider

  builderius_importexport.provider.cpt_config_providers:
    class: Builderius\Bundle\ImportExportBundle\Provider\ImportExportCptConfigProvidersProvider

  builderius_importexport.converter.attachment.src:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportSrcSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.background_image:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportBackgroundImageSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.list_style:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportListStyleSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.data_vars:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportDataVarsSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.html_attribute:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportHtmlAttributeSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.css:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportCssSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.css_vars:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportCssVarsSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.attachment.mod_css_vars:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportModCssVarsSettingAttachmentConverter
    tags:
      - { name: builderius_importexport_attachment_converter }

  builderius_importexport.converter.post_content_attachment:
    class: Builderius\Bundle\ImportExportBundle\Converter\ImportExportPostContentAttachmentConverter

  builderius.wp_data_available_endpoint:
    class: Builderius\Bundle\ImportExportBundle\RestApi\Endpoint\WpDataAvailableEndpoint
    public: true
    arguments:
      - '@user_is_builderius_developer'
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@event_dispatcher'
    tags:
      - { name: wp_rest_endpoint }

  builderius.wp_data_import_selections_endpoint:
    class: Builderius\Bundle\ImportExportBundle\RestApi\Endpoint\WpDataImportSelectionsEndpoint
    public: true
    arguments:
      - '@user_is_builderius_developer'
      - '@event_dispatcher'
    tags:
      - { name: wp_rest_endpoint }

  builderius_importexport.ajax.request_handler.builderius_release_export_with_data:
    class: Builderius\Bundle\ImportExportBundle\Ajax\BuilderiusReleaseExportWithDataAjaxRequestHandler
    arguments:
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@builderius_importexport.provider.attachment_converters'
      - '@builderius_importexport.converter.post_content_attachment'
      - '@builderius_importexport.provider.cpt_config_providers'
      - '@event_dispatcher'
    tags:
      - { name: wp_request_handler }

  builderius.hook.cleanup_wp_data_attachments_on_release_delete:
    class: Builderius\Bundle\ImportExportBundle\Hook\CleanupWpDataAttachmentsOnReleaseDeleteHook
    arguments:
      - tag: 'before_delete_post'
        priority: 10
    tags:
      - { name: wp_hook }

  # Batch processing — progress-tracked export/import/starter

  builderius_importexport.batch.export_processor:
    class: Builderius\Bundle\ImportExportBundle\Batch\ExportBatchProcessor
    arguments:
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@builderius_importexport.provider.attachment_converters'
      - '@builderius_importexport.converter.post_content_attachment'
      - '@builderius_importexport.provider.cpt_config_providers'
      - '@event_dispatcher'

  builderius_importexport.batch.import_processor:
    class: Builderius\Bundle\ImportExportBundle\Batch\ImportBatchProcessor
    arguments:
      - '@builderius_template.provider.template_content.composite'
      - '@builderius_template.version_converter.composite'
      - '@builderius_template.checker.content_config'
      - '@builderius_importexport.provider.attachment_converters'
      - '@event_dispatcher'
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@swoop_query.wp_query'
      - '@builderius_importexport.converter.post_content_attachment'
      - '@builderius_importexport.provider.cpt_config_providers'
      - '@builderius_graphql.field_resolver.builderius_root_mutation.extract_release'
      - '@builderius_graphql.field_resolver.builderius_root_mutation.publish_release'
      - '@builderius_graphql.field_resolver.builderius_root_mutation.delete_release'
      - '@builderius.cache.runtime'
      - '@builderius_starter.starters_provider.composite'

  builderius.batch.endpoint.export:
    class: Builderius\Bundle\ImportExportBundle\RestApi\Endpoint\BatchExportEndpoint
    public: true
    arguments:
      - '@user_is_builderius_developer'
      - '@builderius_importexport.batch.export_processor'
    tags:
      - { name: wp_rest_endpoint }

  builderius.batch.endpoint.import:
    class: Builderius\Bundle\ImportExportBundle\RestApi\Endpoint\BatchImportEndpoint
    public: true
    arguments:
      - '@user_is_builderius_developer'
      - '@builderius_importexport.batch.import_processor'
    tags:
      - { name: wp_rest_endpoint }

  builderius_importexport.validation.image_reference:
    class: Builderius\Bundle\ImportExportBundle\Validation\ImageReferenceValidator

  builderius.validate_release_images_endpoint:
    class: Builderius\Bundle\ImportExportBundle\RestApi\Endpoint\ValidateReleaseImagesEndpoint
    public: true
    arguments:
      - '@user_is_builderius_developer'
      - '@builderius_graphql.executor.builderius_entities_graphql_queries'
      - '@builderius_importexport.validation.image_reference'
    tags:
      - { name: wp_rest_endpoint }

  builderius.batch.endpoint.job:
    class: Builderius\Bundle\ImportExportBundle\RestApi\Endpoint\BatchJobEndpoint
    public: true
    arguments:
      - '@user_is_builderius_developer'
    tags:
      - { name: wp_rest_endpoint }
