services:
  access_check.commerce_payment.operation:
    class: Drupal\commerce_payment\Access\PaymentOperationAccessCheck
    tags:
      - { name: access_check, applies_to: _commerce_payment_operation_access }

  logger.channel.commerce_payment:
    class: Drupal\Core\Logger\LoggerChannel
    factory: logger.factory:get
    arguments: ['commerce_payment']

  plugin.manager.commerce_payment_gateway:
    class: Drupal\commerce_payment\PaymentGatewayManager
    parent: default_plugin_manager

  plugin.manager.commerce_payment_method_type:
    class: Drupal\commerce_payment\PaymentMethodTypeManager
    parent: default_plugin_manager

  plugin.manager.commerce_payment_type:
    class: Drupal\commerce_payment\PaymentTypeManager
    parent: default_plugin_manager

  commerce_payment.filter_conditions_subscriber:
    class: Drupal\commerce_payment\EventSubscriber\FilterConditionsEventSubscriber
    tags:
      - { name: event_subscriber }

  commerce_payment.order_assign_subscriber:
    class: Drupal\commerce_payment\EventSubscriber\OrderAssignSubscriber
    arguments: ['@commerce_order.address_book']
    tags:
    - { name: event_subscriber }

  commerce_payment.order_paid_subscriber:
    class: Drupal\commerce_payment\EventSubscriber\OrderPaidSubscriber
    tags:
    - { name: event_subscriber }

  commerce_payment.options_builder:
    class: Drupal\commerce_payment\PaymentOptionsBuilder
    arguments: ['@entity_type.manager', '@string_translation']

  commerce_payment.order_processor:
    class: Drupal\commerce_payment\PaymentOrderProcessor
    arguments: ['@commerce_payment.order_updater']
    tags:
    - { name: commerce_order.order_processor, priority: 400, adjustment_type: tax }

  commerce_payment.order_updater:
    class: Drupal\commerce_payment\PaymentOrderUpdater
    arguments: ['@entity_type.manager']
    tags:
      - { name: needs_destruction }
