<?php

namespace App\Modules\Booking\Domain;

use App\Modules\Shared\Domain\DateEnd;
use App\Modules\Shared\Domain\DateStart;
use App\Modules\Shared\Domain\Functional\Either;
use App\Modules\Shared\Domain\Storage\Criteria\StorageCriteria;

interface BookingRepository
{
    public function searchConfirm(DateStart $dateStart, DateEnd $dateEnd, string $orderBy);
    public function searchCampPax();
    public function searchConfirmExcel(DateStart $dateStart, DateEnd $dateEnd, string $orderBy);
    public function searchDayExcel(DateStart $dateStart, DateEnd $dateEnd, string $orderBy);
    public function search(BookingCode $code);
    public function getReportExcel(ReportExcelRequirements $requirements);
    public function updateManuallyConfirmed(UpdateManuallyConfirmedBooking $model);
    public function searchCriteria(StorageCriteria $criteria);
    public function find(StorageCriteria $criteria);
    public function index(IdBooking $idBooking);
    public function updatePartial(BookingModel $booking);
}
