parameters:
    oro_paypal.method.paypal_payments_pro: 'paypal_payments_pro'
    oro_paypal.method.paypal_payflow_gateway: 'paypal_payflow_gateway'
    oro_paypal.method.identifier_prefix.payflow_gateway.credit_card: 'paypal_payflow_gateway_credit_card'
    oro_paypal.method.identifier_prefix.payflow_gateway.express_checkout: 'paypal_payflow_gateway_express_checkout'
    oro_paypal.method.identifier_prefix.payments_pro.credit_card: 'paypal_payments_pro_credit_card'
    oro_paypal.method.identifier_prefix.payments_pro.express_checkout: 'paypal_payments_pro_express_checkout'

services:
    oro_paypal.method.config.provider.payments_pro.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Provider\PayPalCreditCardConfigProvider'
        public: false
        arguments:
            - '@doctrine'
            - '@logger'
            - '@oro_paypal.method.config.factory.payments_pro.credit_card'
            - '%oro_paypal.method.paypal_payments_pro%'

    oro_paypal.method.config.provider.payments_pro.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Provider\PayPalExpressCheckoutConfigProvider'
        public: false
        arguments:
            - '@doctrine'
            - '@logger'
            - '@oro_paypal.method.config.factory.payments_pro.express_checkout'
            - '%oro_paypal.method.paypal_payments_pro%'

    oro_paypal.method.config.provider.payflow_gateway.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Provider\PayPalCreditCardConfigProvider'
        public: false
        arguments:
            - '@doctrine'
            - '@logger'
            - '@oro_paypal.method.config.factory.payflow_gateway.credit_card'
            - '%oro_paypal.method.paypal_payflow_gateway%'

    oro_paypal.method.config.provider.payflow_gateway.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Provider\PayPalExpressCheckoutConfigProvider'
        public: false
        arguments:
            - '@doctrine'
            - '@logger'
            - '@oro_paypal.method.config.factory.payflow_gateway.express_checkout'
            - '%oro_paypal.method.paypal_payflow_gateway%'

    oro_paypal.method.config.factory.payflow_gateway.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Factory\PayPalCreditCardConfigFactory'
        public: false
        arguments:
            - '@oro_locale.helper.localization'
            - '@oro_paypal.method.generator.identifier.payflow_gateway.credit_card'

    oro_paypal.method.config.factory.payflow_gateway.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Factory\PayPalExpressCheckoutConfigFactory'
        public: false
        arguments:
            - '@oro_locale.helper.localization'
            - '@oro_paypal.method.generator.identifier.payflow_gateway.express_checkout'

    oro_paypal.method.config.factory.payments_pro.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Factory\PayPalCreditCardConfigFactory'
        public: false
        arguments:
            - '@oro_locale.helper.localization'
            - '@oro_paypal.method.generator.identifier.payments_pro.credit_card'

    oro_paypal.method.config.factory.payments_pro.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Config\Factory\PayPalExpressCheckoutConfigFactory'
        public: false
        arguments:
            - '@oro_locale.helper.localization'
            - '@oro_paypal.method.generator.identifier.payments_pro.express_checkout'

    oro_paypal.method.generator.identifier.payflow_gateway.credit_card:
        parent: oro_integration.generator.prefixed_identifier_generator
        public: true
        arguments:
            - '%oro_paypal.method.identifier_prefix.payflow_gateway.credit_card%'

    oro_paypal.method.generator.identifier.payflow_gateway.express_checkout:
        parent: oro_integration.generator.prefixed_identifier_generator
        public: true
        arguments:
            - '%oro_paypal.method.identifier_prefix.payflow_gateway.express_checkout%'

    oro_paypal.method.generator.identifier.payments_pro.credit_card:
        parent: oro_integration.generator.prefixed_identifier_generator
        public: true
        arguments:
            - '%oro_paypal.method.identifier_prefix.payments_pro.credit_card%'

    oro_paypal.method.generator.identifier.payments_pro.express_checkout:
        parent: oro_integration.generator.prefixed_identifier_generator
        public: true
        arguments:
            - '%oro_paypal.method.identifier_prefix.payments_pro.express_checkout%'

    oro_paypal.method.provider.payments_pro.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Provider\CreditCardMethodProvider'
        public: false
        arguments:
            - '@oro_paypal.method.config.provider.payments_pro.credit_card'
            - '@oro_paypal.method.factory.credit_card'
        tags:
            - { name: oro_payment.payment_method_provider }

    oro_paypal.method.provider.payments_pro.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Provider\ExpressCheckoutMethodProvider'
        public: false
        arguments:
            - '@oro_paypal.method.config.provider.payments_pro.express_checkout'
            - '@oro_paypal.method.factory.express_checkout'
        tags:
            - { name: oro_payment.payment_method_provider }

    oro_paypal.method.provider.payflow_gateway.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Provider\CreditCardMethodProvider'
        public: false
        arguments:
            - '@oro_paypal.method.config.provider.payflow_gateway.credit_card'
            - '@oro_paypal.method.factory.credit_card'
        tags:
            - { name: oro_payment.payment_method_provider }

    oro_paypal.method.provider.payflow_gateway.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Provider\ExpressCheckoutMethodProvider'
        public: false
        arguments:
            - '@oro_paypal.method.config.provider.payflow_gateway.express_checkout'
            - '@oro_paypal.method.factory.express_checkout'
        tags:
            - { name: oro_payment.payment_method_provider }

    oro_paypal.method.provider.express_checkout.composite:
        class: 'Oro\Bundle\PaymentBundle\Method\Provider\CompositePaymentMethodProvider'
        public: false
        arguments:
            -
                - '@oro_paypal.method.provider.payflow_gateway.express_checkout'
                - '@oro_paypal.method.provider.payments_pro.express_checkout'

    oro_paypal.method.factory.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\Factory\BasicPayPalCreditCardPaymentMethodFactory'
        public: false
        arguments:
            - '@oro_paypal.paypal.payflow_gateway.gateway'
            - '@router'
            - '@oro_paypal.options_provider.transaction'

    oro_paypal.method.factory.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\Factory\BasicPayPalExpressCheckoutPaymentMethodFactory'
        public: false
        arguments:
            - '@oro_paypal.paypal.payflow_express_checkout.gateway'
            - '@property_accessor'
            - '@oro_paypal.options_provider.transaction'

    oro_paypal.method.view.provider.payments_pro.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\View\Provider\CreditCardMethodViewProvider'
        arguments:
            - '@oro_paypal.credit_card.method_view_factory_basic'
            - '@oro_paypal.method.config.provider.payments_pro.credit_card'
        tags:
            - { name: oro_payment.payment_method_view_provider }

    oro_paypal.method.view.provider.payflow_gateway.credit_card:
        class: 'Oro\Bundle\PayPalBundle\Method\View\Provider\CreditCardMethodViewProvider'
        arguments:
            - '@oro_paypal.credit_card.method_view_factory_basic'
            - '@oro_paypal.method.config.provider.payflow_gateway.credit_card'
        tags:
            - { name: oro_payment.payment_method_view_provider }

    oro_paypal.method.view.provider.payments_pro.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\View\Provider\ExpressCheckoutMethodViewProvider'
        arguments:
            - '@oro_paypal.express_checkout.method_view_factory_basic'
            - '@oro_paypal.method.config.provider.payments_pro.express_checkout'
        tags:
            - { name: oro_payment.payment_method_view_provider }

    oro_paypal.method.view.provider.payflow_gateway.express_checkout:
        class: 'Oro\Bundle\PayPalBundle\Method\View\Provider\ExpressCheckoutMethodViewProvider'
        arguments:
            - '@oro_paypal.express_checkout.method_view_factory_basic'
            - '@oro_paypal.method.config.provider.payflow_gateway.express_checkout'
        tags:
            - { name: oro_payment.payment_method_view_provider }

    oro_paypal.options_provider.transaction:
        class: Oro\Bundle\PayPalBundle\Method\Transaction\TransactionOptionProvider
        public: false
        arguments:
            - '@oro_payment.provider.surcharge'
            - '@oro_entity.doctrine_helper'
            - '@oro_paypal.options_provider.options'
            - '@router'
            - '@property_accessor'
