<?php
namespace Anowave\Ec\Model\Api\Measurement\Protocol;

/**
 * Interceptor class for @see \Anowave\Ec\Model\Api\Measurement\Protocol
 */
class Interceptor extends \Anowave\Ec\Model\Api\Measurement\Protocol implements \Magento\Framework\Interception\InterceptorInterface
{
    use \Magento\Framework\Interception\Interceptor;

    public function __construct(\Anowave\Ec\Helper\Data $helper, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\ProductFactory $productFactory, \Magento\Catalog\Model\CategoryRepository $categoryRepository, \Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Framework\Session\SessionManagerInterface $session, \Magento\Config\Model\ResourceModel\Config $resourceConfig, \Magento\Catalog\Model\ResourceModel\Eav\AttributeFactory $attribute, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Anowave\Ec\Model\ResourceModel\Transaction\CollectionFactory $transactionFactory, \Anowave\Ec\Model\Random $random, \Anowave\Ec\Model\Cookie\Analytics $cookie, \Anowave\Ec\Model\Cookie\AnalyticsSession $cookie_session, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory)
    {
        $this->___init();
        parent::__construct($helper, $storeManager, $productFactory, $categoryRepository, $orderFactory, $session, $resourceConfig, $attribute, $scopeConfig, $transactionFactory, $random, $cookie, $cookie_session, $productCollectionFactory);
    }

    /**
     * {@inheritdoc}
     */
    public function purchase(\Magento\Sales\Model\Order $order, $reverse = false)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'purchase');
        return $pluginInfo ? $this->___callPlugins('purchase', func_get_args(), $pluginInfo) : parent::purchase($order, $reverse);
    }

    /**
     * {@inheritdoc}
     */
    public function getUA(?\Magento\Sales\Model\Order $order = null)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getUA');
        return $pluginInfo ? $this->___callPlugins('getUA', func_get_args(), $pluginInfo) : parent::getUA($order);
    }

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