<?php  namespace App\Contracts;  use App\Models\Discount; use App\Services\Orders\OrderProduct; use App\Services\Orders\Discounts\DiscountReturnObject; use App\Services\Orders\Discounts\DiscountAmountCalculator;  abstract class DiscountServiceInterface { 	protected DiscountReturnObject $itemObject; 	private DiscountAmountCalculator $discountAmountCalculator;  	public function __construct(DiscountReturnObject $discountReturnObject, DiscountAmountCalculator $discountAmountCalculator){}  	abstract public function apply(OrderProduct $item, mixed ...$arguments): ?DiscountReturnObject;  	abstract public function isDiscountApplicable(OrderProduct $item, mixed ...$arguments): Discount|bool|null;  	public function calculate(OrderProduct $item, Discount $discount): static{}  	public function details(Discount $discount): DiscountReturnObject{} }