<?php

namespace App\Contracts;

use Illuminate\Contracts\Pagination\LengthAwarePaginator;

interface AttendanceRecordRepositoryInterface
{
    public function getFilteredRecords(
        ?string $month = null,
        ?string $startDate = null,
        ?string $endDate = null,
        ?int $roleId = null,
        ?string $status = null,
        string $search = '',
        int $perPage = 15,
        ?string $className = null
    ): LengthAwarePaginator;

    public function getSummaryStats(
        ?string $month = null,
        ?string $startDate = null,
        ?string $endDate = null,
        ?int $roleId = null,
        ?string $className = null
    ): array;

    public function getAllForExport(
        ?string $month = null,
        ?string $startDate = null,
        ?string $endDate = null,
        ?int $roleId = null,
        ?string $status = null,
        ?string $className = null
    ): iterable;
}
