/**
 *
 * 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

/**
 * The user's public payment information. This is only provided in authenticated API requests.
 *
 * @param links A list of payment URLs the user has added to their profile.
 * @param cryptoWallets A list of crypto currencies the user accepts.
 */
@JsonClass(generateAdapter = true)
public class ProfilePayments internal constructor(
    // A list of payment URLs the user has added to their profile.
    @Json(name = "links")
    public val links: kotlin.collections.List<Link>,
    // A list of crypto currencies the user accepts.
    @Json(name = "crypto_wallets")
    public val cryptoWallets: kotlin.collections.List<CryptoWalletAddress>,
) {
    override fun toString(): String = "ProfilePayments(links=$links, cryptoWallets=$cryptoWallets)"

    override fun equals(other: Any?): Boolean = other is ProfilePayments &&
        links == other.links &&
        cryptoWallets == other.cryptoWallets

    override fun hashCode(): Int = Objects.hash(links, cryptoWallets)

    public class Builder {
        // A list of payment URLs the user has added to their profile.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var links: kotlin.collections.List<Link>? = null

        // A list of crypto currencies the user accepts.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var cryptoWallets: kotlin.collections.List<CryptoWalletAddress>? = null

        public fun setLinks(links: kotlin.collections.List<Link>?): Builder = apply { this.links = links }

        public fun setCryptoWallets(cryptoWallets: kotlin.collections.List<CryptoWalletAddress>?): Builder = apply { this.cryptoWallets = cryptoWallets }

        public fun build(): ProfilePayments = ProfilePayments(links!!, cryptoWallets!!)
    }
}

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