/** https://discord.com/developers/docs/resources/user#user-object-premium-types */ export enum PremiumTypes { None, NitroClassic, Nitro, } /** https://discord.com/developers/docs/resources/user#user-object-user-flags */ export enum UserFlags { DiscordEmployee = 1 << 0, PartneredServerOwner = 1 << 1, HypeSquadEventsMember = 1 << 2, BugHunterLevel1 = 1 << 3, HouseBravery = 1 << 6, HouseBrilliance = 1 << 7, HouseBalance = 1 << 8, EarlySupporter = 1 << 9, TeamUser = 1 << 10, BugHunterLevel2 = 1 << 14, VerifiedBot = 1 << 16, EarlyVerifiedBotDeveloper = 1 << 17, DiscordCertifiedModerator = 1 << 18, BotHttpInteractions = 1 << 19, } /** https://discord.com/developers/docs/resources/channel#channels-resource */ export enum ChannelFlags { None, Pinned = 1 << 1, } /** https://discord.com/developers/docs/resources/guild#integration-object-integration-expire-behaviors */ export enum IntegrationExpireBehaviors { RemoveRole, Kick, } /** https://discord.com/developers/docs/resources/user#connection-object-visibility-types */ export enum VisibilityTypes { /** Invisible to everyone except the user themselves */ None, /** Visible to everyone */ Everyone, } /** https://discord.com/developers/docs/topics/teams#data-models-membership-state-enum */ export enum TeamMembershipStates { Invited = 1, Accepted, } /** https://discord.com/developers/docs/topics/oauth2#application-application-flags */ export enum ApplicationFlags { /** Intent required for bots in **100 or more servers** to receive [`presence_update` events](#DOCS_TOPICS_GATEWAY/presence-update) */ GatewayPresence = 1 << 12, /** Intent required for bots in under 100 servers to receive [`presence_update` events](#DOCS_TOPICS_GATEWAY/presence-update), found in Bot Settings */ GatewayPresenceLimited = 1 << 13, /** Intent required for bots in **100 or more servers** to receive member-related events like `guild_member_add`. See list of member-related events [under `GUILD_MEMBERS`](#DOCS_TOPICS_GATEWAY/list-of-intents) */ GatewayGuildMembers = 1 << 14, /** Intent required for bots in under 100 servers to receive member-related events like `guild_member_add`, found in Bot Settings. See list of member-related events [under `GUILD_MEMBERS`](#DOCS_TOPICS_GATEWAY/list-of-intents) */ GatewayGuildMembersLimited = 1 << 15, /** Indicates unusual growth of an app that prevents verification */ VerificationPendingGuildLimit = 1 << 16, /** Indicates if an app is embedded within the Discord client (currently unavailable publicly) */ Embedded = 1 << 17, /** Intent required for bots in **100 or more servers** to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055) */ GatewayMessageCount = 1 << 18, /** Intent required for bots in under 100 servers to receive [message content](https://support-dev.discord.com/hc/en-us/articles/4404772028055), found in Bot Settings */ GatewayMessageContentLimited = 1 << 19, } /** https://discord.com/developers/docs/interactions/message-components#component-types */ export enum MessageComponentTypes { /** A container for other components */ ActionRow = 1, /** A button object */ Button = 2, /** A select menu for picking from choices */ SelectMenu = 3, /** A text input object */ InputText = 4, } export enum TextStyles { /** Intended for short single-line text */ Short = 1, /** Intended for much longer inputs */ Paragraph = 2, } /** https://discord.com/developers/docs/interactions/message-components#buttons-button-styles */ export enum ButtonStyles { /** A blurple button */ Primary = 1, /** A grey button */ Secondary, /** A green button */ Success, /** A red button */ Danger, /** A button that navigates to a URL */ Link, } /** https://discord.com/developers/docs/resources/channel#allowed-mentions-object-allowed-mention-types */ export enum AllowedMentionsTypes { /** Controls role mentions */ RoleMentions = 'roles', /** Controls user mentions */ UserMentions = 'users', /** Controls @everyone and @here mentions */ EveryoneMentions = 'everyone', } /** https://discord.com/developers/docs/resources/webhook#webhook-object-webhook-types */ export enum WebhookTypes { /** Incoming Webhooks can post messages to channels with a generated token */ Incoming = 1, /** Channel Follower Webhooks are internal webhooks used with Channel Following to post new messages into channels */ ChannelFollower, /** Application webhooks are webhooks used with Interactions */ Application, } /** https://discord.com/developers/docs/resources/channel#embed-object-embed-types */ export type EmbedTypes = 'rich' | 'image' | 'video' | 'gifv' | 'article' | 'link'; /** https://discord.com/developers/docs/resources/guild#guild-object-default-message-notification-level */ export enum DefaultMessageNotificationLevels { /** Members will receive notifications for all messages by default */ AllMessages, /** Members will receive notifications only for messages that @mention them by default */ OnlyMentions, } /** https://discord.com/developers/docs/resources/guild#guild-object-explicit-content-filter-level */ export enum ExplicitContentFilterLevels { /** Media content will not be scanned */ Disabled, /** Media content sent by members without roles will be scanned */ MembersWithoutRoles, /** Media content sent by all members will be scanned */ AllMembers, } /** https://discord.com/developers/docs/resources/guild#guild-object-verification-level */ export enum VerificationLevels { /** Unrestricted */ None, /** Must have verified email on account */ Low, /** Must be registered on Discord for longer than 5 minutes */ Medium, /** Must be a member of the server for longer than 10 minutes */ High, /** Must have a verified phone number */ VeryHigh, } /** https://discord.com/developers/docs/topics/permissions#role-object-role-structure */ export interface BaseRole { /** Role name */ name: string; /** Integer representation of hexadecimal color code */ color: number; /** Position of this role */ position: number; /** role unicode emoji */ unicodeEmoji?: string; } /** https://discord.com/developers/docs/resources/guild#guild-object-guild-features */ export enum GuildFeatures { /** Guild has access to set an invite splash background */ InviteSplash = 'INVITE_SPLASH', /** Guild has access to set 384 kbps bitrate in voice (previously VIP voice servers) */ VipRegions = 'VIP_REGIONS', /** Guild has access to set a vanity URL */ VanityUrl = 'VANITY_URL', /** Guild is verified */ Verified = 'VERIFIED', /** Guild is partnered */ Partnered = 'PARTNERED', /** Guild can enable welcome screen, Membership Screening, stage channels and discovery, and receives community updates */ Community = 'COMMUNITY', /** Guild has access to use commerce features (i.e. create store channels) */ Commerce = 'COMMERCE', /** Guild has access to create news channels */ News = 'NEWS', /** Guild is able to be discovered in the directory */ Discoverable = 'DISCOVERABLE', /** guild cannot be discoverable */ DiscoverableDisabled = 'DISCOVERABLE_DISABLED', /** Guild is able to be featured in the directory */ Feature = 'FEATURABLE', /** Guild has access to set an animated guild icon */ AnimatedIcon = 'ANIMATED_ICON', /** Guild has access to set a guild banner image */ Banner = 'BANNER', /** Guild has enabled the welcome screen */ WelcomeScreenEnabled = 'WELCOME_SCREEN_ENABLED', /** Guild has enabled [Membership Screening](https://discord.com/developers/docs/resources/guild#membership-screening-object) */ MemberVerificationGateEnabled = 'MEMBER_VERIFICATION_GATE_ENABLED', /** Guild can be previewed before joining via Membership Screening or the directory */ PreviewEnabled = 'PREVIEW_ENABLED', /** Guild has enabled ticketed events */ TicketedEventsEnabled = 'TICKETED_EVENTS_ENABLED', /** Guild has enabled monetization */ MonetizationEnabled = 'MONETIZATION_ENABLED', /** Guild has increased custom sticker slots */ MoreStickers = 'MORE_STICKERS', /** Guild has access to create private threads */ PrivateThreads = 'PRIVATE_THREADS', /** Guild is able to set role icons */ RoleIcons = 'ROLE_ICONS', /** Guild has set up auto moderation rules */ AutoModeration = 'AUTO_MODERATION', } /** https://discord.com/developers/docs/resources/guild#guild-object-mfa-level */ export enum MfaLevels { /** Guild has no MFA/2FA requirement for moderation actions */ None, /** Guild has a 2FA requirement for moderation actions */ Elevated, } /** https://discord.com/developers/docs/resources/guild#guild-object-system-channel-flags */ export enum SystemChannelFlags { /** Suppress member join notifications */ SuppressJoinNotifications = 1 << 0, /** Suppress server boost notifications */ SuppressPremiumSubscriptions = 1 << 1, /** Suppress server setup tips */ SuppressGuildReminderNotifications = 1 << 2, /** Hide member join sticker reply buttons */ SuppressJoinNotificationReplies = 1 << 3, } /** https://discord.com/developers/docs/resources/guild#guild-object-premium-tier */ export enum PremiumTiers { /** Guild has not unlocked any Server Boost perks */ None, /** Guild has unlocked Server Boost level 1 perks */ Tier1, /** Guild has unlocked Server Boost level 2 perks */ Tier2, /** Guild has unlocked Server Boost level 3 perks */ Tier3, } /** https://discord.com/developers/docs/resources/guild#guild-object-guild-nsfw-level */ export enum GuildNsfwLevel { Default, Explicit, Safe, AgeRestricted, } /** https://discord.com/developers/docs/resources/channel#channel-object-channel-types */ export enum ChannelTypes { /** A text channel within a server */ GuildText, /** A direct message between users */ DM, /** A voice channel within a server */ GuildVoice, /** A direct message between multiple users */ GroupDm, /** An organizational category that contains up to 50 channels */ GuildCategory, /** A channel that users can follow and crosspost into their own server */ GuildNews, /** A temporary sub-channel within a GUILD_NEWS channel */ GuildNewsThread = 10, /** A temporary sub-channel within a GUILD_TEXT channel */ GuildPublicThread, /** A temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission */ GuildPrivateThread, /** A voice channel for hosting events with an audience */ GuildStageVoice, /** A channel in a hub containing the listed servers */ GuildDirectory, /** A channel which can only contains threads */ GuildForum, } export enum OverwriteTypes { Role, Member, } export enum VideoQualityModes { /** Discord chooses the quality for optimal performance */ Auto = 1, /** 720p */ Full, } /** https://discord.com/developers/docs/topics/gateway#activity-object-activity-types */ export enum ActivityTypes { Game, Streaming, Listening, Watching, Custom = 4, Competing, } /** https://discord.com/developers/docs/resources/channel#message-object-message-types */ export enum MessageTypes { Default, RecipientAdd, RecipientRemove, Call, ChannelNameChange, ChannelIconChange, ChannelPinnedMessage, GuildMemberJoin, UserPremiumGuildSubscription, UserPremiumGuildSubscriptionTier1, UserPremiumGuildSubscriptionTier2, UserPremiumGuildSubscriptionTier3, ChannelFollowAdd, GuildDiscoveryDisqualified = 14, GuildDiscoveryRequalified, GuildDiscoveryGracePeriodInitialWarning, GuildDiscoveryGracePeriodFinalWarning, ThreadCreated, Reply, ChatInputCommand, ThreadStarterMessage, GuildInviteReminder, ContextMenuCommand, AutoModerationAction, } /** https://discord.com/developers/docs/resources/channel#message-object-message-activity-types */ export enum MessageActivityTypes { Join = 1, Spectate, Listen, JoinRequest, } /** https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-types */ export enum StickerTypes { /** an official sticker in a pack, part of Nitro or in a removed purchasable pack */ Standard = 1, /** a sticker uploaded to a Boosted guild for the guild's members */ Guild, } /** https://discord.com/developers/docs/resources/sticker#sticker-object-sticker-format-types */ export enum StickerFormatTypes { Png = 1, APng, Lottie, } /** https://discord.com/developers/docs/interactions/slash-commands#interaction-interactiontype */ export enum InteractionTypes { Ping = 1, ApplicationCommand = 2, MessageComponent = 3, ApplicationCommandAutocomplete = 4, ModalSubmit = 5, } /** https://discord.com/developers/docs/interactions/slash-commands#applicationcommandoptiontype */ export enum ApplicationCommandOptionTypes { SubCommand = 1, SubCommandGroup, String, Integer, Boolean, User, Channel, Role, Mentionable, Number, Attachment, } /** https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object-audit-log-events */ export enum AuditLogEvents { /** Server settings were updated */ GuildUpdate = 1, /** Channel was created */ ChannelCreate = 10, /** Channel settings were updated */ ChannelUpdate, /** Channel was deleted */ ChannelDelete, /** Permission overwrite was added to a channel */ ChannelOverwriteCreate, /** Permission overwrite was updated for a channel */ ChannelOverwriteUpdate, /** Permission overwrite was deleted from a channel */ ChannelOverwriteDelete, /** Member was removed from server */ MemberKick = 20, /** Members were pruned from server */ MemberPrune, /** Member was banned from server */ MemberBanAdd, /** Server ban was lifted for a member */ MemberBanRemove, /** Member was updated in server */ MemberUpdate, /** Member was added or removed from a role */ MemberRoleUpdate, /** Member was moved to a different voice channel */ MemberMove, /** Member was disconnected from a voice channel */ MemberDisconnect, /** Bot user was added to server */ BotAdd, /** Role was created */ RoleCreate = 30, /** Role was edited */ RoleUpdate, /** Role was deleted */ RoleDelete, /** Server invite was created */ InviteCreate = 40, /** Server invite was updated */ InviteUpdate, /** Server invite was deleted */ InviteDelete, /** Webhook was created */ WebhookCreate = 50, /** Webhook properties or channel were updated */ WebhookUpdate, /** Webhook was deleted */ WebhookDelete, /** Emoji was created */ EmojiCreate = 60, /** Emoji name was updated */ EmojiUpdate, /** Emoji was deleted */ EmojiDelete, /** Single message was deleted */ MessageDelete = 72, /** Multiple messages were deleted */ MessageBulkDelete, /** Messaged was pinned to a channel */ MessagePin, /** Message was unpinned from a channel */ MessageUnpin, /** App was added to server */ IntegrationCreate = 80, /** App was updated (as an example, its scopes were updated) */ IntegrationUpdate, /** App was removed from server */ IntegrationDelete, /** Stage instance was created (stage channel becomes live) */ StageInstanceCreate, /** Stage instace details were updated */ StageInstanceUpdate, /** Stage instance was deleted (stage channel no longer live) */ StageInstanceDelete, /** Sticker was created */ StickerCreate = 90, /** Sticker details were updated */ StickerUpdate, /** Sticker was deleted */ StickerDelete, /** Event was created */ GuildScheduledEventCreate = 100, /** Event was updated */ GuildScheduledEventUpdate, /** Event was cancelled */ GuildScheduledEventDelete, /** Thread was created in a channel */ ThreadCreate = 110, /** Thread was updated */ ThreadUpdate, /** Thread was deleted */ ThreadDelete, /** Permissions were updated for a command */ ApplicationCommandPermissionUpdate = 121, /** Auto moderation rule was created */ AutoModerationRuleCreate = 140, /** Auto moderation rule was updated */ AutoModerationRuleUpdate, /** Auto moderation rule was deleted */ AutoModerationRuleDelete, /** Message was blocked by AutoMod according to a rule. */ AutoModerationBlockMessage, } export enum ScheduledEventPrivacyLevel { /** the scheduled event is public and available in discovery. DISCORD DEVS DISABLED THIS! WILL ERROR IF USED! */ // Public = 1, /** the scheduled event is only accessible to guild members */ GuildOnly = 2, } export enum ScheduledEventEntityType { StageInstance = 1, Voice, External, } export enum ScheduledEventStatus { Scheduled = 1, Active, Completed, Canceled, } /** https://discord.com/developers/docs/resources/invite#invite-object-target-user-types */ export enum TargetTypes { Stream = 1, EmbeddedApplication, } export enum ApplicationCommandTypes { /** A text-based command that shows up when a user types `/` */ ChatInput = 1, /** A UI-based command that shows up when you right click or tap on a user */ User, /** A UI-based command that shows up when you right click or tap on a message */ Message, } export enum ApplicationCommandPermissionTypes { Role = 1, User, Channel, } /** https://discord.com/developers/docs/topics/gateway#activity-object-activity-flags */ export enum ActivityFlags { Instance = 1 << 0, Join = 1 << 1, Spectate = 1 << 2, JoinRequest = 1 << 3, Sync = 1 << 4, Play = 1 << 5, PartyPrivacyFriends = 1 << 6, PartyPrivacyVoiceChannel = 1 << 7, Embedded = 1 << 8, } /** https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags */ export enum BitwisePermissionFlags { /** Allows creation of instant invites */ CREATE_INSTANT_INVITE = 0x0000000000000001, /** Allows kicking members */ KICK_MEMBERS = 0x0000000000000002, /** Allows banning members */ BAN_MEMBERS = 0x0000000000000004, /** Allows all permissions and bypasses channel permission overwrites */ ADMINISTRATOR = 0x0000000000000008, /** Allows management and editing of channels */ MANAGE_CHANNELS = 0x0000000000000010, /** Allows management and editing of the guild */ MANAGE_GUILD = 0x0000000000000020, /** Allows for the addition of reactions to messages */ ADD_REACTIONS = 0x0000000000000040, /** Allows for viewing of audit logs */ VIEW_AUDIT_LOG = 0x0000000000000080, /** Allows for using priority speaker in a voice channel */ PRIORITY_SPEAKER = 0x0000000000000100, /** Allows the user to go live */ STREAM = 0x0000000000000200, /** Allows guild members to view a channel, which includes reading messages in text channels and joining voice channels */ VIEW_CHANNEL = 0x0000000000000400, /** Allows for sending messages in a channel. (does not allow sending messages in threads) */ SEND_MESSAGES = 0x0000000000000800, /** Allows for sending of /tts messages */ SEND_TTS_MESSAGES = 0x0000000000001000, /** Allows for deletion of other users messages */ MANAGE_MESSAGES = 0x0000000000002000, /** Links sent by users with this permission will be auto-embedded */ EMBED_LINKS = 0x0000000000004000, /** Allows for uploading images and files */ ATTACH_FILES = 0x0000000000008000, /** Allows for reading of message history */ READ_MESSAGE_HISTORY = 0x0000000000010000, /** Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all online users in a channel */ MENTION_EVERYONE = 0x0000000000020000, /** Allows the usage of custom emojis from other servers */ USE_EXTERNAL_EMOJIS = 0x0000000000040000, /** Allows for viewing guild insights */ VIEW_GUILD_INSIGHTS = 0x0000000000080000, /** Allows for joining of a voice channel */ CONNECT = 0x0000000000100000, /** Allows for speaking in a voice channel */ SPEAK = 0x0000000000200000, /** Allows for muting members in a voice channel */ MUTE_MEMBERS = 0x0000000000400000, /** Allows for deafening of members in a voice channel */ DEAFEN_MEMBERS = 0x0000000000800000, /** Allows for moving of members between voice channels */ MOVE_MEMBERS = 0x0000000001000000, /** Allows for using voice-activity-detection in a voice channel */ USE_VAD = 0x0000000002000000, /** Allows for modification of own nickname */ CHANGE_NICKNAME = 0x0000000004000000, /** Allows for modification of other users nicknames */ MANAGE_NICKNAMES = 0x0000000008000000, /** Allows management and editing of roles */ MANAGE_ROLES = 0x0000000010000000, /** Allows management and editing of webhooks */ MANAGE_WEBHOOKS = 0x0000000020000000, /** Allows management and editing of emojis */ MANAGE_EMOJIS = 0x0000000040000000, /** Allows members to use application commands in text channels */ USE_SLASH_COMMANDS = 0x0000000080000000, /** Allows for requesting to speak in stage channels. */ REQUEST_TO_SPEAK = 0x0000000100000000, /** Allows for creating, editing, and deleting scheduled events */ MANAGE_EVENTS = 0x0000000200000000, /** Allows for deleting and archiving threads, and viewing all private threads */ MANAGE_THREADS = 0x0000000400000000, /** Allows for creating public and announcement threads */ CREATE_PUBLIC_THREADS = 0x0000000800000000, /** Allows for creating private threads */ CREATE_PRIVATE_THREADS = 0x0000001000000000, /** Allows the usage of custom stickers from other servers */ USE_EXTERNAL_STICKERS = 0x0000002000000000, /** Allows for sending messages in threads */ SEND_MESSAGES_IN_THREADS = 0x0000004000000000, /** Allows for launching activities (applications with the `EMBEDDED` flag) in a voice channel. */ USE_EMBEDDED_ACTIVITIES = 0x0000008000000000, /** Allows for timing out users to prevent them from sending or reacting to messages in chat and threads, and from speaking in voice and stage channels */ MODERATE_MEMBERS = 0x0000010000000000, } export type PermissionStrings = keyof typeof BitwisePermissionFlags; /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice */ export enum VoiceOpcodes { /** Begin a voice websocket connection. */ Identify, /** Select the voice protocol. */ SelectProtocol, /** Complete the websocket handshake. */ Ready, /** Keep the websocket connection alive. */ Heartbeat, /** Describe the session. */ SessionDescription, /** Indicate which users are speaking. */ Speaking, /** Sent to acknowledge a received client heartbeat. */ HeartbeatACK, /** Resume a connection. */ Resume, /** Time to wait between sending heartbeats in milliseconds. */ Hello, /** Acknowledge a successful session resume. */ Resumed, /** A client has disconnected from the voice channel */ ClientDisconnect = 13, } /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice */ export enum VoiceCloseEventCodes { /** You sent an invalid [opcode](https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice-voice-opcodes). */ UnknownOpcode = 4001, /** You sent a invalid payload in your [identifying](https://discord.com/developers/docs/topics/gateway#identify) to the Gateway. */ FailedToDecodePayload, /** You sent a payload before [identifying](https://discord.com/developers/docs/topics/gateway#identify) with the Gateway. */ NotAuthenticated, /** The token you sent in your [identify](https://discord.com/developers/docs/topics/gateway#identify) payload is incorrect. */ AuthenticationFailed, /** You sent more than one [identify](https://discord.com/developers/docs/topics/gateway#identify) payload. Stahp. */ AlreadyAuthenticated, /** Your session is no longer valid. */ SessionNoLongerValid, /** Your session has timed out. */ SessionTimedOut = 4009, /** We can't find the server you're trying to connect to. */ ServerNotFound = 4011, /** We didn't recognize the [protocol](https://discord.com/developers/docs/topics/voice-connections#establishing-a-voice-udp-connection-example-select-protocol-payload) you sent. */ UnknownProtocol, /** Channel was deleted, you were kicked, voice server changed, or the main gateway session was dropped. Should not reconnect. */ Disconnect = 4014, /** The server crashed. Our bad! Try [resuming](https://discord.com/developers/docs/topics/voice-connections#resuming-voice-connection). */ VoiceServerCrashed, /** We didn't recognize your [encryption](https://discord.com/developers/docs/topics/voice-connections#encrypting-and-sending-voice). */ UnknownEncryptionMode, } /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#rpc */ export enum RpcErrorCodes { /** An unknown error occurred. */ UnknownError = 1000, /** You sent an invalid payload. */ InvalidPayload = 4000, /** Invalid command name specified. */ InvalidCommand = 4002, /** Invalid guild ID specified. */ InvalidGuild, /** Invalid event name specified. */ InvalidEvent, /** Invalid channel ID specified. */ InvalidChannel, /** You lack permissions to access the given resource. */ InvalidPermissions, /** An invalid OAuth2 application ID was used to authorize or authenticate with. */ InvalidClientId, /** An invalid OAuth2 application origin was used to authorize or authenticate with. */ InvalidOrigin, /** An invalid OAuth2 token was used to authorize or authenticate with. */ InvalidToken, /** The specified user ID was invalid. */ InvalidUser, /** A standard OAuth2 error occurred; check the data object for the OAuth2 error details. */ OAuth2Error = 5000, /** An asynchronous `SELECT_TEXT_CHANNEL`/`SELECT_VOICE_CHANNEL` command timed out. */ SelectChannelTimedOut, /** An asynchronous `GET_GUILD` command timed out. */ GetGuildTimedOut, /** You tried to join a user to a voice channel but the user was already in one. */ SelectVoiceForceRequired, /** You tried to capture more than one shortcut key at once. */ CaptureShortcutAlreadyListening, } /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#rpc */ export enum RpcCloseEventCodes { /** You connected to the RPC server with an invalid client ID. */ InvalidClientId = 4000, /** You connected to the RPC server with an invalid origin. */ InvalidOrigin, /** You are being rate limited. */ RateLimited, /** The OAuth2 token associated with a connection was revoked, get a new one! */ TokenRevoked, /** The RPC Server version specified in the connection string was not valid. */ InvalidVersion, /** The encoding specified in the connection string was not valid. */ InvalidEncoding, } /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#http */ export enum HTTPResponseCodes { /** The request completed successfully. */ Ok = 200, /** The entity was created successfully. */ Created, /** The request completed successfully but returned no content. */ NoContent = 204, /** The entity was not modified (no action was taken). */ NotModified = 304, /** The request was improperly formatted, or the server couldn't understand it. */ BadRequest = 400, /** The `Authorization` header was missing or invalid. */ Unauthorized, /** The `Authorization` token you passed did not have permission to the resource. */ Forbidden = 403, /** The resource at the location specified doesn't exist. */ NotFound, /** The HTTP method used is not valid for the location specified. */ MethodNotAllowed, /** You are being rate limited, see [Rate Limits](https://discord.com/developers/docs/topics/rate-limits). */ TooManyRequests = 429, /** There was not a gateway available to process your request. Wait a bit and retry. */ GatewayUnavailable = 502, } /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#opcodes-and-status-codes */ export enum GatewayCloseEventCodes { /** A normal closure of the gateway. * You may attempt to reconnect. */ NormalClosure = 1000, /** We're not sure what went wrong. Try reconnecting? */ UnknownError = 4000, /** You sent an invalid [Gateway opcode](https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes) or an invalid payload for an opcode. Don't do that! */ UnknownOpcode, /** You sent an invalid [payload](https://discord.com/developers/docs/topics/gateway#sending-payloads) to us. Don't do that! */ DecodeError, /** You sent us a payload prior to [identifying](https://discord.com/developers/docs/topics/gateway#identify). */ NotAuthenticated, /** The account token sent with your [identify payload](https://discord.com/developers/docs/topics/gateway#identify) is incorrect. */ AuthenticationFailed, /** You sent more than one identify payload. Don't do that! */ AlreadyAuthenticated, /** The sequence sent when [resuming](https://discord.com/developers/docs/topics/gateway#resume) the session was invalid. Reconnect and start a new session. */ InvalidSeq = 4007, /** Woah nelly! You're sending payloads to us too quickly. Slow it down! You will be disconnected on receiving this. */ RateLimited, /** Your session timed out. Reconnect and start a new one. */ SessionTimedOut, /** You sent us an invalid [shard when identifying](https://discord.com/developers/docs/topics/gateway#sharding). */ InvalidShard, /** The session would have handled too many guilds - you are required to [shard](https://discord.com/developers/docs/topics/gateway#sharding) your connection in order to connect. */ ShardingRequired, /** You sent an invalid version for the gateway. */ InvalidApiVersion, /** You sent an invalid intent for a [Gateway Intent](https://discord.com/developers/docs/topics/gateway#gateway-intents). You may have incorrectly calculated the bitwise value. */ InvalidIntents, /** You sent a disallowed intent for a [Gateway Intent](https://discord.com/developers/docs/topics/gateway#gateway-intents). You may have tried to specify an intent that you [have not enabled or are not approved for](https://discord.com/developers/docs/topics/gateway#privileged-intents). */ DisallowedIntents, } /** https://discord.com/developers/docs/resources/invite#invite-object-invite-target-types */ export enum InviteTargetTypes { Stream = 1, EmbeddedApplication, } /** https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway-gateway-opcodes */ export enum GatewayOpcodes { /** An event was dispatched. */ Dispatch, /** Fired periodically by the client to keep the connection alive. */ Heartbeat, /** Starts a new session during the initial handshake. */ Identify, /** Update the client's presence. */ PresenceUpdate, /** Used to join/leave or move between voice channels. */ VoiceStateUpdate, /** Resume a previous session that was disconnected. */ Resume = 6, /** You should attempt to reconnect and resume immediately. */ Reconnect, /** Request information about offline guild members in a large guild. */ RequestGuildMembers, /** The session has been invalidated. You should reconnect and identify/resume accordingly. */ InvalidSession, /** Sent immediately after connecting, contains the `heartbeat_interval` to use. */ Hello, /** Sent in response to receiving a heartbeat to acknowledge that it has been received. */ HeartbeatACK, } export type GatewayDispatchEventNames = | 'READY' | 'CHANNEL_CREATE' | 'CHANNEL_DELETE' | 'CHANNEL_PINS_UPDATE' | 'CHANNEL_UPDATE' | 'GUILD_BAN_ADD' | 'GUILD_BAN_REMOVE' | 'GUILD_CREATE' | 'GUILD_DELETE' | 'GUILD_EMOJIS_UPDATE' | 'GUILD_INTEGRATIONS_UPDATE' | 'GUILD_MEMBER_ADD' | 'GUILD_MEMBER_REMOVE' | 'GUILD_MEMBER_UPDATE' | 'GUILD_MEMBERS_CHUNK' | 'GUILD_ROLE_CREATE' | 'GUILD_ROLE_DELETE' | 'GUILD_ROLE_UPDATE' | 'GUILD_UPDATE' | 'GUILD_SCHEDULED_EVENT_CREATE' | 'GUILD_SCHEDULED_EVENT_DELETE' | 'GUILD_SCHEDULED_EVENT_UPDATE' | 'GUILD_SCHEDULED_EVENT_USER_ADD' | 'GUILD_SCHEDULED_EVENT_USER_REMOVE' | 'INTERACTION_CREATE' | 'INVITE_CREATE' | 'INVITE_DELETE' | 'MESSAGE_CREATE' | 'MESSAGE_DELETE_BULK' | 'MESSAGE_DELETE' | 'MESSAGE_REACTION_ADD' | 'MESSAGE_REACTION_REMOVE_ALL' | 'MESSAGE_REACTION_REMOVE_EMOJI' | 'MESSAGE_REACTION_REMOVE' | 'MESSAGE_UPDATE' | 'PRESENCE_UPDATE' | 'TYPING_START' | 'USER_UPDATE' | 'VOICE_SERVER_UPDATE' | 'VOICE_STATE_UPDATE' | 'WEBHOOKS_UPDATE' | 'INTEGRATION_CREATE' | 'INTEGRATION_UPDATE' | 'INTEGRATION_DELETE' | 'STAGE_INSTANCE_CREATE' | 'STAGE_INSTANCE_UPDATE' | 'STAGE_INSTANCE_DELETE' | 'THREAD_CREATE' | 'THREAD_UPDATE' | 'THREAD_DELETE' | 'THREAD_LIST_SYNC' | 'THREAD_MEMBERS_UPDATE'; export type GatewayEventNames = | GatewayDispatchEventNames | 'READY' | 'RESUMED' // THIS IS A CUSTOM DD EVENT NOT A DISCORD EVENT | 'GUILD_LOADED_DD'; /** https://discord.com/developers/docs/topics/gateway#list-of-intents */ export enum GatewayIntents { /** * - GUILD_CREATE * - GUILD_DELETE * - GUILD_ROLE_CREATE * - GUILD_ROLE_UPDATE * - GUILD_ROLE_DELETE * - CHANNEL_CREATE * - CHANNEL_UPDATE * - CHANNEL_DELETE * - CHANNEL_PINS_UPDATE * - THREAD_CREATE * - THREAD_UPDATE * - THREAD_DELETE * - THREAD_LIST_SYNC * - THREAD_MEMBER_UPDATE * - THREAD_MEMBERS_UPDATE * - STAGE_INSTANCE_CREATE * - STAGE_INSTANCE_UPDATE * - STAGE_INSTANCE_DELETE */ Guilds = 1 << 0, /** * - GUILD_MEMBER_ADD * - GUILD_MEMBER_UPDATE * - GUILD_MEMBER_REMOVE */ GuildMembers = 1 << 1, /** * - GUILD_BAN_ADD * - GUILD_BAN_REMOVE */ GuildBans = 1 << 2, /** * - GUILD_EMOJIS_UPDATE */ GuildEmojis = 1 << 3, /** * - GUILD_INTEGRATIONS_UPDATE * - INTEGRATION_CREATE * - INTEGRATION_UPDATE * - INTEGRATION_DELETE */ GuildIntegrations = 1 << 4, /** Enables the following events: * - WEBHOOKS_UPDATE */ GuildWebhooks = 1 << 5, /** * - INVITE_CREATE * - INVITE_DELETE */ GuildInvites = 1 << 6, /** * - VOICE_STATE_UPDATE */ GuildVoiceStates = 1 << 7, /** * - PRESENCE_UPDATE */ GuildPresences = 1 << 8, /** * - MESSAGE_CREATE * - MESSAGE_UPDATE * - MESSAGE_DELETE */ GuildMessages = 1 << 9, /** * - MESSAGE_REACTION_ADD * - MESSAGE_REACTION_REMOVE * - MESSAGE_REACTION_REMOVE_ALL * - MESSAGE_REACTION_REMOVE_EMOJI */ GuildMessageReactions = 1 << 10, /** * - TYPING_START */ GuildMessageTyping = 1 << 11, /** * - CHANNEL_CREATE * - MESSAGE_CREATE * - MESSAGE_UPDATE * - MESSAGE_DELETE * - CHANNEL_PINS_UPDATE */ DirectMessages = 1 << 12, /** * - MESSAGE_REACTION_ADD * - MESSAGE_REACTION_REMOVE * - MESSAGE_REACTION_REMOVE_ALL * - MESSAGE_REACTION_REMOVE_EMOJI */ DirectMessageReactions = 1 << 13, /** * - TYPING_START */ DirectMessageTyping = 1 << 14, /** * This intent will add `content` values to all message objects. */ MessageContent = 1 << 15, /** * - GUILD_SCHEDULED_EVENT_CREATE * - GUILD_SCHEDULED_EVENT_UPDATE * - GUILD_SCHEDULED_EVENT_DELETE * - GUILD_SCHEDULED_EVENT_USER_ADD this is experimental and unstable. * - GUILD_SCHEDULED_EVENT_USER_REMOVE this is experimental and unstable. */ GuildScheduledEvents = (1 << 16), /** * - AUTO_MODERATION_RULE_CREATE * - AUTO_MODERATION_RULE_UPDATE * - AUTO_MODERATION_RULE_DELETE */ AutoModerationConfiguration = (1 << 20), /** * - AUTO_MODERATION_ACTION_EXECUTION */ AutoModerationExecution = (1 << 21), } // ALIASES JUST FOR BETTER UX IN THIS CASE /** https://discord.com/developers/docs/topics/gateway#list-of-intents */ export const Intents = GatewayIntents; export type Intents = GatewayIntents; /** https://discord.com/developers/docs/interactions/slash-commands#interaction-response-interactionresponsetype */ export enum InteractionResponseTypes { /** ACK a `Ping` */ Pong = 1, /** Respond to an interaction with a message */ ChannelMessageWithSource = 4, /** ACK an interaction and edit a response later, the user sees a loading state */ DeferredChannelMessageWithSource = 5, /** For components, ACK an interaction and edit the original message later; the user does not see a loading state */ DeferredUpdateMessage = 6, /** For components, edit the message the component was attached to */ UpdateMessage = 7, /** For Application Command Options, send an autocomplete result */ ApplicationCommandAutocompleteResult = 8, /** For Command or Component interactions, send a Modal response */ Modal = 9, } export enum Errors { // Bot Role errors BOTS_HIGHEST_ROLE_TOO_LOW = 'BOTS_HIGHEST_ROLE_TOO_LOW', // Channel Errors CHANNEL_NOT_FOUND = 'CHANNEL_NOT_FOUND', CHANNEL_NOT_IN_GUILD = 'CHANNEL_NOT_IN_GUILD', CHANNEL_NOT_TEXT_BASED = 'CHANNEL_NOT_TEXT_BASED', CHANNEL_NOT_STAGE_VOICE = 'CHANNEL_NOT_STAGE_VOICE', MESSAGE_MAX_LENGTH = 'MESSAGE_MAX_LENGTH', RULES_CHANNEL_CANNOT_BE_DELETED = 'RULES_CHANNEL_CANNOT_BE_DELETED', UPDATES_CHANNEL_CANNOT_BE_DELETED = 'UPDATES_CHANNEL_CANNOT_BE_DELETED', INVALID_TOPIC_LENGTH = 'INVALID_TOPIC_LENGTH', // Guild Errors GUILD_NOT_DISCOVERABLE = 'GUILD_NOT_DISCOVERABLE', GUILD_WIDGET_NOT_ENABLED = 'GUILD_WIDGET_NOT_ENABLED', GUILD_NOT_FOUND = 'GUILD_NOT_FOUND', MEMBER_NOT_FOUND = 'MEMBER_NOT_FOUND', MEMBER_NOT_IN_VOICE_CHANNEL = 'MEMBER_NOT_IN_VOICE_CHANNEL', MEMBER_SEARCH_LIMIT_TOO_HIGH = 'MEMBER_SEARCH_LIMIT_TOO_HIGH', MEMBER_SEARCH_LIMIT_TOO_LOW = 'MEMBER_SEARCH_LIMIT_TOO_LOW', PRUNE_MAX_DAYS = 'PRUNE_MAX_DAYS', ROLE_NOT_FOUND = 'ROLE_NOT_FOUND', // Thread errors INVALID_THREAD_PARENT_CHANNEL_TYPE = 'INVALID_THREAD_PARENT_CHANNEL_TYPE', GUILD_NEWS_CHANNEL_ONLY_SUPPORT_PUBLIC_THREADS = 'GUILD_NEWS_CHANNEL_ONLY_SUPPORT_PUBLIC_THREADS', NOT_A_THREAD_CHANNEL = 'NOT_A_THREAD_CHANNEL', MISSING_MANAGE_THREADS_AND_NOT_MEMBER = 'MISSING_MANAGE_THREADS_AND_NOT_MEMBER', CANNOT_GET_MEMBERS_OF_AN_UNJOINED_PRIVATE_THREAD = 'CANNOT_GET_MEMBERS_OF_AN_UNJOINED_PRIVATE_THREAD', HAVE_TO_BE_THE_CREATOR_OF_THE_THREAD_OR_HAVE_MANAGE_THREADS_TO_REMOVE_MEMBERS = 'HAVE_TO_BE_THE_CREATOR_OF_THE_THREAD_OR_HAVE_MANAGE_THREADS_TO_REMOVE_MEMBERS', // Message Get Errors INVALID_GET_MESSAGES_LIMIT = 'INVALID_GET_MESSAGES_LIMIT', // Message Delete Errors DELETE_MESSAGES_MIN = 'DELETE_MESSAGES_MIN', PRUNE_MIN_DAYS = 'PRUNE_MIN_DAYS', // Interaction Errors INVALID_SLASH_DESCRIPTION = 'INVALID_SLASH_DESCRIPTION', INVALID_SLASH_NAME = 'INVALID_SLASH_NAME', INVALID_SLASH_OPTIONS = 'INVALID_SLASH_OPTIONS', INVALID_SLASH_OPTIONS_CHOICES = 'INVALID_SLASH_OPTIONS_CHOICES', TOO_MANY_SLASH_OPTIONS = 'TOO_MANY_SLASH_OPTIONS', INVALID_SLASH_OPTION_CHOICE_NAME = 'INVALID_SLASH_OPTION_CHOICE_NAME', INVALID_SLASH_OPTIONS_CHOICE_VALUE_TYPE = 'INVALID_SLASH_OPTIONS_CHOICE_VALUE_TYPE', TOO_MANY_SLASH_OPTION_CHOICES = 'TOO_MANY_SLASH_OPTION_CHOICES', ONLY_STRING_OR_INTEGER_OPTIONS_CAN_HAVE_CHOICES = 'ONLY_STRING_OR_INTEGER_OPTIONS_CAN_HAVE_CHOICES', INVALID_SLASH_OPTION_NAME = 'INVALID_SLASH_OPTION_NAME', INVALID_SLASH_OPTION_DESCRIPTION = 'INVALID_SLASH_OPTION_DESCRIPTION', INVALID_CONTEXT_MENU_COMMAND_NAME = 'INVALID_CONTEXT_MENU_COMMAND_NAME', INVALID_CONTEXT_MENU_COMMAND_DESCRIPTION = 'INVALID_CONTEXT_MENU_COMMAND_DESCRIPTION', // Webhook Errors INVALID_WEBHOOK_NAME = 'INVALID_WEBHOOK_NAME', INVALID_WEBHOOK_OPTIONS = 'INVALID_WEBHOOK_OPTIONS', // Permission Errors MISSING_ADD_REACTIONS = 'MISSING_ADD_REACTIONS', MISSING_ADMINISTRATOR = 'MISSING_ADMINISTRATOR', MISSING_ATTACH_FILES = 'MISSING_ATTACH_FILES', MISSING_BAN_MEMBERS = 'MISSING_BAN_MEMBERS', MISSING_CHANGE_NICKNAME = 'MISSING_CHANGE_NICKNAME', MISSING_CONNECT = 'MISSING_CONNECT', MISSING_CREATE_INSTANT_INVITE = 'MISSING_CREATE_INSTANT_INVITE', MISSING_DEAFEN_MEMBERS = 'MISSING_DEAFEN_MEMBERS', MISSING_EMBED_LINKS = 'MISSING_EMBED_LINKS', MISSING_INTENT_GUILD_MEMBERS = 'MISSING_INTENT_GUILD_MEMBERS', MISSING_KICK_MEMBERS = 'MISSING_KICK_MEMBERS', MISSING_MANAGE_CHANNELS = 'MISSING_MANAGE_CHANNELS', MISSING_MANAGE_EMOJIS = 'MISSING_MANAGE_EMOJIS', MISSING_MANAGE_GUILD = 'MISSING_MANAGE_GUILD', MISSING_MANAGE_MESSAGES = 'MISSING_MANAGE_MESSAGES', MISSING_MANAGE_NICKNAMES = 'MISSING_MANAGE_NICKNAMES', MISSING_MANAGE_ROLES = 'MISSING_MANAGE_ROLES', MISSING_MANAGE_WEBHOOKS = 'MISSING_MANAGE_WEBHOOKS', MISSING_MENTION_EVERYONE = 'MISSING_MENTION_EVERYONE', MISSING_MOVE_MEMBERS = 'MISSING_MOVE_MEMBERS', MISSING_MUTE_MEMBERS = 'MISSING_MUTE_MEMBERS', MISSING_PRIORITY_SPEAKER = 'MISSING_PRIORITY_SPEAKER', MISSING_READ_MESSAGE_HISTORY = 'MISSING_READ_MESSAGE_HISTORY', MISSING_SEND_MESSAGES = 'MISSING_SEND_MESSAGES', MISSING_SEND_TTS_MESSAGES = 'MISSING_SEND_TTS_MESSAGES', MISSING_SPEAK = 'MISSING_SPEAK', MISSING_STREAM = 'MISSING_STREAM', MISSING_USE_VAD = 'MISSING_USE_VAD', MISSING_USE_EXTERNAL_EMOJIS = 'MISSING_USE_EXTERNAL_EMOJIS', MISSING_VIEW_AUDIT_LOG = 'MISSING_VIEW_AUDIT_LOG', MISSING_VIEW_CHANNEL = 'MISSING_VIEW_CHANNEL', MISSING_VIEW_GUILD_INSIGHTS = 'MISSING_VIEW_GUILD_INSIGHTS', // User Errors NICKNAMES_MAX_LENGTH = 'NICKNAMES_MAX_LENGTH', USERNAME_INVALID_CHARACTER = 'USERNAME_INVALID_CHARACTER', USERNAME_INVALID_USERNAME = 'USERNAME_INVALID_USERNAME', USERNAME_MAX_LENGTH = 'USERNAME_MAX_LENGTH', USERNAME_MIN_LENGTH = 'USERNAME_MIN_LENGTH', NONCE_TOO_LONG = 'NONCE_TOO_LONG', INVITE_MAX_AGE_INVALID = 'INVITE_MAX_AGE_INVALID', INVITE_MAX_USES_INVALID = 'INVITE_MAX_USES_INVALID', // API Errors RATE_LIMIT_RETRY_MAXED = 'RATE_LIMIT_RETRY_MAXED', REQUEST_CLIENT_ERROR = 'REQUEST_CLIENT_ERROR', REQUEST_SERVER_ERROR = 'REQUEST_SERVER_ERROR', REQUEST_UNKNOWN_ERROR = 'REQUEST_UNKNOWN_ERROR', // Component Errors TOO_MANY_COMPONENTS = 'TOO_MANY_COMPONENTS', TOO_MANY_ACTION_ROWS = 'TOO_MANY_ACTION_ROWS', LINK_BUTTON_CANNOT_HAVE_CUSTOM_ID = 'LINK_BUTTON_CANNOT_HAVE_CUSTOM_ID', COMPONENT_LABEL_TOO_BIG = 'COMPONENT_LABEL_TOO_BIG', COMPONENT_CUSTOM_ID_TOO_BIG = 'COMPONENT_CUSTOM_ID_TOO_BIG', BUTTON_REQUIRES_CUSTOM_ID = 'BUTTON_REQUIRES_CUSTOM_ID', COMPONENT_SELECT_MUST_BE_ALONE = 'COMPONENT_SELECT_MUST_BE_ALONE', COMPONENT_PLACEHOLDER_TOO_BIG = 'COMPONENT_PLACEHOLDER_TOO_BIG', COMPONENT_SELECT_MIN_VALUE_TOO_LOW = 'COMPONENT_SELECT_MIN_VALUE_TOO_LOW', COMPONENT_SELECT_MIN_VALUE_TOO_MANY = 'COMPONENT_SELECT_MIN_VALUE_TOO_MANY', COMPONENT_SELECT_MAX_VALUE_TOO_LOW = 'COMPONENT_SELECT_MAX_VALUE_TOO_LOW', COMPONENT_SELECT_MAX_VALUE_TOO_MANY = 'COMPONENT_SELECT_MAX_VALUE_TOO_MANY', COMPONENT_SELECT_OPTIONS_TOO_LOW = 'COMPONENT_SELECT_OPTIONS_TOO_LOW', COMPONENT_SELECT_OPTIONS_TOO_MANY = 'COMPONENT_SELECT_OPTIONS_TOO_MANY', SELECT_OPTION_LABEL_TOO_BIG = 'SELECT_OPTION_LABEL_TOO_BIG', SELECT_OPTION_VALUE_TOO_BIG = 'SELECT_OPTION_VALUE_TOO_BIG', SELECT_OPTION_TOO_MANY_DEFAULTS = 'SELECT_OPTION_TOO_MANY_DEFAULTS', COMPONENT_SELECT_MIN_HIGHER_THAN_MAX = 'COMPONENT_SELECT_MIN_HIGHER_THAN_MAX', CANNOT_ADD_USER_TO_ARCHIVED_THREADS = 'CANNOT_ADD_USER_TO_ARCHIVED_THREADS', CANNOT_LEAVE_ARCHIVED_THREAD = 'CANNOT_LEAVE_ARCHIVED_THREAD', CANNOT_REMOVE_FROM_ARCHIVED_THREAD = 'CANNOT_REMOVE_FROM_ARCHIVED_THREAD', YOU_CAN_NOT_DM_THE_BOT_ITSELF = 'YOU_CAN_NOT_DM_THE_BOT_ITSELF', } export enum Locales { Danish = 'da', German = 'de', EnglishUk = 'en-GB', EnglishUs = 'en-US', Spanish = 'es-ES', French = 'fr', Croatian = 'hr', Italian = 'it', Lithuanian = 'lt', Hungarian = 'hu', Dutch = 'nl', Norwegian = 'no', Polish = 'pl', PortugueseBrazilian = 'pt-BR', RomanianRomania = 'ro', Finnish = 'fi', Swedish = 'sv-SE', Vietnamese = 'vi', Turkish = 'tr', Czech = 'cs', Greek = 'el', Bulgarian = 'bg', Russian = 'ru', Ukrainian = 'uk', Hindi = 'hi', Thai = 'th', ChineseChina = 'zh-CN', Japanese = 'ja', ChineseTaiwan = 'zh-TW', Korean = 'ko', } export type Localization = Partial>; export interface FileContent { /** The file blob */ blob: Blob; /** The name of the file */ name: string; } export interface GatewayBot { /** The WSS URL that can be used for connecting to the gateway */ url: string; /** The recommended number of shards to use when connecting */ shards: number; /** Information on the current session start limit */ sessionStartLimit: { /** The total number of session starts the current user is allowed */ total: number; /** The remaining number of session starts the current user is allowed */ remaining: number; /** The number of milliseconds after which the limit resets */ resetAfter: number; /** The number of identify requests allowed per 5 seconds */ maxConcurrency: number; }; } // UTILS export type AtLeastOne }> = Partial & U[keyof U]; export type MakeRequired = T & { [P in K]-?: T[P] }; // THANK YOU YUI FOR SHARING THIS! export type CamelCase = S extends `${infer P1}_${infer P2}${infer P3}` ? `${Lowercase}${Uppercase}${CamelCase}` : Lowercase; export type Camelize = { // deno-lint-ignore ban-types [K in keyof T as CamelCase]: T[K] extends Array ? U extends {} ? Array> : T[K] // deno-lint-ignore ban-types : T[K] extends {} ? Camelize : never; }; export type PickPartial = & { [P in keyof T]?: T[P] | undefined; } & { [P in K]: T[P] }; // deno-lint-ignore no-explicit-any export type OmitFirstFnArg = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;