import { EventEmitter } from 'events';
import { User, Message, EmbedBuilder, ReactionCollector, BaseInteraction, TextBasedChannel, CommandInteraction, InteractionResponse, MessageComponentInteraction } from 'discord.js';
import { ButtonType, DiscordEmbedMenuPage } from './discord_embed_menu_page';
type DiscordEmbedMenuType = {
    name: string;
    content: EmbedBuilder;
    reactions: {
        [key: string]: string;
    };
    buttons?: Record<string, ButtonType>;
    index: number;
};
type StartOptions = {
    send: boolean;
    followUp: boolean;
    reply: boolean;
};
export declare class DiscordEmbedMenu extends EventEmitter {
    private static readonly REQUIRED_PERMS;
    private static LOADING_MESSAGE;
    interaction: CommandInteraction;
    channel: TextBasedChannel;
    user: User;
    pages: any[];
    timeout: number;
    deleteOnTimeout: boolean;
    mention: boolean;
    keepUserReactionOnStop: boolean;
    loadingMessage: string;
    private isDM;
    private userTag;
    currentPage: DiscordEmbedMenuPage;
    pageIndex: number;
    menu: Message | InteractionResponse | null;
    reactionCollector: ReactionCollector | null;
    componentCollector: MessageComponentInteraction | null;
    data: any;
    constructor(interaction: BaseInteraction, pages: (DiscordEmbedMenuType | DiscordEmbedMenuPage)[], timeout?: number, deleteOnTimeout?: boolean, mention?: boolean, keepUserReactionOnStop?: boolean, loadingMessage?: string);
    start(options: StartOptions): Promise<void>;
    stop(): Promise<void | Message>;
    delete(): Promise<void | Message>;
    private clearReactions;
    setPage(page?: number | string, options?: StartOptions): Promise<void>;
    private addReactions;
    private stopReactions;
    private awaitButtons;
    private awaitReactions;
}
export {};
