import type { Attachment, Channel, ChatInputCommandInteraction, GuildMember, Role, User } from 'discord.js'; import { SubCommand, SubCommandGroup } from './options/group/index.js'; import { AttachmentOption, BooleanOption, ChannelOption, IntegerOption, MentionableOption, NumberOption, RoleOption, StringOption, UserOption } from './options/value/index.js'; import type { LocalizationMap, MakeOption, NamedOption, OptionMode, Simplify, XORIfNotEmpty } from './types/shared.js'; import type { VxppyCommandContext, VxppySlashCommandMetadata } from './types/exported.js'; type SlashCommandState = 'root' | 'subcommand' | 'options'; export interface SlashCommandContext { interaction: ChatInputCommandInteraction; ctx: VxppyCommandContext; options: TArgs; } export type SlashCommandCallback = (ctx: SlashCommandContext) => any; type AnyOption = StringOption | IntegerOption | BooleanOption | UserOption | ChannelOption | RoleOption | MentionableOption | NumberOption | AttachmentOption | SubCommand | SubCommandGroup; export declare class VxppySlashCommand { private state; private data; private executeFn; private props; private canPushRequired; private options; constructor({ name, description }: { name: string; description: string; }); get Name(): string; get Options(): readonly AnyOption[]; nameLocalizations(localizations: LocalizationMap): void; descriptionLocalizations(localizations: LocalizationMap): void; nsfw(): void; callback(callback: SlashCommandCallback): this; execute(interaction: ChatInputCommandInteraction, ctx: TCtx): Promise; addStringOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: StringOption) => TCanHaveRequired extends true ? StringOption : StringOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addBooleanOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: BooleanOption) => TCanHaveRequired extends true ? BooleanOption : BooleanOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addIntegerOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: IntegerOption) => TCanHaveRequired extends true ? IntegerOption : IntegerOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addUserOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: UserOption) => TCanHaveRequired extends true ? UserOption : UserOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addRoleOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: RoleOption) => TCanHaveRequired extends true ? RoleOption : RoleOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addMentionableOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: MentionableOption) => TCanHaveRequired extends true ? MentionableOption : MentionableOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addChannelOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: ChannelOption) => TCanHaveRequired extends true ? ChannelOption : ChannelOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addNumberOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: NumberOption) => TCanHaveRequired extends true ? NumberOption : NumberOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addAttachmentOption(this: VxppySlashCommand, data: NamedOption, transform?: (option: AttachmentOption) => TCanHaveRequired extends true ? AttachmentOption : AttachmentOption): VxppySlashCommand>, TCanHaveRequired extends true ? TRequired : false, "options">; addSubCommand(this: VxppySlashCommand, data: NamedOption, transform?: (sub: SubCommand<{}, true>) => SubCommand): VxppySlashCommand>, true, "subcommand">; addSubCommandGroup(this: VxppySlashCommand, data: NamedOption, transform?: (group: SubCommandGroup<{}>) => SubCommand): VxppySlashCommand>, true, "subcommand">; private addOption; setProps(data: Partial): this; getProp(x: K): TMetadata[K]; toJSON(): { options: (import("discord.js").APIApplicationCommandBooleanOption | import("discord.js").APIApplicationCommandIntegerOption | import("discord.js").APIApplicationCommandNumberOption | import("discord.js").APIApplicationCommandStringOption | import("discord.js").APIApplicationCommandUserOption | import("discord.js").APIApplicationCommandRoleOption | import("discord.js").APIApplicationCommandChannelOption | import("discord.js").APIApplicationCommandMentionableOption | import("discord.js").APIApplicationCommandAttachmentOption | import("discord.js").APIApplicationCommandSubcommandOption | import("discord.js").APIApplicationCommandSubcommandGroupOption)[]; name: string; name_localizations?: LocalizationMap; description: string; description_localizations?: LocalizationMap; nsfw?: boolean; }; } export declare const slashCommand: (data: { name: string; description: string; }) => VxppySlashCommand; export {}; //# sourceMappingURL=command.d.ts.map