using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TIAM.Entities.Users;
using TIAM.Models.Dtos.Users;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Models.PageModels;

namespace TIAMWebApp.Shared.Application.Interfaces
{
    public interface IUserDataService
    {
        public Dictionary<int, string> userRoleTypes { get; set; }

        public Task<UserSessionModel> IsLoggedInAsync(Guid id);        

        public Task<string> AuthenticateUser(LoginModel loginModel);
        public Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel);
        public Task<string> TestUserApi(int Param);

        //public Task<Dictionary<int, string>> GetUserRolesAsync(UserModel userModel);

        public Task<IEnumerable<UserModelDto>?> GetUsersAsync();
        public Task<UserModelDto?> GetUserByEmailAsync(string email);
        Task<bool> RefreshToken();
    }
}