<?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">

    <parameters>
        <!-- .class parameters are deprecated and will be removed in 2.0 -->
        <parameter key="libphonenumber.phone_number_util.class">libphonenumber\PhoneNumberUtil</parameter>
        <parameter key="libphonenumber.phone_number_offline_geocoder.class">libphonenumber\geocoding\PhoneNumberOfflineGeocoder</parameter>
        <parameter key="libphonenumber.short_number_info.class">libphonenumber\ShortNumberInfo</parameter>
        <parameter key="libphonenumber.phone_number_to_carrier_mapper.class">libphonenumber\PhoneNumberToCarrierMapper</parameter>
        <parameter key="libphonenumber.phone_number_to_time_zones_mapper.class">libphonenumber\PhoneNumberToTimeZonesMapper</parameter>
        <parameter key="misd_phone_number.templating.helper.class">Misd\PhoneNumberBundle\Templating\Helper\PhoneNumberHelper</parameter>
        <parameter key="misd_phone_number.templating.helper.format.class">%misd_phone_number.templating.helper.class%</parameter>
        <parameter key="misd_phone_number.twig.extension.class">Misd\PhoneNumberBundle\Twig\Extension\PhoneNumberHelperExtension</parameter>
        <parameter key="misd_phone_number.twig.extension.format.class">%misd_phone_number.twig.extension.class%</parameter>
        <parameter key="misd_phone_number.form.type.class">Misd\PhoneNumberBundle\Form\Type\PhoneNumberType</parameter>
        <parameter key="misd_phone_number.serializer.handler.class">Misd\PhoneNumberBundle\Serializer\Handler\PhoneNumberHandler</parameter>
    </parameters>

    <services>

        <service id="libphonenumber.phone_number_util" class="libphonenumber\PhoneNumberUtil"/>
        <service id="libphonenumber\PhoneNumberUtil" alias="libphonenumber.phone_number_util"/>

        <service id="libphonenumber.phone_number_offline_geocoder" class="libphonenumber\geocoding\PhoneNumberOfflineGeocoder"/>
        <service id="libphonenumber\geocoding\PhoneNumberOfflineGeocoder" alias="libphonenumber.phone_number_offline_geocoder"/>

        <service id="libphonenumber.short_number_info" class="libphonenumber\ShortNumberInfo"/>
        <service id="libphonenumber\ShortNumberInfo" alias="libphonenumber.short_number_info"/>

        <service id="libphonenumber.phone_number_to_carrier_mapper" class="libphonenumber\PhoneNumberToCarrierMapper"/>
        <service id="libphonenumber\PhoneNumberToCarrierMapper" alias="libphonenumber.phone_number_to_carrier_mapper"/>

        <service id="libphonenumber.phone_number_to_time_zones_mapper" class="libphonenumber\PhoneNumberToTimeZonesMapper"/>
        <service id="libphonenumber\PhoneNumberToTimeZonesMapper" alias="libphonenumber.phone_number_to_time_zones_mapper"/>

        <service id="misd_phone_number.templating.helper"
                 class="Misd\PhoneNumberBundle\Templating\Helper\PhoneNumberHelper">
            <tag name="templating.helper" alias="phone_number_helper"/>
            <!-- phone_number_format is deprecated and will be removed in 2.0 (use phone_number_helper instead) -->
            <tag name="templating.helper" alias="phone_number_format"/>
            <argument type="service" id="libphonenumber.phone_number_util"/>
        </service>
        <service id="Misd\PhoneNumberBundle\Templating\Helper\PhoneNumberHelper" alias="misd_phone_number.templating.helper"/>

        <service id="misd_phone_number.twig.extension.format" class="Misd\PhoneNumberBundle\Twig\Extension\PhoneNumberHelperExtension"
                 public="false">
            <tag name="twig.extension"/>
            <argument type="service" id="misd_phone_number.templating.helper"/>
        </service>
        <service id="Misd\PhoneNumberBundle\Twig\Extension\PhoneNumberHelperExtension" alias="misd_phone_number.twig.extension.format"/>

        <service id="misd_phone_number.form.type" class="Misd\PhoneNumberBundle\Form\Type\PhoneNumberType">
            <tag name="form.type" alias="tel"/>
        </service>
        <service id="Misd\PhoneNumberBundle\Form\Type\PhoneNumberType" alias="misd_phone_number.form.type"/>

        <service id="misd_phone_number.serializer.handler" class="Misd\PhoneNumberBundle\Serializer\Handler\PhoneNumberHandler">
            <tag name="jms_serializer.handler" type="libphonenumber\PhoneNumber" direction="serialization"
                 format="json" method="serializePhoneNumber"/>
            <tag name="jms_serializer.handler" type="libphonenumber\PhoneNumber" direction="deserialization"
                 format="json" method="deserializePhoneNumberFromJson"/>
            <tag name="jms_serializer.handler" type="libphonenumber\PhoneNumber" direction="serialization"
                 format="xml" method="serializePhoneNumber"/>
            <tag name="jms_serializer.handler" type="libphonenumber\PhoneNumber" direction="deserialization"
                 format="xml" method="deserializePhoneNumberFromXml"/>
            <tag name="jms_serializer.handler" type="libphonenumber\PhoneNumber" direction="serialization"
                 format="yml" method="serializePhoneNumber"/>
            <argument type="service" id="libphonenumber.phone_number_util"/>
        </service>
        <service id="Misd\PhoneNumberBundle\Serializer\Handler\PhoneNumberHandler" alias="misd_phone_number.serializer.handler"/>

        <service id="misd_phone_number.serializer.normalizer" class="Misd\PhoneNumberBundle\Serializer\Normalizer\PhoneNumberNormalizer">
            <tag name="serializer.normalizer" />
            <argument type="service" id="libphonenumber.phone_number_util" />
        </service>
        <service id="Misd\PhoneNumberBundle\Serializer\Normalizer\PhoneNumberNormalizer" alias="misd_phone_number.serializer.normalizer"/>
    </services>

</container>
