import { APIApplicationCommandInteraction, APIApplicationCommandAutocompleteInteraction, APIModalSubmitInteraction, APIApplicationCommandInteractionDataOption, APIInteractionDataResolvedChannel, APIUser, APIInteractionDataResolvedGuildMember, APIRole, APIAttachment, APIMessage, ApplicationCommandOptionType } from 'discord-api-types/v10';

/**
 * Utility class for resolving command interaction options while working with the raw API.
 * Based on {@linkplain https://github.com/discordjs/discord.js/blob/main/packages/discord.js/src/structures/CommandInteractionOptionResolver.js}
 */
declare class InteractionOptionResolver {
    private readonly interaction;
    /**
     * The interaction options array
     */
    private readonly data;
    /**
     * The interaction resolved data
     */
    private readonly resolved;
    /**
     * Bottom-level options for the interaction
     * If there is a subcommand (or subcommand and group), this represents the options for the subcommand.
     */
    private readonly hoistedOptions;
    /**
     * The name of the subcommand group
     */
    private readonly group;
    /**
     * The name of the subcommand
     */
    private readonly subcommand;
    constructor(interaction: APIApplicationCommandInteraction | APIApplicationCommandAutocompleteInteraction | APIModalSubmitInteraction);
    /**
     * Gets an option by its name
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    get<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIApplicationCommandInteractionDataOption>;
    /**
     * Gets the selected subcommand
     * @param required Whether to throw an error if there is no subcommand
     */
    getSubcommand<Required extends boolean = false>(required?: Required): RequiredIf<Required, string>;
    /**
     * Gets the selected subcommand group
     * @param required Whether to throw an error if there is no subcommand group
     */
    getSubcommandGroup<Required extends boolean = false>(required?: Required): RequiredIf<Required, string>;
    /**
     * Gets a boolean option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getBoolean<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, boolean>;
    /**
     * Gets a channel option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getChannel<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIInteractionDataResolvedChannel>;
    /**
     * Gets a string option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getString<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, string>;
    /**
     * Gets an integer option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getInteger<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, number>;
    /**
     * Gets a number option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getNumber<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, number>;
    /**
     * Gets a user option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getUser<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIUser>;
    /**
     * Gets a member option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getMember<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIInteractionDataResolvedGuildMember>;
    /**
     * Gets a role option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getRole<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIRole>;
    /**
     * Gets an attachment option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getAttachment<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIAttachment>;
    /**
     * Gets a mentionable option
     * @param name The name of the option
     * @param required Whether to throw an error if the option is not found
     */
    getMentionable<Required extends boolean = false>(name: string, required?: Required): RequiredIf<Required, APIUser | APIInteractionDataResolvedGuildMember | APIRole>;
    /**
     * Gets the target user for a context menu interaction
     */
    getTargetUser(): APIUser;
    /**
     * Gets the target member for a context menu interaction
     * @param required Whether to throw an error if the member data is not present
     */
    getTargetMember<Required extends boolean = false>(required?: Required): RequiredIf<Required, APIInteractionDataResolvedGuildMember>;
    /**
     * Gets the target message for a context menu interaction
     */
    getTargetMessage(): APIMessage;
    /**
     * Gets the focused option for an autocomplete interaction
     */
    getFocusedOption(): {
        name: string;
        type: ApplicationCommandOptionType.Integer;
        value: number;
    } | {
        name: string;
        type: ApplicationCommandOptionType.Number;
        value: number;
    } | {
        name: string;
        type: ApplicationCommandOptionType.String;
        value: string;
    };
    private getTypedOption;
}
type If<Value extends boolean, TrueResult, FalseResult> = Value extends true ? TrueResult : Value extends false ? FalseResult : TrueResult | FalseResult;
type RequiredIf<Value extends boolean, ValueType, FallbackType = null> = If<Value, ValueType, ValueType | FallbackType>;

/**
 * Namespace containing limits related to Discord channels.
 */
declare const ChannelLimits: {
    /**
     * Maximum characters allowed in a channel description.
     */
    readonly MaximumDescriptionLength: 1024;
    /**
     * Maximum characters allowed in a channel name.
     */
    readonly MaximumNameLength: 100;
    /**
     * Maximum viewers allowed per screen share.
     * @deprecated Use `VoiceChannelLimits.MaximumViewersPerScreenShare` instead.
     */
    readonly MaximumViewersPerScreenShare: 50;
};
/**
 * Namespace containing limits related to Discord voice channels.
 */
