/*
 * The Plaid API
 * The Plaid REST API. Please see https://plaid.com/docs/api for more details.
 *
 * The version of the OpenAPI document: 2020-09-14_1.680.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.plaid.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.plaid.client.model.AAMVADetailedMatchResult;
import com.plaid.client.model.AAMVAMatchResult;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;

/**
 * Analyzed AAMVA data for the associated hit.  Note: This field is only available for U.S. driver&#39;s licenses issued by participating states.
 */
@ApiModel(description = "Analyzed AAMVA data for the associated hit.  Note: This field is only available for U.S. driver's licenses issued by participating states.")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-12-11T18:58:39.328614Z[Etc/UTC]")
public class AAMVAAnalysis {
  public static final String SERIALIZED_NAME_IS_VERIFIED = "is_verified";
  @SerializedName(SERIALIZED_NAME_IS_VERIFIED)
  private Boolean isVerified;

  public static final String SERIALIZED_NAME_ID_NUMBER = "id_number";
  @SerializedName(SERIALIZED_NAME_ID_NUMBER)
  private AAMVAMatchResult idNumber;

  public static final String SERIALIZED_NAME_ID_ISSUE_DATE = "id_issue_date";
  @SerializedName(SERIALIZED_NAME_ID_ISSUE_DATE)
  private AAMVAMatchResult idIssueDate;

  public static final String SERIALIZED_NAME_ID_EXPIRATION_DATE = "id_expiration_date";
  @SerializedName(SERIALIZED_NAME_ID_EXPIRATION_DATE)
  private AAMVAMatchResult idExpirationDate;

  public static final String SERIALIZED_NAME_STREET = "street";
  @SerializedName(SERIALIZED_NAME_STREET)
  private AAMVADetailedMatchResult street;

  public static final String SERIALIZED_NAME_CITY = "city";
  @SerializedName(SERIALIZED_NAME_CITY)
  private AAMVAMatchResult city;

  public static final String SERIALIZED_NAME_POSTAL_CODE = "postal_code";
  @SerializedName(SERIALIZED_NAME_POSTAL_CODE)
  private AAMVADetailedMatchResult postalCode;

  public static final String SERIALIZED_NAME_DATE_OF_BIRTH = "date_of_birth";
  @SerializedName(SERIALIZED_NAME_DATE_OF_BIRTH)
  private AAMVAMatchResult dateOfBirth;

  public static final String SERIALIZED_NAME_GENDER = "gender";
  @SerializedName(SERIALIZED_NAME_GENDER)
  private AAMVAMatchResult gender;

  public static final String SERIALIZED_NAME_HEIGHT = "height";
  @SerializedName(SERIALIZED_NAME_HEIGHT)
  private AAMVAMatchResult height;

  public static final String SERIALIZED_NAME_EYE_COLOR = "eye_color";
  @SerializedName(SERIALIZED_NAME_EYE_COLOR)
  private AAMVAMatchResult eyeColor;

  public static final String SERIALIZED_NAME_FIRST_NAME = "first_name";
  @SerializedName(SERIALIZED_NAME_FIRST_NAME)
  private AAMVADetailedMatchResult firstName;

  public static final String SERIALIZED_NAME_MIDDLE_NAME = "middle_name";
  @SerializedName(SERIALIZED_NAME_MIDDLE_NAME)
  private AAMVADetailedMatchResult middleName;

  public static final String SERIALIZED_NAME_LAST_NAME = "last_name";
  @SerializedName(SERIALIZED_NAME_LAST_NAME)
  private AAMVADetailedMatchResult lastName;


  public AAMVAAnalysis isVerified(Boolean isVerified) {
    
    this.isVerified = isVerified;
    return this;
  }

   /**
   * The overall outcome of checking the associated hit against the issuing state database.
   * @return isVerified
  **/
  @ApiModelProperty(example = "true", required = true, value = "The overall outcome of checking the associated hit against the issuing state database.")

