<?php

declare(strict_types=1);

namespace Australcode\Rewards\Domain\Earning;

/**
 * Resolves the per-product earning multiplier applied on top of the global rate
 * (Phase 1.b, FREE). Implementation reads product/category meta; this seam keeps
 * EarningCalculator unit-testable with a fake.
 *
 * Convention: a return of 0.0 means the product is excluded from earning.
 */
interface EarningOverrideResolver {

	/**
	 * Effective earning multiplier for a product: its own override, else the
	 * highest of its categories', else 1.0 (no override). 0.0 = excluded.
	 */
	public function multiplier_for_product( int $product_id ): float;
}
