using Eshop.Application.Common;

namespace Eshop.Application.Auth;

public interface IUserAccountService
{
    Task<ServiceResult> RegisterAsync(
        string userName,
        string email,
        string password,
        CancellationToken cancellationToken = default);

    Task<UserProfileDto?> GetProfileAsync(
        string userId,
        CancellationToken cancellationToken = default);

    Task<ServiceResult> UpdateProfileAsync(
        string userId,
        UpdateProfileRequest request,
        CancellationToken cancellationToken = default);

    Task<ServiceResult> DeleteAccountAsync(
        string userId,
        CancellationToken cancellationToken = default);

    Task<UserDataExportDto?> ExportUserDataAsync(
        string userId,
        CancellationToken cancellationToken = default);
}
