<?xml version="1.0"?>
<!--
/**
 * @author Amasty Team
 * @copyright Copyright (c) Amasty (https://www.amasty.com)
 * @package Pixel Core for Magento 2
 */-->

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Amasty\PixelCore\Model\Adminhtml\Pixel\PreparationInterface"
                type="Amasty\PixelCore\Model\Adminhtml\Pixel\PreparationComposite"/>
    <preference for="Amasty\PixelCore\Model\Event\EventProcessorInterface"
                type="Amasty\PixelCore\Model\Event\EventProcessor"/>
    <preference for="Amasty\PixelCore\Model\Storage\StorageInterface"
                type="Amasty\PixelCore\Model\Storage\LocalStorage"/>
    <type name="Amasty\PixelCore\Model\Adminhtml\Pixel\PreparationComposite">
        <arguments>
            <argument name="preparationProcessors" xsi:type="array">
                <item name="pixel_events_processor"
                      xsi:type="object">Amasty\PixelCore\Model\Adminhtml\Pixel\Preparation\EventsProcessor</item>
                <item name="stores_processor"
                      xsi:type="object">Amasty\PixelCore\Model\Adminhtml\Pixel\Preparation\StoresProcessor</item>
                <item name="entity_id_processor"
                      xsi:type="object">Amasty\PixelCore\Model\Adminhtml\Pixel\Preparation\EntityIdProcessor</item>
            </argument>
        </arguments>
    </type>

    <type name="Amasty\PixelCore\Model\PixelRepository">
        <plugin name="Amasty_PixelCore::AddStoreExtensionForPixel"
                type="Amasty\PixelCore\Plugin\Model\PixelRepository\AddStoreExtension"/>
    </type>

    <virtualType name="Amasty\PixelCore\Ui\DataProvider\Pixel\Form\Modifier\Pool" type="Magento\Ui\DataProvider\Modifier\Pool">
        <arguments>
            <argument name="modifiers" xsi:type="array">
                <item name="modify_events" xsi:type="array">
                    <item name="class"
                          xsi:type="string">Amasty\PixelCore\Ui\DataProvider\Pixel\Form\Modifier\ModifyEvents</item>
                    <item name="sortOrder" xsi:type="number">10</item>
                </item>
                <item name="modify_stores" xsi:type="array">
                    <item name="class"
                          xsi:type="string">Amasty\PixelCore\Ui\DataProvider\Pixel\Form\Modifier\ModifyStores</item>
                    <item name="sortOrder" xsi:type="number">20</item>
                </item>
            </argument>
        </arguments>
    </virtualType>

    <type name="Amasty\PixelCore\Ui\DataProvider\Pixel\Form\DataProvider">
        <arguments>
            <argument name="pool" xsi:type="object">Amasty\PixelCore\Ui\DataProvider\Pixel\Form\Modifier\Pool</argument>
        </arguments>
    </type>

    <type name="Amasty\PixelCore\Controller\Adminhtml\Pixel\MassChangeStatus">
        <arguments>
            <argument name="data" xsi:type="array">
                <item name="updateStatus"
                      xsi:type="object">Amasty\PixelCore\Model\Pixel\Command\UpdateStatusInterface</item>
            </argument>
        </arguments>
    </type>
</config>
