<?xml version="1.0" encoding="UTF-8" ?>

<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="fos_elastica.repository_manager" class="FOS\ElasticaBundle\Manager\RepositoryManager" />

        <service id="fos_elastica.alias_processor" class="FOS\ElasticaBundle\Index\AliasProcessor" />

        <service id="fos_elastica.indexable" class="FOS\ElasticaBundle\Provider\Indexable">
            <argument type="collection" /> <!-- array of indexable callbacks keyed by type name -->
        </service>

        <service id="fos_elastica.index_prototype" class="FOS\ElasticaBundle\Elastica\Index" abstract="true">
            <argument /> <!-- index name -->
            <!-- tagged with fos_elastica.index in the Extension -->
        </service>

        <service id="fos_elastica.index_template_prototype" class="FOS\ElasticaBundle\Elastica\IndexTemplate" abstract="true">
            <argument /> <!-- index template name -->
            <!-- tagged with fos_elastica.index_template in the Extension -->
        </service>

        <service id="fos_elastica.index_manager" class="FOS\ElasticaBundle\Index\IndexManager">
            <argument /> <!-- indexes -->
            <argument type="service" id="fos_elastica.index" /> <!-- default index -->
        </service>
        <service id="FOS\ElasticaBundle\Index\IndexManager" alias="fos_elastica.index_manager" />

        <service id="fos_elastica.index_template_manager" class="FOS\ElasticaBundle\Index\IndexTemplateManager">
            <argument /> <!-- indexes templates -->
        </service>
        <service id="FOS\ElasticaBundle\Index\IndexTemplateManager" alias="fos_elastica.index_template_manager" />

        <service id="fos_elastica.resetter" class="FOS\ElasticaBundle\Index\Resetter">
            <argument type="service" id="fos_elastica.config_manager" />
            <argument type="service" id="fos_elastica.index_manager" />
            <argument type="service" id="fos_elastica.alias_processor" />
            <argument type="service" id="fos_elastica.mapping_builder" />
            <argument type="service" id="event_dispatcher" />
        </service>
        <service id="FOS\ElasticaBundle\Index\Resetter" alias="fos_elastica.resetter" />

        <service id="fos_elastica.template_resetter" class="FOS\ElasticaBundle\Index\TemplateResetter">
            <argument type="service" id="fos_elastica.config_manager.index_templates" />
            <argument type="service" id="fos_elastica.mapping_builder" />
            <argument type="service" id="fos_elastica.client" />
            <argument type="service" id="fos_elastica.index_template_manager" />
        </service>
        <service id="FOS\ElasticaBundle\Index\TemplateResetter" alias="fos_elastica.template_resetter" />

        <!-- Abstract definition for all finders. -->
        <service id="fos_elastica.finder" class="FOS\ElasticaBundle\Finder\TransformedFinder" abstract="true">
            <argument /> <!-- searchable -->
            <argument /> <!-- transformer -->
        </service>
    </services>
</container>
