<?php
namespace Amasty\ElasticSearch\Model\Indexer\Data\Product\ProductDataMapper;

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

    public function __construct(\Amasty\ElasticSearch\Model\Indexer\Data\Product\AttributeDataProvider $attributeDataProvider, \Amasty\ElasticSearch\Model\ResourceModel\ConfigurableResolver $configurableResolver, array $excludedAttributes = [], ?\Amasty\ElasticSearch\Model\Indexer\Data\Product\Attribute\OptionsProvider $attributeOptionsProvider = null)
    {
        $this->___init();
        parent::__construct($attributeDataProvider, $configurableResolver, $excludedAttributes, $attributeOptionsProvider);
    }

    /**
     * {@inheritdoc}
     */
    public function map(array $documentData, $storeId, array $context = [])
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'map');
        return $pluginInfo ? $this->___callPlugins('map', func_get_args(), $pluginInfo) : parent::map($documentData, $storeId, $context);
    }

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

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

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