/**
 *
 * Please note:
 * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * Do not edit this file manually.
 *
 */
package com.gravatar.restapi.models

import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import java.util.Objects

/**
 * A crypto currency wallet address the user accepts.
 *
 * @param label The label for the crypto currency.
 * @param address The wallet address for the crypto currency.
 */
@JsonClass(generateAdapter = true)
public class CryptoWalletAddress internal constructor(
    // The label for the crypto currency.
    @Json(name = "label")
    public val label: kotlin.String,
    // The wallet address for the crypto currency.
    @Json(name = "address")
    public val address: kotlin.String,
) {
    override fun toString(): String = "CryptoWalletAddress(label=$label, address=$address)"

    override fun equals(other: Any?): Boolean = other is CryptoWalletAddress &&
        label == other.label &&
        address == other.address

    override fun hashCode(): Int = Objects.hash(label, address)

    public class Builder {
        // The label for the crypto currency.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var label: kotlin.String? = null

        // The wallet address for the crypto currency.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var address: kotlin.String? = null

        public fun setLabel(label: kotlin.String?): Builder = apply { this.label = label }

        public fun setAddress(address: kotlin.String?): Builder = apply { this.address = address }

        public fun build(): CryptoWalletAddress = CryptoWalletAddress(label!!, address!!)
    }
}

@JvmSynthetic // Hide from Java callers who should use Builder.
public fun CryptoWalletAddress(initializer: CryptoWalletAddress.Builder.() -> Unit): CryptoWalletAddress {
    return CryptoWalletAddress.Builder().apply(initializer).build()
}