declare const VoiceChannelLimits: {
    /**
     * Maximum viewers allowed per screen share.
     */
    MaximumViewersPerScreenShare: number;
    /**
     * Maximum user limit of voice channel.
     */
    MaximumUserLimit: number;
};
/**
 * Namespace containing limits related to Discord stage channels.
 */
declare const StageChannelLimits: {
    /**
     * Maximum user limit of stage channel.
     */
    MaximumUserLimit: number;
};
/**
 * Namespace containing limits related to Discord text channels.
 */
declare const TextChannelLimits: {
    /**
     * Maximum pins allowed in a text channel.
     */
    readonly MaximumMessagePins: 50;
};
/**
 * Namespace containing limits related to Discord threads.
 */
declare const ThreadLimits: {
    /**
     * Minimum number of threads to return from the threads API.
     */
    readonly MinimumThreadsToFetch: 1;
    /**
     * Maximum number of threads to return from the threads API.
     */
    readonly MaximumThreadsToFetch: 100;
};
/**
 * Namespace containing limits related to Discord embeds.
 */
declare const EmbedLimits: {
    /**
     * Maximum characters allowed in the author field of an embed.
     */
    readonly MaximumAuthorNameLength: 256;
    /**
     * Maximum characters allowed in an embed description.
     */
    readonly MaximumDescriptionLength: 4096;
    /**
     * Maximum characters allowed in the name of a field in an embed.
     */
    readonly MaximumFieldNameLength: 256;
    /**
     * Maximum fields allowed in an embed.
     */
    readonly MaximumFields: 25;
    /**
     * Maximum characters allowed in the value of a field in an embed.
     */
    readonly MaximumFieldValueLength: 1024;
    /**
     * Maximum characters allowed in a footer of an embed.
     */
    readonly MaximumFooterLength: 2048;
    /**
     * Maximum characters allowed in the title of an embed.
     */
    readonly MaximumTitleLength: 256;
    /**
     * Maximum characters allowed in an embed, in total.
     */
    readonly MaximumTotalCharacters: 6000;
};
/**
 * Namespace containing limits related to Discord emojis.
 */
declare const EmojiLimits: {
    /**
     * Maximum characters allowed in a custom guild emoji.
     */
    readonly MaximumEmojiNameLength: 32;
    /**
     * Maximum size allowed for a custom guild emoji.
     * Size is in bytes, and corresponds to 256KB.
     */
    readonly MaximumEmojiSize: 256000;
};
/**
 * Namespace containing limits related to Discord guilds.
 */
declare const GuildLimits: {
    /**
     * Maximum channels allowed per guild, including category channels.
     */
    readonly MaximumChannels: 500;
    /**
     * Maximum roles allowed in a guild.
     */
    readonly MaximumRoles: 250;
    /**
     * Maximum scheduled or active events allowed in a guild.
     */
    readonly MaximumScheduledOrActiveEvents: 100;
    /**
     * Minimum number of user guilds to return from the user guilds API.
     */
    readonly MinimumUserGuildsToFetch: 1;
    /**
     * Maximum number of user guilds to return from the user guilds API.
     */
    readonly MaximumUserGuildsToFetch: 200;
    /**
     * Maximum static emojis allowed in a guild.
     */
    readonly MaximumStaticEmojis: 50;
    /**
     * Maximum animated emojis allowed in a guild.
     */
    readonly MaximumAnimatedEmojis: 50;
    /**
     * Maximum emojis (static and animated) allowed in a guild.
     */
    readonly MaximumEmojis: 100;
    /**
     * Maximum stickers allowed in a guild.
     */
    readonly MaximumStickers: 5;
};
/**
 * Namespace containing limits related to premium Discord guilds.
 */
