<?php

namespace Modules\MembershipApplication\Repositories\Contracts;

use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Modules\MembershipApplication\Entities\MembershipApplication;

interface MembershipApplicationRepositoryInterface
{
    public function create(array $data): MembershipApplication;

    public function findById(string $id): ?MembershipApplication;

    public function findByIdWithRelations(string $id): ?MembershipApplication;

    public function getAllPaginated(
        int $perPage = 10,
        string $search = '',
        ?string $status = null,
        string $sortBy = 'submitted_at',
        string $sortOrder = 'desc'
    ): LengthAwarePaginator;
}
