/**
 *
 * 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 contact information. This is only available if the user has chosen to make it public. This is only provided in authenticated API requests.
 *
 * @param homePhone The user's home phone number.
 * @param workPhone The user's work phone number.
 * @param cellPhone The user's cell phone number.
 * @param email The user's email address as provided on the contact section of the profile. Might differ from their account emails.
 * @param contactForm The URL to the user's contact form.
 * @param calendar The URL to the user's calendar.
 */
@JsonClass(generateAdapter = true)
public class ProfileContactInfo internal constructor(
    // The user's home phone number.
    @Json(name = "home_phone")
    public val homePhone: kotlin.String? = null,
    // The user's work phone number.
    @Json(name = "work_phone")
    public val workPhone: kotlin.String? = null,
    // The user's cell phone number.
    @Json(name = "cell_phone")
    public val cellPhone: kotlin.String? = null,
    // The user's email address as provided on the contact section of the profile. Might differ from their account emails.
    @Json(name = "email")
    public val email: kotlin.String? = null,
    // The URL to the user's contact form.
    @Json(name = "contact_form")
    public val contactForm: java.net.URI? = null,
    // The URL to the user's calendar.
    @Json(name = "calendar")
    public val calendar: java.net.URI? = null,
) {
    override fun toString(): String = "ProfileContactInfo(homePhone=$homePhone, workPhone=$workPhone, cellPhone=$cellPhone, email=$email, contactForm=$contactForm, calendar=$calendar)"

    override fun equals(other: Any?): Boolean = other is ProfileContactInfo &&
        homePhone == other.homePhone &&
        workPhone == other.workPhone &&
        cellPhone == other.cellPhone &&
        email == other.email &&
        contactForm == other.contactForm &&
        calendar == other.calendar

    override fun hashCode(): Int = Objects.hash(homePhone, workPhone, cellPhone, email, contactForm, calendar)

    public class Builder {
        // The user's home phone number.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var homePhone: kotlin.String? = null

        // The user's work phone number.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var workPhone: kotlin.String? = null

        // The user's cell phone number.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var cellPhone: kotlin.String? = null

        // The user's email address as provided on the contact section of the profile. Might differ from their account emails.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var email: kotlin.String? = null

        // The URL to the user's contact form.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var contactForm: java.net.URI? = null

        // The URL to the user's calendar.
        @set:JvmSynthetic // Hide 'void' setter from Java
        public var calendar: java.net.URI? = null

        public fun setHomePhone(homePhone: kotlin.String?): Builder = apply { this.homePhone = homePhone }

        public fun setWorkPhone(workPhone: kotlin.String?): Builder = apply { this.workPhone = workPhone }

        public fun setCellPhone(cellPhone: kotlin.String?): Builder = apply { this.cellPhone = cellPhone }

        public fun setEmail(email: kotlin.String?): Builder = apply { this.email = email }

        public fun setContactForm(contactForm: java.net.URI?): Builder = apply { this.contactForm = contactForm }

        public fun setCalendar(calendar: java.net.URI?): Builder = apply { this.calendar = calendar }

        public fun build(): ProfileContactInfo = ProfileContactInfo(homePhone, workPhone, cellPhone, email, contactForm, calendar)
    }
}

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