<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Amazon\Payment\Api\OrderInformationManagementInterface" type="Amazon\Payment\Model\OrderInformationManagement" />
    <preference for="Amazon\Payment\Api\AddressManagementInterface" type="Amazon\Payment\Model\AddressManagement" />
    <preference for="Amazon\Payment\Api\QuoteLinkManagementInterface" type="Amazon\Payment\Model\QuoteLinkManagement" />
    <preference for="Amazon\Payment\Api\Data\QuoteLinkInterface" type="Amazon\Payment\Model\QuoteLink" />
    <preference for="Amazon\Payment\Api\Data\OrderLinkInterface" type="Amazon\Payment\Model\OrderLink" />
    <preference for="Amazon\Payment\Api\Data\PendingCaptureInterface" type="Amazon\Payment\Model\PendingCapture" />
    <preference for="Amazon\Payment\Api\Data\PendingAuthorizationInterface" type="Amazon\Payment\Model\PendingAuthorization" />
    <preference for="Amazon\Payment\Api\Data\PendingRefundInterface" type="Amazon\Payment\Model\PendingRefund" />
    <preference for="Amazon\Payment\Ipn\IpnHandlerFactoryInterface" type="Amazon\Payment\Ipn\IpnHandlerFactory" />
    <preference for="AmazonPay\IpnHandlerInterface" type="Amazon\Payment\Ipn\IpnHandler" />
    <preference for="Amazon\Payment\Api\Ipn\CompositeProcessorInterface" type="Amazon\Payment\Model\Ipn\CompositeProcessor" />
    <type name="Magento\Quote\Api\CartRepositoryInterface">
        <plugin name="amazon_payment_quote_repository" type="Amazon\Payment\Plugin\QuoteRepository" sortOrder="1" />
    </type>
    <type name="Magento\Checkout\Api\ShippingInformationManagementInterface">
        <plugin name="amazon_payment_shipping_information_management" type="Amazon\Payment\Plugin\ShippingInformationManagement" sortOrder="1" />
    </type>
    <type name="Magento\Sales\Controller\Adminhtml\Order\Invoice\Save">
        <plugin name="amazon_payment_invoice_save" type="Amazon\Payment\Plugin\InvoiceSave" sortOrder="1" />
    </type>
    <type name="Amazon\Payment\Cron\ProcessAmazonRefunds">
        <arguments>
            <argument name="paymentManagement" xsi:type="object">Amazon\Payment\Model\PaymentManagement\Proxy</argument>
        </arguments>
    </type>
    <type name="Amazon\Payment\Cron\GetAmazonCaptureUpdates">
        <arguments>
            <argument name="paymentManagement" xsi:type="object">Amazon\Payment\Model\PaymentManagement\Proxy</argument>
        </arguments>
    </type>
    <type name="Amazon\Payment\Model\QueuedRefundUpdater">
        <arguments>
            <argument name="adminNotifier" xsi:type="object">Magento\Framework\Notification\NotifierInterface\Proxy</argument>
        </arguments>
    </type>
    <type name="Amazon\Payment\Api\Ipn\CompositeProcessorInterface">
        <arguments>
            <argument name="processors" xsi:type="array">
                <item name="captureprocessor" xsi:type="object">Amazon\Payment\Model\Ipn\CaptureProcessor\Proxy</item>
                <item name="authorizationprocessor" xsi:type="object">Amazon\Payment\Model\Ipn\AuthorizationProcessor\Proxy</item>
                <item name="orderprocessor" xsi:type="object">Amazon\Payment\Model\Ipn\OrderProcessor\Proxy</item>
                <item name="refundprocessor" xsi:type="object">Amazon\Payment\Model\Ipn\RefundProcessor\Proxy</item>
            </argument>
        </arguments>
    </type>
    <virtualType name="amazonIpnLogger" type="Magento\Framework\Logger\Monolog">
        <arguments>
            <argument name="handlers" xsi:type="array">
                <item name="debug" xsi:type="object">Amazon\Core\Logger\Handler\Ipn</item>
            </argument>
        </arguments>
    </virtualType>
    <type name="Amazon\Payment\Ipn\IpnHandlerFactoryInterface">
        <arguments>
            <argument name="logger" xsi:type="object">amazonIpnLogger</argument>
        </arguments>
    </type>
    <type name="Magento\Framework\Webapi\ErrorProcessor">
        <plugin name="amazon_payment_webapi_error_processor" type="Amazon\Payment\Plugin\WebapiErrorProcessor" sortOrder="1" />
    </type>
    <type name="Magento\Framework\Mail\MessageInterface" shared="false" />
    <type name="Amazon\Payment\Model\Config">
        <arguments>
            <argument name="methodCode" xsi:type="const">Amazon\Payment\Model\Method\Amazon::PAYMENT_METHOD_CODE</argument>
        </arguments>
    </type>
    <type name="Amazon\Payment\Helper\Shortcut\Validator">
        <arguments>
            <argument name="amazonConfig" xsi:type="object">Amazon\Payment\Model\Config</argument>
        </arguments>
    </type>
</config>
