<?php
/**
 * @package Hafenstudios\Wellenbrecher
 */

namespace Hafenstudios\Wellenbrecher\Engine;

defined( 'ABSPATH' ) || exit;

/**
 * Urteil der Score-Engine: Gesamtscore, Zone und der erklaerbare
 * Score-Breakdown (Produktversprechen Nr. 3: jede Entscheidung erklaerbar).
 */
class Verdict {

	public const ZONE_PASS       = 'pass';
	public const ZONE_QUARANTINE = 'quarantine';
	public const ZONE_BLOCK      = 'block';

	/**
	 * @param int                $score       Gesamtscore.
	 * @param string             $zone        pass|quarantine|block.
	 * @param array<string, int> $reasons     Breakdown rule_id => Punkte.
	 * @param float              $duration_ms Bewertungsdauer in Millisekunden.
	 */
	public function __construct(
		public readonly int $score,
		public readonly string $zone,
		public readonly array $reasons = array(),
		public readonly float $duration_ms = 0.0
	) {
	}

	/**
	 * Darf der Inhalt durch?
	 *
	 * @return bool
	 */
	public function passes(): bool {
		return self::ZONE_PASS === $this->zone;
	}
}
