/*!
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */
import { APIApplicationCommandIntegerOption, APIApplicationCommandNumberOption, APIApplicationCommandOptionChoice, ApplicationCommandOptionType } from "discord-api-types/v10";
import { RexArray } from "../../types/types.js";
import { RexSlashCommandOptionBase } from "./optionsBase.js";
export declare abstract class RexSlashCommandNumberOptionBase extends RexSlashCommandOptionBase<ApplicationCommandOptionType.Integer | ApplicationCommandOptionType.Number> {
    private _choices?;
    private _autocomplete?;
    private _minValue?;
    private _maxValue?;
    /**
     * add a choice to this option
     * @param name name of the choice
     * @param value value of the choice
     * @returns this
     */
    addChoice(name: string, value: number): Omit<this, "setAutocomplete" | "setMinValue">;
    /**
     * add choices to this option
     * @param choices choices for this option
     * @returns this
     */
    addChoices(...choices: RexArray<APIApplicationCommandOptionChoice<number>>): Omit<this, "setAutocomplete" | "setMinValue">;
    /**
     * add choices to this option that share the same name and value
     * @param values choice values
     * @returns this
     */
    addChoicesNormalized(...values: RexArray<number>): Omit<this, "setAutocomplete" | "setMinValue">;
    /**
     * set the choices for this option, earlier set options will be dropped
     * @param choices choices for this option
     * @returns this
     */
    setChoices(...choices: RexArray<APIApplicationCommandOptionChoice<number>>): Omit<this, "setAutocomplete" | "setMinValue">;
    /**
     * remove choices from this option
     */
    setChoices(): this["setAutocomplete"] extends never ? this & Pick<RexSlashCommandNumberOptionBase, "setAutocomplete" | "setMinValue"> : this;
    /**
     * set the choices for this option whereby the name & value are the same , earlier set options will be dropped
     * @param values values for this option
     */
    setChoicesNormalized(...values: RexArray<number>): Omit<this, "setAutocomplete" | "setMinValue">;
    /**
     * remove choices from this option
     */
    setChoicesNormalized(): this["setAutocomplete"] extends never ? this & Pick<RexSlashCommandNumberOptionBase, "setAutocomplete" | "setMinValue"> : this;
    /**
     * set a minimal value for this option
     * @param min minimal value
     * @returns this
     */
    setMinValue(min: number): this;
    /**
     * set the maximum value for this option
     * @param max the maximum value
     * @returns this
     */
    setMaxValue(max: number): this;
    /**
     * turn on autocomplete for this option
     * @param value true
     */
    setAutocomplete(value: true): Omit<this, "setChoices" | "setChoicesNormalized" | "addChoicesNormalized" | "addChoices">;
    /**
     * turn off autocomplete
     * @param value false
     */
    setAutocomplete(value: false): this["setChoices"] extends never ? this & Pick<RexSlashCommandNumberOptionBase, "setChoices" | "setChoicesNormalized" | "addChoicesNormalized" | "addChoices"> : this;
    toJSON(): APIApplicationCommandIntegerOption | APIApplicationCommandNumberOption;
}
