<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="spec_gatherer" class="Civi\Api4\Service\Spec\SpecGatherer"/>

        <service id="schema_map_builder" class="Civi\Api4\Service\Schema\SchemaMapBuilder" public="false">
            <argument type="service" id="dispatcher" />
        </service>

        <service id="schema_map" class="Civi\Api4\Service\Schema\SchemaMap">
          <factory service="schema_map_builder" method="build"/>
        </service>

        <service id="joiner" class="Civi\Api4\Service\Schema\Joiner">
            <argument type="service" id="schema_map"/>
        </service>

        <service id="action_object_provider" class="Civi\Api4\Provider\ActionObjectProvider">
            <tag name="event_subscriber"/>
        </service>

        <service id="contact_creation.spec_provider" class="Civi\Api4\Service\Spec\Provider\ContactCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\ContactTypeCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\AddressCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service id="option_value_creation.spec_provider" class="Civi\Api4\Service\Spec\Provider\OptionValueCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\ActivityCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\ActionScheduleCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\EmailCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\PhoneCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\EventCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\NoteCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\ContributionCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\CustomGroupCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\GroupCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\NavigationCreationSpecProvider">
            <tag name="spec_provider"/>
        </service>

        <service id="custom_group.pre_creation.subscriber" class="Civi\Api4\Event\Subscriber\CustomGroupPreCreationSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="custom_field.pre_creation.subsciber" class="Civi\Api4\Event\Subscriber\CustomFieldPreCreationSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="option_value.pre_creation.subscriber" class="Civi\Api4\Event\Subscriber\OptionValuePreCreationSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="activity.pre_creation.subscriber" class="Civi\Api4\Event\Subscriber\ActivityPreCreationSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="contact.schema_map.subscriber" class="Civi\Api4\Event\Subscriber\ContactSchemaMapSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="activity.schema_map.subscriber" class="Civi\Api4\Event\Subscriber\ActivitySchemaMapSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="api4.permission_check.subscriber" class="Civi\Api4\Event\Subscriber\PermissionCheckSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="api4.required_fields.subscriber" class="Civi\Api4\Event\Subscriber\ValidateFieldsSubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service id="api4.post_select_query.subscriber" class="Civi\Api4\Event\Subscriber\PostSelectQuerySubscriber">
            <tag name="event_subscriber"/>
        </service>

        <service class="Civi\Api4\Service\Spec\Provider\CustomValueSpecProvider">
            <tag name="spec_provider"/>
        </service>

    </services>
</container>
