package com.airlock.iam.authentication.domain.model.rememberme;

import com.airlock.iam.flow.shared.domain.model.rememberme.RememberMeSecret;
import com.airlock.iam.flow.shared.domain.model.rememberme.RememberMeToken;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import lombok.NonNull;

public final class RememberMeTokenResult {
   @NonNull
   private final RememberMeToken token;
   @NonNull
   private final RememberMeSecret secret;

   @SuppressFBWarnings(justification = "generated code")
   public RememberMeTokenResult(@NonNull RememberMeToken token, @NonNull RememberMeSecret secret) {
      if (token == null) {
         throw new NullPointerException("token is marked non-null but is null");
      }

      if (secret == null) {
         throw new NullPointerException("secret is marked non-null but is null");
      }

      this.token = token;
      this.secret = secret;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public RememberMeToken token() {
      return this.token;
   }

   @NonNull
   @SuppressFBWarnings(justification = "generated code")
   public RememberMeSecret secret() {
      return this.secret;
   }

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

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

   @SuppressFBWarnings(justification = "generated code")
   @Override
   public String toString() {
      return "RememberMeTokenResult(token=" + this.token() + ", secret=" + this.secret() + ")";
   }
}
