<?xml version="1.0"?>
<!--
/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Tax\Api\TaxRuleRepositoryInterface"
                type="Magento\Tax\Model\TaxRuleRepository"/>
    <preference for="Magento\Tax\Api\TaxCalculationInterface"
                type="Magento\Tax\Model\TaxCalculation"/>
    <type name="Magento\Tax\Helper\Data">
        <arguments>
            <argument name="taxConfig" xsi:type="object">Magento\Tax\Model\Config\Proxy</argument>
        </arguments>
    </type>
    <type name="Magento\Tax\Model\ResourceModel\Calculation">
        <arguments>
            <argument name="taxData" xsi:type="object">Magento\Tax\Helper\Data\Proxy</argument>
        </arguments>
    </type>
    <type name="Magento\Framework\Pricing\Adjustment\Collection">
        <arguments>
            <argument name="adjustments" xsi:type="array">
                <item name="tax" xsi:type="const">Magento\Tax\Pricing\Adjustment::ADJUSTMENT_CODE</item>
            </argument>
        </arguments>
    </type>
    <type name="Magento\Framework\Pricing\Adjustment\Pool">
        <arguments>
            <argument name="adjustments" xsi:type="array">
                <item name="tax" xsi:type="array">
                    <item name="className" xsi:type="string">Magento\Tax\Pricing\Adjustment</item>
                    <item name="sortOrder" xsi:type="string">20</item>
                </item>
            </argument>
        </arguments>
    </type>
    <preference for="Magento\Tax\Api\Data\TaxRateSearchResultsInterface" type="Magento\Framework\Api\SearchResults" />
    <preference for="Magento\Tax\Api\Data\TaxClassSearchResultsInterface" type="Magento\Framework\Api\SearchResults" />
    <preference for="Magento\Tax\Api\OrderTaxManagementInterface" type="Magento\Tax\Model\Sales\Order\TaxManagement" />
    <preference for="Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterface" type="Magento\Tax\Model\Sales\Order\Tax" />
    <preference for="Magento\Tax\Api\Data\OrderTaxDetailsInterface" type="Magento\Tax\Model\Sales\Order\Details" />
    <preference for="Magento\Tax\Api\Data\OrderTaxDetailsItemInterface" type="Magento\Sales\Model\Order\Tax\Item" />
    <preference for="Magento\Tax\Api\TaxClassManagementInterface" type="\Magento\Tax\Model\TaxClass\Management" />
    <preference for="Magento\Tax\Api\TaxClassRepositoryInterface" type="Magento\Tax\Model\TaxClass\Repository" />
    <preference for="Magento\Tax\Api\Data\TaxClassInterface" type="Magento\Tax\Model\ClassModel" />
    <preference for="Magento\Tax\Api\Data\TaxRuleInterface" type="Magento\Tax\Model\Calculation\Rule" />
    <preference for="Magento\Tax\Api\Data\TaxRuleSearchResultsInterface" type="Magento\Framework\Api\SearchResults" />
    <preference for="Magento\Tax\Api\TaxRateManagementInterface" type="Magento\Tax\Model\TaxRateManagement" />
    <preference for="Magento\Tax\Api\TaxRateRepositoryInterface" type="Magento\Tax\Model\Calculation\RateRepository" />
    <preference for="Magento\Tax\Api\Data\TaxRateTitleInterface" type="Magento\Tax\Model\Calculation\Rate\Title" />
    <preference for="Magento\Tax\Api\Data\TaxRateInterface" type="Magento\Tax\Model\Calculation\Rate" />
    <preference for="Magento\Tax\Api\Data\QuoteDetailsInterface" type="Magento\Tax\Model\Sales\Quote\QuoteDetails" />
    <preference for="Magento\Tax\Api\Data\QuoteDetailsItemInterface" type="Magento\Tax\Model\Sales\Quote\ItemDetails" />
    <preference for="Magento\Tax\Api\Data\TaxClassKeyInterface" type="\Magento\Tax\Model\TaxClass\Key" />
    <preference for="Magento\Tax\Api\Data\AppliedTaxInterface" type="Magento\Tax\Model\TaxDetails\AppliedTax" />
    <preference for="Magento\Tax\Api\Data\AppliedTaxRateInterface" type="Magento\Tax\Model\TaxDetails\AppliedTaxRate" />
    <preference for="Magento\Tax\Api\Data\TaxDetailsInterface" type="Magento\Tax\Model\TaxDetails\TaxDetails" />
    <preference for="Magento\Tax\Api\Data\TaxDetailsItemInterface" type="Magento\Tax\Model\TaxDetails\ItemDetails" />
    <preference for="Magento\Tax\Api\Data\GrandTotalDetailsInterface" type="Magento\Tax\Model\Calculation\GrandTotalDetails" />
    <preference for="Magento\Tax\Api\Data\GrandTotalRatesInterface" type="Magento\Tax\Model\Calculation\GrandTotalRates" />
    <type name="Magento\Quote\Model\Quote\Address\ToOrder">
        <plugin name="add_tax_to_order" type="Magento\Tax\Model\Quote\ToOrderConverter"/>
    </type>
    <type name="Magento\Quote\Model\Cart\TotalsConverter">
        <plugin name="add_tax_details" type="Magento\Tax\Model\Quote\GrandTotalDetailsPlugin"/>
    </type>
    <type name="Magento\Tax\Model\ResourceModel\Report\Tax\Createdat">
        <arguments>
            <argument name="connectionName" xsi:type="string">sales</argument>
        </arguments>
    </type>
    <type name="Magento\Tax\Model\ResourceModel\Report\Tax\Updatedat">
        <arguments>
            <argument name="connectionName" xsi:type="string">sales</argument>
        </arguments>
    </type>
    <type name="Magento\Sales\Api\OrderRepositoryInterface">
        <plugin name="save_order_tax" type="Magento\Tax\Model\Plugin\OrderSave"/>
    </type>
    <type name="Magento\Tax\Model\ResourceModel\Sales\Order\Tax">
        <arguments>
            <argument name="connectionName" xsi:type="string">sales</argument>
        </arguments>
    </type>
</config>