declare const PremiumGuildLimits: {
    readonly TierOne: {
        /**
         * Maximum static emojis allowed in a guild.
         */
        readonly MaximumStaticEmojis: 100;
        /**
         * Maximum animated emojis allowed in a guild.
         */
        readonly MaximumAnimatedEmojis: 100;
        /**
         * Maximum emojis (static and animated) allowed in a guild.
         */
        readonly MaximumEmojis: 200;
        /**
         * Maximum stickers allowed in a guild.
         */
        readonly MaximumStickers: 15;
    };
    readonly TierTwo: {
        /**
         * Maximum static emojis allowed in a guild.
         */
        readonly MaximumStaticEmojis: 150;
        /**
         * Maximum animated emojis allowed in a guild.
         */
        readonly MaximumAnimatedEmojis: 150;
        /**
         * Maximum emojis (static and animated) allowed in a guild.
         */
        readonly MaximumEmojis: 300;
        /**
         * Maximum stickers allowed in a guild.
         */
        readonly MaximumStickers: 30;
    };
    readonly TierThree: {
        /**
         * Maximum static emojis allowed in a guild.
         */
        readonly MaximumStaticEmojis: 250;
        /**
         * Maximum animated emojis allowed in a guild.
         */
        readonly MaximumAnimatedEmojis: 250;
        /**
         * Maximum emojis (static and animated) allowed in a guild.
         */
        readonly MaximumEmojis: 500;
        /**
         * Maximum stickers allowed in a guild.
         */
        readonly MaximumStickers: 60;
    };
};
/**
 * Namespace containing limits related to Discord guild scheduled events.
 */
declare const GuildScheduledEventLimits: {
    /**
     * Maximum number of users to return from the guild scheduled event users API.
     */
    readonly MaximumUsersToFetch: 100;
};
/**
 * Namespace containing limits related to Discord guild members.
 */
declare const GuildMemberLimits: {
    /**
     * Maximum characters allowed in the display name of a guild member.
     */
    readonly MaximumDisplayNameLength: 32;
    /**
     * Minimum number of members to return from the guild members API.
     */
    readonly MinimumMembersToFetch: 1;
    /**
     * Maximum number of members to return from the guild members API.
     */
    readonly MaximumMembersToFetch: 1000;
};
/**
 * Namespace containing limits related to Discord guild bans.
 */
declare const GuildBansLimits: {
    /**
     * Minimum number of bans to return from the guild bans API.
     */
    readonly MinimumBansToFetch: 1;
    /**
     * Maximum number of bans to return from the guild bans API.
     */
    readonly MaximumBansToFetch: 1000;
};
/**
 * Namespace containing limits related to Discord interactions.
 */
declare const InteractionLimits: {
    /**
     * Maximum buttons allowed in a single action row.
     */
    readonly MaximumButtonsPerActionRow: 5;
    /**
     * Maximum select menus allowed in a single action row.
     */
    readonly MaximumSelectMenusPerActionRow: 1;
    /**
     * Maximum text inputs allowed in a single action row.
     */
    readonly MaximumTextInputsPerActionRow: 1;
    /**
     * Maximum options allowed in a single select menu.
     */
    readonly MaximumOptionsInSelectMenus: 25;
};
/**
 * Namespace containing limits related to Discord application commands (slash commands).
 */
declare const ApplicationCommandLimits: {
    /**
     * Maximum characters allowed in an application command name.
     */
    readonly MaximumNameCharacters: 32;
    /**
     * Maximum characters allowed in an application command description.
     */
    readonly MaximumDescriptionCharacters: 100;
    /**
     * Maximum options allowed in an application command.
     */
    readonly MaximumOptionsLength: 25;
    /**
     * Maximum combined characters allowed in the name, description, and value properties of an application command, its options (including subcommands and groups), and choices.
     */
    readonly MaximumCombinedCharacters: 4000;
};
/**
 * Namespace containing limits related to Choices of Discord Application Commands.
 */
declare const ApplicationCommandOptionLimits: {
    /**
     * Maximum characters allowed in the name of an option of an application command.
     */
    readonly MaximumNameCharacters: 32;
    /**
     * Maximum characters allowed in the description of an option of an application command.
     */
    readonly MaximumDescriptionCharacters: 100;
    /**
     * Maximum length of choices allowed in the option of an application command.
     */
    readonly MaximumChoicesLength: 25;
    /**
     * Maximum length of string allowed in the string option of an application command.
     */
    readonly MaximumStringLength: 6000;
};
/**
 * Namespace containing limits related to Permissions of Discord Application Commands.
 */
