using MemberCenter.Application.Models.Profile;

namespace MemberCenter.Application.Abstractions;

public interface IProfileService
{
    Task<UserProfileDto> GetProfileAsync(Guid userId);
    Task<UserProfileDto> SaveProfileAsync(Guid userId, SaveUserProfileRequest request);
    Task<IReadOnlyList<UserAddressDto>> ListAddressesAsync(Guid userId);
    Task<UserAddressDto?> GetAddressAsync(Guid userId, Guid addressId);
    Task<UserAddressDto> SaveAddressAsync(Guid userId, SaveUserAddressRequest request);
    Task DeleteAddressAsync(Guid userId, Guid addressId);
    Task<UserProfileImageDto?> GetProfileImageAsync(Guid userId);
    Task SaveProfileImageAsync(Guid userId, byte[] content, string contentType, int width, int height);
}
