using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Discord
{
public class ServerUser : IUser
{
///
public EntityState State { get; }
///
public ulong Id { get; }
/// Returns the private channel for this user.
public Server Server { get; }
///
bool IUser.IsPrivate => false;
///
public string Name { get; }
///
public ushort Discriminator { get; }
///
public bool IsBot { get; }
///
public string AvatarId { get; }
///
public string CurrentGame { get; }
///
public UserStatus Status { get; }
///
public DateTime JoinedAt { get; }
///
public IReadOnlyList Roles { get; }
/// Returns true if this user has marked themselves as muted.
public bool IsSelfMuted { get; }
/// Returns true if this user has marked themselves as deafened.
public bool IsSelfDeafened { get; }
/// Returns true if the server is blocking audio from this user.
public bool IsServerMuted { get; }
/// Returns true if the server is blocking audio to this user.
public bool IsServerDeafened { get; }
/// Returns true if the server is temporarily blocking audio to/from this user.
public bool IsServerSuppressed { get; }
/// Gets this user's current voice channel.
public VoiceChannel VoiceChannel { get; }
///
public DiscordClient Discord { get; }
///
public string AvatarUrl { get; }
///
public string Mention { get; }
public ServerPermissions ServerPermissions { get; }
public ChannelPermissions GetPermissions(IPublicChannel channel) => default(ChannelPermissions);
///
public Task GetPrivateChannel() => null;
public Task> GetChannels() => null;
public bool HasRole(Role role) => false;
public Task AddRoles(params Role[] roles) => null;
public Task RemoveRoles(params Role[] roles) => null;
public Task Update() => null;
public Task Kick() => null;
public Task Ban(int pruneDays = 0) => null;
public Task Unban() => null;
}
}