declare const ApplicationCommandPermissionLimits: {
    /**
     * Maximum length of permissions allowed in the option of an application command.
     */
    readonly MaximumPermissionsLength: 100;
};
/**
 * Namespace containing limits related to Message Buttons.
 */
declare const ButtonLimits: {
    /**
     * Maximum characters allowed in a button label.
     */
    readonly MaximumLabelCharacters: 80;
    /**
     * Maximum characters allowed in a button custom ID.
     */
    readonly MaximumCustomIdCharacters: 100;
};
/**
 * Namespace containing limits related to Select Menus.
 */
declare const SelectMenuLimits: {
    /**
     * Maximum characters allowed in a select menu custom ID.
     */
    readonly MaximumCustomIdCharacters: 100;
    /**
     * Maximum amount of options allowed in a select menu.
     */
    readonly MaximumOptionsLength: 25;
    /**
     * Maximum characters allowed in a select menu placeholder.
     */
    readonly MaximumPlaceholderCharacters: 150;
    /**
     * Maximum "minimum" values allowed in a select menu.
     */
    readonly MaximumMinValuesSize: 25;
    /**
     * Maximum "maximum" values allowed in a select menu.
     */
    readonly MaximumMaxValuesSize: 25;
    /**
     * Maximum characters allowed in a select menu option's name.
     */
    readonly MaximumLengthOfNameOfOption: 100;
    /**
     * Maximum characters allowed in a select menu option's description.
     */
    readonly MaximumLengthOfDescriptionOfOption: 100;
    /**
     * Maximum characters allowed in a select menu option's value.
     */
    readonly MaximumLengthOfValueOfOption: 100;
};
/**
 * Namespace containing limits related to Discord messages.
 */
declare const MessageLimits: {
    /**
     * Maximum embeds allowed in a single message.
     */
    readonly MaximumEmbeds: 10;
    /**
     * Maximum action rows allowed in a single message.
     */
    readonly MaximumActionRows: 5;
    /**
     * Maximum characters allowed in a single message for a user.
     */
    readonly MaximumLength: 2000;
    /**
     * Maximum characters allowed in a single message for a nitro user.
     */
    readonly MaximumNitroLength: 4000;
    /**
     * Maximum numbers of reactions allowed for a message.
     */
    readonly MaximumReactions: 20;
    /**
     * Maximum upload size for a free user in a guild of tier 1 or below, or in DMs.
     * Size is in bytes, and corresponds to 25MB.
     */
    readonly MaximumUploadSize: 25000000;
    /**
     * Maximum upload size for a Nitro Basic user, in any guild or in DMs.
     * Size is in bytes, and corresponds to 50MB.
     */
    readonly MaximumNitroBasicUploadSize: 50000000;
    /**
     * Maximum upload size for a Nitro user, in any guild or in DMs.
     * Size is in bytes, and corresponds to 500MB.
     */
    readonly MaximumNitroUploadSize: 500000000;
    /**
     * Maximum upload size for a free user for all different boost levels available in a guild.
     * Sizes are in bytes, and correspond to 25MB, 25MB, 50MB, and 100MB.
     */
    readonly MaximumUploadSizeInGuild: readonly [25000000, 25000000, 50000000, 100000000];
    /**
     * Minimum number of messages to return from the channel messages API.
     */
    readonly MinimumMessagesToFetch: 1;
    /**
     * Maximum number of messages to return from the channel messages API.
     */
    readonly MaximumMessagesToFetch: 100;
    /**
     * Maximum request size when sending a messages.
     * Size is in bytes, and corresponds to 25MB.
     */
    readonly MaximumRequestSize: 25000000;
    /**
     * Minimum number of messages to delete in a single bulk delete request.
     */
    readonly MinimumMessagesToBulkDelete: 2;
    /**
     * Maximum number of messages to delete in a single bulk delete request.
     */
    readonly MaximumMessagesToBulkDelete: 100;
};
/**
 * Namespace containing limits related to Discord message reactions.
 */
declare const ReactionLimits: {
    /**
     * Minimum number of reactions to fetch from the message reactions API.
     */
    MinimumReactionToFetch: number;
    /**
     * Maximum number of reactions to fetch from the message reactions API.
     */
    MaximumReactionsToFetch: number;
};
/**
 * Namespace containing limits related to built-in moderation features.
 */
