<?php
namespace Amasty\ElasticSearch\Model\Indexer\Structure\EntityBuilder\Product;

/**
 * Interceptor class for @see \Amasty\ElasticSearch\Model\Indexer\Structure\EntityBuilder\Product
 */
class Interceptor extends \Amasty\ElasticSearch\Model\Indexer\Structure\EntityBuilder\Product implements \Magento\Framework\Interception\InterceptorInterface
{
    use \Magento\Framework\Interception\Interceptor;

    public function __construct(\Magento\Eav\Model\Config $eavConfig, \Amasty\ElasticSearch\Model\Config $configProvider, \Magento\Customer\Model\ResourceModel\Group\CollectionFactory $customerGroupCollectionFactory, ?\Amasty\ElasticSearch\Utils\AttributeUtil $attributeUtil = null)
    {
        $this->___init();
        parent::__construct($eavConfig, $configProvider, $customerGroupCollectionFactory, $attributeUtil);
    }

    /**
     * {@inheritdoc}
     */
    public function buildEntityFields()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'buildEntityFields');
        return $pluginInfo ? $this->___callPlugins('buildEntityFields', func_get_args(), $pluginInfo) : parent::buildEntityFields();
    }

    /**
     * {@inheritdoc}
     */
    public function getAttributeType(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getAttributeType');
        return $pluginInfo ? $this->___callPlugins('getAttributeType', func_get_args(), $pluginInfo) : parent::getAttributeType($attribute);
    }

    /**
     * {@inheritdoc}
     */
    public function getSortFieldType(\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute): string
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getSortFieldType');
        return $pluginInfo ? $this->___callPlugins('getSortFieldType', func_get_args(), $pluginInfo) : parent::getSortFieldType($attribute);
    }
}
