package com.airlock.iam.common.api.domain.model.user;

import com.airlock.iam.common.api.domain.model.authentication.failed.FailedLoginsByAuthMethod;
import com.airlock.iam.common.api.domain.model.role.Role;
import com.airlock.iam.common.api.domain.model.user.validity.UserValidity;
import jakarta.annotation.Nullable;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface PersistentUser {
   String getName();

   Set<Role> getRoles();

   boolean hasRoleWithName(String var1);

   boolean addRole(Role var1);

   boolean setRole(Role var1);

   boolean removeRoleByName(String var1);

   void clearRoles();

   String getAuthMethod();

   void setAuthMethod(String var1);

   @Nullable
   String getNextAuthMethod();

   void setNextAuthMethod(@Nullable String var1);

   void setMultipleNextAuthMethods(Set<String> var1);

   List<String> getMultipleNextAuthMethods();

   @Nullable
   Date getAuthMigrationDate();

   void setAuthMigrationDate(@Nullable Date var1);

   boolean isLocked();

   void setLocked();

   void setLocked(boolean var1);

   void setLastGlobalSessionIDUpdate(@Nullable Date var1);

   @Nullable
   Date getLastGlobalSessionIDUpdate();

   void setLastKnownGlobalSessionID(@Nullable String var1);

   @Nullable
   String getLastKnownGlobalSessionID();

   @Nullable
   String getLockReason();

   void setLockReason(String var1);

   @Nullable
   Date getLockDate();

   void setLockDate(Date var1);

   void setInvalidFlag(boolean var1);

   boolean getInvalidFlag();

   @Nullable
   Date getValidTo();

   void setValidTo(Date var1);

   @Nullable
   Date getValidFrom();

   void setValidFrom(Date var1);

   int getFailedLogins();

   void resetFailedLogins();

   void increaseFailedLogins();

   String getFailedTokenCounts();

   void setFailedTokenCounts(String var1);

   int getFailedLoginsBeforeLatestSuccessfulLogin();

   void setFailedLoginsBeforeLatestSuccessfulLogin(int var1);

   int getTotalLogins();

   void setTotalLogins(int var1);

   @Nullable
   Date getLatestSuccessfulLogin();

   void setLatestSuccessfulLogin(Date var1);

   @Nullable
   Date getSecondLatestSuccessfulLogin();

   void setSecondLatestSuccessfulLogin(Date var1);

   @Nullable
   Date getLatestLoginAttempt();

   void setLatestLoginAttempt(Date var1);

   @Nullable
   Date getFirstLogin();

   void setFirstLogin(Date var1);

   int getUnlockAttempts();

   void increaseUnlockAttempts();

   void resetUnlockAttempts();

   void setUnlockAttempts(int var1);

   void setLatestUnlockAttempt(Date var1);

   Date getLatestUnlockAttempt();

   void setSelfRegistered(boolean var1);

   void setSelfRegistrationDate(Date var1);

   boolean isSelfRegistered();

   @Nullable
   Date getSelfRegistrationDate();

   void putContextDataValue(String var1, @Nullable Object var2);

   void putAllContextData(Map<String, Object> var1);

   @Nullable
   Object getContextDataValue(String var1);

   void clearContextData();

   @Nullable
   Object removeContextDataEntry(String var1);

   Map<String, Object> getContextData();

   UserValidity getUserValidity();

   void setUserValidity(UserValidity var1);

   boolean isSecretQuestionsEnabled();

   void setSecretQuestionsEnabled(boolean var1);

   void enableSecretQuestions();

   void disableSecretQuestions();

   void successfullyLoggedIn(Date var1);

   void updateLoginStatistics(Date var1);

   void setChannelVerificationResends(int var1);

   int getChannelVerificationResends();

   FailedLoginsByAuthMethod getAllFailedLogins();
}
