<?php
namespace Litespeed\Litemage\Model\CachePurge;

/**
 * Interceptor class for @see \Litespeed\Litemage\Model\CachePurge
 */
class Interceptor extends \Litespeed\Litemage\Model\CachePurge implements \Magento\Framework\Interception\InterceptorInterface
{
    use \Magento\Framework\Interception\Interceptor;

    public function __construct(\Litespeed\Litemage\Model\Config $config, \Litespeed\Litemage\Helper\Data $helper)
    {
        $this->___init();
        parent::__construct($config, $helper);
    }

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

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

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

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

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

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

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

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

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

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

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