<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <virtualType name="Magento\Cron\Ui\Model\ResourceModel\Schedule\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">cron_schedule</argument>
            <argument name="resourceModel" xsi:type="string">Magento\Cron\Model\ResourceModel\Schedule</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Importer\Collection" type="Dotdigitalgroup\Email\Ui\DataProvider\Importer\Listing\Collection">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_importer</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Importer</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Rules\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_rules</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Rules</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Automation\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_automation</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Automation</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Campaign\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_campaign</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Campaign</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Contact\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_contact</argument>
            <argument name="resourceModel" xsi:type="string">\Dotdigitalgroup\Email\Model\ResourceModel\Contact</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Catalog\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_catalog</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Catalog</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Order\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_order</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Order</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Review\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_review</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Review</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Wishlist\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_wishlist</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Wishlist</argument>
        </arguments>
    </virtualType>
    <virtualType name="Dotdigitalgroup\Email\Ui\Model\ResourceModel\Abandoned\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">email_abandoned_cart</argument>
            <argument name="resourceModel" xsi:type="string">Dotdigitalgroup\Email\Model\ResourceModel\Abandoned</argument>
        </arguments>
    </virtualType>
    <virtualType name="resetCatalogVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonReset">
        <arguments>
            <argument name="resetType" xsi:type="string">catalog</argument>
        </arguments>
    </virtualType>
    <virtualType name="resetOrdersVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonReset">
        <arguments>
            <argument name="resetType" xsi:type="string">order</argument>
        </arguments>
    </virtualType>
    <virtualType name="resetReviewsVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonReset">
        <arguments>
            <argument name="resetType" xsi:type="string">review</argument>
        </arguments>
    </virtualType>
    <virtualType name="resetWishlistsVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonReset">
        <arguments>
            <argument name="resetType" xsi:type="string">wishlist</argument>
        </arguments>
    </virtualType>
    <virtualType name="resetContactsVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonReset">
        <arguments>
            <argument name="resetType" xsi:type="string">contact</argument>
        </arguments>
    </virtualType>
    <virtualType name="resetSubscribersVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonReset">
        <arguments>
            <argument name="resetType" xsi:type="string">subscriber</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncCustomerVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">customer</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncSubscriberVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">subscriber</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncGuestVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">guest</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncOrderVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">order</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncWishlistVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">wishlist</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncReviewVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">review</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncCatalogVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">catalog</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncImporterVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">importer</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncConsentVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">consent</argument>
        </arguments>
    </virtualType>
    <virtualType name="syncTemplateVirtualType" type="Dotdigitalgroup\Email\Block\Adminhtml\Config\Developer\ButtonSync">
        <arguments>
            <argument name="syncType" xsi:type="string">template</argument>
        </arguments>
    </virtualType>
    <type name="Magento\Catalog\Controller\Adminhtml\Product\Action\Attribute\Save">
        <plugin name="Ddg_UpdateProductAttribute_MassActionPlugin" type="Dotdigitalgroup\Email\Plugin\CatalogProductAttributeSavePlugin" sortOrder="1"/>
    </type>
    <type name="Magento\Framework\Notification\MessageList">
        <arguments>
            <argument name="messages" xsi:type="array">
                <item name="cronErrorMessage" xsi:type="string">Dotdigitalgroup\Email\Model\System\Message\CronError</item>
                <item name="importerErrorMessage" xsi:type="string">Dotdigitalgroup\Email\Model\System\Message\ImporterError</item>
                <item name="campaignErrorMessage" xsi:type="string">Dotdigitalgroup\Email\Model\System\Message\CampaignError</item>
                <item name="automationErrorMessage" xsi:type="string">Dotdigitalgroup\Email\Model\System\Message\AutomationError</item>
                <item name="smtpErrorMessage" xsi:type="string">Dotdigitalgroup\Email\Model\System\Message\SmtpError</item>
                <item name="queueErrorMessage" xsi:type="string">Dotdigitalgroup\Email\Model\System\Message\QueueError</item>
            </argument>
        </arguments>
    </type>
    <type name="Dotdigitalgroup\Email\Model\Resetter">
        <arguments>
            <argument name="resetModels" xsi:type="array">
                <item name="catalog" xsi:type="object">Dotdigitalgroup\Email\Model\Catalog</item>
                <item name="order" xsi:type="object">Dotdigitalgroup\Email\Model\Order</item>
                <item name="review" xsi:type="object">Dotdigitalgroup\Email\Model\Review</item>
                <item name="wishlist" xsi:type="object">Dotdigitalgroup\Email\Model\Wishlist</item>
                <item name="contact" xsi:type="object">Dotdigitalgroup\Email\Model\Contact</item>
                <item name="subscriber" xsi:type="object">Dotdigitalgroup\Email\Model\Subscriber</item>
            </argument>
        </arguments>
    </type>
</config>
