using FlatRender.IdentitySvc.Domain.Entities;
using FlatRender.IdentitySvc.Models.Requests;
using FlatRender.IdentitySvc.Models.Responses;

namespace FlatRender.IdentitySvc.Application.Services.Interfaces;

public interface IUserService
{
    Task<UserResponse> GetMeAsync(Guid userId);
    Task<UserResponse> UpdateMeAsync(Guid userId, UpdateUserRequest request);
    Task<BalanceResponse> GetBalanceAsync(Guid userId);
    Task UpdateAvatarAsync(Guid userId, Guid? avatarId, string? avatarUrl);
    Task<UserResponse> GetByIdAsync(Guid userId);
    Task<PagedResponse<UserResponse>> SearchAsync(string? q, Guid? tenantId, int page, int pageSize);
    Task BanAsync(Guid userId, string reason, DateTime? unblockDate);
    Task UnbanAsync(Guid userId);
}
