/*!
 * 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 { APIModalInteractionResponseCallbackData } from "discord-api-types/v10";
import { AwaitModalSubmitOptions, ButtonInteraction, CacheType, GuildCacheMessage, JSONEncodable, MessageComponentType, ModalComponentData, ModalSubmitInteraction } from "discord.js";
import { ExtraCommandReplyInteractionOptions, SelectMenuInteraction } from "../../types/types.js";
import { RexModalSubmitInteraction } from "../modal/modalSubmit.js";
import { RexUpdateReplyInteractionBase } from "../replyUpdateBase.js";
export declare abstract class RexComponentInteractionBase extends RexUpdateReplyInteractionBase {
    inter: ButtonInteraction | SelectMenuInteraction;
    constructor(inter: ButtonInteraction | SelectMenuInteraction, opt?: ExtraCommandReplyInteractionOptions);
    get message(): GuildCacheMessage<CacheType>;
    get component(): import("discord.js").ButtonComponent | import("discord.js").StringSelectMenuComponent | import("discord.js").UserSelectMenuComponent | import("discord.js").RoleSelectMenuComponent | import("discord.js").MentionableSelectMenuComponent | import("discord.js").APIButtonComponent | import("discord.js").APIStringSelectComponent | import("discord.js").APIUserSelectComponent | import("discord.js").APIRoleSelectComponent | import("discord.js").APIMentionableSelectComponent;
    get componentType(): Exclude<MessageComponentType, "ACTION_ROW" | "TEXT_INPUT">;
    get customId(): string;
    get version(): number;
    /**
     * Shows a modal component
     * @param modal The modal to show
     * @returns {Promise<void>}
     */
    showModal(modal: JSONEncodable<APIModalInteractionResponseCallbackData> | ModalComponentData | APIModalInteractionResponseCallbackData): Promise<void>;
    /**
     * Collects a single modal submit interaction that passes the filter. The Promise will reject if the time expires.
     * @param options Options to pass to the internal collector
     * @returns ModalInteraction
     */
    awaitModalSubmit(options: AwaitModalSubmitOptions<ModalSubmitInteraction>): Promise<RexModalSubmitInteraction>;
}
