import { Channel, ChatInputCommandInteraction, Role, User, APIRole, ApplicationCommandOptionType, ChannelType, Locale, GuildMember, APIInteractionDataResolvedGuildMember } from "discord.js"; export interface BaseSlashCommandOption { type: DiscordType; resolveValue: (interaction: ChatInputCommandInteraction) => OutputType; getExtraAPIProps: () => Record; name: string; nameLocalizations?: Record; description: string; descriptionLocalizations?: Record; required?: boolean; } type OptionBuilderInput, Name extends string> = Omit & { name: Name; }; type OptionBuilderOutput, InputType> = InputType & { type: OptionType["type"]; resolveValue: OptionType["resolveValue"]; getExtraAPIProps: OptionType["getExtraAPIProps"]; }; export type OptionBuilder> = >(opt: OptionInput) => OptionBuilderOutput; export declare function makeOptionBuilder>(builderFn: OptionBuilder): OptionBuilder; export type StringSlashCommandOptionChoice = { name: string; nameLocalizations?: Record; value: string; }; interface StringSlashCommandOption extends BaseSlashCommandOption { choices?: StringSlashCommandOptionChoice[]; minLength?: string; maxLength?: string; } export type IntegerSlashCommandOptionChoice = { name: string; nameLocalizations?: Record; value: number; }; export type IntegerSlashCommandOption = BaseSlashCommandOption & { choices?: IntegerSlashCommandOptionChoice[]; minValue?: number; maxValue?: number; }; export type BooleanSlashCommandOption = BaseSlashCommandOption; export type UserSlashCommandOption = BaseSlashCommandOption; export type ChannelSlashCommandOption = BaseSlashCommandOption> & { channelTypes: TChannelType; }; declare function channelOptionBuilder, Name>>(opt: OptionInput): OptionBuilderOutput, OptionInput>; export type RoleSlashCommandOption = BaseSlashCommandOption; export type MentionableSlashCommandOption = BaseSlashCommandOption; export type NumberSlashCommandOptionChoice = { name: string; nameLocalizations?: Record; value: number; }; export type NumberSlashCommandOption = BaseSlashCommandOption & { choices?: NumberSlashCommandOptionChoice[]; minValue?: number; maxValue?: number; }; export declare const slashOptions: { string: OptionBuilder; integer: OptionBuilder; boolean: OptionBuilder; user: OptionBuilder; channel: typeof channelOptionBuilder; role: OptionBuilder; mentionable: OptionBuilder; number: OptionBuilder; }; export {};