parameters:
    oro_shipping.rule_grid_route_name: 'oro_shipping_methods_configs_rule_index'
    oro_shipping.rule_grid_name: 'shipping-methods-configs-rule-grid'

services:
    oro_shipping.shipping_rule.manager.api:
        class: 'Oro\Bundle\SoapBundle\Entity\Manager\ApiEntityManager'
        public: true
        parent: oro_soap.manager.entity_manager.abstract
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodsConfigsRule'
            - "@doctrine.orm.entity_manager"

    oro_shipping.factory.shipping_origin_model_factory:
        class: 'Oro\Bundle\ShippingBundle\Factory\ShippingOriginModelFactory'
        public: false
        arguments:
            - '@oro_entity.doctrine_helper'

    oro_shipping.event_listener.config.shipping_origin:
        class: 'Oro\Bundle\ShippingBundle\EventListener\Config\ShippingOriginEventListener'
        arguments:
            - '@oro_shipping.factory.shipping_origin_model_factory'
        tags:
            - { name: kernel.event_listener, event: oro_config.settings_form_preset, method: formPreSet }
            - { name: kernel.event_listener, event: oro_config.settings_before_save.oro_shipping.shipping_origin, method: beforeSave }

    oro_shipping.event_listener.form_view:
        class: Oro\Bundle\ShippingBundle\EventListener\FormViewListener
        arguments:
            - '@translator'
            - '@oro_entity.doctrine_helper'
            - '@request_stack'
        calls:
            - [setFieldAclHelper, ['@oro_security.form.field_acl_helper']]
        tags:
            - { name: kernel.event_listener, event: oro_ui.scroll_data.before.product-view, method: onProductView }
            - { name: kernel.event_listener, event: oro_ui.scroll_data.before.product-edit, method: onProductEdit }
            - { name: kernel.event_listener, event: oro_ui.scroll_data.before.product-create-step-two, method: onProductEdit }

    oro_shipping.event_listener.product_shipping_options_datagrid:
        class: 'Oro\Bundle\ShippingBundle\EventListener\Datagrid\ProductShippingOptionsDatagridListener'
        arguments:
            - '@oro_entity.doctrine_helper'
        calls:
            - [setProductShippingOptionsClass, ['Oro\Bundle\ShippingBundle\Entity\ProductShippingOptions']]
        tags:
            - { name: kernel.event_listener, event: oro_datagrid.datagrid.build.before.products-grid, method: onBuildBefore }
            - { name: kernel.event_listener, event: oro_datagrid.orm_datasource.result.after.products-grid, method: onResultAfter }

    oro_shipping.datagrid.method_configs_provider:
        class: Oro\Bundle\ShippingBundle\Provider\MethodConfigsDatagridDataProvider
        public: true
        arguments:
            - '@oro_shipping.method.org_provider'
            - '@twig'

    oro_shipping.formatter.length_unit_label:
        parent: oro_product.formatter.unit_label
        calls:
            - [setTranslationPrefix, ['oro.length_unit']]

    oro_shipping.formatter.weight_unit_label:
        parent: oro_product.formatter.unit_label
        calls:
            - [setTranslationPrefix, ['oro.weight_unit']]

    oro_shipping.formatter.freight_class_label:
        parent: oro_product.formatter.unit_label
        public: true
        calls:
            - [setTranslationPrefix, ['oro.freight_class']]

    oro_shipping.formatter.weight_unit_value:
        parent: oro_product.formatter.unit_value
        calls:
            - [setTranslationPrefix, ['oro.weight_unit']]

    oro_shipping.formatter.dimensions_unit_value:
        parent: oro_product.formatter.unit_value
        class: 'Oro\Bundle\ShippingBundle\Formatter\DimensionsValueFormatter'
        calls:
            - [setTranslationPrefix, ['oro.length_unit']]

    oro_shipping.twig.shipping_extension:
        class: Oro\Bundle\ShippingBundle\Twig\ShippingExtension
        public: false
        arguments:
            - '@oro_platform.twig.service_locator'
        tags:
            - { name: twig.extension }

    oro_shipping.repository.shipping_methods_configs_rule:
        alias: Oro\Bundle\ShippingBundle\Entity\Repository\ShippingMethodsConfigsRuleRepository

    Oro\Bundle\ShippingBundle\Entity\Repository\ShippingMethodsConfigsRuleRepository:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodsConfigsRule'
        calls:
            - [setAclHelper, ['@oro_security.acl_helper']]
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.repository.shipping_method_type_config:
        alias: Oro\Bundle\ShippingBundle\Entity\Repository\ShippingMethodTypeConfigRepository

    Oro\Bundle\ShippingBundle\Entity\Repository\ShippingMethodTypeConfigRepository:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodTypeConfig'
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.repository.product_shipping_options:
        alias: Oro\Bundle\ShippingBundle\Entity\Repository\ProductShippingOptionsRepository

    Oro\Bundle\ShippingBundle\Entity\Repository\ProductShippingOptionsRepository:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\ProductShippingOptions'
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.repository.length_unit:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\LengthUnit'
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.repository.weight_unit:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\WeightUnit'
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.repository.freight_class:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\FreightClass'
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.provider.measure_units.weight:
        class: 'Oro\Bundle\ShippingBundle\Provider\MeasureUnitProvider'
        arguments:
            - '@oro_shipping.repository.weight_unit'
            - '@oro_config.manager'
            - 'oro_shipping.weight_units'

    oro_shipping.provider.measure_units.length:
        class: 'Oro\Bundle\ShippingBundle\Provider\MeasureUnitProvider'
        arguments:
            - '@oro_shipping.repository.length_unit'
            - '@oro_config.manager'
            - 'oro_shipping.length_units'

    Oro\Bundle\ShippingBundle\Provider\FreightClassesProvider:
        alias: oro_shipping.provider.measure_units.freight

    oro_shipping.provider.measure_units.freight:
        class: 'Oro\Bundle\ShippingBundle\Provider\FreightClassesProvider'
        public: true
        arguments:
            - '@oro_shipping.repository.freight_class'
            - '@oro_config.manager'
            - 'oro_shipping.freight_classes'
        calls:
            - [setExtensions, [ !tagged_iterator oro_shipping.extension.freight_classes ]]

    oro_shipping.provider.measure_units.conversion:
        class: 'Oro\Bundle\ShippingBundle\Provider\MeasureUnitConversion'
        arguments:
            - '@oro_config.manager'
            - 'oro_shipping.length_units'
            - 'oro_shipping.weight_units'

    oro_shipping.extension.freight_classes:
        class: 'Oro\Bundle\ShippingBundle\Extension\FreightClassesExtension'
        tags:
            - { name: oro_shipping.extension.freight_classes }

    oro_shipping.validator.unique_product_unit_shipping_options:
        class: 'Oro\Bundle\ShippingBundle\Validator\Constraints\UniqueProductUnitShippingOptionsValidator'
        tags:
            - { name: validator.constraint_validator, alias: oro_shipping_unique_product_unit_shipping_options_validator }

    oro_shipping.validator.enabled_type_config_validation_group:
        class: 'Oro\Bundle\ShippingBundle\Validator\Constraints\EnabledTypeConfigsValidationGroupValidator'
        tags:
            - { name: validator.constraint_validator, alias: oro_shipping_enabled_type_config_validation_group_validator }

    oro_shipping.validator.shipping_rule_enabled:
        class: 'Oro\Bundle\ShippingBundle\Validator\Constraints\ShippingRuleEnableValidator'
        arguments:
            - '@oro_shipping.checker.shipping_rule_enabled'
            - '@oro_security.token_accessor'
        tags:
            - { name: validator.constraint_validator, alias: oro_shipping_rule_enabled_validator }

    oro_shipping.form.data_transformer.measure:
        class: 'Oro\Bundle\ShippingBundle\Form\DataTransformer\MeasureTransformer'
        public: false
        abstract: true

    oro_shipping.form.data_transformer.length_unit:
        parent: 'oro_shipping.form.data_transformer.measure'
        public: true
        arguments:
            - '@oro_shipping.repository.length_unit'

    oro_shipping.form.data_transformer.weight_unit:
        parent: 'oro_shipping.form.data_transformer.measure'
        public: true
        arguments:
            - '@oro_shipping.repository.weight_unit'

    oro_shipping.form.data_transformer.freight_class:
        parent: 'oro_shipping.form.data_transformer.measure'
        public: true
        arguments:
            - '@oro_shipping.repository.freight_class'

    oro_shipping.event_listener.product_duplicate:
        class: 'Oro\Bundle\ShippingBundle\EventListener\ProductDuplicateListener'
        arguments:
            - '@oro_entity.doctrine_helper'
        calls:
            - [setProductShippingOptionsClass, ['Oro\Bundle\ShippingBundle\Entity\ProductShippingOptions']]
        tags:
            - { name: kernel.event_listener, event: oro_product.product.duplicate.after, method: onDuplicateAfter }

    oro_shipping.event_listener.enabled_shipping_methods_listener:
        class: 'Oro\Bundle\ShippingBundle\EventListener\EnabledShippingMethodsListener'
        arguments:
            - '@oro_shipping.shipping_method_provider'
        tags:
            - { name: kernel.event_listener, event: oro_shipping.applicable_methods, method: removeDisabledShippingMethodViews, priority: -200 }

    oro_shipping.shipping_price.provider:
        class: 'Oro\Bundle\ShippingBundle\Provider\ShippingPriceProvider'
        arguments:
            - '@oro_shipping.provider.methods_configs_rules.by_context.basic'
            - '@oro_shipping.shipping_method_provider'
            - '@oro_shipping.shipping_price.provider.cache'
            - '@oro_shipping.method.view_factory'
            - '@event_dispatcher'
            - '@oro_shipping.shipping_price.provider.memory_cache'

    oro_shipping.shipping_price.provider.memory_cache:
        parent: oro.cache.provider.memory_cache

    oro_shipping.shipping_price.provider.cache:
        class: 'Oro\Bundle\ShippingBundle\Provider\Cache\ShippingPriceCache'
        arguments:
            - '@oro_shipping.price.cache'
            - '@oro_shipping.shipping_context.cache_key_generator'

    oro_shipping.price.cache:
        public: false
        parent: oro.data.cache
        tags:
            - { name: 'cache.pool', namespace: 'oro_shipping_price' }


    Oro\Bundle\ShippingBundle\Form\Handler\ShippingMethodsConfigsRuleHandler:
        alias: oro_shipping.form.handler.shipping_methods_configs_rule

    oro_shipping.form.handler.shipping_methods_configs_rule:
        class: 'Oro\Bundle\ShippingBundle\Form\Handler\ShippingMethodsConfigsRuleHandler'
        public: true
        arguments:
            - '@request_stack'
            - '@doctrine.orm.entity_manager'

    oro_shipping.system_shipping_origin_provider:
        class: 'Oro\Bundle\ShippingBundle\Provider\SystemShippingOriginProvider'
        arguments:
            - '@oro_config.global'
            - '@oro_shipping.factory.shipping_origin_model_factory'

    oro_shipping.expression_language.decorated_product_line_item_factory:
        class: 'Oro\Bundle\ShippingBundle\ExpressionLanguage\DecoratedProductLineItemFactory'
        arguments:
            - '@oro_product.virtual_fields.decorator_factory'

    oro_shipping.condition.has_applicable_shipping_methods:
        class: 'Oro\Bundle\ShippingBundle\Condition\HasApplicableShippingMethods'
        arguments:
            - '@oro_shipping.shipping_price.provider'
        tags:
            - { name: oro_action.condition, alias: 'has_applicable_shipping_methods' }

    oro_shipping.condition.shipping_method_has_shipping_rules:
        class: 'Oro\Bundle\ShippingBundle\Condition\ShippingMethodHasShippingRules'
        arguments:
            - '@oro_shipping.repository.shipping_methods_configs_rule'
        tags:
            - { name: oro_action.condition, alias: 'shipping_method_has_shipping_rules' }

    oro_shipping.condition.shipping_method_has_enabled_shipping_rules:
        class: 'Oro\Bundle\ShippingBundle\Condition\ShippingMethodHasEnabledShippingRules'
        arguments:
            - '@oro_shipping.repository.shipping_methods_configs_rule'
        tags:
            - { name: oro_action.condition, alias: 'shipping_method_has_enabled_shipping_rules' }

    oro_shipping.shipping_context.cache_key_generator:
        class: 'Oro\Bundle\ShippingBundle\Context\ShippingContextCacheKeyGenerator'
        public: false

    oro_shipping.context.doctrine_line_item_collection_factory:
        class: 'Oro\Bundle\ShippingBundle\Context\LineItem\Collection\Doctrine\Factory\DoctrineShippingLineItemCollectionFactory'
        deprecated: '%service_id% is deprecated since 5.1'

    oro_shipping.context.line_item_collection_factory.set_shipping_options_if_null:
        class: 'Oro\Bundle\ShippingBundle\Context\LineItem\Collection\ShippingOptions\Factory\ShippingOptionsLineItemCollectionFactoryDecorator'
        deprecated: '%service_id% is deprecated since 5.1'
        arguments:
            - '@oro_shipping.context.doctrine_line_item_collection_factory'
            - '@doctrine'
            - '@oro_shipping.line_item.factory_by_line_item_basic'

    oro_shipping.context.line_item.factory.shipping_kit_item_line_item_from_product_kit_item_line_item_factory:
        class: Oro\Bundle\ShippingBundle\Context\LineItem\Factory\ShippingKitItemLineItemFromProductKitItemLineItemFactory

    oro_shipping.context.builder_factory_basic:
        class: 'Oro\Bundle\ShippingBundle\Context\Builder\Basic\Factory\BasicShippingContextBuilderFactory'

    oro_shipping.line_item.factory_basic:
        class: 'Oro\Bundle\ShippingBundle\Context\LineItem\Builder\Basic\Factory\BasicShippingLineItemBuilderFactory'
        deprecated: '%service_id% is deprecated since 5.1'
        calls:
            - ['setShippingKitItemLineItemFactory', ['@oro_shipping.context.line_item.factory.shipping_kit_item_line_item_from_product_kit_item_line_item_factory']]

    oro_shipping.line_item.factory_by_line_item_basic:
        class: 'Oro\Bundle\ShippingBundle\Context\LineItem\Builder\Basic\Factory\BasicLineItemBuilderByLineItemFactory'
        deprecated: '%service_id% is deprecated since 5.1'
        arguments:
            - '@oro_shipping.line_item.factory_basic'

    oro_shipping.datagrid.shipping_rule_actions_visibility_provider:
        parent: oro_rule.action.visibility_provider
        public: true

    oro_shipping.converter.shipping_context_to_rule_values:
        class: 'Oro\Bundle\ShippingBundle\Converter\Basic\ShippingContextToRulesValuesConverter'
        arguments:
            - '@oro_shipping.expression_language.decorated_product_line_item_factory'

    oro_shipping.listener.update_entity_config_relations:
        class: 'Oro\Bundle\ShippingBundle\CacheWarmer\UpdateEntityConfigRelationsWarmer'
        arguments:
            - '@oro_shipping.entity_config_relations_migration'
        tags:
            - { name: oro_entity_extend.warmer, priority: -500 }

    oro_shipping.entity_config_relations_migration:
        class: 'Oro\Bundle\ShippingBundle\CacheWarmer\EntityConfigRelationsMigration'
        arguments:
            - '@doctrine'
            - '@logger'
            - '@oro_distribution.handler.application_status'

    oro_shipping.listener.shipping_rule:
        class: 'Oro\Bundle\ShippingBundle\EventListener\Cache\ShippingRuleChangeListener'
        arguments:
            - '@oro_shipping.shipping_price.provider.cache'
        tags:
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\RuleBundle\Entity\Rule', event: postPersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\RuleBundle\Entity\Rule', event: postUpdate }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\RuleBundle\Entity\Rule', event: postRemove }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodsConfigsRule', event: postPersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodsConfigsRule', event: postUpdate }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodsConfigsRule', event: postRemove }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodConfig', event: postPersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodConfig', event: postUpdate }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodConfig', event: postRemove }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodTypeConfig', event: postPersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodTypeConfig', event: postUpdate }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodTypeConfig', event: postRemove }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\PricingBundle\Entity\PriceAttributeProductPrice', event: postPersist }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\PricingBundle\Entity\PriceAttributeProductPrice', event: postUpdate }
            - { name: doctrine.orm.entity_listener, entity: 'Oro\Bundle\PricingBundle\Entity\PriceAttributeProductPrice', event: postRemove }

    oro_shipping.method.view_factory:
        class: 'Oro\Bundle\ShippingBundle\Method\ShippingMethodViewFactory'
        public: false
        arguments:
            - '@oro_shipping.shipping_method_provider'

    oro_shipping.method.composed_configuration_builder_factory:
        class: 'Oro\Bundle\ShippingBundle\Method\Configuration\Composed\ComposedShippingMethodConfigurationBuilderFactory'
        public: false

    oro_shipping.method.event.dispatcher.method_removal:
        class: 'Oro\Bundle\ShippingBundle\Method\Event\BasicMethodRemovalEventDispatcher'
        public: false
        arguments:
            - '@event_dispatcher'

    oro_shipping.method.event.dispatcher.type_removal:
        class: 'Oro\Bundle\ShippingBundle\Method\Event\BasicMethodTypeRemovalEventDispatcher'
        public: false
        arguments:
            - '@event_dispatcher'

    oro_shipping.helper.filtered_datagrid_route:
        class: 'Oro\Bundle\ShippingBundle\Tools\FilteredDatagridRouteHelper'
        public: true
        arguments:
            - '%oro_shipping.rule_grid_route_name%'
            - '%oro_shipping.rule_grid_name%'
            - '@oro_datagrid.helper.route'

    oro_shipping.provider.shipping_methods_choices:
        class: Oro\Bundle\ShippingBundle\Provider\ShippingMethodChoicesProvider
        public: true
        arguments:
            - '@oro_shipping.shipping_method_provider'
        calls:
            - ['setDoctrineHelper', ['@oro_entity.doctrine_helper']]

    oro_shipping.checker.shipping_method_enabled:
        class: 'Oro\Bundle\ShippingBundle\Checker\ShippingMethodEnabledByIdentifierChecker'
        arguments:
            - '@oro_shipping.shipping_method_provider'

    oro_shipping.checker.shipping_rule_enabled:
        class: 'Oro\Bundle\ShippingBundle\Checker\ShippingRuleEnabledChecker'
        arguments:
            - '@oro_shipping.checker.shipping_method_enabled'

    oro_shipping.method_disable_handler.basic:
        class: 'Oro\Bundle\ShippingBundle\Method\Handler\BasicShippingMethodDisableHandler'
        public: false

    oro_shipping.method_disable_handler.decorator:
        class: 'Oro\Bundle\ShippingBundle\Method\Handler\RulesShippingMethodDisableHandlerDecorator'
        decorates: oro_shipping.method_disable_handler.basic
        decoration_priority: 255
        public: false
        arguments:
            - '@.inner'
            - '@oro_shipping.repository.shipping_methods_configs_rule'
            - '@oro_shipping.shipping_method_provider'

    oro_shipping.repository.shipping_method_config:
        alias: Oro\Bundle\ShippingBundle\Entity\Repository\ShippingMethodConfigRepository

    Oro\Bundle\ShippingBundle\Entity\Repository\ShippingMethodConfigRepository:
        parent: oro_entity.abstract_repository
        arguments:
            - 'Oro\Bundle\ShippingBundle\Entity\ShippingMethodConfig'
        tags:
            - { name: doctrine.repository_service }

    oro_shipping.method.event.dispatcher.method_renaming:
        class: 'Oro\Bundle\ShippingBundle\Method\Event\BasicMethodRenamingEventDispatcher'
        public: true
        arguments:
            - '@event_dispatcher'

    oro_shipping.method_validator.result_factory_common_parameter_bag:
        class: 'Oro\Bundle\ShippingBundle\Method\Validator\Result\Factory\Common\ParameterBag\ParameterBagCommonShippingMethodValidatorResultFactory'

    oro_shipping.method_validator.result_error_factory_common_parameter_bag:
        class: 'Oro\Bundle\ShippingBundle\Method\Validator\Result\Error\Factory\Common\ParameterBag\ParameterBagCommonShippingMethodValidatorResultErrorFactory'

    oro_shipping.method_validator_result_error_collection_builder_common:
        class: 'Oro\Bundle\ShippingBundle\Method\Validator\Result\Error\Collection\Builder\Common\Doctrine\DoctrineCommonShippingMethodValidatorResultErrorCollectionBuilder'

    oro_shipping.method_validator.main:
        parent: oro_shipping.method_validator.basic

    oro_shipping.method_validator.basic:
        class: 'Oro\Bundle\ShippingBundle\Method\Validator\Basic\BasicShippingMethodValidator'
        arguments:
            - '@oro_shipping.method_validator.result_factory_common_parameter_bag'

    oro_shipping.method_validator.decorator.basic_enabled_shipping_methods_by_rules:
        class: 'Oro\Bundle\ShippingBundle\Method\Validator\EnabledShippingMethodsByRules\EnabledShippingMethodsByRulesShippingMethodValidatorDecorator'
        public: false
        decorates: oro_shipping.method_validator.main
        arguments:
            - '@.inner'
            - '@oro_shipping.method_validator.result_error_factory_common_parameter_bag'
            - '@oro_shipping.method.provider.type.non_deletable.shipping_rules_method_type_identifier_provider'
            - '@oro_shipping.method.provider.type.label.provider'
            - '@translator'
            - '@logger'

    oro_shipping.method.integration_channel_loader:
        class: 'Oro\Bundle\ShippingBundle\Method\Provider\Integration\ChannelLoader'
        arguments:
            - '@doctrine'
            - '@security.authorization_checker'
            - '@oro_security.token_accessor'

    oro_shipping.method.loader:
        class: 'Oro\Bundle\ShippingBundle\Method\Provider\Integration\ShippingMethodLoader'
        arguments:
            - '@oro_shipping.method.integration_channel_loader'
            - '@oro_shipping.method.loader.memory_cache'
            - '@oro_shipping.method.org_provider'
            - '@oro_security.token_accessor'

    oro_shipping.method.loader.memory_cache:
        parent: oro.cache.provider.memory_cache

    oro_shipping.method.org_provider:
        class: 'Oro\Bundle\ShippingBundle\Method\Provider\Integration\ShippingMethodOrganizationProvider'

    oro_shipping.method.provider.type.label.provider:
        class: 'Oro\Bundle\ShippingBundle\Method\Provider\Label\Type\BasicMethodTypeLabelsProvider'
        arguments:
            - '@oro_shipping.shipping_method_provider'

    oro_shipping.method.provider.type.non_deletable.shipping_rules_method_type_identifier_provider:
        class: 'Oro\Bundle\ShippingBundle\Method\Provider\Type\NonDeletable\ShippingRulesNonDeletableMethodTypeIdentifiersProvider'
        arguments:
            - '@oro_shipping.repository.shipping_method_type_config'

    oro_shipping.provider.shipping_method_icon:
        class: 'Oro\Bundle\ShippingBundle\Provider\ShippingMethodIconProvider'
        arguments:
            - '@oro_shipping.shipping_method_provider'
            - '@logger'

    oro_shipping.rule_filtration.basic_service:
        class: 'Oro\Bundle\ShippingBundle\RuleFiltration\Basic\BasicMethodsConfigsRulesFiltrationService'
        arguments:
            - '@oro_rule.rule_filtration.service'
            - '@oro_shipping.converter.shipping_context_to_rule_values'

    oro_shipping.provider.methods_configs_rules.by_context.basic:
        class: 'Oro\Bundle\ShippingBundle\Provider\MethodsConfigsRule\Context\Basic\BasicMethodsConfigsRulesByContextProvider'
        public: false
        arguments:
            - '@oro_shipping.rule_filtration.basic_service'
            - '@doctrine'
            - '@oro_shipping.method.org_provider'

    oro_shipping.enabled_rule_filtration.basic_service:
        class: 'Oro\Bundle\ShippingBundle\RuleFiltration\Basic\BasicMethodsConfigsRulesFiltrationService'
        arguments:
            - '@oro_rule.enabled_rule_filtration.service'
            - '@oro_shipping.converter.shipping_context_to_rule_values'

    oro_shipping.provider.methods_configs_rules.by_context_required_parameters:
        class: 'Oro\Bundle\ShippingBundle\Provider\MethodsConfigsRule\Context\RegardlessDestination\RegardlessDestinationMethodsConfigsRulesByContextProvider'
        public: false
        arguments:
            - '@oro_shipping.enabled_rule_filtration.basic_service'
            - '@doctrine'
            - '@oro_shipping.method.org_provider'

    oro_shipping.configuration_search_provider.shipping_origin:
        class: 'Oro\Bundle\ShippingBundle\Provider\ShippingOriginConfigSearchProvider'
        public: false
        arguments:
            - '@translator'
            - '@oro_config.manager'
        tags:
            - { name: oro_config.configuration_search_provider }

    oro_shipping.factory.shipping_package_options:
        class: 'Oro\Bundle\ShippingBundle\Factory\ShippingPackageOptionsFactory'
        public: false

    oro_shipping.multi_shipping.method_provider:
        class: Oro\Bundle\ShippingBundle\Method\MultiShippingMethodProvider
        arguments:
            - '@oro_shipping.method.loader.memory_cache'
            - '@translator'
            - '@oro_currency.rounding.price_rounding_service'
            - '@oro_shipping.multi_shipping.cost_provider'
        tags:
            - { name: oro_shipping_method_provider }

    oro_shipping.multi_shipping.cost_provider:
        class: Oro\Bundle\ShippingBundle\Provider\MultiShippingCostProvider
        arguments:
            - '@oro_checkout.provider.multi_shipping.single_line_item_shipping_price'
