namespace SharpChat.Users;

/// <summary>
/// User Permissions.
/// THESE CAN CHANGE AT ANY TIME!!!!
/// If you want to store them or return permissions from another system, convert them!!!
/// </summary>
[Flags]
public enum UserPermissions : ulong {
    SendMessage = 1ul,
    DeleteOwnMessage = 1ul << 2,
    DeleteAnyMessage = 1ul << 3,
    EditOwnMessage = 1ul << 4,
    EditAnyMessage = 1ul << 5,
    SendBroadcast = 1ul << 6,
    ViewLogs = 1ul << 7,

    KickUser = 1ul << 10,
    BanUser = 1ul << 11,
    PardonUser = 1ul << 12,
    PardonIPAddress = 1ul << 13,
    ViewIPAddress = 1ul << 14,
    ViewBanList = 1ul << 15,

    CreateChannel = 1ul << 20,
    SetChannelPermanent = 1ul << 21,
    SetChannelPassword = 1ul << 22,
    SetChannelMinimumRank = 1ul << 23,
    DeleteChannel = 1ul << 24,
    JoinAnyChannel = 1ul << 25,

    SetOwnNickname = 1ul << 30,
    SetOthersNickname = 1ul << 31,
}