class CoinbaseUserInfo {

    private final String id;

    @JsonProperty("password")
    private final String password;

    private final String receiveAddress;

    @JsonProperty("referrer_id")
    private final String referrerId;

    private final CoinbaseMoney balance;
    private final CoinbaseBuySellLevel buyLevel;
    private final CoinbaseBuySellLevel sellLevel;
    private final CoinbaseMoney buyLimit;
    private final CoinbaseMoney sellLimit;
    private final CoinbaseMerchant merchant;

    @JsonProperty("email")
    private String email;

    @JsonProperty("name")
    private String name;

    @JsonProperty("time_zone")
    private String timeZone;

    @JsonProperty("native_currency")
    private String nativeCurrency;

    @JsonProperty("pin")
    private String pin;

    private CoinbaseUserInfo(
        @JsonProperty("id") final String id,
        @JsonProperty("email") final String email,
        @JsonProperty("name") final String name,
        @JsonProperty("password") final String password,
        @JsonProperty("receive_address") final String receiveAddress,
        @JsonProperty("referrer_id") final String referrerId,
        @JsonProperty("time_zone") final String timeZone,
        @JsonProperty("balance") @JsonDeserialize(using = CoinbaseMoneyDeserializer.class)
            final CoinbaseMoney balance,
        @JsonProperty("native_currency") final String nativeCurrency,
        @JsonProperty("buy_level") final CoinbaseBuySellLevel buyLevel,
        @JsonProperty("sell_level") final CoinbaseBuySellLevel sellLevel,
        @JsonProperty("buy_limit") @JsonDeserialize(using = CoinbaseMoneyDeserializer.class)
            final CoinbaseMoney buyLimit,
        @JsonProperty("sell_limit") @JsonDeserialize(using = CoinbaseMoneyDeserializer.class)
            final CoinbaseMoney sellLimit,
        @JsonProperty("pin") final String pin,
        @JsonProperty("merchant") final CoinbaseMerchant merchant) {

      this.id = id;
      this.email = email;
      this.name = name;
      this.password = password;
      this.receiveAddress = receiveAddress;
      this.referrerId = referrerId;
      this.timeZone = timeZone;
      this.balance = balance;
      this.nativeCurrency = nativeCurrency;
      this.buyLevel = buyLevel;
      this.sellLevel = sellLevel;
      this.buyLimit = buyLimit;
      this.sellLimit = sellLimit;
      this.pin = pin;
      this.merchant = merchant;
    }

    private CoinbaseUserInfo(String email, final String password, final String referrerId) {

      this.email = email;
      this.password = password;
      this.referrerId = referrerId;
      this.id = null;
      this.name = null;
      this.receiveAddress = null;
      this.timeZone = null;
      this.balance = null;
      this.nativeCurrency = null;
      this.buyLevel = null;
      this.sellLevel = null;
      this.buyLimit = null;
      this.sellLimit = null;
      this.pin = null;
      this.merchant = null;
    }

    @JsonIgnore
    public String getId() {

      return id;
    }

    public String getEmail() {

      return email;
    }

    private void setEmail(String email) {

      this.email = email;
    }

    public String getName() {

      return name;
    }

    private void setName(String name) {

      this.name = name;
    }

    public String getPassword() {

      return password;
    }

    @JsonIgnore
    public String getReceiveAddress() {

      return receiveAddress;
    }

    public String getReferrerId() {

      return referrerId;
    }

    public String getTimeZone() {

      return timeZone;
    }

    private void setTimeZone(String timeZone) {

      this.timeZone = timeZone;
    }

    @JsonIgnore
    public CoinbaseMoney getBalance() {

      return balance;
    }

    public String getNativeCurrency() {

      return nativeCurrency;
    }

    private void setNativeCurrency(String nativeCurrency) {

      this.nativeCurrency = nativeCurrency;
    }

    @JsonIgnore
    public CoinbaseBuySellLevel getBuyLevel() {

      return buyLevel;
    }

    @JsonIgnore
    public CoinbaseBuySellLevel getSellLevel() {

      return sellLevel;
    }

    @JsonIgnore
    public CoinbaseMoney getBuyLimit() {

      return buyLimit;
    }

    @JsonIgnore
    public CoinbaseMoney getSellLimit() {

      return sellLimit;
    }

    public String getPin() {

      return pin;
    }

    private void setPin(String pin) {

      this.pin = pin;
    }

    @JsonIgnore
    public CoinbaseMerchant getMerchant() {

      return merchant;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
  }


      return "CoinbaseUserInfo [id="
          + id
          + ", email="
          + email
          + ", name="
          + name
          + ", password="
          + password
          + ", receiveAddress="
          + receiveAddress
          + ", referrerId="
          + referrerId
          + ", timeZone="
          + timeZone
          + ", balance="
          + balance
          + ", nativeCurrency="
          + nativeCurrency
          + ", buyLevel="
          + buyLevel
          + ", sellLevel="
          + sellLevel
          + ", buyLimit="
          + buyLimit
          + ", sellLimit="
          + sellLimit
          + ", pin="
          + pin
          + ", merchant="
          + merchant
          + "]";
    
<methods>public List<java.lang.String> getErrors() ,public boolean isSuccess() ,public java.lang.String toString() <variables>private final non-sealed List<java.lang.String> errors,private final non-sealed boolean success