declare const ModerationLimits: {
    /**
     * Maximum duration of a guild timeout, in seconds (corresponds to 28 days).
     */
    readonly MaximumTimeoutDuration: 2419200;
};
/**
 * Namespace containing limits related to Discord roles.
 */
declare const RoleLimits: {
    /**
     * Maximum characters allowed in a role name.
     */
    readonly MaximumNameLength: 100;
};
/**
 * Namespace containing limits related to Discord users and Direct Messages.
 */
declare const UserLimits: {
    /**
     * Maximum numbers of users in a DM group.
     */
    readonly MaximumUsersPerDMGroup: 10;
    /**
     * Maximum characters allowed in a user's biography (the "About Me" section).
     */
    readonly MaximumBiographyLength: 190;
};
/**
 * Namespace container limits related to Discord autocomplete interactions.
 */
declare const AutoCompleteLimits: {
    /**
     * Maximum options allowed in a single autocomplete response.
     */
    readonly MaximumAmountOfOptions: 25;
    /**
     * Maximum characters allowed in a select menu option's name.
     */
    readonly MaximumLengthOfNameOfOption: 100;
};
/**
 * Namespace containing limits related to Discord Modals.
 */
declare const ModalLimits: {
    /**
     * Maximum characters allowed in a modal custom ID.
     */
    readonly MaximumCustomIdCharacters: 100;
    /**
     * Maximum characters allowed in a modal title.
     */
    readonly MaximumTitleCharacters: 45;
    /**
     * Maximum components allowed in a modal.
     */
    readonly MaximumComponents: 5;
};
/**
 * Namespace containing limits related to Discord Modal Text Input component.
 */
declare const TextInputLimits: {
    /**
     * Maximum characters allowed in a text input custom ID.
     */
    readonly MaximumCustomIdCharacters: 100;
    /**
     * Maximum characters allowed in a text input label.
     */
    readonly MaximumLabelCharacters: 45;
    /**
     * Maximum characters allowed in a text input placeholder.
     */
    readonly MaximumPlaceholderCharacters: 100;
    /**
     * Maximum characters allowed in a text input value.
     */
    readonly MaximumValueCharacters: 4000;
};
/**
 * Namespace containing limits related to Discord Application Role Connections.
 */
declare const ApplicationRoleConnectionLimits: {
    /**
     * Maximum application role connection metadata records an application can have.
     */
    readonly MaximumMetadataRecords: 5;
    /**
     * Maximum characters allowed in metadata values.
     */
    readonly MaximumMetadataValueLength: 100;
    /**
     * Maximum characters allowed in a platform name.
     */
    readonly MaximumPlatformNameLength: 50;
    /**
     * Maximum characters allowed in a platform username.
     */
    readonly MaximumPlatformUsernameLength: 100;
};
/**
 * Namespace containing limits related to Discord Guild Audit Logs.
 */
declare const GuildAuditLogsLimits: {
    /**
     * Minimum number of entries to return from the guild audit log API.
     */
    readonly MinimumEntriesToFetch: 1;
    /**
     * Maximum number of entries to return from the guild audit log API.
     */
    readonly MaximumEntriesToFetch: 100;
};
/**
 * Namespace containing limits related to Discord Auto Moderation Rules.
 */
declare const AutoModerationRuleLimits: {
    /**
     * Maximum number of exempt roles a rule can have.
     */
    readonly MaximumExemptRoles: 20;
    /**
     * Maximum number of exempt channels a rule can have.
     */
    readonly MaximumExemptChannels: 50;
};
/**
 * Namespace containing limits related to Discord Auto Moderation Triggers.
 */
declare const TriggerTypeLimits: {
    /**
     * Maximum number of keyword triggers a guild can have.
     */
    readonly MaximumKeywordTriggersPerGuild: 6;
    /**
     * Maximum number of mention spam triggers a guild can have.
     */
    readonly MaximumSpamTriggersPerGuild: 1;
    /**
     * Maximum number of keyword triggers a channel can have.
     */
    readonly MaximumKeywordPresetTriggersPerChannel: 1;
    /**
     * Maximum number of mention spam triggers a channel can have.
     */
    readonly MaximumMentionSpamTriggersPerChannel: 1;
};
/**
 * Namespace containing limits related to Discord Auto Moderation Trigger Metadata.
 */