  public Boolean getIsVerified() {
    return isVerified;
  }


  public void setIsVerified(Boolean isVerified) {
    this.isVerified = isVerified;
  }


  public AAMVAAnalysis idNumber(AAMVAMatchResult idNumber) {
    
    this.idNumber = idNumber;
    return this;
  }

   /**
   * Get idNumber
   * @return idNumber
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getIdNumber() {
    return idNumber;
  }


  public void setIdNumber(AAMVAMatchResult idNumber) {
    this.idNumber = idNumber;
  }


  public AAMVAAnalysis idIssueDate(AAMVAMatchResult idIssueDate) {
    
    this.idIssueDate = idIssueDate;
    return this;
  }

   /**
   * Get idIssueDate
   * @return idIssueDate
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getIdIssueDate() {
    return idIssueDate;
  }


  public void setIdIssueDate(AAMVAMatchResult idIssueDate) {
    this.idIssueDate = idIssueDate;
  }


  public AAMVAAnalysis idExpirationDate(AAMVAMatchResult idExpirationDate) {
    
    this.idExpirationDate = idExpirationDate;
    return this;
  }

   /**
   * Get idExpirationDate
   * @return idExpirationDate
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getIdExpirationDate() {
    return idExpirationDate;
  }


  public void setIdExpirationDate(AAMVAMatchResult idExpirationDate) {
    this.idExpirationDate = idExpirationDate;
  }


  public AAMVAAnalysis street(AAMVADetailedMatchResult street) {
    
    this.street = street;
    return this;
  }

   /**
   * Get street
   * @return street
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVADetailedMatchResult getStreet() {
    return street;
  }


  public void setStreet(AAMVADetailedMatchResult street) {
    this.street = street;
  }


  public AAMVAAnalysis city(AAMVAMatchResult city) {
    
    this.city = city;
    return this;
  }

   /**
   * Get city
   * @return city
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getCity() {
    return city;
  }


  public void setCity(AAMVAMatchResult city) {
    this.city = city;
  }


  public AAMVAAnalysis postalCode(AAMVADetailedMatchResult postalCode) {
    
    this.postalCode = postalCode;
    return this;
  }

   /**
   * Get postalCode
   * @return postalCode
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVADetailedMatchResult getPostalCode() {
    return postalCode;
  }


  public void setPostalCode(AAMVADetailedMatchResult postalCode) {
    this.postalCode = postalCode;
  }


  public AAMVAAnalysis dateOfBirth(AAMVAMatchResult dateOfBirth) {
    
    this.dateOfBirth = dateOfBirth;
    return this;
  }

   /**
   * Get dateOfBirth
   * @return dateOfBirth
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getDateOfBirth() {
    return dateOfBirth;
  }


  public void setDateOfBirth(AAMVAMatchResult dateOfBirth) {
    this.dateOfBirth = dateOfBirth;
  }


  public AAMVAAnalysis gender(AAMVAMatchResult gender) {
    
    this.gender = gender;
    return this;
  }

   /**
   * Get gender
   * @return gender
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getGender() {
    return gender;
  }


  public void setGender(AAMVAMatchResult gender) {
    this.gender = gender;
  }


  public AAMVAAnalysis height(AAMVAMatchResult height) {
    
    this.height = height;
    return this;
  }

   /**
   * Get height
   * @return height
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getHeight() {
    return height;
  }


  public void setHeight(AAMVAMatchResult height) {
    this.height = height;
  }


  public AAMVAAnalysis eyeColor(AAMVAMatchResult eyeColor) {
    
    this.eyeColor = eyeColor;
    return this;
  }

   /**
   * Get eyeColor
   * @return eyeColor
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVAMatchResult getEyeColor() {
    return eyeColor;
  }


  public void setEyeColor(AAMVAMatchResult eyeColor) {
    this.eyeColor = eyeColor;
  }


  public AAMVAAnalysis firstName(AAMVADetailedMatchResult firstName) {
    
    this.firstName = firstName;
    return this;
  }

   /**
   * Get firstName
   * @return firstName
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVADetailedMatchResult getFirstName() {
    return firstName;
  }


  public void setFirstName(AAMVADetailedMatchResult firstName) {
    this.firstName = firstName;
  }


  public AAMVAAnalysis middleName(AAMVADetailedMatchResult middleName) {
    
    this.middleName = middleName;
    return this;
  }

   /**
   * Get middleName
   * @return middleName
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVADetailedMatchResult getMiddleName() {
    return middleName;
  }


  public void setMiddleName(AAMVADetailedMatchResult middleName) {
    this.middleName = middleName;
  }


  public AAMVAAnalysis lastName(AAMVADetailedMatchResult lastName) {
    
    this.lastName = lastName;
    return this;
  }

   /**
   * Get lastName
   * @return lastName
  **/
  @ApiModelProperty(required = true, value = "")

