<?php

/**
 * Interface ShippingContents
 *
 * @package WPDesk\FS\TableRate
 */
namespace WPDesk\FS\TableRate\Rule\ShippingContents;

use WPDesk\FS\TableRate\Rule\ContentsFilter;
/**
 * Can provide shipping contents.
 */
interface ShippingContents
{
    /**
     * @param int $weight_rounding_precision .
     */
    public function set_weight_rounding_precision($weight_rounding_precision);
    /**
     * @return array
     */
    public function get_contents();
    /**
     * @return float
     */
    public function get_contents_cost();
    /**
     * @param bool $round .
     *
     * @return float
     */
    public function get_contents_weight($round = \true);
    /**
     * @return int
     */
    public function get_contents_items_count();
    /**
     * @param ContentsFilter $contents_filter .
     */
    public function filter_contents(ContentsFilter $contents_filter);
    /**
     * Returns non filtered contents.
     *
     * @return array
     */
    public function get_non_filtered_contents();
    /**
     * Reset contents to non filtered.
     *
     * @return array
     */
    public function reset_contents();
    /**
     * @return DestinationAddress
     */
    public function get_destination_address();
    /**
     * @return string
     */
    public function get_currency();
    public function set_meta(ShippingContentsMeta $meta);
    public function get_meta(string $key): ?ShippingContentsMeta;
    public function get_calculated_shipping_cost(): float;
    public function set_calculated_shipping_cost(float $calculated_shipping_cost): void;
}
