<?php
namespace Magento\Tax\Model\Calculation\TotalBaseCalculator;

/**
 * Interceptor class for @see \Magento\Tax\Model\Calculation\TotalBaseCalculator
 */
class Interceptor extends \Magento\Tax\Model\Calculation\TotalBaseCalculator implements \Magento\Framework\Interception\InterceptorInterface
{
    use \Magento\Framework\Interception\Interceptor;

    public function __construct(\Magento\Tax\Api\TaxClassManagementInterface $taxClassService, \Magento\Tax\Api\Data\TaxDetailsItemInterfaceFactory $taxDetailsItemDataObjectFactory, \Magento\Tax\Api\Data\AppliedTaxInterfaceFactory $appliedTaxDataObjectFactory, \Magento\Tax\Api\Data\AppliedTaxRateInterfaceFactory $appliedTaxRateDataObjectFactory, \Magento\Tax\Model\Calculation $calculationTool, \Magento\Tax\Model\Config $config, $storeId, ?\Magento\Framework\DataObject $addressRateRequest = null)
    {
        $this->___init();
        parent::__construct($taxClassService, $taxDetailsItemDataObjectFactory, $appliedTaxDataObjectFactory, $appliedTaxRateDataObjectFactory, $calculationTool, $config, $storeId, $addressRateRequest);
    }

    /**
     * {@inheritdoc}
     */
    public function setBillingAddress(\Magento\Customer\Api\Data\AddressInterface $billingAddress)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setBillingAddress');
        return $pluginInfo ? $this->___callPlugins('setBillingAddress', func_get_args(), $pluginInfo) : parent::setBillingAddress($billingAddress);
    }

    /**
     * {@inheritdoc}
     */
    public function setShippingAddress(\Magento\Customer\Api\Data\AddressInterface $shippingAddress)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setShippingAddress');
        return $pluginInfo ? $this->___callPlugins('setShippingAddress', func_get_args(), $pluginInfo) : parent::setShippingAddress($shippingAddress);
    }

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

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

    /**
     * {@inheritdoc}
     */
    public function calculate(\Magento\Tax\Api\Data\QuoteDetailsItemInterface $item, $quantity, $round = true)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'calculate');
        return $pluginInfo ? $this->___callPlugins('calculate', func_get_args(), $pluginInfo) : parent::calculate($item, $quantity, $round);
    }
}
