<?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"
>
    <parameters>
        <parameter key="sylius.form.type.product_review.validation_groups" type="collection">
            <parameter>sylius</parameter>
        </parameter>
        <parameter key="sylius.form.type.admin.password_reset_request.validation_groups" type="collection">
            <parameter>sylius</parameter>
        </parameter>
        <parameter key="sylius.form.type.admin.reset_password.validation_groups" type="collection">
            <parameter>sylius</parameter>
        </parameter>
    </parameters>

    <services>
        <service id="sylius_admin.form.type.request_password_reset" class="Sylius\Bundle\AdminBundle\Form\RequestPasswordResetType">
            <argument>%sylius.form.type.admin.password_reset_request.validation_groups%</argument>
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.reset_password" class="Sylius\Bundle\AdminBundle\Form\Type\ResetPasswordType">
            <argument>%sylius.form.type.admin.reset_password.validation_groups%</argument>
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.grid_filter.ux_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\Grid\Filter\UxAutocompleteFilterType" >
            <tag name="form.type" />
            <tag name="ux.entity_autocomplete_field" />
        </service>

        <service id="sylius_admin.form.type.grid_filter.ux_translatable_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\Grid\Filter\UxTranslatableAutocompleteFilterType" >
            <tag name="form.type" />
            <tag name="ux.entity_autocomplete_field" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion" class="Sylius\Bundle\AdminBundle\Form\Extension\PromotionTypeExtension">
            <argument>%sylius.promotion_rules%</argument>
            <argument>%sylius.promotion_actions%</argument>
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion.promotion_action" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\PromotionActionTypeExtension">
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion_action.product_filter_configuration" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\Action\ProductFilterConfigurationTypeExtension">
            <argument type="service" id="sylius.form.type.data_transformer.products_to_codes" />
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion_action.taxon_filter_configuration" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\Action\TaxonFilterConfigurationTypeExtension" >
            <argument type="service" id="sylius.form.type.data_transformer.taxons_to_codes" />
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion.promotion_rule" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\PromotionRuleTypeExtension" >
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion_rule.contains_product_configuration" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\Rule\ContainsProductConfigurationTypeExtension">
            <argument type="service" id="sylius.repository.product" />
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion_rule.has_taxon_configuration" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\Rule\HasTaxonConfigurationTypeExtension">
            <argument type="service" id="sylius.form.type.data_transformer.taxons_to_codes" />
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.extension.type.promotion_rule.total_of_items_from_taxon_configuration" class="Sylius\Bundle\AdminBundle\Form\Extension\Promotion\Rule\TotalOfItemsFromTaxonConfigurationTypeExtension">
            <argument type="service" id="sylius.repository.taxon" />
            <tag name="form.type_extension" />
        </service>

        <service id="sylius_admin.form.type.admin_user" class="Sylius\Bundle\AdminBundle\Form\Type\AdminUserType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.address" class="Sylius\Bundle\AdminBundle\Form\Type\AddressType" >
            <argument type="service" id="sylius.repository.country" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.catalog_promotion" class="Sylius\Bundle\AdminBundle\Form\Type\CatalogPromotionType" >
            <argument>%sylius.catalog_promotion.scopes_types%</argument>
            <argument>%sylius.catalog_promotion.actions_types%</argument>
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.catalog_promotion_action" class="Sylius\Bundle\AdminBundle\Form\Type\CatalogPromotionActionType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.catalog_promotion_scope" class="Sylius\Bundle\AdminBundle\Form\Type\CatalogPromotionScopeType" >
            <argument type="tagged_iterator" tag="sylius_admin.catalog_promotion.scope_configuration_type" index-by="key" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.catalog_promotion_scope.for_products_scope_configuration" class="Sylius\Bundle\AdminBundle\Form\Type\CatalogPromotionScope\ForProductsScopeConfigurationType">
            <argument type="service" id="sylius.form.type.data_transformer.products_to_codes" />
            <tag name="sylius_admin.catalog_promotion.scope_configuration_type" key="%sylius.catalog_promotion.scope.for_products%" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.catalog_promotion_scope.for_taxons_scope_configuration" class="Sylius\Bundle\AdminBundle\Form\Type\CatalogPromotionScope\ForTaxonsScopeConfigurationType">
            <argument type="service" id="sylius.form.type.data_transformer.taxons_to_codes" />
            <tag name="sylius_admin.catalog_promotion.scope_configuration_type" key="%sylius.catalog_promotion.scope.for_taxons%" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.catalog_promotion_scope.for_variants_scope_configuration" class="Sylius\Bundle\AdminBundle\Form\Type\CatalogPromotionScope\ForVariantsScopeConfigurationType">
            <argument type="service" id="sylius.form.type.data_transformer.product_variants_to_codes" />
            <tag name="sylius_admin.catalog_promotion.scope_configuration_type" key="%sylius.catalog_promotion.scope.for_variants%" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.channel" class="Sylius\Bundle\AdminBundle\Form\Type\ChannelType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.channel_price_history_config" class="Sylius\Bundle\AdminBundle\Form\Type\ChannelPriceHistoryConfigType" >
            <argument type="service" id="sylius.repository.taxon" />
            <argument type="service">
                <service class="\Symfony\Component\Form\Extension\Core\DataMapper\DataMapper" />
            </argument>
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.country" class="Sylius\Bundle\AdminBundle\Form\Type\CountryType" >
            <argument type="service" id="sylius.repository.country" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.currency" class="Sylius\Bundle\AdminBundle\Form\Type\CurrencyType" >
            <argument type="service" id="sylius.repository.currency" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.customer" class="Sylius\Bundle\AdminBundle\Form\Type\CustomerType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.customer_group" class="Sylius\Bundle\AdminBundle\Form\Type\CustomerGroupType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.exchange_rate" class="Sylius\Bundle\AdminBundle\Form\Type\ExchangeRateType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.locale" class="Sylius\Bundle\AdminBundle\Form\Type\LocaleType" >
            <argument type="service" id="sylius.repository.locale" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.order" class="Sylius\Bundle\AdminBundle\Form\Type\OrderType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.payment_method" class="Sylius\Bundle\AdminBundle\Form\Type\PaymentMethodType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product" class="Sylius\Bundle\AdminBundle\Form\Type\ProductType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_association_type" class="Sylius\Bundle\AdminBundle\Form\Type\ProductAssociationTypeType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_attribute" class="Sylius\Bundle\AdminBundle\Form\Type\ProductAttributeType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_attribute_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\ProductAttributeAutocompleteType" >
            <argument>%sylius.model.product_attribute.class%</argument>
            <tag name="form.type" />
            <tag name="ux.entity_autocomplete_field" />
        </service>

        <service id="sylius_admin.form.type.product_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\ProductAutocompleteType" >
            <argument>%sylius.model.product.class%</argument>
            <tag name="form.type" />
            <tag name="ux.entity_autocomplete_field" />
        </service>

        <service id="sylius_admin.form.type.product_generate_variants" class="Sylius\Bundle\AdminBundle\Form\Type\ProductGenerateVariantsType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_image" class="Sylius\Bundle\AdminBundle\Form\Type\ProductImageType" >
            <argument>%sylius.model.product_variant.class%</argument>
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_option" class="Sylius\Bundle\AdminBundle\Form\Type\ProductOptionType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_review" class="Sylius\Bundle\AdminBundle\Form\Type\ProductReviewType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_variant" class="Sylius\Bundle\AdminBundle\Form\Type\ProductVariantType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.product_variant_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\ProductVariantAutocompleteType" >
            <argument>%sylius.model.product_variant.class%</argument>
            <tag name="form.type" />
            <tag name="ux.entity_autocomplete_field" />
        </service>

        <service id="sylius_admin.form.type.promotion" class="Sylius\Bundle\AdminBundle\Form\Type\PromotionType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.promotion_coupon" class="Sylius\Bundle\AdminBundle\Form\Type\PromotionCouponType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.promotion_coupon_generator_instruction" class="Sylius\Bundle\AdminBundle\Form\Type\PromotionCouponGeneratorInstructionType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.shipping_category" class="Sylius\Bundle\AdminBundle\Form\Type\ShippingCategoryType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.shipping_method" class="Sylius\Bundle\AdminBundle\Form\Type\ShippingMethodType" >
            <argument>%sylius.shipping_method_rules%</argument>
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.shipping_method_rule" class="Sylius\Bundle\AdminBundle\Form\Type\ShippingMethodRuleType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.shipment_ship" class="Sylius\Bundle\AdminBundle\Form\Type\ShipmentShipType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.shop_user" class="Sylius\Bundle\AdminBundle\Form\Type\ShopUserType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.tax_category" class="Sylius\Bundle\AdminBundle\Form\Type\TaxCategoryType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.taxon" class="Sylius\Bundle\AdminBundle\Form\Type\TaxonType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.taxon_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\TaxonAutocompleteType" >
            <argument>%sylius.model.taxon.class%</argument>
            <tag name="form.type" />
            <tag name="ux.entity_autocomplete_field" />
        </service>

        <service id="sylius_admin.form.type.tax_rate" class="Sylius\Bundle\AdminBundle\Form\Type\TaxRateType" >
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.translatable_autocomplete" class="Sylius\Bundle\AdminBundle\Form\Type\TranslatableAutocompleteType" >
            <argument type="service" id="sylius.context.locale" />
            <tag name="form.type" />
        </service>

        <service id="sylius_admin.form.type.zone" class="Sylius\Bundle\AdminBundle\Form\Type\ZoneType" >
            <tag name="form.type" />
        </service>
    </services>
</container>
