import { type DiscordLocale } from "./constants.js"; import { type DiscordPermissionName } from "./permissions.js"; import type { DiscordApplicationCommand } from "./types.js"; export declare const GUILD_APPLICATION_COMMAND_TYPES: readonly ["chat-input", "user", "message"]; export type GuildApplicationCommandType = typeof GUILD_APPLICATION_COMMAND_TYPES[number]; export declare const GUILD_APPLICATION_COMMAND_OPTION_TYPES: readonly ["subcommand", "subcommand-group", "string", "integer", "boolean", "user", "channel", "role", "mentionable", "number", "attachment"]; export type GuildApplicationCommandOptionType = typeof GUILD_APPLICATION_COMMAND_OPTION_TYPES[number]; export declare const DISCORD_APPLICATION_COMMAND_LOCALES: readonly ["id", "da", "de", "en-GB", "en-US", "es-ES", "es-419", "fr", "hr", "it", "lt", "hu", "nl", "no", "pl", "pt-BR", "ro", "fi", "sv-SE", "vi", "tr", "cs", "el", "bg", "ru", "uk", "hi", "th", "zh-CN", "ja", "zh-TW", "ko"]; export type DiscordApplicationCommandLocale = DiscordLocale; export declare const GUILD_APPLICATION_COMMAND_CHANNEL_TYPES: readonly ["guild-text", "guild-voice", "guild-category", "guild-announcement", "announcement-thread", "public-thread", "private-thread", "guild-stage-voice", "guild-directory", "guild-forum", "guild-media"]; export type GuildApplicationCommandChannelType = typeof GUILD_APPLICATION_COMMAND_CHANNEL_TYPES[number]; export declare const GUILD_APPLICATION_COMMAND_FILE_TYPE_GROUPS: readonly ["image", "video", "audio"]; export type GuildApplicationCommandFileTypeGroup = typeof GUILD_APPLICATION_COMMAND_FILE_TYPE_GROUPS[number]; export type GuildApplicationCommandFileType = GuildApplicationCommandFileTypeGroup | `.${string}`; export interface GuildApplicationCommandLocalization { locale: DiscordApplicationCommandLocale; value: string; } export interface GuildApplicationCommandChoice { name: string; nameLocalizations: GuildApplicationCommandLocalization[]; value: number | string; } interface GuildApplicationCommandOptionBase { description: string; descriptionLocalizations: GuildApplicationCommandLocalization[]; name: string; nameLocalizations: GuildApplicationCommandLocalization[]; type: GuildApplicationCommandOptionType; } export interface GuildApplicationCommandSubcommandOption extends GuildApplicationCommandOptionBase { options: GuildApplicationCommandScalarOption[]; type: "subcommand"; } export interface GuildApplicationCommandSubcommandGroupOption extends GuildApplicationCommandOptionBase { options: GuildApplicationCommandSubcommandOption[]; type: "subcommand-group"; } interface GuildApplicationCommandScalarOptionBase extends GuildApplicationCommandOptionBase { required: boolean; } export interface GuildApplicationCommandStringOption extends GuildApplicationCommandScalarOptionBase { autocomplete: boolean; choices: GuildApplicationCommandChoice[]; maxLength?: number; minLength?: number; type: "string"; } export interface GuildApplicationCommandIntegerOption extends GuildApplicationCommandScalarOptionBase { autocomplete: boolean; choices: GuildApplicationCommandChoice[]; maximum?: number; minimum?: number; type: "integer"; } export interface GuildApplicationCommandNumberOption extends GuildApplicationCommandScalarOptionBase { autocomplete: boolean; choices: GuildApplicationCommandChoice[]; maximum?: number; minimum?: number; type: "number"; } export interface GuildApplicationCommandChannelOption extends GuildApplicationCommandScalarOptionBase { channelTypes: GuildApplicationCommandChannelType[]; type: "channel"; } export interface GuildApplicationCommandAttachmentOption extends GuildApplicationCommandScalarOptionBase { fileTypes: GuildApplicationCommandFileType[]; type: "attachment"; } export interface GuildApplicationCommandSimpleOption extends GuildApplicationCommandScalarOptionBase { type: "boolean" | "mentionable" | "role" | "user"; } export type GuildApplicationCommandScalarOption = GuildApplicationCommandAttachmentOption | GuildApplicationCommandChannelOption | GuildApplicationCommandIntegerOption | GuildApplicationCommandNumberOption | GuildApplicationCommandSimpleOption | GuildApplicationCommandStringOption; export type GuildApplicationCommandOption = GuildApplicationCommandScalarOption | GuildApplicationCommandSubcommandGroupOption | GuildApplicationCommandSubcommandOption; interface GuildApplicationCommandDefinitionBase { defaultMemberPermissions: DiscordPermissionName[] | null; name: string; nameLocalizations: GuildApplicationCommandLocalization[]; nsfw: boolean; type: GuildApplicationCommandType; } export interface GuildChatInputApplicationCommandDefinition extends GuildApplicationCommandDefinitionBase { description: string; descriptionLocalizations: GuildApplicationCommandLocalization[]; options: GuildApplicationCommandOption[]; type: "chat-input"; } export interface GuildContextApplicationCommandDefinition extends GuildApplicationCommandDefinitionBase { type: "message" | "user"; } export type GuildApplicationCommandDefinition = GuildChatInputApplicationCommandDefinition | GuildContextApplicationCommandDefinition; export interface GuildApplicationCommandApiChoice { name: string; name_localizations: Record | null; value: number | string; } export interface GuildApplicationCommandApiOption { autocomplete?: boolean; channel_types?: number[]; choices?: GuildApplicationCommandApiChoice[]; description: string; description_localizations: Record | null; file_types?: string[]; max_length?: number; max_value?: number; min_length?: number; min_value?: number; name: string; name_localizations: Record | null; options?: GuildApplicationCommandApiOption[]; required?: boolean; type: number; } export interface GuildApplicationCommandApiBody { default_member_permissions: string | null; description?: string; description_localizations?: Record | null; name: string; name_localizations: Record | null; nsfw: boolean; options?: GuildApplicationCommandApiOption[]; type: number; } export interface ProjectedGuildApplicationCommand { applicationId: string; commandId: string; definition: GuildApplicationCommandDefinition; guildId: string; immutableEvidence: { contexts: number[] | null; defaultPermission: boolean | null; dmPermission: boolean | null; integrationTypes: number[] | null; }; version: string; } export declare class GuildApplicationCommandDefinitionError extends Error { constructor(message: string); } export declare function guildApplicationCommandCharacterCount(definition: GuildApplicationCommandDefinition): number; export declare function normalizeGuildApplicationCommandDefinition(value: unknown): GuildApplicationCommandDefinition; export declare function guildApplicationCommandApiBody(value: unknown): GuildApplicationCommandApiBody; export declare function projectGuildApplicationCommand(value: DiscordApplicationCommand, expectedApplicationId: string, expectedGuildId: string): ProjectedGuildApplicationCommand; export declare function guildApplicationCommandDefinitionDigest(definition: GuildApplicationCommandDefinition): string; export declare function sameGuildApplicationCommandDefinition(left: GuildApplicationCommandDefinition, right: GuildApplicationCommandDefinition): boolean; export declare function guildApplicationCommandTypeCode(type: GuildApplicationCommandType): number; export {}; //# sourceMappingURL=guild-application-command-definition.d.ts.map