<?xml version="1.0"?>
<!--
/*
 * Avalara_BaseProvider
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 *
 * @copyright Copyright (c) 2021 Avalara, Inc
 * @license    http: //opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Avalara\AvaTax\BaseProvider\Api\QueueRepositoryInterface" type="Avalara\AvaTax\BaseProvider\Model\QueueRepository"/>
    <preference for="Avalara\AvaTax\BaseProvider\Api\Data\QueueInterface" type="Avalara\AvaTax\BaseProvider\Model\Queue"/>
    <preference for="Avalara\AvaTax\BaseProvider\Api\QueueSearchResultsInterface" type="Avalara\AvaTax\BaseProvider\Model\QueueSearchResults"/>
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="baseprovider_queue_listing_data_source" xsi:type="string">BaseProviderQueueGridDataProvider</item>
            </argument>
        </arguments>
    </type>
    <virtualType name="BaseProviderQueueGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">baseprovider_queue_job</argument>
            <argument name="resourceModel" xsi:type="string">Avalara\AvaTax\BaseProvider\Model\ResourceModel\Queue</argument>
        </arguments>
    </virtualType>
    <type name="Avalara\AvaTax\BaseProvider\Logger\Handler\FileHandler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="Avalara\AvaTax\BaseProvider\Logger\GenericLogger">
        <arguments>
            <argument name="name" xsi:type="string">generic_logger</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="1" xsi:type="object">Avalara\AvaTax\BaseProvider\Logger\Handler\Generic\ApiHandler</item>
            </argument>
            <argument name="processors" xsi:type="array">
                <item name="1" xsi:type="object">Avalara\AvaTax\BaseProvider\Logger\Processor</item>
            </argument>
        </arguments>
    </type>
    <type name="Avalara\AvaTax\BaseProvider\Logger\ApplicationLogger">
        <arguments>
            <argument name="name" xsi:type="string">logger</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="1" xsi:type="object">Avalara\AvaTax\BaseProvider\Logger\Handler\Application\FileHandler</item>
                <item name="2" xsi:type="object">Avalara\AvaTax\BaseProvider\Logger\Handler\Application\DbHandler</item>
            </argument>
            <argument name="processors" xsi:type="array">
                <item name="1" xsi:type="object">Avalara\AvaTax\BaseProvider\Logger\Processor</item>
            </argument>
        </arguments>
    </type>
	<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="baseprovider_log_listing_data_source" xsi:type="string">AvaTaxBaseProviderLogGridDataProvider</item>
            </argument>
        </arguments>
    </type>
    <virtualType name="AvaTaxBaseProviderLogGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">
        <arguments>
            <argument name="mainTable" xsi:type="string">baseprovider_logs</argument>
            <argument name="resourceModel" xsi:type="string">Avalara\AvaTax\BaseProvider\Model\ResourceModel\Log</argument>
        </arguments>
    </virtualType>
    <type name="Avalara\AvaTax\BaseProvider\Model\Queue\Consumer">
        <arguments>
            <argument name="processors" xsi:type="array">
                <item name="api_log" xsi:type="object">Avalara\AvaTax\BaseProvider\Model\Queue\Consumer\ApiLogConsumer</item>
                <item name="items_sync" xsi:type="object">Avalara\AvaTax\BaseProvider\Model\Items\Consumer\SyncToAvaTax</item>
                <item name="hscode_sync" xsi:type="object">Avalara\AvaTax\BaseProvider\Model\Items\Consumer\SyncHsCodeToAvaTax</item>
            </argument>
        </arguments>
    </type>
</config>