<?xml version="1.0" ?>

<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>
        <!-- Services -->
        <service id="maxia.listing_variant_prices.config_service"
                 class="MaxiaListingVariantPrices\Service\ConfigService">
            <argument type="service" id="service_container" />
            <argument type="service" id="cache" />
            <argument type="service" id="models" />
            <argument type="service" id="dbal_connection" />
            <argument type="service" id="events" />
        </service>

        <service id="maxia.listing_variant_prices.list_product_variant_service"
                 class="MaxiaListingVariantPrices\Service\ListProductVariantService">
            <argument type="service" id="shopware_storefront.list_product_service"/>
            <argument type="service" id="maxia.listing_variant_prices.inactive_list_product_service"/>
            <argument type="service" id="shopware_storefront.configurator_service"/>
            <argument type="service" id="dbal_connection"/>
        </service>

        <service id="maxia.listing_variant_prices.list_product_with_variants_service"
                 class="MaxiaListingVariantPrices\Service\ListProductWithVariantsService">
            <argument type="service" id="service_container" />
            <argument type="service" id="config" />
            <argument type="service" id="shopware_storefront.list_product_service"/>
            <argument type="service" id="maxia.listing_variant_prices.list_product_variant_service"/>
            <argument type="service" id="shopware_storefront.configurator_service"/>
            <argument type="service" id="shopware_storefront.price_calculation_service"/>
            <argument type="service" id="dbal_connection"/>
            <argument type="service" id="config" />
        </service>

        <service id="maxia.listing_variant_prices.inactive_list_product_service"
                 class="Shopware\Bundle\StoreFrontBundle\Service\Core\ListProductService">
            <argument type="service" id="maxia.listing_variant_prices.inactive_list_product_gateway"/>
            <argument type="service" id="shopware_storefront.graduated_prices_service"/>
            <argument type="service" id="shopware_storefront.cheapest_price_service"/>
            <argument type="service" id="shopware_storefront.price_calculation_service"/>
            <argument type="service" id="shopware_storefront.media_service"/>
            <argument type="service" id="shopware_storefront.marketing_service"/>
            <argument type="service" id="shopware_storefront.vote_service"/>
            <argument type="service" id="shopware_storefront.category_service" />
            <argument type="service" id="config" />
            <argument type="service" id="shopware_storefront.additional_text_service"/>
        </service>

        <service id="maxia.listing_variant_prices.inactive_list_product_gateway"
                 class="MaxiaListingVariantPrices\Components\Gateway\InactiveListProductGateway"
                 parent="shopware_storefront.list_product_gateway">
        </service>

        <service id="maxia.listing_variant_prices.configurator_service"
                 class="MaxiaListingVariantPrices\Service\ConfiguratorService">
            <argument type="service" id="shopware_storefront.product_configuration_gateway"/>
            <argument type="service" id="shopware_storefront.configurator_gateway"/>
        </service>

        <service id="maxia.listing_variant_prices.sorting_service"
                 class="MaxiaListingVariantPrices\Service\SortingService">
            <argument type="service" id="service_container" />
        </service>

        <service id="maxia.listing_variant_prices.struct_converter"
                 class="MaxiaListingVariantPrices\Components\StructConverter">
            <argument type="service" id="maxia.listing_variant_prices.config_service"/>
            <argument type="service" id="maxia.listing_variant_prices.sorting_service"/>
            <argument type="service" id="shopware_storefront.context_service" />
            <argument type="service" id="legacy_struct_converter"/>
            <argument type="service" id="events" />
            <argument type="service" id="config" />
        </service>

        <!-- Subscribers -->
        <service id="maxia.listing_variant_prices.subscriber.frontend"
                 class="MaxiaListingVariantPrices\Subscriber\Frontend">
            <argument type="service" id="service_container" />
            <argument type="service" id="maxia.listing_variant_prices.config_service"/>
            <argument type="service" id="maxia.listing_variant_prices.struct_converter"/>
            <argument type="service" id="maxia.listing_variant_prices.list_product_with_variants_service"/>
            <argument type="service" id="shopware_storefront.context_service" />
            <argument type="service" id="pluginlogger" />
            <tag name="shopware.event_subscriber" />
        </service>

        <service id="maxia.listing_variant_prices.subscriber.backend"
                 class="MaxiaListingVariantPrices\Subscriber\Backend">
            <tag name="shopware.event_subscriber" />
        </service>

        <service id="maxia.listing_variant_prices.subscriber.assets"
                 class="MaxiaListingVariantPrices\Subscriber\Assets">
            <tag name="shopware.event_subscriber" />
        </service>

        <!-- Compatibility -->
        <service id="maxia.listing_variant_prices.subscriber.compatibility.prems_discount_category"
                 class="MaxiaListingVariantPrices\Subscriber\Compatibility\PremsDiscountCategory">
            <argument type="service" id="service_container" />
            <argument type="service" id="pluginlogger" />
            <tag name="shopware.event_subscriber" />
        </service>

        <service id="maxia.listing_variant_prices.subscriber.compatibility.neti_access_manager"
                 class="MaxiaListingVariantPrices\Subscriber\Compatibility\NetiAccessManager">
            <argument type="service" id="service_container" />
            <argument type="service" id="pluginlogger" />
            <tag name="shopware.event_subscriber" />
        </service>

        <service id="maxia.listing_variant_prices.subscriber.compatibility.swag_hide_prices"
                 class="MaxiaListingVariantPrices\Subscriber\Compatibility\SwagHidePrices">
            <argument type="service" id="service_container" />
            <argument type="service" id="pluginlogger" />
            <tag name="shopware.event_subscriber" />
        </service>

        <service id="maxia.listing_variant_prices.subscriber.compatibility.swp_packing_units"
                 class="MaxiaListingVariantPrices\Subscriber\Compatibility\SwpPackingUnits">
            <argument type="service" id="service_container" />
            <argument type="service" id="pluginlogger" />
            <tag name="shopware.event_subscriber" />
        </service>
    </services>
</container>