declare const TriggerMetadataLimits: {
    /**
     * Maximum number of substrings which will be searched for in content.
     */
    readonly MaximumKeywordFilters: 1000;
    /**
     * Maximum number of characters allowed in a keyword filter.
     */
    readonly MaximumKeywordFilterLength: 60;
    /**
     * Maximum number of regular expression patterns which will be matched against content.
     */
    readonly MaximumRegexPatterns: 10;
    /**
     * Maximum number of characters allowed in a regular expression pattern.
     */
    readonly MaximumCharactersPerRegexPattern: 260;
    /**
     * Maximum number of substrings which should not trigger the keyword rule.
     */
    readonly MaximumKeywordAllowListLength: 100;
    /**
     * Maximum characters per keyword that should not trigger the keyword rule.
     */
    readonly MaximumKeywordAllowListKeywordLength: 60;
    /**
     * Maximum characters per keyword should not trigger the keyword preset rule.
     */
    readonly MaximumKeywordPresetAllowListKeywordPresetLength: 60;
    /**
     * Maximum number of substrings which should not trigger the keyword preset rule.
     */
    readonly MaximumKeywordPresetAllowListLength: 1000;
    /**
     * Maximum number of unique role and user mentions allowed per message.
     */
    readonly MaximumMentionSpamTotalMentions: 50;
};
/**
 * Namespace containing limits related to Discord Auto Moderation Action Metadata.
 */
declare const ActionMetadataLimits: {
    /**
     * Maximum timeout duration in seconds.
     */
    readonly MaximumTimeoutDurationSeconds: 2419200;
    /**
     * Maximum number of characters allowed in a custom block message.
     */
    readonly MaximumCustomBlockMessageLength: 150;
};
/**
 * Namespace containing limits related to Discord Message Allowed Mentions.
 */
declare const AllowedMentionsLimits: {
    /**
     * Maximum number of users allowed in an allowed mentions object.
     */
    readonly MaximumUsers: 100;
    /**
     * Maximum number of roles allowed in an allowed mentions object.
     */
    readonly MaximumRoles: 100;
};
/**
 * Namespace containing limits related to Discord Channel Invites.
 */
declare const ChannelInviteLimits: {
    /**
     * Maximum age of an invite in seconds.
     */
    readonly MaximumAgeSeconds: 604800;
    /**
     * Maximum number of uses allowed for an invite.
     */
    readonly MaximumUses: 100;
};
/**
 * Namespace containing limits related to Discord Guild Integrations.
 */
declare const GuildIntegrationLimits: {
    /**
     * Maximum number of integrations returned from the guild integrations API. Needs a more description name than "MaximumIntegrations".
     */
    readonly MaximumIntegrationsToFetch: 50;
};
/**
 * Namespace containing limits related to Discord Stickers.
 */
declare const StickerLimits: {
    /**
     * Maximum number of characters allowed in the autocomplete/suggestion tags for the sticker.
     */
    MaximumTagsLength: number;
    /**
     * Maximum size allowed for a sticker.
     * Size is in bytes, and corresponds to 512KB.
     */
    MaximumStickerSize: number;
};

/**
 * Regex that can capture the ID in Discord Channel mentions
 * @raw `/^<#(?<id>\d{17,20})>$/`
 * @remark Capture group 1 is the ID of the channel. It is named `id`.
 */
declare const ChannelMentionRegex: RegExp;
/**
 * Regex that can capture the channel and message IDs in a channelId-messageId pattern
 * This pattern can be found when you hold Shift and hover over a message, and click the "ID" button
 * @raw `/^(?<channelId>\d{17,20})-(?<messageId>\d{17,20})$/`
 * @remark Capture group 1 is the ID of the channel, named `channelId`.
 * @remark Capture group 2 is the ID of the message, named `messageId`.
 */
declare const ChannelMessageRegex: RegExp;
/**
 * Regex that matches links on the known Discord host names
 * @raw `/(?<subdomain>\w+)\.?(?<hostname>dis(?:cord)?(?:app|merch|status)?)\.(?<tld>com|g(?:d|g|ift)|(?:de(?:sign|v))|media|new|store|net)/i`
 * @remark The regex is case insensitive
 * @remark Capture group 1 is the subdomain for this URL. It is named `subdomain`.
 * @remark Capture group 2 is the hostname for this URL, primarily `discord` but can also be `discordmerch`, `discordstatus`, `dis`, and `discordapp`. It is named `hostname`.
 * @remark Capture group 3 is the Top-Level Domain *without* `.`. It is named `tld`.
 */
