import type { ButtonInteraction, CacheType, ChannelSelectMenuInteraction, ChatInputCommandInteraction, MentionableSelectMenuInteraction, MessageContextMenuCommandInteraction, ModalMessageModalSubmitInteraction, ModalSubmitInteraction, RoleSelectMenuInteraction, StringSelectMenuInteraction, UserContextMenuCommandInteraction, UserSelectMenuInteraction } from "discord.js"; import { type InferRouteParams } from "rou3"; import type { NotEmptyArray, Prettify, UniqueArray } from "../../utils/types.js"; import type { WithCustomId } from "./emit.js"; export declare enum ResponderType { Button = "button", StringSelect = "select.string", UserSelect = "select.user", RoleSelect = "select.role", ChannelSelect = "select.channel", MentionableSelect = "select.mentionable", Modal = "modal", ModalComponent = "modal.component", ChatInput = "command.chat.input", UserContextMenu = "command.context.user", MessageContextMenu = "command.context.message" } export type ResponderInteraction = { [ResponderType.Button]: ButtonInteraction; [ResponderType.StringSelect]: StringSelectMenuInteraction; [ResponderType.UserSelect]: UserSelectMenuInteraction; [ResponderType.RoleSelect]: RoleSelectMenuInteraction; [ResponderType.ChannelSelect]: ChannelSelectMenuInteraction; [ResponderType.MentionableSelect]: MentionableSelectMenuInteraction; [ResponderType.Modal]: ModalSubmitInteraction; [ResponderType.ModalComponent]: ModalMessageModalSubmitInteraction; [ResponderType.ChatInput]: WithCustomId>; [ResponderType.UserContextMenu]: WithCustomId>; [ResponderType.MessageContextMenu]: WithCustomId>; }[Type]; type ResolveParams = Prettify>; export interface ResponderData { customId: Path; types: NotEmptyArray>; cache?: Cache; parse?(this: void, params: InferRouteParams): Parsed; run(this: void, interaction: ResponderInteraction, params: ResolveParams): Promise; } export declare class Responder { readonly data: ResponderData; constructor(data: ResponderData); } export {};