content: /*
   * Adyen Checkout API
   *
   * The version of the OpenAPI document: 71
   *
   *
   * 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.adyen.model.checkout;
  
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import java.util.*;
  
  /** FundOrigin */
  @JsonPropertyOrder({
    FundOrigin.JSON_PROPERTY_BILLING_ADDRESS,
    FundOrigin.JSON_PROPERTY_SHOPPER_EMAIL,
    FundOrigin.JSON_PROPERTY_SHOPPER_NAME,
    FundOrigin.JSON_PROPERTY_TELEPHONE_NUMBER,
    FundOrigin.JSON_PROPERTY_WALLET_IDENTIFIER
  })
  public class FundOrigin {
    public static final String JSON_PROPERTY_BILLING_ADDRESS = "billingAddress";
    private Address billingAddress;
  
    public static final String JSON_PROPERTY_SHOPPER_EMAIL = "shopperEmail";
    private String shopperEmail;
  
    public static final String JSON_PROPERTY_SHOPPER_NAME = "shopperName";
    private Name shopperName;
  
    public static final String JSON_PROPERTY_TELEPHONE_NUMBER = "telephoneNumber";
    private String telephoneNumber;
  
    public static final String JSON_PROPERTY_WALLET_IDENTIFIER = "walletIdentifier";
    private String walletIdentifier;
  
    public FundOrigin() {}
  
    /**
     * billingAddress
     *
     * @param billingAddress
     * @return the current {@code FundOrigin} instance, allowing for method chaining
     */
    public FundOrigin billingAddress(Address billingAddress) {
      this.billingAddress = billingAddress;
      return this;
    }
  
    /**
     * Get billingAddress
     *
     * @return billingAddress
     */
    @JsonProperty(JSON_PROPERTY_BILLING_ADDRESS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Address getBillingAddress() {
      return billingAddress;
    }
  
    /**
     * billingAddress
     *
     * @param billingAddress
     */
    @JsonProperty(JSON_PROPERTY_BILLING_ADDRESS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setBillingAddress(Address billingAddress) {
      this.billingAddress = billingAddress;
    }
  
    /**
     * The email address of the person funding the money.
     *
     * @param shopperEmail The email address of the person funding the money.
     * @return the current {@code FundOrigin} instance, allowing for method chaining
     */
    public FundOrigin shopperEmail(String shopperEmail) {
      this.shopperEmail = shopperEmail;
      return this;
    }
  
    /**
     * The email address of the person funding the money.
     *
     * @return shopperEmail The email address of the person funding the money.
     */
    @JsonProperty(JSON_PROPERTY_SHOPPER_EMAIL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getShopperEmail() {
      return shopperEmail;
    }
  
    /**
     * The email address of the person funding the money.
     *
     * @param shopperEmail The email address of the person funding the money.
     */
    @JsonProperty(JSON_PROPERTY_SHOPPER_EMAIL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setShopperEmail(String shopperEmail) {
      this.shopperEmail = shopperEmail;
    }
  
    /**
     * shopperName
     *
     * @param shopperName
     * @return the current {@code FundOrigin} instance, allowing for method chaining
     */
    public FundOrigin shopperName(Name shopperName) {
      this.shopperName = shopperName;
      return this;
    }
  
    /**
     * Get shopperName
     *
     * @return shopperName
     */
    @JsonProperty(JSON_PROPERTY_SHOPPER_NAME)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Name getShopperName() {
      return shopperName;
    }
  
    /**
     * shopperName
     *
     * @param shopperName
     */
    @JsonProperty(JSON_PROPERTY_SHOPPER_NAME)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setShopperName(Name shopperName) {
      this.shopperName = shopperName;
    }
  
    /**
     * The phone number of the person funding the money.
     *
     * @param telephoneNumber The phone number of the person funding the money.
     * @return the current {@code FundOrigin} instance, allowing for method chaining
     */
    public FundOrigin telephoneNumber(String telephoneNumber) {
      this.telephoneNumber = telephoneNumber;
      return this;
    }
  
    /**
     * The phone number of the person funding the money.
     *
     * @return telephoneNumber The phone number of the person funding the money.
     */
    @JsonProperty(JSON_PROPERTY_TELEPHONE_NUMBER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getTelephoneNumber() {
      return telephoneNumber;
    }
  
    /**
     * The phone number of the person funding the money.
     *
     * @param telephoneNumber The phone number of the person funding the money.
     */
    @JsonProperty(JSON_PROPERTY_TELEPHONE_NUMBER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTelephoneNumber(String telephoneNumber) {
      this.telephoneNumber = telephoneNumber;
    }
  
    /**
     * The unique identifier of the wallet where the funds are coming from.
     *
     * @param walletIdentifier The unique identifier of the wallet where the funds are coming from.
     * @return the current {@code FundOrigin} instance, allowing for method chaining
     */
    public FundOrigin walletIdentifier(String walletIdentifier) {
      this.walletIdentifier = walletIdentifier;
      return this;
    }
  
    /**
     * The unique identifier of the wallet where the funds are coming from.
     *
     * @return walletIdentifier The unique identifier of the wallet where the funds are coming from.
     */
    @JsonProperty(JSON_PROPERTY_WALLET_IDENTIFIER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getWalletIdentifier() {
      return walletIdentifier;
    }
  
    /**
     * The unique identifier of the wallet where the funds are coming from.
     *
     * @param walletIdentifier The unique identifier of the wallet where the funds are coming from.
     */
    @JsonProperty(JSON_PROPERTY_WALLET_IDENTIFIER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setWalletIdentifier(String walletIdentifier) {
      this.walletIdentifier = walletIdentifier;
    }
  
    /** Return true if this FundOrigin object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      FundOrigin fundOrigin = (FundOrigin) o;
      return Objects.equals(this.billingAddress, fundOrigin.billingAddress)
          && Objects.equals(this.shopperEmail, fundOrigin.shopperEmail)
          && Objects.equals(this.shopperName, fundOrigin.shopperName)
          && Objects.equals(this.telephoneNumber, fundOrigin.telephoneNumber)
          && Objects.equals(this.walletIdentifier, fundOrigin.walletIdentifier);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          billingAddress, shopperEmail, shopperName, telephoneNumber, walletIdentifier);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class FundOrigin {\n");
      sb.append("    billingAddress: ").append(toIndentedString(billingAddress)).append("\n");
      sb.append("    shopperEmail: ").append(toIndentedString(shopperEmail)).append("\n");
      sb.append("    shopperName: ").append(toIndentedString(shopperName)).append("\n");
      sb.append("    telephoneNumber: ").append(toIndentedString(telephoneNumber)).append("\n");
      sb.append("    walletIdentifier: ").append(toIndentedString(walletIdentifier)).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    ");
    }
  
    /**
     * Create an instance of FundOrigin given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of FundOrigin
     * @throws JsonProcessingException if the JSON string is invalid with respect to FundOrigin
     */
    public static FundOrigin fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, FundOrigin.class);
    }
  
    /**
     * Convert an instance of FundOrigin to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  