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

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Date;
import java.util.Optional;
import java.util.Set;

public interface AuthenticationMethods {
   Optional<AuthenticationMethods.AuthenticationMethodId> getActiveAuthMethod();

   void setActiveAuthMehod(AuthenticationMethods.AuthenticationMethodId var1);

   void clearActiveAuthMethod();

   boolean hasActiveAuthMethod(AuthenticationMethods.AuthenticationMethodId var1);

   void setAdditionalAuthMethod(String var1, AuthenticationMethods.AuthenticationMethodId var2);

   void clearAdditionalAuthMethod(String var1);

   void setMigration(Set<AuthenticationMethods.AuthenticationMethodId> var1, Optional<Date> var2);

   void clearMigration();

   boolean hasMigration();

   final class AuthenticationMethodId {
      private final String id;

      public static AuthenticationMethods.AuthenticationMethodId authMethodId(String id) {
         return new AuthenticationMethods.AuthenticationMethodId(id);
      }

      @Override
      public String toString() {
         return this.id;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AuthenticationMethodId(String id) {
         this.id = id;
      }

      @SuppressFBWarnings(justification = "generated code")
      public String getId() {
         return this.id;
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public boolean equals(Object o) {
         if (o == this) {
            return true;
         } else if (!(o instanceof AuthenticationMethods.AuthenticationMethodId other)) {
            return false;
         } else {
            Object this$id = this.id;
            Object other$id = other.id;
            return this$id == null ? other$id == null : this$id.equals(other$id);
         }
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public int hashCode() {
         int PRIME = 59;
         int result = 1;
         Object $id = this.id;
         return result * 59 + ($id == null ? 43 : $id.hashCode());
      }
   }
}
