<?php
/**
* Interface AdditionalCost
*
* @package WPDesk\FS\TableRate\Rule\Cost
*/
namespace WPDesk\FS\TableRate\Rule\Cost;
use FSVendor\WPDesk\Forms\Field;
use FSVendor\WPDesk\Forms\FieldProvider;
use Psr\Log\LoggerInterface;
use WPDesk\FS\TableRate\Rule\ShippingContents\ShippingContents;
use FSVendor\WPDesk\FS\TableRate\Settings\MethodSettings;
/**
* Additional Costs Interface.
*/
interface AdditionalCost {
/**
* @return string
*/
public function get_based_on();
/**
* @return string
*/
public function get_name();
/**
* @param ShippingContents $shipping_contents .
* @param array $additional_cost_settings .
* @param LoggerInterface $logger .
*
* @return float
*/
public function calculate_cost( ShippingContents $shipping_contents, array $additional_cost_settings, LoggerInterface $logger );
/**
* @param ShippingContents $shipping_contents .
* @param array $additional_cost_settings .
* @param LoggerInterface $logger .
* @param MethodSettings $method_settings .
*
* @return float
*/
public function calculate_cost_with_method_settings( ShippingContents $shipping_contents, array $additional_cost_settings, LoggerInterface $logger, MethodSettings $method_settings );
}