services:
    _defaults:
        public: true

    prestashop.adapter.module.self_configurator:
        class: PrestaShop\PrestaShop\Adapter\Module\Configuration\ModuleSelfConfigurator
        arguments:
            - "@prestashop.core.admin.module.repository"
            - "@prestashop.adapter.legacy.configuration"
            - "@doctrine.dbal.default_connection"
            - "@filesystem"

    # MODULE TAB MANAGEMENT
    prestashop.adapter.module.tab.register:
        class: PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabRegister
        arguments:
            - "@prestashop.core.admin.tab.repository"
            - "@prestashop.core.admin.lang.repository"
            - "@logger"
            - "@translator"
            - "@filesystem"
            - "@=service('prestashop.adapter.legacy.context').getLanguages()"
            - "@routing.loader.yml"

    prestashop.adapter.module.tab.unregister:
        class: PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabUnregister
        arguments:
            - "@prestashop.core.admin.tab.repository"
            - "@prestashop.core.admin.lang.repository"
            - "@logger"
            - "@translator"

    prestashop.adapter.module.tab.eventsubscriber:
        class: PrestaShop\PrestaShop\Adapter\Module\Tab\ModuleTabManagementSubscriber
        arguments:
            - "@prestashop.adapter.module.tab.register"
            - "@prestashop.adapter.module.tab.unregister"
        tags:
            - { name: kernel.event_subscriber }

    prestashop.module.manager:
        class: PrestaShop\PrestaShop\Core\Addon\Module\ModuleManager
        arguments:
            - "@prestashop.adapter.admin.data_provider.module"
            - "@prestashop.adapter.data_provider.module"
            - "@prestashop.core.module.updater"
            - "@prestashop.core.admin.module.repository"
            - "@prestashop.module.zip.manager"
            - "@translator"
            - "@event_dispatcher"
            - "@prestashop.adapter.cache.clearer.symfony_cache_clearer"

    prestashop.module.zip.manager:
        class: PrestaShop\PrestaShop\Adapter\Module\ModuleZipManager
        arguments:
            - "@filesystem"
            - "@translator"
            - "@event_dispatcher"

    prestashop.adapter.presenter.module:
        class: PrestaShop\PrestaShop\Adapter\Presenter\Module\ModulePresenter
        arguments: ["@=service('prestashop.adapter.legacy.context').getContext().currency", "@prestashop.adapter.formatter.price"]

    prestashop.adapter.module.data_provider.tab_module_list:
        class: PrestaShop\PrestaShop\Adapter\Module\TabModuleListProvider
        deprecated: 'The "%service_id%" service is deprecated since 1.7.8.0 and will be removed in next major.'

    prestashop.adapter.presenter.module.payment:
        class: PrestaShop\PrestaShop\Adapter\Presenter\Module\PaymentModulesPresenter
        arguments:
            - '@prestashop.adapter.presenter.module'
            - '@prestashop.adapter.module.payment_module_provider'

    prestashop.adapter.module.presenter.payment:
        class: PrestaShop\PrestaShop\Adapter\Module\Presenter\PaymentModulesPresenter
        arguments:
            - '@prestashop.adapter.module.data_provider.tab_module_list'
            - '@prestashop.adapter.data_provider.module'
            - '@prestashop.adapter.presenter.module'
            - '@prestashop.core.admin.module.repository'
        deprecated: 'The "%service_id% service is deprecated. Use "prestashop.adapter.presenter.module.payment" instead'

    prestashop.adapter.module.payment_module_provider:
        class: PrestaShop\PrestaShop\Adapter\Module\PaymentModuleListProvider
        arguments:
            - '@prestashop.core.admin.module.repository'
            - '@prestashop.bundle.repository.module'
            - '@=service("prestashop.adapter.legacy.context").getContext().shop.id'

    prestashop.adapter.legacy.module:
        class: PrestaShop\PrestaShop\Adapter\Module\Module

    prestashop.adapter.module.repository.module_repository:
        class: 'PrestaShop\PrestaShop\Adapter\Module\Repository\ModuleRepository'
