// Generated by delombok at Tue Dec 16 19:34:32 UTC 2025
package net.md_5.bungee.api.dialog;

import lombok.NonNull;
import net.md_5.bungee.api.dialog.action.ActionButton;

/**
 * Represents a simple dialog with text and two actions at the bottom (default:
 * "yes", "no").
 */
public final class ConfirmationDialog implements Dialog {
    @NonNull
    private DialogBase base;
    /**
     * The "yes" click action / bottom (appears on the left).
     */
    private ActionButton yes;
    /**
     * The "no" click action / bottom (appears on the right).
     */
    private ActionButton no;

    public ConfirmationDialog(@NonNull DialogBase base) {
        this(base, null, null);
        if (base == null) {
            throw new java.lang.NullPointerException("base is marked non-null but is null");
        }
    }

    @NonNull
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public DialogBase getBase() {
        return this.base;
    }

    /**
     * The "yes" click action / bottom (appears on the left).
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public ActionButton yes() {
        return this.yes;
    }

    /**
     * The "no" click action / bottom (appears on the right).
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public ActionButton no() {
        return this.no;
    }

    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public void setBase(@NonNull final DialogBase base) {
        if (base == null) {
            throw new java.lang.NullPointerException("base is marked non-null but is null");
        }
        this.base = base;
    }

    /**
     * The "yes" click action / bottom (appears on the left).
     * @return {@code this}.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public ConfirmationDialog yes(final ActionButton yes) {
        this.yes = yes;
        return this;
    }

    /**
     * The "no" click action / bottom (appears on the right).
     * @return {@code this}.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public ConfirmationDialog no(final ActionButton no) {
        this.no = no;
        return this;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public java.lang.String toString() {
        return "ConfirmationDialog(base=" + this.getBase() + ", yes=" + this.yes() + ", no=" + this.no() + ")";
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public boolean equals(final java.lang.Object o) {
        if (o == this) return true;
        if (!(o instanceof ConfirmationDialog)) return false;
        final ConfirmationDialog other = (ConfirmationDialog) o;
        final java.lang.Object this$base = this.getBase();
        final java.lang.Object other$base = other.getBase();
        if (this$base == null ? other$base != null : !this$base.equals(other$base)) return false;
        final java.lang.Object this$yes = this.yes();
        final java.lang.Object other$yes = other.yes();
        if (this$yes == null ? other$yes != null : !this$yes.equals(other$yes)) return false;
        final java.lang.Object this$no = this.no();
        final java.lang.Object other$no = other.no();
        if (this$no == null ? other$no != null : !this$no.equals(other$no)) return false;
        return true;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final java.lang.Object $base = this.getBase();
        result = result * PRIME + ($base == null ? 43 : $base.hashCode());
        final java.lang.Object $yes = this.yes();
        result = result * PRIME + ($yes == null ? 43 : $yes.hashCode());
        final java.lang.Object $no = this.no();
        result = result * PRIME + ($no == null ? 43 : $no.hashCode());
        return result;
    }

    /**
     * Creates a new {@code ConfirmationDialog} instance.
     *
     * @param base
     * @param yes The "yes" click action / bottom (appears on the left).
     * @param no The "no" click action / bottom (appears on the right).
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public ConfirmationDialog(@NonNull final DialogBase base, final ActionButton yes, final ActionButton no) {
        if (base == null) {
            throw new java.lang.NullPointerException("base is marked non-null but is null");
        }
        this.base = base;
        this.yes = yes;
        this.no = no;
    }
}
