using EchoHub.Core.DTOs; namespace EchoHub.Core.Contracts; public interface IUserService { // inviteCode is required when the server runs with Server:Registration = "invite"; // "closed" refuses all new accounts. Both REST and the IRC gateway funnel through here. Task RegisterUserAsync(string username, string password, string? displayName = null, string? inviteCode = null); Task AuthenticateUserAsync(string username, string password); Task GetUserProfileAsync(string username); Task GetUserByIdAsync(Guid userId); Task UpdateProfileAsync(Guid userId, string? displayName, string? bio, string? nicknameColor); Task SetAvatarAsync(Guid userId, string asciiArt); }