using System.Collections.Generic;
using Valg.EVA.Skanning.Identity.Area;

namespace Valg.EVA.Skanning.Identity
{
    public interface IIdentityProvider
    {
        AreaDescription CurrentSelectedArea { get; }

        Role CurrentSelectedRole { get; }

        List<Role> Roles { get; }

        byte[] Token { get; }

        byte[] TokenSignature { get; }

        bool IsInEmergencyMode { get; }

        string GetCurrentUserName();

        string GetCurrentUserDisplayName();

        void AddClaims(List<System.Security.Claims.Claim> listOfClaims);

        bool HasClaim(string type);

        string[] ClaimValues(string type);

        bool HasAreaSpecificClaim(string type);

        string ClaimValue(string type);

        void AddRoles(List<Role> list);

        void RemoveClaimAndRoles();

        void BroadCastSecurityContextHasChanged();

        void SetCurrentRole(Role role);

        void SetToken(byte[] token, byte[] signature);
    }
}
