class {{ className }} extends {{ parentClass }}
{

    {% if fields is defined %}
    public function build($config)  // implementing an abstract function where you build your type
    {
        $config
        {% for field in fields %}
            ->addField({{ field|raw }})
        {% endfor %};
    }
    {% endif %}

    public function getName() {
        return "{{ name }}";
    }

    public function getUri() {
        {% if uri is not null %}
            return "{{ uri }}";
        {% else %}
            return null;
        {% endif %}
    }

    {% if types is defined %}
    public function getTypes()
    {
        return [
            {% for type in types %}
            {{ type }},
            {% endfor %}
        ];
    }

    public function resolveType($object)
    {

    }
    {% endif %}

    {% if description %}
    public function getDescription()
    {
        return "{{ description }}";
    }
    {% endif %}

}
