/*!
 * 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 { APIInteractionGuildMember } from "discord-api-types/v10";
import { AutocompleteInteraction, CacheType, CacheTypeReducer, CommandInteraction, GuildMember, MessageComponentInteraction, ModalSubmitInteraction, TextBasedChannel } from "discord.js";
export declare abstract class RexInteractionBase {
    protected inter: CommandInteraction | AutocompleteInteraction | MessageComponentInteraction | ModalSubmitInteraction;
    constructor(inter: CommandInteraction | AutocompleteInteraction | MessageComponentInteraction | ModalSubmitInteraction);
    get appPermissions(): Readonly<import("discord.js").PermissionsBitField> | null;
    get channel(): TextBasedChannel | null;
    get channelId(): string | null;
    get client(): import("discord.js").Client<true>;
    get createdAt(): Date;
    get createdTimestamp(): number;
    get guild(): import("discord.js").Guild | null;
    get guildId(): string | null;
    get guildLocale(): import("discord.js").Locale | null;
    get id(): string;
    get member(): CacheTypeReducer<CacheType, GuildMember, APIInteractionGuildMember> | null;
    get memberPermissions(): Readonly<import("discord.js").PermissionsBitField> | null;
    get token(): string;
    get user(): import("discord.js").User;
    get locale(): import("discord.js").Locale;
    /**
     * wether this interaction came from a guild
     * @returns boolean
     */
    inGuild(): boolean;
    /**
     * wether this interaction came froma cached guild
     * @returns boolean
     */
    inCachedGuild(): boolean;
    /**
     * wether this interaction came froma raw guild
     * @returns boolean
     */
    inRawGuild(): boolean;
    toString(): string;
    toJSON(...props: Record<string, string | boolean>[]): unknown;
    /**
     * fetch the channel this command was in, will reject when not found or not a text channel
     */
    fetchChannel(): Promise<TextBasedChannel>;
    /**
     * check if the channel is an nsfw channel, will fetch the channel is it wasn't present
     * @param DMisNsfw if a dm channel should be seen as nsfw or not
     */
    inNSFWChannel(DMisNsfw?: boolean): Promise<boolean>;
}
