<?xml version="1.0" encoding="UTF-8"?>

<!--

 This file is part of the Sylius package.

 (c) Sylius Sp. z o.o.

 For the full copyright and license information, please view the LICENSE
 file that was distributed with this source code.

-->

<container
    xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"
>
    <services>
        <service
            id="sylius_paypal.gateway_factory_builder"
            class="Payum\Core\Bridge\Symfony\Builder\GatewayFactoryBuilder"
        >
            <argument>Sylius\PayPalPlugin\Payum\Factory\PayPalGatewayFactory</argument>
            <tag name="payum.gateway_factory_builder" factory="sylius_paypal" />
        </service>

        <service id="sylius_paypal.payum.action.authorize" class="Sylius\PayPalPlugin\Payum\Action\AuthorizeAction" public="true">
            <tag name="payum.action" factory="sylius_paypal" alias="payum.action.authorize" />
        </service>

        <service id="sylius_paypal.payum.action.capture" class="Sylius\PayPalPlugin\Payum\Action\CaptureAction" public="true">
            <argument type="service" id="sylius_paypal.api.cache_authorize_client" />
            <argument type="service" id="sylius_paypal.api.create_order" />
            <argument type="service" id="sylius_paypal.provider.uuid" />
            <tag name="payum.action" factory="sylius_paypal" alias="payum.action.capture" />
        </service>

        <service id="sylius_paypal.payum.action.complete_order" class="Sylius\PayPalPlugin\Payum\Action\CompleteOrderAction" public="true">
            <argument type="service" id="sylius_paypal.api.cache_authorize_client" />
            <argument type="service" id="sylius_paypal.api.update_order" />
            <argument type="service" id="sylius_paypal.api.complete_order" />
            <argument type="service" id="sylius_paypal.api.order_details" />
            <argument>null</argument>
            <argument type="service" id="sylius_paypal.updater.payment" />
            <argument type="service" id="sylius.state_resolver.order_payment" />
            <argument type="service" id="sylius_paypal.api.update_order_address" />
            <tag name="payum.action" factory="sylius_paypal" alias="payum.action.complete_order" />
        </service>

        <service id="sylius_paypal.payum.action.resolve_next_route" class="Sylius\PayPalPlugin\Payum\Action\ResolveNextRouteAction" public="true">
            <tag name="payum.action" factory="sylius_paypal" alias="sylius.resolve_next_route" />
        </service>
    </services>
</container>
