using System;
using System.Threading.Tasks;
namespace Timeline.Services.User
{
    /// 
    /// This service provide some basic user features, which should be used internally for other services.
    /// 
    public interface IBasicUserService
    {
        /// 
        /// Check if a user exists.
        /// 
        /// The id of the user.
        /// True if exists. Otherwise false.
        Task CheckUserExistenceAsync(long id);
        /// 
        /// Get the user id of given username.
        /// 
        /// Username of the user.
        /// The id of the user.
        /// Thrown when  is null.
        /// Thrown when  is of bad format.
        /// Thrown when the user with given username does not exist.
        Task GetUserIdByUsernameAsync(string username);
        /// 
        /// Get the username modified time of a user.
        /// 
        /// User id.
        /// The time.
        /// Thrown when user does not exist.
        Task GetUsernameLastModifiedTimeAsync(long userId);
    }
}