<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Amasty\AdvancedReview\Api\Data\ReminderInterface" type="Amasty\AdvancedReview\Model\Reminder" />
    <preference for="Amasty\AdvancedReview\Api\ReminderRepositoryInterface" type="Amasty\AdvancedReview\Model\Repository\ReminderRepository" />
    <preference for="Amasty\AdvancedReview\Api\ImagesRepositoryInterface" type="Amasty\AdvancedReview\Model\Repository\ImagesRepository" />
    <preference for="Amasty\AdvancedReview\Api\VoteRepositoryInterface" type="Amasty\AdvancedReview\Model\Repository\VoteRepository" />
    <preference for="Amasty\AdvancedReview\Api\Vote" type="Amasty\AdvancedReview\Model\Repository\ImagesRepository" />
    <preference for="Amasty\AdvancedReview\Api\Data\CommentInterface" type="Amasty\AdvancedReview\Model\Comment" />
    <preference for="Amasty\AdvancedReview\Api\CommentRepositoryInterface" type="Amasty\AdvancedReview\Model\Repository\CommentRepository" />

    <type name="Magento\Sales\Model\Service\OrderService">
        <plugin name="Amasty_AdvancedReview::after-place-order" type="Amasty\AdvancedReview\Plugin\Sales\Model\Service\OrderService" />
    </type>

    <type name="Magento\Sales\Model\ResourceModel\Order">
        <plugin name="Amasty_AdvancedReview::change-status" type="Amasty\AdvancedReview\Plugin\Sales\Model\ResourceModel\Order" />
    </type>

    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="amasty_advancedreview_reminder_listing_data_source" xsi:type="string">Amasty\AdvancedReview\Model\ResourceModel\Reminder\Grid\Collection</item>
                <item name="amasty_advancedreview_comment_listing_data_source" xsi:type="string">Amasty\AdvancedReview\Model\ResourceModel\Comment\Grid\Collection</item>
            </argument>
        </arguments>
    </type>

    <type name="Amasty\AdvancedReview\Model\ResourceModel\Reminder\Grid\Collection">
        <arguments>
            <argument name="mainTable" xsi:type="string">amasty_advanced_review_reminder</argument>
            <argument name="eventPrefix" xsi:type="string">amasty_advancedreview_reminder_grid_collection</argument>
            <argument name="eventObject" xsi:type="string">form_grid_collection</argument>
            <argument name="resourceModel" xsi:type="string">Amasty\AdvancedReview\Model\ResourceModel\Reminder</argument>
        </arguments>
    </type>
    <preference for="Amasty\AdvancedReview\Api\Data\UnsubscribeInterface" type="Amasty\AdvancedReview\Model\Unsubscribe" />
    <preference for="Amasty\AdvancedReview\Api\UnsubscribeRepositoryInterface" type="Amasty\AdvancedReview\Model\Repository\UnsubscribeRepository" />

    <virtualType name="Amasty_AdvancedReview_Review_CollectionFactoryFix" type="Magento\Review\Model\ResourceModel\Review\CollectionFactory">
        <arguments>
            <argument name="instanceName" xsi:type="string">Amasty\AdvancedReview\Model\ResourceModel\Review\Collection</argument>
        </arguments>
    </virtualType>

    <type name="Magento\Review\Block\Product\View">
        <arguments>
            <argument name="collectionFactory" xsi:type="object">Amasty_AdvancedReview_Review_CollectionFactoryFix</argument>
        </arguments>
    </type>

    <type name="Amasty\AdvancedReview\Block\Adminhtml\System\Config\Form\Field\FollowUpEmail">
        <arguments>
            <argument name="data" xsi:type="array">
                <item name="module_manager" xsi:type="object">Magento\Framework\Module\Manager</item>
            </argument>
        </arguments>
    </type>

    <type name="Magento\Framework\App\Config\ScopeCodeResolver">
        <plugin name="Amasty_AdvancedReview::clean-scope-code" type="Amasty\AdvancedReview\Plugin\App\Config\ScopeCodeResolver"/>
    </type>

    <type name="Magento\Review\Model\Review">
        <plugin name="Amasty_AdvancedReview::save-images" type="Amasty\AdvancedReview\Plugin\Review\Model\Review" />
    </type>

    <type name="Magento\ScalableOms\Console\Command\SplitSales">
        <arguments>
            <argument name="tables" xsi:type="array">
                <item name="amasty_advanced_review_reminder" xsi:type="string">amasty_advanced_review_reminder</item>
            </argument>
        </arguments>
    </type>

    <virtualType name="Amasty\AdvancedReview\ViewModel\Summary\RatingTotalsRenderer" type="Amasty\AdvancedReview\ViewModel\Summary\SummaryRenderer">
        <arguments>
            <argument name="template" xsi:type="string">Amasty_AdvancedReview::rating_totals.phtml</argument>
        </arguments>
    </virtualType>

    <virtualType name="Amasty\AdvancedReview\ViewModel\Summary\WidgetSummaryMainRenderer" type="Amasty\AdvancedReview\ViewModel\Summary\SummaryRenderer">
        <arguments>
            <argument name="template" xsi:type="string">Amasty_AdvancedReview::widget/product_reviews/components/summary.phtml</argument>
        </arguments>
    </virtualType>

    <virtualType name="Amasty\AdvancedReview\ViewModel\Summary\WidgetRatingTotalsRenderer" type="Amasty\AdvancedReview\ViewModel\Summary\SummaryRenderer">
        <arguments>
            <argument name="template" xsi:type="string">Amasty_AdvancedReview::widget/product_reviews/components/rating_totals.phtml</argument>
        </arguments>
    </virtualType>

    <virtualType name="Amasty\AdvancedReview\ViewModel\Summary\WidgetRatingRecommendedRenderer" type="Amasty\AdvancedReview\ViewModel\Summary\SummaryRenderer">
        <arguments>
            <argument name="template" xsi:type="string">Amasty_AdvancedReview::widget/product_reviews/components/rating_recomended.phtml</argument>
        </arguments>
    </virtualType>

    <virtualType name="Amasty\AdvancedReview\ViewModel\Summary\ProductPageSummaryRenderer" type="Amasty\AdvancedReview\ViewModel\Summary\SummaryRendererComposite">
        <arguments>
            <argument name="rendererConfig" xsi:type="array">
                <item name="summary-main" xsi:type="array">
                    <item name="renderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\SummaryRenderer</item>
                    <item name="sortOrder" xsi:type="string">10</item>
                </item>
                <item name="rating-totals" xsi:type="array">
                    <item name="renderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\RatingTotalsRenderer</item>
                    <item name="sortOrder" xsi:type="string">20</item>
                </item>
            </argument>
        </arguments>
    </virtualType>

    <virtualType name="Amasty\AdvancedReview\ViewModel\Summary\WidgetSummaryRenderer" type="Amasty\AdvancedReview\ViewModel\Summary\SummaryRendererComposite">
        <arguments>
            <argument name="rendererConfig" xsi:type="array">
                <item name="summary-main" xsi:type="array">
                    <item name="renderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\WidgetSummaryMainRenderer</item>
                    <item name="sortOrder" xsi:type="string">10</item>
                </item>
                <item name="rating-totals" xsi:type="array">
                    <item name="renderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\WidgetRatingTotalsRenderer</item>
                    <item name="sortOrder" xsi:type="string">20</item>
                </item>
                <item name="rating-recomended" xsi:type="array">
                    <item name="renderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\WidgetRatingRecommendedRenderer</item>
                    <item name="sortOrder" xsi:type="string">30</item>
                </item>
            </argument>
        </arguments>
    </virtualType>

    <type name="Amasty\AdvancedReview\Helper\BlockHelper">
        <arguments>
            <argument name="summaryRenderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\ProductPageSummaryRenderer</argument>
        </arguments>
    </type>

    <type name="Amasty\AdvancedReview\Block\Widget\ProductReviews\ProductInfo">
        <arguments>
            <argument name="summaryRenderer" xsi:type="object">Amasty\AdvancedReview\ViewModel\Summary\WidgetSummaryRenderer</argument>
        </arguments>
    </type>
</config>
