<?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\AvailabilityChecker;

use BookiFlex\Core\ValueObject\AccommodationSelection;
use BookiFlex\Core\ValueObject\GuestConfiguration;
use BookiFlex\Core\ValueObject\StayPeriod;

defined( 'ABSPATH' ) || exit;

/**
 * Checks which services are available for the specified parameters (accommodation type, rate plan, check-in/check-out dates).
 * Returns a list of available extra services.
 */
interface ExtraAvailabilityInterface
{
    public function checkExtraAvailability(
        StayPeriod $stayPeriod,
        AccommodationSelection $accommodationSelection,
        GuestConfiguration $guestConfiguration
    );
}
