<?php

namespace App\Interfaces;

use Illuminate\Support\Collection;

/**
 * @deprecated - rename to productItem if still required
 */
interface ProductSupplier
{
	/**
	 * Return the traffic inclusion with the service
	 *
	 * @return mixed
	 */
	public function allowance(): Collection;

	/**
	 * Render the traffic inclusion as a string
	 *
	 * @return mixed
	 */
	public function allowance_string(): string;

	/**
	 * Return the contract term for this product when sold as a service
	 *
	 * @return int Months
	 */
	public function getContractTermAttribute(): int;

	/**
	 * Return the product cost
	 *
	 * @return float
	 */
	public function getCostAttribute(): float;

	/**
	 * Return the supplier class
	 * If there is a model relationship return:
	 *   return $this->getRelationValue('supplier');
	 * otherwise return a stdClass with name
	 *
	 * @return mixed
	 */
	public function getSupplierAttribute();

	/**
	 * Does this offering capture usage information
	 *
	 * @return bool
	 */
	public function hasUsage(): bool;
}