import type { ApplicationCommandOptionAllowedChannelType, ApplicationCommandOptionType } from 'discord-api-types/v10'; import type { RequiredOptionFields, DefaultValue, LocalizationMap } from '../types/shared.js'; export interface ChoiceOption { name: string; name_localizations?: LocalizationMap; value: T; } interface ApplicationCommandDataWithoutType { name: string; name_localizations?: LocalizationMap; description: string; description_localizations?: LocalizationMap; required?: boolean; min?: number; max?: number; min_length?: number; max_length?: number; autocomplete?: boolean; choices?: ChoiceOption[]; options?: ApplicationCommandData[]; channel_types?: ApplicationCommandOptionAllowedChannelType[]; } export type ApplicationCommandData = { type: ApplicationCommandOptionType; } & ApplicationCommandDataWithoutType; export declare abstract class BaseOption { protected data: ApplicationCommandDataWithoutType; _t: TComponentType; constructor(data: ApplicationCommandDataWithoutType); abstract get Type(): TComponentType; abstract toJSON(): TPayload; get Name(): string; get IsRequired(): boolean; required(): any; nameLocalizations(localizations: LocalizationMap): void; descriptionLocalizations(localizations: LocalizationMap): void; } export declare abstract class BaseDefaultableValue extends BaseOption { protected defaultValue: DefaultValue; get DefaultValue(): any; default(value: any): any; } export declare abstract class BaseChoiceOption extends BaseDefaultableValue { constructor(data: RequiredOptionFields); get Choices(): readonly any[] | undefined; choices(...choices: ChoiceOption[]): any; autocomplete(autocomplete: boolean): any; } export {}; //# sourceMappingURL=base.d.ts.map