declare const DiscordHostnameRegex: RegExp;
/**
 * Regex that can can capture the code of Discord invite links
 * @raw `/(?:^|\b)discord(?:(?:app)?\.com\/invite|\.gg(?:\/invite)?)\/(?<code>[\w-]{2,255})(?:$|\b)/gi`
 * @remark Capture group 1 is the invite URL's unique code. It is named `code`.
 */
declare const DiscordInviteLinkRegex: RegExp;
/**
 * Regex that can capture the ID of any animated or non-animated custom Discord emoji
 * @raw `/^(?:<(?<animated>a)?:(?<name>\w{2,32}):)?(?<id>\d{17,21})>?$/`
 * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.
 * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.
 * @remark Capture group 3 is the ID of the emoji. It is named `id`.
 */
declare const EmojiRegex: RegExp;
/**
 * Regex that matches any animated or non-animated custom Discord emoji.
 * Unlike {@link EmojiRegex} It can be a substring of a larger string.
 * @raw `/<a?:\w{2,32}:\d{17,20}>/`
 */
declare const FormattedCustomEmoji: RegExp;
/**
 * Regex that can capture any animated or non-animated custom Discord emoji.
 * Similar to {@link FormattedCustomEmoji} and unlike {@link EmojiRegex} can also be a substring of a larger string.
 * @raw `/(?<animated>a?):(?<name>[^:]+):(?<id>\d{17,20})/`
 * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.
 * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.
 * @remark Capture group 3 is the ID of the emoji. It is named `id`.
 */
declare const FormattedCustomEmojiWithGroups: RegExp;
/**
 * Regex that matches any URL starting with `http` or `https`
 * @raw `/^https?:\/\//`
 * @remark for WebSocket URLs see {@link WebSocketUrlRegex}
 */
declare const HttpUrlRegex: RegExp;
/**
 * Regex that can capture the Guild, Channel, and Message ID based on a shareable Discord message link.
 * @raw `/^(?:https:\/\/)?(?:ptb\.|canary\.)?discord(?:app)?\.com\/channels\/(?<guildId>(?:\d{17,20}|@me))\/(?<channelId>\d{17,20})\/(?<messageId>\d{17,20})$/`
 * @remark Capture group 1 is the ID of the guild the message was sent in. It is named `guildId`.
 * @remark Capture group 2 is the ID of the channel in that guild the message was sent in. It is named `channelId`.
 * @remark Capture group 3 is the ID of the message itself. It is named `messageId`.
 */
declare const MessageLinkRegex: RegExp;
/**
 * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols.
 * This means that a string that matches this regex can directly be send inside a Discord message.
 * Other than this difference it is similar to {@link FormattedCustomEmoji}.
 * @raw `/a?:\w{2,32}:\d{17,20}/`
 */
declare const ParsedCustomEmoji: RegExp;
/**
 * Regex that matches any animated or non-animated custom Discord emoji *without the wrapping `<...>` symbols.
 * This means that a string that matches this regex can directly be send inside a Discord message.
 * Other than this difference it is similar to {@link FormattedCustomEmojiWithGroups}.
 * @raw `/(?<animated>a?):(?<name>[^:]+):(?<id>\d{17,20})/`
 * @remark Capture group 1 can be used to determine whether the emoji is animated or not. It is named `animated`.
 * @remark Capture group 2 is the name of the emoji as it is typed in a message. It is named `name`.
 * @remark Capture group 3 is the ID of the emoji. It is named `id`.
 */
declare const ParsedCustomEmojiWithGroups: RegExp;
/**
 * Regex that can capture the ID in Discord Role mentions
 * @raw `/^<@&(?<id>\d{17,20})>$/`
 * @remark Capture group 1 is the ID of the role. It is named `id`.
 */
declare const RoleMentionRegex: RegExp;
/**
 * Regex that can capture any Discord Snowflake ID
 * @raw `/^(?<id>\d{17,20})$/`
 * @remark Capture group 1 is the Snowflake. It is named `id`.
 */