  public AAMVADetailedMatchResult getLastName() {
    return lastName;
  }


  public void setLastName(AAMVADetailedMatchResult lastName) {
    this.lastName = lastName;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    AAMVAAnalysis aaMVAAnalysis = (AAMVAAnalysis) o;
    return Objects.equals(this.isVerified, aaMVAAnalysis.isVerified) &&
        Objects.equals(this.idNumber, aaMVAAnalysis.idNumber) &&
        Objects.equals(this.idIssueDate, aaMVAAnalysis.idIssueDate) &&
        Objects.equals(this.idExpirationDate, aaMVAAnalysis.idExpirationDate) &&
        Objects.equals(this.street, aaMVAAnalysis.street) &&
        Objects.equals(this.city, aaMVAAnalysis.city) &&
        Objects.equals(this.postalCode, aaMVAAnalysis.postalCode) &&
        Objects.equals(this.dateOfBirth, aaMVAAnalysis.dateOfBirth) &&
        Objects.equals(this.gender, aaMVAAnalysis.gender) &&
        Objects.equals(this.height, aaMVAAnalysis.height) &&
        Objects.equals(this.eyeColor, aaMVAAnalysis.eyeColor) &&
        Objects.equals(this.firstName, aaMVAAnalysis.firstName) &&
        Objects.equals(this.middleName, aaMVAAnalysis.middleName) &&
        Objects.equals(this.lastName, aaMVAAnalysis.lastName);
  }

  @Override
  public int hashCode() {
    return Objects.hash(isVerified, idNumber, idIssueDate, idExpirationDate, street, city, postalCode, dateOfBirth, gender, height, eyeColor, firstName, middleName, lastName);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class AAMVAAnalysis {\n");
    sb.append("    isVerified: ").append(toIndentedString(isVerified)).append("\n");
    sb.append("    idNumber: ").append(toIndentedString(idNumber)).append("\n");
    sb.append("    idIssueDate: ").append(toIndentedString(idIssueDate)).append("\n");
    sb.append("    idExpirationDate: ").append(toIndentedString(idExpirationDate)).append("\n");
    sb.append("    street: ").append(toIndentedString(street)).append("\n");
    sb.append("    city: ").append(toIndentedString(city)).append("\n");
    sb.append("    postalCode: ").append(toIndentedString(postalCode)).append("\n");
    sb.append("    dateOfBirth: ").append(toIndentedString(dateOfBirth)).append("\n");
    sb.append("    gender: ").append(toIndentedString(gender)).append("\n");
    sb.append("    height: ").append(toIndentedString(height)).append("\n");
    sb.append("    eyeColor: ").append(toIndentedString(eyeColor)).append("\n");
    sb.append("    firstName: ").append(toIndentedString(firstName)).append("\n");
    sb.append("    middleName: ").append(toIndentedString(middleName)).append("\n");
    sb.append("    lastName: ").append(toIndentedString(lastName)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}

