<?php declare(strict_types=1);

namespace App\Contracts;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Pagination\CursorPaginator;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;

interface Search
{
    public function __construct(Relation | Builder $query);
    public function all(): Collection;
    public function get(int $limit): Collection;
    public function pagination(int $limit, int $page = 1): LengthAwarePaginator;
    public function cursorPaginate(int $limit): CursorPaginator;
}