declare const SnowflakeRegex: RegExp;
/**
 * Regex that can capture a Discord Token
 * @raw `/(?<mfaToken>mfa\.[a-z0-9_-]{20,})|(?<basicToken>[a-z0-9_-]{23,28}\.[a-z0-9_-]{6,7}\.[a-z0-9_-]{27})/i`
 * @remark Capture group 1 can be used to retrieve a token for a User that has Multi-Factor Authentication enabled. It is named `mfaToken`.
 * @remark Capture group 2 can be used to retrieve a token for a User that doesn't have Multi-Factor Authentication enabled, or a Bot application. It is named `basicToken`.
 * @remark For a valid token, either Capture group 1 or Capture group 2 will always be undefined, whereas the other group will then be defined and
 * contain the matched token.
 * You can use the name of the capture group to determine if the validated token was configured for a user with Multi-Factor Authentication, for a user without Multi-Factor Authentication, or for a bot application.
 * If both capture groups are undefined, then the token is invalid.
 */
declare const TokenRegex: RegExp;
/**
 * Regex that can capture the ID of a user in Discord user mentions
 * @raw `/^<@!?(?<id>\d{17,20})>$/`
 * @remark Capture group 1 is the ID of the user. It is named `id`.
 */
declare const UserOrMemberMentionRegex: RegExp;
/**
 * Regex that matches any WebSocket URL starting with `ws` or `wss`
 * @raw `/^wss?:\/\//`
 * @remark for regular HTTP URLs see {@link HttpUrlRegex}
 */
declare const WebSocketUrlRegex: RegExp;
/**
 * Regex that captures the Webhook ID and token from a Discord Webhook URL.
 * @raw `/(?<url>^https:\/\/(?:(?:canary|ptb).)?discord(?:app)?.com\/api(?:\/v\d+)?\/webhooks\/(?<id>\d+)\/(?<token>[\w-]+)\/?$)/`
 * @remark Capture group 1 is the full URL of the Discord Webhook. It is named `url`.
 * @remark Capture group 2 is the ID of the Discord Webhook. It is named `id`.
 * @remark Capture group 3 is the token of the Discord Webhook. It is named `token`.
 * @remark for regular HTTP URLs see {@link HttpUrlRegex}
 */
declare const WebhookRegex: RegExp;

/**
 * Regex that can capture a Twemoji (Twitter Emoji)
 * @raw {@linkplain https://github.com/jdecked/twemoji-parser/blob/main/src/lib/regex.js See official source code}
 */
declare const TwemojiRegex: RegExp;
/**
 * Creates a fresh instance of the Twemoji regex, which is useful if you don't want to worry about the effects of a global regex and the lastIndex
 * @returns A clone of the Twemoji regex
 */
declare function createTwemojiRegex(): RegExp;

export { ActionMetadataLimits, AllowedMentionsLimits, ApplicationCommandLimits, ApplicationCommandOptionLimits, ApplicationCommandPermissionLimits, ApplicationRoleConnectionLimits, AutoCompleteLimits, AutoModerationRuleLimits, ButtonLimits, ChannelInviteLimits, ChannelLimits, ChannelMentionRegex, ChannelMessageRegex, DiscordHostnameRegex, DiscordInviteLinkRegex, EmbedLimits, EmojiLimits, EmojiRegex, FormattedCustomEmoji, FormattedCustomEmojiWithGroups, GuildAuditLogsLimits, GuildBansLimits, GuildIntegrationLimits, GuildLimits, GuildMemberLimits, GuildScheduledEventLimits, HttpUrlRegex, InteractionLimits, InteractionOptionResolver, MessageLimits, MessageLinkRegex, ModalLimits, ModerationLimits, ParsedCustomEmoji, ParsedCustomEmojiWithGroups, PremiumGuildLimits, ReactionLimits, RoleLimits, RoleMentionRegex, SelectMenuLimits, SnowflakeRegex, StageChannelLimits, StickerLimits, TextChannelLimits, TextInputLimits, ThreadLimits, TokenRegex, TriggerMetadataLimits, TriggerTypeLimits, TwemojiRegex, UserLimits, UserOrMemberMentionRegex, VoiceChannelLimits, WebSocketUrlRegex, WebhookRegex, createTwemojiRegex };
