<?php

namespace App\Services\User\Contracts;

use App\Models\User;
use Illuminate\Pagination\LengthAwarePaginator;

interface UserServiceInterface
{
    public function getDashboard(User $user, string $selectedMonth): LengthAwarePaginator;

    public function getOtherActiveUsers(User $currentUser): \Illuminate\Database\Eloquent\Collection;

    public function sendThankcards(User $sender, string $receiverMsnv, int $amount, ?int $templateId = 1): void;

    public function updatePassword(User $user, string $newPassword): void;

    public function getPersonalStats(User $user, string $selectedMonth): array;

    public function getRankingList(string $type, string $selectedMonth, User $currentUser): array;

    public function updateProfile(User $user, array $data, ?\Illuminate\Http\UploadedFile $avatarFile = null): void;

    public function getSentCardsToUserThisMonth(User $sender, string $receiverMsnv): int;

    public function getReceivedPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;

    public function getSentPageData(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;

    public function getReceivedFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;

    public function getSentFeed(User $user, string $selectedMonth, int $limit = 12, int $offset = 0): array;
}