<?php
/**
 * BookiFlex Core
 *
 * @package    BookiFlex
 * @subpackage Core
 * @author     BookiFlex
 * @copyright  Copyright (c) 2025 BookiFlex
 * @license    GPL-2.0-or-later
 *
 * @link       https://bookiflex.com
 */

declare(strict_types=1);

namespace BookiFlex\Core\Contract\CancellationPolicy;

use BookiFlex\Core\Model\Reservation\Reservation;

defined( 'ABSPATH' ) || exit;

interface CancellationPolicyInterface
{
    public function calculatePenalties(Reservation $reservation, \DateTimeImmutable $cancellationDate): array; // Returns list of penalties (Penalty objects) to be applied.
    public function getCancellationConsequences(\DateTimeImmutable $checkInDateTime): array; // Returns text description of cancellation consequences (for user display).
}
