<?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>
        <service id="api_platform.state_provider.locator" class="ApiPlatform\State\CallableProvider">
            <argument type="tagged_locator" tag="api_platform.state_provider" index-by="key" />
        </service>
        <service id="api_platform.state_provider" alias="api_platform.state_provider.locator" />

        <service id="api_platform.state_processor.locator" class="ApiPlatform\State\CallableProcessor">
            <argument type="tagged_locator" tag="api_platform.state_processor" index-by="key" />
        </service>

        <service id="api_platform.pagination" class="ApiPlatform\State\Pagination\Pagination">
            <argument>%api_platform.collection.pagination%</argument>
            <argument>%api_platform.graphql.collection.pagination%</argument>
        </service>
        <service id="ApiPlatform\State\Pagination\Pagination" alias="api_platform.pagination" />

        <service id="api_platform.serializer_locator" class="Symfony\Component\DependencyInjection\ServiceLocator">
            <tag name="container.service_locator" />
            <argument type="collection">
                <argument key="serializer" type="service" id="api_platform.serializer" />
            </argument>
        </service>
        <service id="api_platform.pagination_options" class="ApiPlatform\State\Pagination\PaginationOptions">
            <argument>%api_platform.collection.pagination.enabled%</argument>
            <argument>%api_platform.collection.pagination.page_parameter_name%</argument>
            <argument>%api_platform.collection.pagination.client_items_per_page%</argument>
            <argument>%api_platform.collection.pagination.items_per_page_parameter_name%</argument>
            <argument>%api_platform.collection.pagination.client_enabled%</argument>
            <argument>%api_platform.collection.pagination.enabled_parameter_name%</argument>
            <argument>%api_platform.collection.pagination.items_per_page%</argument>
            <argument>%api_platform.collection.pagination.maximum_items_per_page%</argument>
            <argument>%api_platform.collection.pagination.partial%</argument>
            <argument>%api_platform.collection.pagination.client_partial%</argument>
            <argument>%api_platform.collection.pagination.partial_parameter_name%</argument>
        </service>
        <service id="ApiPlatform\State\Pagination\PaginationOptions" alias="api_platform.pagination_options" />

        <service id="api_platform.state_provider.create" class="ApiPlatform\State\CreateProvider">
            <argument type="service" id="api_platform.state_provider.locator" />
            <argument type="service" id="api_platform.metadata.resource.metadata_collection_factory" />

            <tag name="api_platform.state_provider" key="ApiPlatform\State\CreateProvider" />
            <tag name="api_platform.state_provider" key="api_platform.state_provider.create" />
        </service>
        <service id="ApiPlatform\State\CreateProvider" alias="api_platform.state_provider.create" />

        <service id="api_platform.state_provider.object" class="ApiPlatform\State\ObjectProvider">
            <tag name="api_platform.state_provider" key="ApiPlatform\State\ObjectProvider" />
            <tag name="api_platform.state_provider" key="api_platform.state_provider.object" />
        </service>
        <service id="ApiPlatform\State\ObjectProvider" alias="api_platform.state_provider.object" />
        <service id="ApiPlatform\State\SerializerContextBuilderInterface" alias="api_platform.serializer.context_builder" />

        <service id="api_platform.state_provider.backed_enum" class="ApiPlatform\State\Provider\BackedEnumProvider">
            <tag name="api_platform.state_provider" key="ApiPlatform\State\Provider\BackedEnumProvider" />
            <tag name="api_platform.state_provider" key="api_platform.state_provider.backed_enum" />
        </service>
    </services>
</container>
